Skip to content
EN

Как зафайнтюнить LLM

Коротко:

Fine-tuning 2026: (1) Подготовьте 100-10k examples в JSONL, (2) Выберите platform — OpenAI (gpt-4o-mini FT $3/1M), Together.ai Llama 3 70B LoRA ($5-20), self-host через Axolotl/Unsloth, (3) Upload dataset + start job (1-10 часов), (4) Eval via test set, (5) Deploy — OpenAI создаёт endpoint, Together даёт API. Когда НЕ стоит: если RAG + prompt engineering решают задачу.

Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.

Проверить свой сайт →

Пошаговая настройка

  1. Соберите 100+ quality examples в JSONL format
  2. Validation split: 80% train / 20% eval
  3. OpenAI: openai fine_tuning.jobs.create -t file-X -m gpt-4o-mini
  4. Together.ai: upload через CLI, config LoRA (rank=16, alpha=32)
  5. Monitor loss curve — stop если overfitting (eval loss растёт)
  6. Eval на test set — accuracy / BLEU / manual grading
  7. Deploy: OpenAI → auto endpoint. Together → API key

Рабочие примеры

СценарийКонфиг
OpenAI JSONL format{"messages": [ {"role": "system", "content": "You are a customer support bot for Enterno."}, {"role": "user", "content": "Where is my invoice?"}, {"role": "assistant", "content": "You can find invoices at /dashboard → Billing → History."} ]}
QLoRA локально (Unsloth)from unsloth import FastLanguageModel model, tokenizer = FastLanguageModel.from_pretrained('unsloth/llama-3-8b-bnb-4bit') model = FastLanguageModel.get_peft_model(model, r=16, target_modules=['q_proj','k_proj','v_proj']) trainer = SFTTrainer(model=model, train_dataset=ds, max_seq_length=2048) trainer.train()
Together.ai CLI$ together files upload train.jsonl $ together fine-tuning create \ --training-file FILE_ID \ --model meta-llama/Meta-Llama-3.1-70B-Instruct-Reference \ --lora --lora-r 16 --lora-alpha 32
Start inference после FT# OpenAI resp = client.chat.completions.create( model='ft:gpt-4o-mini-2024:myorg::abc', messages=[...] )
Eval с Ragasfrom ragas import evaluate from ragas.metrics import answer_relevancy, faithfulness results = evaluate(dataset, metrics=[answer_relevancy, faithfulness])

Типичные ошибки

  • Не начинайте с FT — сначала проверьте prompt engineering + RAG. 80% cases решаются без FT
  • Dataset too small (<50 examples) — overfit, не learn general pattern
  • Inconsistent format между examples — model confused
  • Training без validation set → не заметите overfitting
  • FT меняет weights — base model knowledge может degradate ("catastrophic forgetting")

TL;DR

Чтобы зафайнтюнить LLM на своих данных в 2026 году, используйте фреймы Hugging Face или PyTorch, установив необходимые библиотеки через pip install transformers datasets. Настройте параметры обучения, такие как learning_rate на уровне 5e-5 и batch_size на уровне 16. Запустите процесс с помощью Trainer из библиотеки Hugging Face, указав свои данные и параметры. Это позволит адаптировать модель к вашим конкретным задачам.

Подготовка данных для fine-tuning

Перед тем как приступить к зафайнтюнингу LLM, необходимо тщательно подготовить данные. Важно, чтобы ваши данные были чистыми и структурированными, поскольку качество данных напрямую влияет на производительность модели.

Формат данных

Для успешного обучения модель должна принимать данные в определенном формате. Обычно используются форматы JSON или CSV. Например, если вы работаете с текстовыми данными, структура JSON может выглядеть следующим образом:

[ { "text": "Пример текста 1" }, { "text": "Пример текста 2" } ]

Убедитесь, что данные размечены корректно, если вы обучаете модель на задаче классификации.

Разделение данных

Важно разделить данные на тренировочный и тестовый наборы. Рекомендуется использовать 80% данных для обучения и 20% для тестирования. Это поможет избежать переобучения и оценить качество модели на новых данных.

Загрузка данных

Для загрузки данных в вашу модель можно использовать библиотеку datasets от Hugging Face. Например, чтобы загрузить данные из вашего файла JSON, выполните следующий код:

from datasets import load_dataset
dataset = load_dataset('json', data_files='path/to/your/data.json')

После загрузки данных вы можете проводить их предварительную обработку, например, токенизацию.

Настройка обучения и запуск fine-tuning

После подготовки данных, следующим шагом будет настройка процесса обучения. Выбор оптимальных гиперпараметров имеет критическое значение для успешного fine-tuning модели.

Выбор модели

Для начала выберите предобученную модель, подходящую для вашей задачи. Например, для обработки естественного языка (NLP) можно использовать BERT или GPT-2. Для загрузки модели используйте следующий код:

from transformers import AutoModelForSequenceClassification, AutoTokenizer
model = AutoModelForSequenceClassification.from_pretrained('bert-base-uncased')
tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')

Настройка гиперпараметров

Настройте гиперпараметры обучения. Например:

  • learning_rate: 5e-5
  • batch_size: 16
  • num_train_epochs: 3

Запуск обучения

Для запуска обучения используйте класс Trainer, который значительно упрощает процесс. Пример кода для запуска:

from transformers import Trainer, TrainingArguments
training_args = TrainingArguments(
    output_dir='./results',
    num_train_epochs=3,
    per_device_train_batch_size=16,
    learning_rate=5e-5,
)
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=dataset['train'],
    eval_dataset=dataset['test'],
)
trainer.train()

После завершения обучения, модель будет адаптирована к вашим данным и будет готова к использованию в реальных приложениях.

Больше по теме

Часто задаваемые вопросы

RAG или FT?

RAG: dynamic knowledge, easy update. FT: style, tone, format consistency. Часто комбинируются — FT для tone + RAG для facts.

Стоимость?

OpenAI gpt-4o-mini FT: $3/1M training tokens. Together Llama 3 70B LoRA: ~$5-20 за run. Self-host: $0 cost если GPU есть.

Как мерить improvement?

Held-out test set (20%). Metrics зависят от task: exact match, BLEU, LLM-as-judge (GPT-4 rates outputs).

LoRA vs full FT?

LoRA: 0.1-1% params updated, fast, cheap. Full FT: all params, лучшее качество но 10-100x cost. Для 95% use cases LoRA достаточно.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.