Как вы логируете и отслеживаете эксперименты по fine-tuning (MLflow, Weights & Biases, TensorBoard)?
1. Weights & Biases (WandB): удобные графики и сравнение runs
WandB — это облачный SaaS-сервис (с возможностью self-hosted) для трекинга экспериментов, визуализации и коллаборации. Интегрируется с HuggingFace Transformers через колбэк TrainerCallback и позволяет в реальном времени логировать:
- train/val loss, perplexity,
- градиентную норму, learning rate (scheduler),
- произвольные метрики (accuracy, F1, BLEU),
- конфигурацию модели и токенизатора.
Ключевая особенность — автоматическое логирование системных метрик (CPU/GPU/memory) и возможность создавать интерактивные дашборды. WandB предоставляет сравнение runs по выбранным метрикам, поиск лучшей конфигурации и артефакты для версионирования датасетов и чекпоинтов.
Пример интеграции:
import wandb
from transformers import Trainer, TrainingArguments
wandb.init(project="my-llm-finetuning", config={
"learning_rate": 2e-5,
"batch_size": 8,
"epochs": 3
})
training_args = TrainingArguments(
output_dir="./results",
report_to="wandb",
logging_dir="./logs",
logging_steps=10,
evaluation_strategy="steps",
save_strategy="steps",
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
callbacks=[
# можно добавить кастомный callback для логирования дополнительных метрик
]
)
trainer.train()
Плюсы:
- Готовая инфраструктура для визуализации.
- Широкие интеграции (PyTorch, TensorFlow, Hugging Face).
- Командная работа и shared reports.
Минусы:
- Зависимость от интернета (если не self-hosted).
- Ограничение бесплатного тарифа (ориентировочно 100 ГБ логов).
2. MLflow: open-source, интеграция с Hugging Face
MLflow — open-source платформа, которая покрывает весь lifecycle ML: трекинг экспериментов, управление моделями (Model Registry) и деплой. При fine-tuning LLM используется MLflow Tracking для логирования:
- параметров (параметры), метрик, артефактов (чекпоинтов, LoRA-весов).
- конфигурации TrainingArguments из HuggingFace.
Интеграция с Hugging Face осуществляется через MlflowCallback (или через autolog с помощью mlflow.transformers.autolog() в новой версии). MLflow автоматически логирует:
- модель в формате ONNX или PyTorch.
- метрики на каждом шаге (loss, eval_loss).
- гиперпараметры из TrainingArguments.
Пример:
import mlflow
from transformers import Trainer, TrainingArguments
mlflow.set_experiment("llm-finetuning-experiment")
with mlflow.start_run() as run:
# Логируем гиперпараметры
mlflow.log_params({
"learning_rate": 2e-5,
"batch_size": 8,
"num_epochs": 3,
"lora_r": 16,
"lora_alpha": 32,
})
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
callbacks=[MlflowCallback()] # если установлен mlflow-transformers
)
trainer.train()
# Логируем модель в MLflow Model Registry
mlflow.pytorch.log_model(model, "model")
Плюсы:
- Полностью open-source, можно развернуть локально или на Kubernetes.
- Не требует интернета.
- Встроенный Model Registry для версионирования моделей.
- Поддержка автологирования для Hugging Face с версии 2.0.
Минусы:
- UI менее интуитивный, чем у WandB (хотя улучшился).
- Требуется самостоятельная настройка сервера и хранилища (S3, GCS и т.д.).
3. TensorBoard: классика
TensorBoard — стандартный инструмент визуализации из экосистемы TensorFlow, но работает с PyTorch через SummaryWriter или встроенный колбэк TensorBoardCallback в HuggingFace.
Особенности:
- По умолчанию логируются loss, learning rate, histogram весов.
- HuggingFace
TrainingArgumentsсreport_to="tensorboard"автоматически пишет данные в папкуruns. - Можно смотреть графики в реальном времени через Jupyter (
%load_ext tensorboard).
Пример:
from transformers import Trainer, TrainingArguments
training_args = TrainingArguments(
output_dir="./results",
logging_dir="./logs",
logging_steps=10,
report_to="tensorboard",
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
)
trainer.train()
Запуск: tensorboard --logdir=./logs.
Плюсы:
- Бесплатно, не требует дополнительных сервисов.
- Лёгкий, работает локально.
- Подходит для быстрой визуализации одного эксперимента.
Минусы:
- Нет встроенного сравнения runs (только ручное переключение).
- Нет коллаборативных функций.
- Сложно логировать нестандартные метрики (нужен кастомный callback).
4. Что логировать: ключевые метрики и параметры
При fine-tuning LLM критически важно логировать не только loss, но и гиперпараметры, чтобы обеспечить воспроизводимость. Минимальный набор:
| Категория | Что логировать | Пример инструмента |
|---|---|---|
| Гиперпараметры | learning_rate, batch_size, num_epochs, warmup_steps, weight_decay, optimizer, scheduler | WandB config, MLflow log_params, TensorBoard hparams |
| Метрики обучения | train_loss, eval_loss, gradient_norm, lr (каждые N шагов) | WandB log, MLflow log_metrics, TensorBoard add_scalar |
| Метрики валидации | eval_loss, perplexity, accuracy, rouge, bleu (для генеративных задач) | ---//--- |
| Артефакты | чекпоинты, конфиги YAML, файлы токенизатора | WandB Artifacts, MLflow log_artifact |
| Системные метрики | использование GPU/CPU/памяти, время шага | WandB system metrics, nvidia-smi |
Практический совет: Всегда логируйте time_per_step и gradient_norm — они помогают отловить проблемы с обучением (исчезающие градиенты, нестабильность).
Для PEFT-методов (LoRA, QLoRA) дополнительно полезно логировать:
- параметры адаптеров (
lora_r,lora_alpha,target_modules), - количество обучаемых параметров,
- память под адаптеры.
5. Пет-проект для закрепления
Задача: Развернуть локальный MLflow сервер, выполнить fine-tuning небольшой LLM (например, DistilBERT или GPT-2) на датасете IMDb для классификации тональности, используя HuggingFace Trainer, и залогировать все метрики в MLflow. Затем сравнить два запуска с разными learning rates с помощью UI MLflow.
Инструменты:
- Python, PyTorch, Transformers, Datasets.
- MLflow (установить
pip install mlflow). - На выбор: WandB (для сравнения), TensorBoard (альтернатива).
Шаги:
- Установить MLflow, запустить трекинг сервер:
mlflow server --host 0.0.0.0 --port 5000. - Написать скрипт fine-tuning с
Trainer, добавивMlflowCallbackилиmlflow.transformers.autolog(). - Логировать:
learning_rate,batch_size,num_epochs,eval_loss,accuracy. - Запустить два разных эксперимента с
learning_rate=2e-5иlearning_rate=5e-5. - Открыть
http://localhost:5000, сравнить runs по метрикам, найти лучшую конфигурацию. - (Опционально) Зарегистрировать лучшую модель в MLflow Model Registry.
Ожидаемый результат:
- Настроенный пайплайн трекинга fine-tuning.
- Понимание разницы между инструментами (WandB проще для визуализации, MLflow — для MLOps).
- Умение воспроизвести эксперимент по ссылке run_id.
Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 73 | Как автоматизировать эксперименты с Grid Search / Optuna при fine-tuning? |
| 972 | Как настроить HuggingFace Trainer для кастомного логирования? |
| 973 | Какие метрики считать при fine-tuning LLM? |
| 975 | Как версионировать датасеты и модели при fine-tuning? |
Навигация
- Предыдущий: 973
- Следующий: 975
- Индекс: 00. Индекс разборов