adiom commited on
Commit
afca8e6
·
1 Parent(s): af076b4
Files changed (2) hide show
  1. app.py +1 -1
  2. train.py +50 -0
app.py CHANGED
@@ -2,7 +2,7 @@ import gradio as gr
2
  from transformers import AutoModelForCausalLM, AutoTokenizer
3
 
4
  # Загружаем Mistral-7B
5
- model_name = "mistralai/Mistral-7B-Instruct-v0.1"
6
  tokenizer = AutoTokenizer.from_pretrained(model_name)
7
  model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")
8
 
 
2
  from transformers import AutoModelForCausalLM, AutoTokenizer
3
 
4
  # Загружаем Mistral-7B
5
+ model_name = "mistralai/Mistral-7B-Instruct-v0.3"
6
  tokenizer = AutoTokenizer.from_pretrained(model_name)
7
  model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")
8
 
train.py ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from peft import LoraConfig, get_peft_model, TaskType
2
+ from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer
3
+ import torch
4
+
5
+ # Загружаем модель и токенайзер
6
+ model_name = "mistralai/Mistral-7B-Instruct-v0.1"
7
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
8
+ model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")
9
+
10
+ # Настройки LoRA
11
+ config = LoraConfig(
12
+ task_type=TaskType.CAUSAL_LM,
13
+ r=8, lora_alpha=16, lora_dropout=0.1,
14
+ bias="none"
15
+ )
16
+ model = get_peft_model(model, config)
17
+
18
+ # Загружаем данные (пример из data.json)
19
+ train_data = [
20
+ {"question": "Что такое Canfly Inna?", "answer": "Canfly Inna — это FastAPI сервер с RAG."},
21
+ {"question": "Как работает FAISS?", "answer": "FAISS — это быстрый поиск ближайших соседей."}
22
+ ]
23
+
24
+ # Преобразуем в формат для обучения
25
+ train_texts = [f"Q: {d['question']}\nA: {d['answer']}" for d in train_data]
26
+ train_encodings = tokenizer(train_texts, padding=True, truncation=True, return_tensors="pt")
27
+
28
+ # Настройки обучения
29
+ training_args = TrainingArguments(
30
+ output_dir="./mistral-lora",
31
+ per_device_train_batch_size=1,
32
+ num_train_epochs=3,
33
+ save_steps=500,
34
+ save_total_limit=2,
35
+ logging_dir="./logs"
36
+ )
37
+
38
+ trainer = Trainer(
39
+ model=model,
40
+ args=training_args,
41
+ train_dataset=train_encodings
42
+ )
43
+
44
+ # Запускаем обучение
45
+ trainer.train()
46
+
47
+ # Сохраняем веса
48
+ model.save_pretrained("./mistral-lora")
49
+ tokenizer.save_pretrained("./mistral-lora")
50
+