Fine-tune Gemma 4 (или Qwen 3.6) на корпоративные данные: пошаговый гайд on-premise (152-ФЗ)

Веб Штурм
  • Gemma 4
  • Qwen
  • fine-tune
  • LoRA
  • 152-ФЗ
  • on-premise
  • LLM
  • multimodal

Gemma Oracle — наш внутренний продукт: локальный fine-tune Gemma 4 на корпоративных данных (история заявок, тарифы, политики). Цель — on-premise помощник менеджеру по продажам, который не передаёт ПД клиента во внешние LLM. С 1 июля 2025 это не «удобно», а юридически обязательно.

Контекст

В 2025-2026 году рынок открытых LLM закрыл главное белое пятно — small/medium модели с открытыми весами и multimodal-возможностями.

  • Gemma 4 от Google (выпущена апрель 2026) — multimodal (text, audio, images), 256K context, 140+ языков, открытые веса, варианты 4B/12B/27B
  • Qwen 3.6 от Alibaba — open-weight, конкурирует с Gemma 4 по multimodal, дешевле fine-tunится на узких задачах
  • YandexGPT 5 Lite — 8B параметров, 32K контекст, открытые веса (Apache 2.0)
  • GigaChat MoE — Mixture-of-Experts от Сбера, открытая часть весов

Всё это можно крутить локально на одной видеокарте 24GB.

При этом 152-ФЗ запрещает передавать персональные данные в иностранные сервисы (OpenAI, Anthropic, Google AI Cloud). Штрафы для повторных нарушений — до 18 млн ₽. On-premise LLM перестала быть экзотикой — это базовая compliance-инфраструктура.

Какую модель выбрать

СценарийМодель
Multimodal (text + image + audio в одном запросе)Gemma 4 12B/27B
Дешёвый fine-tune на узкой задачеQwen 3.6 7B (быстрее обучается, меньше VRAM)
Строго российский контекст (госсектор, банки)YandexGPT 5 Lite или GigaChat MoE
Англоязычный доменLLaMA 3.3 или Gemma 4

Для нашего Gemma Oracle выбрали Gemma 4 12B — multimodal помог распознавать сканы документов и фотографии теплоходов, а 256K context позволил влезть всю историю заявок одного клиента в один запрос.

Зачем нам своя LLM

Менеджер по продажам в круизном бизнесе ежедневно отвечает на повторяющиеся вопросы: «когда отправление в Кострому в августе», «какая цена на двухместку с балконом», «есть ли скидка для пенсионеров».

Внешний ChatGPT не знает наших тарифов и не должен знать ФИО клиентов. Свой помощник на Gemma 4 знает обе вещи и не «утекает» наружу. Окупается за 2-3 месяца только на сэкономленном времени менеджеров.

Подготовка датасета

Источник — CSV-выгрузки из старой PHP-системы (5+ лет истории). Структура:

# 5 типов записей:
# 1. tariffs.csv — тарифы по сезонам
# 2. ships.csv — теплоходы и каюты
# 3. orders.csv — анонимизированная история заявок (без ФИО, только профили)
# 4. policies.md — корпоративные политики (отмены, переносы)
# 5. faq.md — собранные за годы вопросы менеджерам

import pandas as pd
df = pd.read_csv('orders.csv', encoding='utf-8')
# Анонимизация: ФИО → «Турист N», телефон → «+7 (XXX) XXX-XX-XX»
df = anonymize(df, columns=['fio', 'phone', 'email'])

Из этого формируется JSONL в формате instruction-tuning:

{"instruction": "Сколько стоит двухместная каюта с балконом в августе 2026?", "output": "Двухместная каюта с балконом в августе — от 89 400 ₽ за пассажира на 7-дневный рейс. Конкретная цена зависит от палубы и даты отправления."}
{"instruction": "Какая политика отмены за 14 дней до круиза?", "output": "При отмене за 14-7 дней удерживается 50% стоимости. За 7-3 дня — 80%. Менее 3 дней — без возврата (кроме медицинских случаев с документами)."}

Размер датасета — 8-12 тысяч примеров. Меньше — модель плохо обобщает, больше — не помещается в одну эпоху на 24GB.

LoRA + 4-bit quantization на одной карте

Полный fine-tune Gemma 4 12B требует ~80GB VRAM и недостижим на потребительских картах. LoRA (Low-Rank Adaptation) обучает только небольшой набор параметров поверх замороженной базы — помещается в 24GB при 4-bit квантовании базы.

Ключевые параметры (Hugging Face PEFT + bitsandbytes):

from transformers import AutoModelForCausalLM, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model

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

model = AutoModelForCausalLM.from_pretrained(
    "google/gemma-4-12b-it",
    quantization_config=bnb_config,
    device_map="auto",
)

lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
    lora_dropout=0.05,
    task_type="CAUSAL_LM",
)
model = get_peft_model(model, lora_config)

На RTX 4090 24GB обучение 12K примеров за 3 эпохи — около 5-7 часов для Gemma 4 12B (для Qwen 3.6 7B — 3-4 часа). Чекпоинт LoRA-адаптера весит 60-100 МБ (vs 24 ГБ полной модели).

Eval-loop через small validation set

Без обратной связи fine-tune легко уходит в галлюцинации или забывание базовых знаний. Мы держим отдельный validation set из 200 примеров с эталонными ответами и считаем три метрики:

  1. Exact-match на цифрах (цены, даты, сроки) — допустимо ±5%, иначе считается ошибкой
  2. BLEU/ROUGE на текстовых ответах — отслеживаем общий drift
  3. Human eval на 30 примерах — раз в неделю руками проверяем «звучит ли как наш менеджер»

Если exact-match просел ниже 85% — катим назад на предыдущий чекпоинт.

Что мы из этого вынесли

  • Анонимизация — отдельный pipeline. ФИО, телефоны, паспорта должны вылетать ДО того, как датасет видит Hugging Face. Иначе случайная утечка чекпоинта в публичный репо = инцидент 152-ФЗ.
  • LoRA-адаптеры — лучший формат хранения версий. 60-100 МБ против 24 ГБ позволяет держать десятки версий и быстро откатываться.
  • Eval-loop важнее количества данных. 12K примеров с честным validation бьют 50K без него: модель учится на «как звучит правильный ответ», а не на «что чаще встречается».
  • Multimodal — игра-changer для документооборота. Gemma 4 умеет читать сканы паспортов и фотки теплоходов в том же запросе — это убирает отдельный OCR-pipeline.

Ссылки

Часто задаваемые вопросы

Что такое LoRA и почему именно она для fine-tune?
LoRA (Low-Rank Adaptation) — техника дообучения LLM, при которой обновляются только малые adapter-матрицы вместо полных весов модели. Экономия памяти GPU в 10-50 раз. Для Gemma 4 9B + LoRA + 4-bit quantization достаточно одной RTX 4090 24GB; полный fine-tune требует кластер A100.
Сколько стоит fine-tune Gemma на корпоративных данных?
Hardware: RTX 4090 24GB (~250 000 ₽ разово) или аренда GPU-сервера (~50-80 ₽/час). Разметка данных под задачу (1000-5000 пар instruction → response) — 1-2 недели работы. Тренинг: 4-12 часов на RTX 4090. Итог: ~150-400 тыс. ₽ + железо для первого MVP.
Реально ли работает локальная LLM на менеджерских задачах?
Да, на узких задачах. Gemma 4 9B + LoRA уверенно отвечает на вопросы по каталогу, формирует draft писем клиентам, классифицирует обращения. Для творческих задач и сложного reasoning слабее Claude/GPT-4. Стратегия: гибрид — рутина на локальной LLM, сложные случаи в облачную с обезличиванием.
Когда облачная LLM всё-таки лучше?
Если данные не ПДн и не коммерческая тайна — облако (Claude, GPT-4) выгоднее по совокупной стоимости. Стоимость владения GPU + разметка + поддержка часто превышает API-плату в первые 1-2 года. On-premise оправдан только при 152-ФЗ, отраслевых регуляциях (банки, медицина, гостайна) или объёмах >50M токенов/мес.