Дообучение (Fine-Tuning) языковой модели Mistral

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Дообучение (Fine-Tuning) языковой модели Mistral
Сложная
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Дообучение (Fine-Tuning) языковой модели Mistral

Mistral AI выпускает как открытые модели (Mistral 7B, Mixtral 8x7B, Mixtral 8x22B), так и закрытые (Mistral Large, Mistral Small) с доступом через API. Fine-tuning доступен двумя путями: через La Plateforme (официальный сервис Mistral) для закрытых моделей, и через self-hosted обучение для открытых весов. Mistral 7B — одна из самых популярных базовых моделей для LoRA-дообучения благодаря высокому соотношению качества к размеру.

Семейство моделей Mistral для fine-tuning

Модель Тип Доступ к весам Fine-tuning
Mistral 7B v0.3 Открытая Да Self-hosted, LoRA/Full
Mixtral 8x7B Открытая (MoE) Да Self-hosted, LoRA
Mixtral 8x22B Открытая (MoE) Да Self-hosted, многоGPU
Mistral Small Закрытая Нет La Plateforme API
Mistral Large Закрытая Нет La Plateforme API
Codestral Закрытая Нет La Plateforme API

Fine-tuning через La Plateforme

Mistral предоставляет управляемый fine-tuning через API с минимальным порогом входа:

from mistralai import Mistral

client = Mistral(api_key="...")

# Загрузка датасета
with open("train.jsonl", "rb") as f:
    response = client.files.upload(file=("train.jsonl", f, "application/json"))
    file_id = response.id

# Создание джоба
job = client.fine_tuning.jobs.create(
    model="open-mistral-7b",
    training_files=[{"file_id": file_id, "weight": 1}],
    hyperparameters={
        "training_steps": 1000,
        "learning_rate": 0.0001
    }
)

Формат данных для La Plateforme — JSONL с полями messages (аналогично OpenAI Chat format):

{"messages": [{"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}

Архитектурная особенность Mixtral: Mixture of Experts

Mixtral 8x7B использует MoE-архитектуру: 8 «экспертов» (отдельных MLP), из которых для каждого токена активируются только 2. Это даёт качество сопоставимое с 40B+ моделью при VRAM-требованиях ~48GB (fp16) и скорости inference 7B модели.

При LoRA fine-tuning Mixtral важно выбрать правильные target_modules. В MoE-слоях есть специфические параметры:

lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    # Для Mixtral включаем MoE-специфичные слои
    target_modules=[
        "q_proj", "v_proj", "k_proj", "o_proj",
        "w1", "w2", "w3"  # MoE expert weights
    ],
    task_type="CAUSAL_LM"
)

Включение w1/w2/w3 (веса экспертов) в LoRA даёт существенный прирост качества для domain-specific задач, но увеличивает число обучаемых параметров.

Self-hosted fine-tuning Mistral 7B: пошаговый разбор

Типичный стек для продакшн fine-tuning: transformers + trl + peft + bitsandbytes + Weights & Biases для мониторинга.

from trl import SFTTrainer, SFTConfig
from peft import LoraConfig
from transformers import AutoModelForCausalLM, BitsAndBytesConfig

bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
)

model = AutoModelForCausalLM.from_pretrained(
    "mistralai/Mistral-7B-Instruct-v0.3",
    quantization_config=bnb_config,
    device_map="auto"
)

# Mistral использует sliding window attention
# context_length лучше ограничить до 4096 при QLoRA
trainer = SFTTrainer(
    model=model,
    args=SFTConfig(
        max_seq_length=4096,
        num_train_epochs=4,
        per_device_train_batch_size=2,
        gradient_accumulation_steps=8,
        warmup_ratio=0.1,
        lr_scheduler_type="cosine",
        learning_rate=2e-4,
        bf16=True,
        report_to="wandb",
    ),
    train_dataset=train_dataset,
    peft_config=LoraConfig(r=16, lora_alpha=32, target_modules=["q_proj","v_proj"])
)

Практический кейс: e-commerce классификатор на Mistral 7B

Задача: классификация товарных описаний по 340 категориям каталога (иерархическая, 3 уровня). До этого использовался эвристический классификатор с accuracy 61%.

Датасет: 18 000 примеров (название + описание товара → путь в иерархии категорий).

Обучение: Mistral 7B Instruct v0.3, QLoRA (r=32), 3 эпохи, одна A100 40GB, 2.5 часа.

Результаты:

  • Top-1 accuracy: 61% → 88%
  • Top-3 accuracy: 79% → 97%
  • Latency p50: 340мс (vLLM, batching)
  • Стоимость vs La Plateforme API: -73% при объёме 500K запросов/месяц

Когда выбирать Mistral vs Llama vs GPT-4o для fine-tuning

Mistral 7B — оптимален, когда нужен баланс качества и скорости, один GPU, задачи классификации или извлечения данных умеренной сложности.

Mixtral 8x7B — когда 7B не хватает качества, но 70B слишком дорог в инференсе; хорош для генерации и сложного reasoning.

Llama 3.1 70B — максимальное качество среди открытых, когда нужно конкурировать с GPT-4 уровнем.

GPT-4o fine-tuning — когда нет GPU-инфраструктуры, данные не конфиденциальны, объём инференса средний.

Сроки проекта

  • Подготовка данных: 2–5 недель
  • Обучение и итерации (Mistral 7B, A100): 1–3 дня суммарно
  • Обучение (Mixtral 8x7B, 2×A100): 3–7 дней суммарно
  • Оценка, тюнинг, деплой: 1–2 недели
  • Итого: 4–9 недель