すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:TensorBoard 可視化ツール

最終更新日:Mar 01, 2026

モデルのトレーニングプロセスと結果をより直感的に可視化・分析するために、コード内で TensorBoard を使用してトレーニングログを保存します。その後、Deep Learning Containers (DLC) の TensorBoard 機能を使用して可視化します。このトピックでは、TensorBoard インスタンスの作成方法と管理方法について説明します。

前提条件

  • TensorBoard を使用して分析レポートを表示するには、DLC ジョブにデータセットが設定されている必要があります。DLC ジョブリストページでジョブ名をクリックします。[Overview] ページで、ジョブにデータセットが設定されていることを確認します。

  • TensorBoard を使用して、トレーニングコードに Summary ログを保存します。Summary ログファイルを保存するコード例については、「ケース」の例をご参照ください。

TensorBoard を使用する DLC ジョブのケース

このトピックでは、以下の DLC ジョブのケースを説明します。データセットと TensorBoard の設定は次のとおりです。

  • Object Storage Service (OSS) データセットの設定:

    • OSS アドレス: oss://w*********.oss-cn-hangzhou-internal.aliyuncs.com/dlc_dataset_1/

    • マウントパス: /mnt/data/

  • TensorBoard の SummaryWriter を使用して Summary ログファイルのストレージアドレスを設定します: SummaryWriter('/mnt/data/output/runs/mnist_experiment')。完全なトレーニングコードの例は次のとおりです。

    完全なトレーニングコードの例

    import torch
    import torch.nn as nn
    import torch.optim as optim
    from torch.utils.data import DataLoader
    from torchvision import datasets, transforms
    from torch.utils.tensorboard import SummaryWriter
    
    # ハイパーパラメーター
    batch_size = 64
    learning_rate = 0.01
    num_epochs = 30
    
    # 利用可能な GPU の確認
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    
    # データの前処理
    transform = transforms.Compose([
        transforms.ToTensor(),
        transforms.Normalize((0.5,), (0.5,))
    ])
    
    # MNIST データセットをダウンロードし、トレーニングセットと検証セットに分割
    train_dataset = datasets.MNIST(root='/mnt/data/dataSet', train=True, download=True, transform=transform)
    val_dataset = datasets.MNIST(root='/mnt/data/dataSet', train=False, download=True, transform=transform)
    
    train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
    val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False)
    
    # シンプルなニューラルネットワークの定義
    class SimpleNN(nn.Module):
        def __init__(self):
            super(SimpleNN, self).__init__()
            self.fc1 = nn.Linear(28 * 28, 128)
            self.fc2 = nn.Linear(128, 10)
    
        def forward(self, x):
            x = x.view(-1, 28 * 28)  # フラット化
            x = torch.relu(self.fc1(x))
            x = self.fc2(x)
            return x
    
    # モデルをインスタンス化し、GPU に移動 (利用可能な場合)
    model = SimpleNN().to(device)
    criterion = nn.CrossEntropyLoss()
    optimizer = optim.SGD(model.parameters(), lr=learning_rate)
    
    # TensorBoard SummaryWriter の作成
    writer = SummaryWriter('/mnt/data/output/runs/mnist_experiment')
    
    # 最高の精度を持つモデルを保存するための変数
    best_val_accuracy = 0.0
    
    # モデルをトレーニングし、損失と精度を記録
    for epoch in range(num_epochs):
        model.train()
        for batch_idx, (data, target) in enumerate(train_loader):
            data, target = data.to(device), target.to(device)  # データとターゲットを GPU に移動
    
            # 勾配をゼロにする
            optimizer.zero_grad()
            # 順伝播
            output = model(data)
            # 損失の計算
            loss = criterion(output, target)
            # 逆伝播
            loss.backward()
            # パラメーターの更新
            optimizer.step()
    
            # トレーニングの損失を TensorBoard に記録
            if batch_idx % 100 == 0:  # 100 バッチごとに記録
                writer.add_scalar('Loss/train', loss.item(), epoch * len(train_loader) + batch_idx)
                print(f'Train Epoch: {epoch} [{batch_idx * len(data)}/{len(train_loader.dataset)} ({100. * batch_idx / len(train_loader):.0f}%)]\tLoss: {loss.item():.6f}')
    
        # モデルを検証し、検証の損失と精度を記録
        model.eval()
        val_loss = 0
        correct = 0
        with torch.no_grad():  # 勾配を計算しない
            for data, target in val_loader:
                data, target = data.to(device), target.to(device)  # データとターゲットを GPU に移動
                output = model(data)
                val_loss += criterion(output, target).item()  # 検証の損失を累積
                pred = output.argmax(dim=1, keepdim=True)  # 予測ラベルの取得
                correct += pred.eq(target.view_as(pred)).sum().item()  # 正しい予測を累積
    
        val_loss /= len(val_loader)  # 平均検証損失の計算
        val_accuracy = 100. * correct / len(val_loader.dataset)  # 検証精度の計算
        print(f'Validation Loss: {val_loss:.4f}, Accuracy: {correct}/{len(val_loader.dataset)} ({val_accuracy:.0f}%)')
    
        # 検証の損失と精度を TensorBoard に記録
        writer.add_scalar('Loss/validation', val_loss, epoch)
        writer.add_scalar('Accuracy/validation', val_accuracy, epoch)
    
        # 最高の検証精度を持つモデルを保存
        if val_accuracy > best_val_accuracy:
            best_val_accuracy = val_accuracy
            torch.save(model.state_dict(), '/mnt/data/output/best_model.pth')
            print(f'Model saved with accuracy: {best_val_accuracy:.2f}%')
    
    # SummaryWriter を閉じる
    writer.close()
    print('Training complete. writer.close()')

TensorBoard インスタンスの作成

  1. PAI コンソールにログインします。上部のナビゲーションバーで、リージョンとワークスペースを選択します。次に、[ジョブの入力] をクリックします。

  2. 対象ジョブの [Actions] 列で、[TensorBoard] をクリックします。表示される [TensorBoard] パネルで、[Create TensorBoard] をクリックします。image

  3. [Create TensorBoard] ページで、次のパラメーターを設定し、[OK] をクリックします。

    • 基本情報

      パラメーター

      説明

      Name

      TensorBoard インスタンスの名前をカスタマイズします。

      Datasets

      • [Configuration Type]:サポートされているタイプは次のとおりです:[Mount Dataset] (推奨)、[Mount OSS]、および [By Task]。

      • [Summary Path]:これは、トレーニングコードで指定された TensorBoard Summary ログファイルのストレージの場所です。コード内の SummaryWriter を見つけて、Summary の完全なパスを取得します。

      上記で説明した ジョブのケース の 3 つの設定方法の例を以下に示します。

      • データセット別:ジョブに設定されたデータセットを選択します。Summary ディレクトリには、データセット内のログファイルの相対パスのみを入力します。

        image

      • Object Storage Service (OSS) 別:対応する OSS パスを入力します。Summary ディレクトリには、OSS 内のログファイルの相対パスのみを入力します。

        image

      • ジョブ別:対象の DLC ジョブを選択します。Summary ディレクトリには、コンテナー内のログファイルの完全なパスを入力します。

        image

    • リソース設定

      次のリソースタイプを設定します。

      リソースタイプ

      説明

      Free Quota

      システムは一定量の無料リソースを提供します。各インスタンスは最大 2 vCPU と 4 GiB のメモリをサポートします。無料クォータがニーズを満たさない場合は、実行中の他の無料インスタンスをシャットダウンしてクォータを解放し、新しい TensorBoard インスタンスを作成します。

      Lingjun AI Computing Service

      • パブリックリソース:課金方法は従量課金です。一般コンピューティングのみがパブリックリソースをサポートします。必要に応じてリソース仕様を選択します。

      • リソースクォータ: 課金方法はサブスクリプションです。事前に計算リソースを購入し、リソースクォータを作成します。次に、リソースクォータを選択し、以下のパラメーターを設定します。

        説明

        この機能は、現在ホワイトリストに登録されたユーザーのみが利用可能です。必要に応じて、アカウントマネージャーまでご連絡ください。アカウントをホワイトリストに追加いたします。

        • Priority:同時実行中の TensorBoard インスタンスの実行優先度を示します。有効値の範囲は [1, 9] であり、1 が最も低い優先度です。

        • Job Resource:TensorBoard インスタンス実行時に使用するリソースを設定します。vCPUs および Memory (GiB) を指定します。

      General Computing

    • Virtual Private Cloud (VPC) 設定

      [Public Resources] を使用して TensorBoard インスタンスを作成する場合は、このパラメーターを設定します。

      • Virtual Private Cloud (VPC) を設定しない場合、パブリックネットワーク接続が使用されます。パブリックネットワーク接続は帯域幅が限られているため、TensorBoard インスタンスで遅延が発生したり、起動やレポートの表示が正常に行われなかったりする可能性があります。

      • VPC を設定することで、十分なネットワーク帯域幅とより安定したパフォーマンスを確保できます。

        現在のリージョンで利用可能な VPC を選択し、対応する vSwitch とセキュリティグループを選択します。設定後、TensorBoard インスタンスを実行しているクラスターは、この VPC 内のサービスに直接アクセスし、選択したセキュリティグループを使用して安全なアクセス制御を行うことができます。

        重要

        TensorBoard インスタンスが VPC 設定を必要とするデータセット (CPFS データセットや VPC にマウントポイントがある Network Attached Storage (NAS) データセットなど) を使用する場合は、VPC を設定する必要があります。

  4. TensorBoard ページに移動して、分析レポートを表示します。

    1. 左側のナビゲーションウィンドウで、AI Computing Asset Management > Job を選択します。

    2. TensorBoard タブに切り替えます。対象の TensorBoard インスタンスの [Status] が [Running] になったら、[Actions] 列の [View TensorBoard] をクリックします。ページは自動的に TensorBoard ページにリダイレクトされます。image

TensorBoard インスタンスの管理

作成した TensorBoard インスタンスは、次のように管理します。

  1. PAI コンソールにログインします。上部のナビゲーションバーで、リージョンとワークスペースを選択します。次に、[ジョブの入力] をクリックします。

  2. TensorBoard タブで、TensorBoard インスタンスを管理します。image

    • TensorBoard インスタンスの開始

      [Start] をクリックして、停止している TensorBoard インスタンスを開始します。

    • TensorBoard インスタンスの詳細の表示

      対象のインスタンス名をクリックして、[基本情報][設定情報] を表示します。

    • 関連ジョブの表示

      [Associated Task] 列で、アイコン image にカーソルを合わせると、関連する DLC ジョブ ID が表示されます。クリックしてジョブの詳細ページに移動することもできます。

    • 関連データセットの表示

      [Associated Dataset] 列で、アイコン image にカーソルを合わせると、関連するデータセット ID が表示されます。クリックしてデータセットの詳細ページに移動することもできます。

    • 実行時間の表示

      [Running Duration] 列で、対象インスタンスの実行時間を確認します。この時間は、インスタンスを停止するとリセットされます。

    • TensorBoard インスタンスの停止:

      • 対象インスタンスの [Actions] 列にある [Stop] をクリックして、インスタンスを直接停止します。

      • 対象インスタンスの [Actions] 列にある [Auto-stop Settings] をクリックして、自動停止時間を設定します。

参考文献

[AI Computing Asset Management > Job ページで、Deep Learning Containers (DLC) ジョブ用の TensorBoard インスタンスを作成することもできます。詳細については、「TensorBoard インスタンスの作成と管理」をご参照ください。