Skip to content
Snippets Groups Projects
Commit 0094a32a authored by jbreton's avatar jbreton
Browse files

Update S4 and create S5

parent 92649128
Branches
No related tags found
No related merge requests found
......@@ -8,10 +8,10 @@ model_id = "../../models/Mixtral-8x7B-Instruct-v0.1"
model = transformers.AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.float16,
#torch_dtype=torch.float16,
device_map="auto",
load_in_8bit=False,
load_in_4bit=True,
load_in_8bit=True,
load_in_4bit=False,
attn_implementation="flash_attention_2"
)
model.eval()
......
import json
from alive_progress import alive_bar
import torch
import transformers
import bitsandbytes, flash_attn
model_id = "../../models/Mistral-7B-Instruct-v0.2"
model = transformers.AutoModelForCausalLM.from_pretrained(
model_id,
#torch_dtype=torch.float16,
device_map="auto",
load_in_8bit=False,
load_in_4bit=True,
#attn_implementation="flash_attention_2"
)
model.eval()
tokenizer = transformers.AutoTokenizer.from_pretrained(model_id)
generate_text = transformers.pipeline(
model=model, tokenizer=tokenizer,
return_full_text=False, # if using langchain set True
task="text-generation",
# we pass model parameters here too
do_sample=True,
temperature=0.5, # 'randomness' of outputs, 0.0 is the min and 1.0 the max
top_p=0.15, # select from top tokens whose probability add up to 15%
top_k=0, # select from top 0 tokens (because zero, relies on top_p)
max_new_tokens=4096, # max number of tokens to generate in the output
repetition_penalty=1.0 # if output begins repeating increase
)
inst = """
Tu es un expert en NLP spécialisé dans l'extraction de concepts dans des phrases.
Ces concepts comprennent l'Action, l'Acteur, l'Objet, la Condition, la Définition, le Lieu, la Modalité, la Référence et le Temps. Ces concepts prennent les définitions suivantes :
* Action : le fait de faire quelque chose
* Acteur : une entité qui a la capacité d'agir
* Objet : élément physique fabriqué par l'homme et impliqué dans une action
* Condition : une contrainte énonçant les propriétés qui doivent être respectées
* Définition : disposition juridique définissant le sens des concepts
* Lieu : endroit où une action est effectuée
* Modalité : un verbe indiquant la modalité de l'action (par exemple : peut, doit, etc)
* Référence : mention d'autres dispositions légales ou textes juridiques affectant la disposition actuelle
* Temps : le moment ou la durée associée à la réalisation d'une action
Un élément de la phrase initiale peut posséder plusieurs classifications, tu dois toutes les données.
Lors de l'analyse de textes, vos réponses doivent être formatées sous forme de JSON, listant les concepts identifiés sans élaboration ni justification.
Le JSON sera de la forme suivante :
{
"Action": [],
"Acteur": [],
"Condition": [],
"Définition": [],
"Lieu": [],
"Modalité": [],
"Référence": [],
"Temps": []
}
Cette approche garantit une présentation claire et directe des résultats, en accord avec la préférence de l'utilisateur pour des informations concises. De plus, vous ne devez pas reformuler les éléments extraits.
"""
def instruction_format(sys_message: str, query: str):
# note, don't "</s>" to the end
return f'<s> [INST] {sys_message} [/INST]\nUser: {query}\nAssistant: '
with open('../../data/evalQS.json', 'r', encoding='utf-8') as file:
loaded = json.load(file)
input = []
output = {}
with alive_bar(len(loaded)) as bar:
for sentence in loaded:
input.append(instruction_format(inst, sentence))
bar()
print("Input creation finished")
res = generate_text(input)
i = 0
for sentence in loaded:
output[sentence] = res[i][0]["generated_text"]
i += 1
with open('../../results/S5/MISTRAL_raw_answers.json', 'w', encoding='utf-8') as file:
json.dump(output, file) # in 44:36.6 (0.08/s)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment