Skip to content
EN

Fine-tuning LLM

Коротко:

Fine-tuning — дополнительное training шаг после pretrain, когда model адаптируется к specific task / domain на ваших данных. Полный FT меняет все weights (требует много GPU). LoRA / QLoRA — только low-rank adapters (1% параметров → 10x быстрее, работает на 1 GPU). Use cases: JSON structured output, domain tone, coding style, non-English languages. OpenAI, Together.ai, Hugging Face AutoTrain — easy APIs.

Ниже: подробности, пример, смежные термины, FAQ.

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

Подробности

  • Full fine-tuning: все weights обновляются. 70B нужен 8× H100
  • LoRA: low-rank decomposition, 0.1-1% params. Runs on 1× A100 для 7B model
  • QLoRA: LoRA + 4-bit quantization → 7B в 24GB RAM (consumer GPU)
  • Data format: JSONL { messages: [{role, content}] } OpenAI, Alpaca format и др
  • Training time: 1-10 часов для 1-10k examples на LoRA

Пример

# OpenAI fine-tuning (JSONL format)
# train.jsonl:
{"messages": [{"role":"user","content":"What is TCP?"},{"role":"assistant","content":"TCP — reliable stream protocol..."}]}

# Upload
openai api files.create -p fine-tune train.jsonl

# Create fine-tune
openai api fine_tuning.jobs.create -t file-abc -m gpt-4o-mini

# Monitor
openai api fine_tuning.jobs.retrieve ft-xyz

Смежные термины

Что такое Fine-tuning LLM с использованием Supervised Learning и LoRA?

Fine-tuning LLM (Large Language Model) с использованием методов supervised learning и LoRA (Low-Rank Adaptation) позволяет улучшить производительность модели на специфических задачах. Supervised learning предполагает наличие размеченных данных, на которых модель обучается, в то время как LoRA предоставляет возможность адаптации больших моделей с минимальными затратами ресурсов, используя низкоранговые матрицы для обновления весов. Например, для fine-tuning LLM можно использовать команду transformers-cli train --model_name gpt-2 --dataset my_dataset --lora_rank 8 для настройки модели GPT-2 с использованием LoRA, что экономит память и ускоряет процесс обучения.

Методология Fine-tuning с Supervised Learning

Fine-tuning LLM с использованием supervised learning включает несколько ключевых этапов. Во-первых, необходимо собрать и подготовить размеченный набор данных, который будет использоваться для обучения. Это могут быть тексты, соответствующие конкретной задаче, например, анализ настроений или генерация ответов на вопросы. Затем следует выбрать модель, которую необходимо дообучить, и настроить гиперпараметры.

Для начала, важно учитывать следующие аспекты:

  • Выбор модели: Используйте популярные LLM, такие как BERT, GPT-2 или T5, в зависимости от вашей задачи.
  • Подготовка данных: Данные должны быть разбиты на обучающую и тестовую выборки, с учетом баланса классов.
  • Гиперпараметры: Настройте такие параметры, как скорость обучения (например, 5e-5), размер батча (например, 16), количество эпох (например, 3).

После подготовки данных и настройки модели можно переходить к процессу обучения. Используйте такие библиотеки, как Hugging Face Transformers, для выполнения fine-tuning. Например, используйте следующий код:

from transformers import Trainer, TrainingArguments

training_args = TrainingArguments(
    output_dir='./results',
    num_train_epochs=3,
    per_device_train_batch_size=16,
    per_device_eval_batch_size=16,
    warmup_steps=500,
    weight_decay=0.01,
    logging_dir='./logs',
)
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
)
trainer.train()

Этот код позволяет обучать LLM на ваших данных с использованием методов supervised learning, обеспечивая при этом контроль над процессом обучения.

Применение LoRA для оптимизации Fine-tuning

Low-Rank Adaptation (LoRA) является мощным инструментом для оптимизации процесса fine-tuning LLM. Основная идея заключается в том, что вместо обновления всех весов модели, LoRA добавляет небольшие низкоранговые матрицы к существующим весам, что позволяет значительно сократить количество параметров, которые необходимо обновлять. Это особенно полезно при работе с большими моделями, где полное обучение может занять много времени и ресурсов.

Чтобы применить LoRA в процессе fine-tuning, выполните следующие шаги:

  1. Установка необходимых библиотек: Убедитесь, что у вас установлены библиотеки, такие как transformers и peft.
  2. Настройка LoRA в коде: Вы можете активировать LoRA, добавив соответствующие параметры в конфигурацию обучения.

Например, для использования LoRA в вашем проекте, вы можете использовать следующий код:

from peft import get_peft_model, LoraConfig

lora_config = LoraConfig(
    r=8,
    lora_alpha=16,
    target_modules=['query', 'value'],
    lora_dropout=0.1,
)
model = get_peft_model(base_model, lora_config)

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

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

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

Нужен ли fine-tune?

Если prompt engineering + RAG не дают нужного качества, style или structured output — да. Иначе лучше optimize prompt.

Dataset size?

Минимум 100 examples для ощутимого effect. 1k-10k — рекомендованный range. Больше — diminishing returns.

Cost?

OpenAI gpt-4o-mini FT: $3 за 1M training tokens. Together.ai Llama 70B: ~$10. Full FT 70B в cloud — $500+.

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

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