Дообучение (Fine-Tuning) языковой модели Phi (Microsoft)
Phi — семейство компактных языковых моделей Microsoft Research, оптимизированных по принципу «качество данных важнее количества параметров». Phi-3 и Phi-4 показывают результаты, сопоставимые с моделями в 3–5× крупнее, на задачах reasoning и программирования. Это делает их привлекательными для edge-деплоя, мобильных приложений и сценариев с ограниченными вычислительными ресурсами.
Модельный ряд Phi
| Модель | Параметры | VRAM (fp16) | Ключевая особенность |
|---|---|---|---|
| Phi-3-mini-4k | 3.8B | 7.6 GB | Edge/mobile |
| Phi-3-mini-128k | 3.8B | 7.6 GB | Длинный контекст |
| Phi-3-small | 7B | 14 GB | Баланс |
| Phi-3-medium | 14B | 28 GB | Высокое качество |
| Phi-4 | 14B | 28 GB | Актуальный флагман |
| Phi-4-mini | 3.8B | 7.6 GB | Компактный флагман |
Phi-4 при 14B параметрах превосходит Llama 3.1 70B на ряде бенчмарков по математике и программированию — результат высокого качества обучающих данных (синтетические данные, textbooks).
LoRA fine-tuning Phi-4 через transformers + trl
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from trl import SFTTrainer, SFTConfig
from peft import LoraConfig
import torch
model = AutoModelForCausalLM.from_pretrained(
"microsoft/phi-4",
quantization_config=BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_compute_dtype=torch.bfloat16),
device_map="auto",
trust_remote_code=True,
torch_dtype=torch.bfloat16,
)
trainer = SFTTrainer(
model=model,
args=SFTConfig(
output_dir="./phi4-finetuned",
num_train_epochs=4,
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
learning_rate=1e-4,
bf16=True,
max_seq_length=8192,
),
peft_config=LoraConfig(
r=16, lora_alpha=32,
target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
task_type="CAUSAL_LM"
),
train_dataset=dataset,
)
trainer.train()
Специфика: fine-tuning для edge и мобильных устройств
Phi-3/4-mini (3.8B) — наиболее популярный выбор для деплоя в мобильные приложения и браузерные расширения. После fine-tuning и квантизации:
- GGUF Q4_K_M: ~2.2 GB, работает на CPU (MacBook M-series: ~12 tok/s)
- ONNX INT4: используется в ONNX Runtime для Windows/Android
- ExecuTorch: деплой на iPhone/Android через PyTorch Mobile
Microsoft предоставляет ONNX-версии Phi через microsoft/Phi-3-mini-4k-instruct-onnx, что упрощает интеграцию в .NET и Windows-приложения.
Практический кейс: offline-ассистент для полевых инженеров
Задача: мобильное приложение для инженеров обслуживания промышленного оборудования. Ассистент работает offline (нет интернета на объектах), отвечает на вопросы по регламентам и помогает диагностировать неисправности.
Базовая модель: Phi-3-mini-128k-instruct (3.8B, контекст 128K нужен для длинных технических мануалов).
Датасет: 1400 пар (фрагмент документации / вопрос инженера → ответ с номером регламента и шагами).
Результат:
- Accuracy ответов (соответствие регламентам): 58% → 86%
- Hallucination rate (выдумывает несуществующие шаги): 31% → 8%
- Модель после GGUF Q4_K_M: 2.1 GB, 9 tok/s на CPU смартфона (Snapdragon 8 Gen 3)
Сроки
- Подготовка датасета: 2–4 недели
- Обучение (Phi-4 14B, QLoRA, A100): 4–10 часов
- Квантизация и тестирование на устройстве: 3–5 дней
- Итого: 3–6 недель







