Views
No views yet

reference data model:
datasets:
- lang: "bg,ca,cs,da,de,en,es,fr,hr,hu,it,nl,pl,pt,ro,ru,sl,sr,sv,uk"
link: https://huggingface.co/datasets/NickyNicky/oasst2_clusters
model:
- google/gemma-2b-it
Link:
https://huggingface.co/google/gemma-2b-it
base fine tune: NickyNicky/gemma-2b-it_oasst2_chatML_Cluster_2_V1
Epoch: 2.5
future experts: 5
Eval model:
- link:
soon

1!python -m pip install --upgrade pip
2!pip install "torch>=2.1.1" -U
3!pip install torchaudio==2.2.0
4!pip install -q datasets trl peft bitsandbytes sentencepiece wandb
5!pip install -q accelerate safetensors deepspeed
6!pip install -q scipy ninja -U
7!pip install -q -U transformers==4.38.01import torch
2torch.__version__
3#OUTPUTS: ('2.2.0+cu121' )1
2from transformers import (
3 AutoModelForCausalLM,
4 AutoTokenizer,
5 BitsAndBytesConfig,
6 HfArgumentParser,
7 TrainingArguments,
8 pipeline,
9 logging,
10 GenerationConfig,
11 TextIteratorStreamer,
12)
13
14from transformers import StoppingCriteria, StoppingCriteriaList
15
16import torch
17
18model_id='NickyNicky/gemma-2b-it_oasst2_Cluster_2_aya_dataset_multilingual_chatml_response_json_V1'
19
20model = AutoModelForCausalLM.from_pretrained(model_id,
21 device_map="auto",
22 trust_remote_code=True,
23 torch_dtype=torch.bfloat16,
24 attn_implementation="flash_attention_2",
25 # load_in_4bit=True,
26 # low_cpu_mem_usage= True,
27
28 )
29
30max_length=1055
31print("max_length",max_length)
32
33
34tokenizer = AutoTokenizer.from_pretrained(model_id,
35 # use_fast = False,
36 max_length=max_length,)
37
38
39class ListOfTokensStoppingCriteria(StoppingCriteria):
40 """
41 Clase para definir un criterio de parada basado en una lista de tokens específicos.
42 """
43 def __init__(self, tokenizer, stop_tokens):
44 self.tokenizer = tokenizer
45 # Codifica cada token de parada y guarda sus IDs en una lista
46 self.stop_token_ids_list = [tokenizer.encode(stop_token, add_special_tokens=False) for stop_token in stop_tokens]
47
48 def __call__(self, input_ids, scores, **kwargs):
49 # Verifica si los últimos tokens generados coinciden con alguno de los conjuntos de tokens de parada
50 for stop_token_ids in self.stop_token_ids_list:
51 len_stop_tokens = len(stop_token_ids)
52 if len(input_ids[0]) >= len_stop_tokens:
53 if input_ids[0, -len_stop_tokens:].tolist() == stop_token_ids:
54 return True
55 return False
56
57# Uso del criterio de parada personalizado
58stop_tokens = ["<end_of_turn>"] # Lista de tokens de parada
59
60# Inicializa tu criterio de parada con el tokenizer y la lista de tokens de parada
61stopping_criteria = ListOfTokensStoppingCriteria(tokenizer, stop_tokens)
62
63# Añade tu criterio de parada a una StoppingCriteriaList
64stopping_criteria_list = StoppingCriteriaList([stopping_criteria])
65
66
67
68
69#EXAMPLE #1
70input_text = """James Buchanan es el único presidente que nunca se casó.”"""
71input_language_code="es"
72
73#The 'targets' -key- with its respective value is for a response according to the language.
74targets_traslate= "en" # English response regarding language code -> "es", "en", "fr", "de"
75
76txt=f"""<bos><start_of_turn>system
77You are a helpful AI assistant.
78solo responde en formato json.
79lista de codigos linguisticos disponibles: ["es", "en", "fr", "de"].<end_of_turn>
80<start_of_turn>user
81{{
82 "input": "{input_language_code}",
83 "targets": "{targets_traslate}",
84 "inputs_{input_language_code}": "{input_text}",
85}}<end_of_turn>
86<start_of_turn>model
87"""
88
89### OUTPUT EXAMPLE
90###'''
91###<start_of_turn>model
92###{
93### "targets": "en",
94### "targets_es": ""
95###}<end_of_turn>
96###'''
97
98
99inputs = tokenizer.encode(txt,
100 return_tensors="pt",
101 add_special_tokens=False).to("cuda:0")
102max_new_tokens=200
103generation_config = GenerationConfig(
104 max_new_tokens=max_new_tokens,
105 temperature=0.32,
106 #top_p=0.9,
107 top_k=45,
108 repetition_penalty=1.,
109 do_sample=True,
110 )
111outputs = model.generate(generation_config=generation_config,
112 input_ids=inputs,
113 stopping_criteria=stopping_criteria_list,)
114tokenizer.decode(outputs[0], skip_special_tokens=False) #True