Fine-Tuning (Дотюнинг) — это процесс дообучения уже готовой нейросети на вашем наборе данных, чтобы она специализировалась под конкретные задачи  (например, знала ваш сленг, документацию или писала код только на старом Python). Это как если бы вы дали выпускнику ВУЗа не просто диплом, а еще и 1000 часов практики в вашей фирме.

Вот пошаговое руководство, как это сделать.


Шаг 1: Подготовка данных (Самый важный этап)

Нейросеть нельзя просто “загрузить” текст. Ей нужно дать примеры диалогов.

Формат: Обычно используется формат JSONL (JSON Lines). Это список строк, каждая из которых — это словарь, описывающий пару “Пользователь — 

Ответ”.

Структура:

 
{"messages": [{"role": "system", "content": "Ты — старый эникейщик, который ненавидит новые технологии."}, {"role": "user", "content": "Как установить 
 
Python?"}, {"role": "assistant", "content": "Скачай с сайта, распакуй, вставь в PATH. А Python 3 зачем? Я на Perl работаю."}]}
 
{"messages": [{"role": "system", "content": "Ты — старый эникейщик..."}, {"role": "user", "content": "Какой самый безопасный язык?"}, {"role"
 
"assistant", "content": "Аsembler. Но он сложный, а я старый."}]}
 
  •   System Prompt: Это ваше общее описание личности.

  •   User Prompt: Вопрос от пользователя.

  •   Assistant Prompt: Желаемый ответ.

Совет: Вам нужно минимум 100–200 качественных примеров для результата. Чем больше данных, тем лучше.


Шаг 2: Выбор метода (OpenAI vs Open Source)

У вас есть два пути:

Вариант А: Через API (OpenAI / Anthropic)

Это просто, но платно и может быть небезопасно для приватных данных. 1.  Зайдите в OpenAI Platform. 2.  Создайте файл data.jsonl и загрузите его в раздел “Fine-tuning”. 3.  Выберите базовую модель (например, gpt-3.5-turbo или gpt-4o-mini). 4.  Запустите обучение. Через 15–30 минут модель будет готова. 5.  Возвращайте модель в чат, используя новый ID модели (например, ft:gpt-4o-mini:my-org:custom_id:...).

Вариант Б: Локально (Mistral / Llama 3 / Qwen)

Это бесплатно, быстро и безопасно (данные никуда не уходят). Вам нужна мощная видеокарта (желательно NVIDIA с 24GB+ VRAM, например, RTX 3090/4090).

1.  Установите библиотеку: pip install torch transformers peft bitsandbytes 2.  Выберите модель: Например, Mistral 7B или Qwen 7B. 3.  Напишите скрипт обучения:

Вот пример кода на Python (используя библиотеку Hugging Face Transformers):

 
import torch
 
from transformers import AutoModelForCausalLM, AutoTokenizer, Trainer, TrainingArguments, DataCollatorForLanguageModeling
 
from datasets import load_dataset
 
# 1. Загружаем предобученную модель (берем например, Mistral)
model_name = "mistralai/Mistral-7B-Instruct-v0.2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")
 
# 2. Загружаем ваш JSONL файл
# Формат должен быть такой: {"text": "user prompt assistant answer"}
dataset = load_dataset("json", data_files="my_data.jsonl", split="train")
def tokenize_function(examples):
    return tokenizer(examples["text"], padding="max_length", truncation=True, max_length=512)
tokenized_datasets = dataset.map(tokenize_function, batched=True)
 
# 3. Настройка обучения
training_args = TrainingArguments(
    output_dir="./my_fine_tuned_model",
    per_device_train_batch_size=2, # Уменьшайте, если мало VRAM
    num_train_epochs=1,
    learning_rate=2e-5,
    logging_steps=10,
)
 
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=tokenized_datasets,
    data_collator=DataCollatorForLanguageModeling(tokenizer, mlm=False),
)
 
# 4. Запуск обучения (это может занять несколько часов)
trainer.train()
 
# 5. Сохранение
trainer.save_model("./my_fine_tuned_model")
 

Шаг 3: Использование дообученной модели

Как только модель готова (или загружена через API), вы используете её точно так же, как обычную, но указываете её ID.

Пример для OpenAI:

 
import openai
 
client = openai.OpenAI(api_key="ВАШ_КЛЮЧ")
response = client.chat.completions.create(
    model="gpt-3.5-turbo", # Базовая модель
    messages=[
        {"role": "user", "content": "Привет, напиши про Python"}
    ]
)
 

Пример для Локальной модели:

from transformers import pipeline
 
generator = pipeline("text-generation", model="./my_fine_tuned_model")
result = generator("Привет, как дела?", max_length=50)
 

Риски и подводные камни

1.  Забывание базовых знаний: Модель может забыть то, что знала изначально, если вы переобучили её на слишком специфическом контенте. Лучше использовать LoRA (Low-Rank Adaptation) — это метод, который позволяет доучивать модель, не трогая её основную память, сохраняя знания.

2.  Hallucinations (Галлюцинации): Дообученная модель начнет выдумывать факты, если вы не дали ей достаточно данных. Всегда проверяйте её ответы.

3.  Плохие данные: Если в ваших примерах есть опечатки, модель начнет их повторять.

Резюме

Если вам нужно быстро протестировать идею — используйте OpenAI API (всего 10-20 долларов). Если вы серьезно занимаетесь разработкой, хотите экономить деньги и цените конфиденциальность — изучайте Hugging Face + Llama 3/Qwen.

*Данная статья полностью создана локальной моделью (glm-4.7-flash)