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

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

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

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

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

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

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

DeepSeek — сім'я моделей мов з відкритим кодом від китайської компанії DeepSeek AI, випущена під ліцензією MIT. DeepSeek-V3 та DeepSeek-R1 — поточні флагманські моделі, конкуруючи з GPT-4o та Claude 3.5 Sonnet за більшістю бенчмарків при значно нижчій вартості логічного висновку. Відкриті ваги та висока якість роблять DeepSeek привабливим для сценаріїв дотонування на рівні enterprise.

Сім'я DeepSeek: навігація за моделями

Модель Параметри Архітектура Програма
DeepSeek-V3 671B (MoE, ~37B активних) MoE Флагман, загальна мета
DeepSeek-R1 671B (MoE) MoE + Chain-of-Thought Reasoning, математика
DeepSeek-R1-Distill-Llama-70B 70B Dense Reasoning, більш доступна
DeepSeek-R1-Distill-Llama-8B 8B Dense Легкий reasoning
DeepSeek-R1-Distill-Qwen-32B 32B Dense Рівновага якості/ресурсів
DeepSeek-Coder-V2 236B (MoE) MoE Генерування коду

Для практичного дотонування найчастіше використовуються дистильовані версії (8B, 32B, 70B) — вони тренуються на звичайних GPU кластерах та дають хорошые результати для спеціалізованих завдань.

Архітектурна особливість: Multi-head Latent Attention (MLA)

DeepSeek-V3 використовує MLA — механізм уваги із стисненням KV-кеша. Порівняно з GQA (Grouped Query Attention в Llama), MLA зменшує KV-кеш у 5–13 разів при порівнянній якості. Це критично для логічного висновку з довгим контекстом — DeepSeek підтримує 128K токенів із розумними вимогами до пам'яті.

При дотонуванні, шари MLA обробляються нормально через peft, але при виборі target_modules враховуємо специфіку: в DeepSeek-V3, проекції уваги названі q_proj, kv_a_proj_with_mqa, kv_b_proj, o_proj.

LoRA дотонування DeepSeek-R1-Distill-Qwen-32B

from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model, TaskType
import torch

model_name = "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B"

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

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    quantization_config=bnb_config,
    device_map="auto",
    trust_remote_code=True,  # потрібно для DeepSeek
    torch_dtype=torch.bfloat16,
)

lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "v_proj", "k_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type=TaskType.CAUSAL_LM,
)

model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# trainable params: 160,432,128 || all params: 32,783,822,848 || trainable%: 0.49

Робота із ланцюгом мислення при дотонуванні R1

DeepSeek-R1 генерує reasoning у спеціальних тегах <think>...</think> перед остаточною відповіддю. При дотонуванні на спеціалізованих даних важливо:

  1. Зберегти think-блоки в прикладах тренування — це підтримує здатність моделі до reasoning
  2. Не придушувати токен <think> в промптах під час тренування
  3. Видалити reasoning із логічного висновку, якщо потрібно — використовуйте <think>\n\n</think> як префікс або відкоригуйте критерії зупинки

Приклад тренувального прикладу для R1:

{
  "messages": [
    {"role": "user", "content": "Чи є суперечність між розділом 3.2 та розділом 7.1 контракту?"},
    {"role": "assistant", "content": "<think>\nРозділ 3.2 встановлює термін оплати — 30 днів з моменту доставки. Розділ 7.1 надає постачальнику право призупинити поставки, якщо оплата прострочена більше ніж на 15 днів. Суперечності немає — розділ 7.1 створює право, що виникає раніше, ніж закінчується загальний термін оплати.\n</think>\n\nНемає прямої суперечності між розділами..."}
  ]
}

Практичний випадок: модель reasoning для фінансового аудиту

Завдання: дотонувати DeepSeek-R1-Distill-Qwen-32B для виявлення порушень у фінансових документах — невідповідностей між статтями балансу, порушень принципу подвійного запису, аномальних операцій.

Набір даних: 2100 прикладів: фрагменти фінансової документації + think-блок з покроковим reasoning аудитора + висновок. Дані підготовлені з практикуючими аудиторами.

Тренування: QLoRA (r=32), 3 епохи, 4×A100 40GB, 18 годин.

Результати:

  • Точність виявлення порушень: 0.61 → 0.89
  • Recall (не пропускає порушення): 0.54 → 0.84
  • F1: 0.57 → 0.87
  • Якість reasoning (оцінка аудиторів, 1–5): 2.8 → 4.3

Логічний висновок через vLLM з підтримкою MoE

Для DeepSeek-V3/R1 (повний розмір) потребує спеціальної конфігурації vLLM:

from vllm import LLM, SamplingParams

llm = LLM(
    model="deepseek-ai/DeepSeek-V3",
    tensor_parallel_size=8,   # 8×H100 для повної моделі
    trust_remote_code=True,
    max_model_len=65536,
    dtype="bfloat16",
)

Для дистильованих моделей (8B, 32B) достатньо 1–4 GPU.

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

  • Підготовка набору даних з think-блоками: 3–8 тижнів (значно складніше за стандартний SFT)
  • Тренування (32B, 4×A100): 12–24 години
  • Оцінка якості reasoning: 2 тижні (потребує експертної оцінки)
  • Розгортання та моніторинг: 1–2 тижні
  • Усього: 7–14 тижнів