Дообчання (Fine-Tuning) мовної моделі Mistral

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Дообчання (Fine-Tuning) мовної моделі Mistral
Складний
від 1 тижня до 3 місяців
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

Дотонування мовних моделей Mistral

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

Сімейство моделей Mistral для дотонування

Модель Тип Доступ до ваг Дотонування
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

Дотонування через La Plateforme

Mistral надає керований дотонування через 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):

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

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

Mixtral 8x7B використовує архітектуру MoE: 8 "експертів" (окремих MLP), з яких активуються тільки 2 для кожного токену. Це забезпечує якість порівнянну з моделями 40B+ з вимогами до VRAM ~48GB (fp16) та швидкістю логічного висновку моделі 7B.

Для дотонування LoRA 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
    ],
    task_type="CAUSAL_LM"
)

Включення w1/w2/w3 (ваги експертів) у LoRA забезпечує значне покращення якості для завдань, специфічних для домену, але збільшує треновані параметри.

Self-Hosted дотонування Mistral 7B: покроково

Типовий стек для дотонування виробництва: 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"])
)

Практичний випадок: класифікатор електронної комерції на Mistral 7B

Завдання: класифікувати описи товарів у 340 категорій каталогу (ієрархічна, 3 рівні). Раніше використовувався еврістичний класифікатор з точністю 61%.

Набір даних: 18,000 прикладів (назва товару + опис → шлях ієрархії категорій).

Тренування: Mistral 7B Instruct v0.3, QLoRA (r=32), 3 епохи, один A100 40GB, 2.5 години.

Результати:

  • Top-1 точність: 61% → 88%
  • Top-3 точність: 79% → 97%
  • Затримка p50: 340ms (vLLM, batching)
  • Вартість проти La Plateforme API: -73% при 500K запитів/місяць

Коли вибирати Mistral проти Llama проти GPT-4o для дотонування

Mistral 7B — оптимальна при потребі в рівновазі якості та швидкості, один GPU, завдання класифікації або видалення даних помірної складності.

Mixtral 8x7B — коли 7B не має достатньої якості, але 70B занадто дорогий при логічному висновку; хорошо для генерування та складного reasoning.

Llama 3.1 70B — максимальна якість серед моделей з відкритим кодом, коли потрібно конкурувати з рівнем GPT-4.

Дотонування GPT-4o — при відсутності GPU-інфраструктури, дані не конфіденційні, середній обсяг логічного висновку.

Графік проекту

  • Підготовка даних: 2–5 тижнів
  • Тренування та ітерації (Mistral 7B, A100): 1–3 дні усього
  • Тренування (Mixtral 8x7B, 2×A100): 3–7 днів усього
  • Оцінка, налаштування, розгортання: 1–2 тижні
  • Усього: 4–9 тижнів