← Назад к вопросам
Какие методы помогают облегчить языковую модель перед развертыванием в production?
2.0 Middle🔥 211 комментариев
#Глубокое обучение#MLOps и инфраструктура
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Методы оптимизации моделей для production
В production важны не самые точные, а быстрые и экономные модели. Рассмотрю основные техники.
1. Quantization
Уменьшение точности (float32 → int8):
- Размер: 4x меньше
- Скорость: 2-4x быстрее
- Качество: 95-99% от оригинала
from torch.quantization import quantize_dynamic
quantized_model = quantize_dynamic(model, {nn.Linear}, dtype=torch.qint8)
2. Knowledge Distillation
Обучаем маленькую модель копировать большую:
- Student модель 5-10x меньше
- Сохраняет 90-95% качества teacher
- Требует labeled примеры
class DistillationLoss(nn.Module):
def forward(self, student_logits, teacher_logits, labels):
distill_loss = F.kl_div(
F.log_softmax(student_logits / T, dim=-1),
F.softmax(teacher_logits / T, dim=-1)
)
task_loss = F.cross_entropy(student_logits, labels)
return 0.7 * distill_loss + 0.3 * task_loss
3. Pruning
Удаление неважных weights:
- 10-50% reduction
- Может быть медленнее без специальной поддержки
from torch.nn.utils import prune
for module in model.modules():
if isinstance(module, nn.Linear):
prune.l1_unstructured(module, name='weight', amount=0.3)
4. LoRA (Low-Rank Adaptation)
Для fine-tuning больших моделей:
- 10,000x меньше trainable параметров
- 95%+ качество
from peft import get_peft_model, LoraConfig
peft_config = LoraConfig(r=8, lora_alpha=16, target_modules=['q_proj', 'v_proj'])
model = get_peft_model(base_model, peft_config)
5. Mixed Precision Training
Тренируем в float16, сохраняем в float32:
- 2x память меньше
- 2-3x скорость
- Same accuracy
from torch.cuda.amp import autocast, GradScaler
with autocast():
predictions = model(x)
loss = criterion(predictions, y)
6. ONNX Export
Конвертируем в optimized формат:
torch.onnx.export(model, dummy_input, "model.onnx")
import onnxruntime as rt
sess = rt.InferenceSession("model.onnx")
Рекомендованный pipeline
- Mixed Precision (лучше всего, просто)
- Knowledge Distillation (если нужна маленькая)
- Quantization (int8 для мобилей)
- Export to ONNX/TensorRT
- Benchmark на production данных
Результаты
| Метод | Compression | Quality | Speed |
|---|---|---|---|
| Quantization | 4x | 95-98% | 2-4x |
| Distillation | 10x | 90-95% | 5-10x |
| Pruning | 2-10x | 90-99% | 1-3x |
| LoRA params | 100x | 95%+ | 1x |
| Mixed Precision | 2x memory | 99%+ | 2-3x |
В production обычно комбинирую несколько методов: Mixed Precision + Quantization + Distillation дают 40-100x ускорение с минимальной потерей качества.