Обучение LoRA адаптеров

Как создавать специализированные модели для ваших задач в Aidagolova Desktop

Что такое LoRA адаптер?

LoRA (Low-Rank Adaptation) — это метод эффективной настройки больших языковых моделей. Вместо переобучения всей модели (миллиарды параметров) LoRA добавляет небольшие адаптеры — всего тысячи или десятки тысяч параметров, которые «прикрепляются» к базовой модели.

Почему это удобно?

Один базовый LLM (например, Qwen2.5-0.5B) может использоваться для разных задач — достаточно загрузить нужный адаптер. Не нужно хранить несколько полных моделей.

Подготовка данных для обучения

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

Aidagolova поддерживает обучение на данных в формате JSONL — каждая строка файла содержит один JSON-объект.

Структура записи

{"messages": [
  {"role": "system", "content": "Ты — финансовый аналитик."},
  {"role": "user", "content": "Какой доходность у ОФЗ?"},
  {"role": "assistant", "content": "ОФЗ — облигации федерального займа..."}
]}
{"messages": [
  {"role": "user", "content": "Объясни разницу между акцией и облигацией"},
  {"role": "assistant", "content": "Акция — это доля в компании..."}
]}

Требования к данным

ПараметрЗначение
ФорматJSONL (одна строка = один диалог)
Поля в сообщенииrole: system, user, assistant
content: текст сообщения
Рекомендуемый размер500–10 000 примеров для fine-tuning
Максимальная длина2048 токенов на один пример
КодировкаUTF-8
Где взять данные?

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

Шаг 1 — Откройте вкладку «Training»

В левом меню Aidagolova Desktop выберите пункт Training.

Шаг 2 — Выберите базовую модель

Выберите модель из списка. Рекомендуемые модели для обучения адаптеров:

Шаг 3 — Настройте параметры

Параметр По умолчанию Описание
adapter_name не задан Название адаптера (латиница, без пробелов)
dataset_path не задан Путь к файлу JSONL с данными
rank (r) 8 Ранг адаптера. Чем больше — тем больше параметров адаптера, тем точнее, но дольше обучение. Диапазон: 4–64
alpha 16 Коэффициент масштабирования. Обычно 2× rank
epochs 3 Количество эпох. 1–5 достаточно для большинства задач
batch_size 4 Размер батча. Больше = быстрее, но требует больше VRAM
learning_rate 3e-4 Скорость обучения. 1e-4 — 5e-4 типичный диапазон
cutoff_len 512 Максимальная длина последовательности в токенах
target_modules q_proj, v_proj Какие слои модели затрагивает адаптер
lora_dropout 0.05 Dropout для LoRA слоёв

Шаг 4 — Запустите обучение

Нажмите кнопку ▶ Start Training.

Требования к железу

Обучение требует GPU с CUDA и минимум 6GB VRAM для модели 0.5B. Для 3B модели нужно 12GB+ VRAM. Обучение на CPU не поддерживается.

Шаг 5 — Дождитесь завершения

Статус обучения отображается в реальном времени:

Training Status:
  Running: ✓
  Epoch: 2 / 3
  Step: 150 / 500
  Loss: 0.542
  ETA: ~25 minutes

Использование обученного адаптера

После завершения обучения адаптер автоматически появится в списке Adapters в Aidagolova Desktop.

  1. Перейдите на вкладку Adapters
  2. Выберите адаптер из списка
  3. Нажмите Load — адаптер загрузится в VRAM
  4. Теперь при отправке запросов модель будет использовать специализированный адаптер
Выбор адаптера в запросе

При отправке сообщения можно указать какой адаптер использовать: @имя_адаптера. Если не указать — используется последний загруженный.

Рекомендации по качеству данных

Что делает данные хорошими:

Чего избегать:

Пример подготовки данных

Python-скрипт для конвертации CSV в JSONL:

import json

with open("my_data.csv", "r") as f:
    lines = f.readlines()[1:]  # пропустить заголовок

with open("training_data.jsonl", "w") as out:
    for line in lines:
        parts = line.strip().split("|")
        if len(parts) >= 2:
            record = {
                "messages": [
                    {"role": "system", "content": "Ты — ассистент."},
                    {"role": "user", "content": parts[0].strip()},
                    {"role": "assistant", "content": parts[1].strip()}
                ]
            }
            out.write(json.dumps(record, ensure_ascii=False) + "\n")

Список адаптеров

Обученные адаптеры сохраняются в:

~/.local/share/aidagolova/adapters/

Каждый адаптер — отдельная папка с файлами adapter_config.json и adapter_model.safetensors.

Устранение неполадок

ПроблемаРешение
CUDA out of memoryУменьшите batch_size до 2 или 1
Loss не уменьшаетсяПроверьте качество данных, увеличьте learning_rate
Адаптер не загружаетсяПроверьте что базовая модель та же что при обучении
RuntimeError: expectedОбновите драйверы NVIDIA до последней версии