akra35567 commited on
Commit
a695583
·
1 Parent(s): 6c8706a

Update modules/treinamento.py

Browse files
Files changed (1) hide show
  1. modules/treinamento.py +33 -13
modules/treinamento.py CHANGED
@@ -1,4 +1,3 @@
1
- # modules/treinamento.py — VERSÃO FINAL OFICIAL: TREINO LEVE, KWARGS CORRIGIDO, LUANDA DOMINA!
2
  import json
3
  import os
4
  import threading
@@ -11,8 +10,20 @@ from torch.utils.data import Dataset
11
  import torch
12
  from .database import Database
13
 
14
- # CAMINHOS NO HF SPACES
15
- FINETUNED_PATH = "/home/user/data/finetuned_hermes"
 
 
 
 
 
 
 
 
 
 
 
 
16
  DATA_PATH = f"{FINETUNED_PATH}/dataset.jsonl"
17
  EMBEDDINGS_PATH = f"{FINETUNED_PATH}/embeddings.jsonl"
18
  LORA_PATH = f"{FINETUNED_PATH}/lora_leve"
@@ -38,7 +49,13 @@ class LeveDataset(Dataset):
38
 
39
  def __getitem__(self, idx):
40
  item = self.data[idx]
41
- text = f"<|im_start|>user\n{item['user']}<|im_end|>\n<|im_start|>assistant\n{item['assistant']}<|im_end|>"
 
 
 
 
 
 
42
  encoded = TOKENIZER(
43
  text,
44
  truncation=True,
@@ -56,7 +73,7 @@ class Treinamento:
56
  self.db = db
57
  self.interval_seconds = interval_hours * 3600
58
  self._carregar_dataset()
59
- logger.info(f"TREINAMENTO ULTRA LEVE ATIVO → SÓ TREINA COM >30 KANDANDOS! (Intervalo: {interval_hours}h)")
60
  threading.Thread(target=self._treino_inteligente, daemon=True).start()
61
 
62
  def _carregar_dataset(self):
@@ -120,19 +137,21 @@ class Treinamento:
120
  logger.info(f"Ainda só {len(_dataset)} kandandos → pulando treino (CPU em paz)")
121
  continue
122
 
123
- logger.info("INICIANDO TREINO ULTRA LEVE → LORA ANGOLANO TURBINADO! (15s, CPU <40%)")
124
 
125
  try:
126
  if TOKENIZER is None:
127
  TOKENIZER = AutoTokenizer.from_pretrained(
128
- "NousResearch/OpenHermes-2.5-Mistral-7B",
129
  use_fast=True,
130
  trust_remote_code=True
131
  )
132
- TOKENIZER.pad_token = TOKENIZER.eos_token
133
-
 
 
134
  model = AutoModelForCausalLM.from_pretrained(
135
- "NousResearch/OpenHermes-2.5-Mistral-7B",
136
  load_in_4bit=True,
137
  device_map="auto",
138
  torch_dtype=torch.float16,
@@ -143,7 +162,8 @@ class Treinamento:
143
  lora_config = LoraConfig(
144
  r=4,
145
  lora_alpha=8,
146
- target_modules=["q_proj", "v_proj"],
 
147
  lora_dropout=0.05,
148
  bias="none",
149
  task_type="CAUSAL_LM"
@@ -180,7 +200,7 @@ class Treinamento:
180
  trainer.train()
181
  trainer.save_model(LORA_PATH)
182
 
183
- logger.success("LORA ANGOLANO TREINADO EM ~15s! SOTAQUE DE LUANDA + FORTE!")
184
  logger.info(f"Novo LoRA salvo em: {LORA_PATH}")
185
 
186
  # LIMPA RAM
@@ -188,6 +208,6 @@ class Treinamento:
188
  torch.cuda.empty_cache()
189
 
190
  except Exception as e:
191
- logger.error(f"ERRO NO TREINO LEVE: {e}")
192
  import traceback
193
  logger.error(traceback.format_exc())
 
 
1
  import json
2
  import os
3
  import threading
 
10
  import torch
11
  from .database import Database
12
 
13
+ # CONFIGURAÇÃO DO MODELO PHI-3
14
+ BASE_MODEL = "microsoft/Phi-3-mini-4k-instruct"
15
+ MODEL_ID = "PHI-3 3.8B"
16
+ CHAT_TEMPLATE = (
17
+ "<|user|>\n"
18
+ "{user_input}"
19
+ "<|end|>\n"
20
+ "<|assistant|>\n"
21
+ "{assistant_output}"
22
+ "<|end|>"
23
+ )
24
+
25
+ # CAMINHOS NO HF SPACES (AJUSTADOS PARA PHI-3)
26
+ FINETUNED_PATH = "/home/user/data/finetuned_phi3"
27
  DATA_PATH = f"{FINETUNED_PATH}/dataset.jsonl"
28
  EMBEDDINGS_PATH = f"{FINETUNED_PATH}/embeddings.jsonl"
29
  LORA_PATH = f"{FINETUNED_PATH}/lora_leve"
 
49
 
50
  def __getitem__(self, idx):
51
  item = self.data[idx]
52
+
53
+ # AJUSTE DO FORMATO DE CHAT PARA PHI-3
54
+ text = CHAT_TEMPLATE.format(
55
+ user_input=item['user'],
56
+ assistant_output=item['assistant']
57
+ )
58
+
59
  encoded = TOKENIZER(
60
  text,
61
  truncation=True,
 
73
  self.db = db
74
  self.interval_seconds = interval_hours * 3600
75
  self._carregar_dataset()
76
+ logger.info(f"TREINAMENTO ULTRA LEVE PHI-3 ATIVO → SÓ TREINA COM >30 KANDANDOS! (Intervalo: {interval_hours}h)")
77
  threading.Thread(target=self._treino_inteligente, daemon=True).start()
78
 
79
  def _carregar_dataset(self):
 
137
  logger.info(f"Ainda só {len(_dataset)} kandandos → pulando treino (CPU em paz)")
138
  continue
139
 
140
+ logger.info(f"INICIANDO TREINO ULTRA LEVE {MODEL_ID} → LORA ANGOLANO TURBINADO! (CPU <40%)")
141
 
142
  try:
143
  if TOKENIZER is None:
144
  TOKENIZER = AutoTokenizer.from_pretrained(
145
+ BASE_MODEL,
146
  use_fast=True,
147
  trust_remote_code=True
148
  )
149
+ # Phi-3 já tem pad_token_id definido, mas garantimos
150
+ if TOKENIZER.pad_token is None:
151
+ TOKENIZER.pad_token = TOKENIZER.eos_token
152
+
153
  model = AutoModelForCausalLM.from_pretrained(
154
+ BASE_MODEL,
155
  load_in_4bit=True,
156
  device_map="auto",
157
  torch_dtype=torch.float16,
 
162
  lora_config = LoraConfig(
163
  r=4,
164
  lora_alpha=8,
165
+ # TARGET MODULES CORRIGIDO PARA PHI-3 (qkv_proj)
166
+ target_modules=["qkv_proj"],
167
  lora_dropout=0.05,
168
  bias="none",
169
  task_type="CAUSAL_LM"
 
200
  trainer.train()
201
  trainer.save_model(LORA_PATH)
202
 
203
+ logger.success(f"LORA ANGOLANO PHI-3 TREINADO! SOTAQUE DE LUANDA + FORTE!")
204
  logger.info(f"Novo LoRA salvo em: {LORA_PATH}")
205
 
206
  # LIMPA RAM
 
208
  torch.cuda.empty_cache()
209
 
210
  except Exception as e:
211
+ logger.error(f"ERRO NO TREINO LEVE PHI-3: {e}")
212
  import traceback
213
  logger.error(traceback.format_exc())