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

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Дообучение (Fine-Tuning) языковой модели DeepSeek
Сложная
от 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) языковой модели DeepSeek

DeepSeek — семейство открытых языковых моделей китайской компании DeepSeek AI, выпускаемых под лицензией MIT. DeepSeek-V3 и DeepSeek-R1 — текущие флагманы семейства, конкурирующие с GPT-4o и Claude 3.5 Sonnet по большинству бенчмарков при существенно меньшей стоимости инференса. Открытые веса и высокое качество делают DeepSeek привлекательным кандидатом для fine-tuning в enterprise-сценариях.

Семейство DeepSeek: навигация по моделям

Модель Параметры Архитектура Применение
DeepSeek-V3 671B (MoE, ~37B активных) MoE Флагман, general purpose
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 Генерация кода

Для практического fine-tuning чаще используются дистиллированные версии (8B, 32B, 70B) — они обучаются на обычном GPU-кластере и дают хорошие результаты для специализированных задач.

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

DeepSeek-V3 использует MLA — механизм внимания с компрессией KV-кэша. По сравнению с GQA (Grouped Query Attention в Llama), MLA снижает объём KV-кэша в 5–13× при аналогичном качестве. Это критично при инференсе с длинным контекстом — DeepSeek поддерживает 128K токенов при разумных требованиях к памяти.

При fine-tuning MLA-слои обрабатываются стандартным образом через peft, но при выборе target_modules учитываем специфику: в DeepSeek-V3 attention проекции называются q_proj, kv_a_proj_with_mqa, kv_b_proj, o_proj.

LoRA fine-tuning 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

Работа с цепочкой размышлений (Chain-of-Thought) при fine-tuning R1

DeepSeek-R1 генерирует рассуждения в специальных тегах <think>...</think> перед финальным ответом. При fine-tuning на специализированных данных важно:

  1. Сохранять think-блоки в обучающих примерах — это поддерживает reasoning-способность модели
  2. Не подавлять токен <think> в промптах во время обучения
  3. При необходимости убрать reasoning из инференса — использовать <think>\n\n</think> как prefix или настроить stopping criteria

Пример обучающего примера для 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-блок с пошаговым рассуждением аудитора + финальное заключение. Данные подготовлены совместно с практикующими аудиторами.

Обучение: QLoRA (r=32), 3 эпохи, 4×A100 40GB, 18 часов.

Результаты:

  • Precision выявления нарушений: 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 недель