Determined AI 教程:如何查看基于周期的训练指标

Determined AI 教程:如何查看基于周期的训练指标

【免费下载链接】determined Determined is an open-source machine learning platform that simplifies distributed training, hyperparameter tuning, experiment tracking, and resource management. Works with PyTorch and TensorFlow. 【免费下载链接】determined 项目地址: https://gitcode.com/gh_mirrors/de/determined

概述

在机器学习训练过程中,基于周期(Epoch)的指标监控对于理解模型的学习进度至关重要。Determined AI 提供了强大的工具来跟踪、可视化和分析这些指标。本教程将详细介绍如何在 Determined 平台中配置、报告和查看基于周期的训练指标。

为什么需要基于周期的指标监控?

mermaid

环境准备

安装 Determined

# 安装 Determined 库
pip install determined

# 启动本地集群(有 GPU)
det deploy local cluster-up

# 启动本地集群(无 GPU)
det deploy local cluster-up --no-gpu

项目结构

mnist_tutorial/
├── model_def.py          # 模型定义文件
├── metrics.yaml          # 实验配置文件
├── data.py              # 数据加载器
└── requirements.txt     # 依赖文件

配置基于周期的指标报告

实验配置文件 (metrics.yaml)

name: mnist_epoch_metrics
hyperparameters:
  global_batch_size: 64
  learning_rate: 1.0
searcher:
  name: single
  metric: validation_loss
  smaller_is_better: true
  max_length:
    batches: 1000
entrypoint: model_def:main
environment:
  image: determinedai/pytorch:latest
resources:
  slots_per_trial: 1

修改模型代码报告周期指标

在您的模型训练代码中,需要添加周期指标的报告逻辑:

import determined as det

def train_epoch(model, train_loader, optimizer, epoch_idx, core_context):
    model.train()
    for batch_idx, (data, target) in enumerate(train_loader):
        # 训练逻辑...
        loss = compute_loss(data, target)
        
        # 报告训练指标(包含周期信息)
        batches_completed = batch_idx + 1
        partial_epoch = batches_completed / len(train_loader)
        
        core_context.train.report_training_metrics(
            steps_completed=batches_completed + epoch_idx * len(train_loader),
            metrics={
                "train_loss": loss.item(),
                "epochs": epoch_idx + partial_epoch,  # 关键:报告周期指标
                "accuracy": compute_accuracy(output, target)
            }
        )

def validate_epoch(model, test_loader, epoch_idx, core_context):
    model.eval()
    test_loss = 0
    correct = 0
    
    with torch.no_grad():
        for data, target in test_loader:
            # 验证逻辑...
            output = model(data)
            test_loss += F.nll_loss(output, target, reduction="sum").item()
            pred = output.argmax(dim=1, keepdim=True)
            correct += pred.eq(target.view_as(pred)).sum().item()
    
    test_loss /= len(test_loader.dataset)
    accuracy = 100.0 * correct / len(test_loader.dataset)
    
    # 报告验证指标(包含完整周期信息)
    core_context.train.report_validation_metrics(
        steps_completed=(epoch_idx + 1) * len(train_loader),
        metrics={
            "validation_loss": test_loss,
            "validation_accuracy": accuracy,
            "epochs": epoch_idx + 1  # 关键:报告完整周期
        }
    )

运行实验并查看指标

启动实验

# 创建并运行实验
det experiment create metrics.yaml .

# 实时跟踪实验进度
det experiment create metrics.yaml . -f

WebUI 中的指标查看

在 Determined WebUI 中,您可以按以下步骤查看基于周期的指标:

  1. 访问实验页面:打开 http://localhost:8080 并登录
  2. 选择实验:点击您运行的实验ID
  3. 指标选项卡:导航到 "Metrics" 标签页
  4. X轴选择:在 X-Axis 下拉菜单中选择 "Epochs"

mermaid

指标可视化与分析

训练损失曲线

周期训练损失验证损失验证准确率学习率
10.5120.29891.2%0.01
20.2560.19594.3%0.01
30.1830.15295.8%0.01
40.1420.12896.5%0.001
50.1180.11597.1%0.001

关键指标解读

# 示例:分析指标趋势
def analyze_metrics(training_metrics, validation_metrics):
    """
    分析训练指标趋势
    """
    trends = {
        'training_loss_decreasing': all(training_metrics[i] > training_metrics[i+1] 
                                      for i in range(len(training_metrics)-1)),
        'validation_improving': all(validation_metrics[i] < validation_metrics[i+1] 
                                  for i in range(len(validation_metrics)-1)),
        'overfitting_detected': check_overfitting(training_metrics, validation_metrics)
    }
    return trends

高级周期指标功能

自定义指标分组

# 在配置文件中定义自定义指标组
metric_groups:
  - name: training_metrics
    metrics: ["train_loss", "train_accuracy"]
  - name: validation_metrics  
    metrics: ["validation_loss", "validation_accuracy"]
  - name: epoch_based
    metrics: ["epochs", "learning_rate"]

多实验对比

使用周期指标可以轻松比较不同实验的表现:

mermaid

故障排除与最佳实践

常见问题解决

问题症状解决方案
指标不显示WebUI 中看不到周期指标确保在 metrics 中包含 "epochs" 字段
周期计数错误周期编号不正确检查 steps_completed 计算逻辑
性能问题指标报告导致训练变慢调整 log_interval 参数

最佳实践

  1. 一致的周期报告:确保每个训练和验证步骤都报告周期指标
  2. 合理的报告频率:避免过于频繁的报告影响性能
  3. 清晰的指标命名:使用有意义的指标名称便于识别
  4. 版本控制:为不同实验版本添加标签便于比较

总结

通过本教程,您学会了如何在 Determined AI 平台中:

  • ✅ 配置基于周期的指标报告系统
  • ✅ 修改模型代码以包含周期指标
  • ✅ 在 WebUI 中查看和分析周期指标
  • ✅ 使用周期指标进行模型性能分析
  • ✅ 实施最佳实践确保指标准确性

基于周期的指标监控为您提供了深入了解模型训练过程的窗口,帮助您做出更明智的超参数调整和模型选择决策。

【免费下载链接】determined Determined is an open-source machine learning platform that simplifies distributed training, hyperparameter tuning, experiment tracking, and resource management. Works with PyTorch and TensorFlow. 【免费下载链接】determined 项目地址: https://gitcode.com/gh_mirrors/de/determined

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值