Rulga commited on
Commit
a37f980
·
1 Parent(s): 2762e86

Update model path and enhance tokenizer handling in FineTuner

Browse files
Files changed (2) hide show
  1. config/settings.py +1 -1
  2. src/training/fine_tuner.py +12 -8
config/settings.py CHANGED
@@ -29,7 +29,7 @@ MODELS = {
29
  "repetition_penalty": 1.1,
30
  },
31
  "training": {
32
- "base_model_path": os.path.join(MODEL_PATH, "zephyr-7b-beta"),
33
  "fine_tuned_path": os.path.join(TRAINING_OUTPUT_DIR, "zephyr-7b-beta-tuned"),
34
  "lora_config": {
35
  "r": 16,
 
29
  "repetition_penalty": 1.1,
30
  },
31
  "training": {
32
+ "base_model_path": "HuggingFaceH4/zephyr-7b-beta", # Используем прямой путь к модели
33
  "fine_tuned_path": os.path.join(TRAINING_OUTPUT_DIR, "zephyr-7b-beta-tuned"),
34
  "lora_config": {
35
  "r": 16,
src/training/fine_tuner.py CHANGED
@@ -84,31 +84,35 @@ class FineTuner:
84
  try:
85
  logger.info(f"Загрузка модели {self.base_model_id}...")
86
 
87
- # Загрузка токенизатора
88
  self.tokenizer = AutoTokenizer.from_pretrained(
89
  self.base_model_id,
90
- trust_remote_code=True
 
91
  )
92
 
93
  # Специальные токены для диалогов
94
  special_tokens = {
95
  "pad_token": "<PAD>",
96
  "eos_token": "</s>",
97
- "bos_token": "<s>"
 
98
  }
99
 
100
  # Добавляем специальные токены, если их нет
101
- for token_name, token_value in special_tokens.items():
102
- if getattr(self.tokenizer, token_name) is None:
103
- setattr(self.tokenizer, token_name, token_value)
104
 
105
  # Загрузка модели
106
  self.model = AutoModelForCausalLM.from_pretrained(
107
  self.base_model_id,
108
  trust_remote_code=True,
109
- device_map="auto" if self.device == "cuda" else None
 
110
  )
111
 
 
 
 
112
  logger.info("Модель и токенизатор успешно загружены")
113
  except Exception as e:
114
  logger.error(f"Ошибка при загрузке модели: {str(e)}")
@@ -364,4 +368,4 @@ def finetune_from_chat_history(epochs: int = 3) -> Tuple[bool, str]:
364
  if __name__ == "__main__":
365
  # Пример использования
366
  success, message = finetune_from_chat_history()
367
- print(message)
 
84
  try:
85
  logger.info(f"Загрузка модели {self.base_model_id}...")
86
 
87
+ # Загрузка токенизатора с использованием slow tokenizer
88
  self.tokenizer = AutoTokenizer.from_pretrained(
89
  self.base_model_id,
90
+ trust_remote_code=True,
91
+ use_fast=False # Используем slow tokenizer
92
  )
93
 
94
  # Специальные токены для диалогов
95
  special_tokens = {
96
  "pad_token": "<PAD>",
97
  "eos_token": "</s>",
98
+ "bos_token": "<s>",
99
+ "unk_token": "<unk>" # Добавляем unknown token
100
  }
101
 
102
  # Добавляем специальные токены, если их нет
103
+ self.tokenizer.add_special_tokens({"additional_special_tokens": list(special_tokens.values())})
 
 
104
 
105
  # Загрузка модели
106
  self.model = AutoModelForCausalLM.from_pretrained(
107
  self.base_model_id,
108
  trust_remote_code=True,
109
+ device_map="auto" if self.device == "cuda" else None,
110
+ torch_dtype="auto" # Автоматически выбираем оптимальный тип данных
111
  )
112
 
113
+ # Изменяем размер эмбеддингов для новых токенов
114
+ self.model.resize_token_embeddings(len(self.tokenizer))
115
+
116
  logger.info("Модель и токенизатор успешно загружены")
117
  except Exception as e:
118
  logger.error(f"Ошибка при загрузке модели: {str(e)}")
 
368
  if __name__ == "__main__":
369
  # Пример использования
370
  success, message = finetune_from_chat_history()
371
+ print(message)