Aivaro
  • Оглавление
  • Вопросы
  • Практика
  • Вики
  • Материалы сообщества
  • Тесты
  • Поиск
✈Telegram @ai_varo
RUEN中文
…
Оглавление/Вопросы/#974

Как вы логируете и отслеживаете эксперименты по 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, schedulerWandB 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 (альтернатива).

Шаги:

  1. Установить MLflow, запустить трекинг сервер: mlflow server --host 0.0.0.0 --port 5000.
  2. Написать скрипт fine-tuning с Trainer, добавив MlflowCallback или mlflow.transformers.autolog().
  3. Логировать: learning_rate, batch_size, num_epochs, eval_loss, accuracy.
  4. Запустить два разных эксперимента с learning_rate=2e-5 и learning_rate=5e-5.
  5. Открыть http://localhost:5000, сравнить runs по метрикам, найти лучшую конфигурацию.
  6. (Опционально) Зарегистрировать лучшую модель в 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. Индекс разборов