Training
чекпоинт
Сохранённое состояние модели и оптимизатора в определённый момент обучения.
Что такое чекпоинт
Чекпоинт (checkpoint) — снимок полного состояния обучения в определённый момент: веса модели, состояния оптимизатора, значение шага, состояние планировщика lr. Позволяет возобновить обучение после прерывания или откатиться к лучшей версии модели.
Только веса (без состояния оптимизатора) — это просто checkpoint веса (model checkpoint), достаточный для инференса.
Когда чекпоинты критичны
- Spot-инстансы — инстанс может прерваться в любой момент
- Длительное обучение — недели на кластере; потеря прогресса = серьёзный ущерб
- Hyperparameter search — нужно сохранять лучшие конфигурации
- Early stopping — сохранить лучший чекпоинт по val_loss
Hugging Face Trainer
from transformers import TrainingArguments
args = TrainingArguments(
output_dir="./checkpoints",
save_steps=500, # сохранять каждые 500 шагов
save_total_limit=3, # хранить только 3 последних
load_best_model_at_end=True, # загрузить лучший в конце
metric_for_best_model="eval_loss", # критерий выбора лучшего
)
Восстановление обучения
# Продолжить с последнего чекпоинта
trainer.train(resume_from_checkpoint="./checkpoints/checkpoint-1000")
# Или автоматически — последний чекпоинт
trainer.train(resume_from_checkpoint=True)
Размер чекпоинта
| Модель | Только веса | Full checkpoint (+ оптимизатор) |
|---|---|---|
| 7B BF16 | ~14 ГБ | ~42 ГБ |
| 7B LoRA | ~50 МБ | ~50 МБ |
| 70B BF16 | ~140 ГБ | ~420 ГБ |
LoRA-чекпоинты содержат только адаптеры — они компактны.
Связанные термины
- spot-инстанс — где чекпоинты особенно важны
- LoRA — компактные адаптерные чекпоинты
- overfitting — early stopping использует чекпоинты
- VRAM — не задействована при сохранении на диск
Готовы запустить GPU-задачу?
Запустить GPU-сервер