全部產品
Search
文件中心

Platform For AI:視覺化檢視Tensorboard

更新時間:Apr 23, 2025

如果您想通過可視化的介面,更直觀地查看和分析模型訓練過程及結果,可以在訓練代碼中使用Tensorboard儲存訓練過程中的日誌,然後使用分布式訓練(DLC)的Tensorboard功能進行可視化的查看。本文為您介紹如何建立和管理Tensorboard執行個體。

前提條件

  • DLC任務必須配置資料集才可以使用Tensorboard查看分析報告。您可以在DLC工作清單頁單擊任務名稱,進入概覽頁面查看任務是否配置了資料集。

  • 在訓練代碼中使用Tensorboard儲存了Summary日誌。您可以參考下文案例中的範例程式碼,儲存Summary記錄檔。

使用Tensorboard的DLC任務案例

本文提供如下DLC任務案例,資料集和Tensorboard具體配置如下:

  • 配置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控制台,在頁面上方選擇目標地區,並在右側選擇目標工作空間,然後單擊進入DLC

  2. 在目標任務操作列下,單擊Tensorboard,在彈出的Tensorboard面板中,單擊建立Tensorboardimage

  3. 建立Tensorboard頁面中,配置以下參數,然後單擊確定

    • 基本資料

      參數

      描述

      名稱

      自訂Tensorboard執行個體名稱。

      掛載配置

      • 掛載類型:支援的類型包括:按資料集 (推薦)按Object Storage Service按任務

      • Summary目錄:即訓練代碼中您指定的Tensorboard Summary記錄檔儲存位置,您可以尋找代碼中的SummaryWriter擷取Summary的完整路徑。

      上文任務案例的三種填寫樣本如下:

      • 按資料集:選擇任務配置的資料集,Summary目錄只需填寫記錄檔在資料集中的相對路徑image

      • 按Object Storage Service:填寫相應OSS路徑,Summary目錄只需填寫記錄檔在OSS中的相對路徑

        image

      • 按任務:選擇目標DLC任務,Summary目錄需填寫記錄檔在容器中的完整路徑

        image

    • 資源配置

      支援配置以下幾種資源類型:

      資源類型

      描述

      免費資源

      系統為您提供一定額度的免費資源,每個執行個體支援使用的資源上限為2vCPU,4 GiB記憶體。當免費額度不能滿足您的需求時,您可以關閉運行中的其他免費執行個體,釋放額度,以繼續建立新的Tensorboard執行個體。

      靈駿智算

      • 公用資源:計費方式為隨用隨付,僅通用計算支援使用公用資源,您可以按需選擇資源規格。

      • 資源配額:計費方式為訂用帳戶,您需要提前購買計算資源建立資源配額,然後選擇資源配額,同時需要配置以下參數:

        說明

        該功能暫時僅供白名單使用者使用。如有需要,請聯絡您的商務經理添加白名單。

        • 優先順序:表示同時啟動並執行Tensorboard執行個體執行的優先順序,取值範圍為[1,9],其中1表示優先順序最低。

        • 任務資源:配置運行Tensorboard執行個體時使用的資源:CPU(核心數)記憶體(GiB)

      通用計算

    • 專用網路配置

      當使用公用資源建立Tensorboard執行個體時,支援配置該參數。

      • 不配置專用網路,將使用公網串連。由於公網串連的頻寬有限,在Tensorboard執行個體啟動過程或查看報告時,可能會出現卡頓或無法正常進行的情況。

      • 配置專用網路,以確保充足的網路頻寬和更穩定的效能。

        選擇當前地區可用的專用網路,並選擇對應的交換器與安全性群組。配置完成後,Tensorboard執行個體啟動並執行叢集將能夠直接存取此專用網路內的服務,並使用此處選擇的安全性群組進行安全訪問限制。

        重要

        如果Tensorboard執行個體使用了需要配置專用網路的資料集(例如CPFS類型的資料集,或掛載點在專用網路內的NAS類型資料集等),則必須設定專用網路。

  4. 前往Tensorboard頁面查看分析報告。

    1. 在工作空間頁面的左側導覽列選擇AI資產管理 > 任務

    2. 切換到Tensorboard頁簽,當目標Tensorboard執行個體的狀態運行中時,單擊操作列下的查看Tensorboard。頁面自動跳轉到TensorBoard頁面。image

管理Tensorboard執行個體

您可以按照以下操作步驟,對已建立的Tensorboard執行個體進行管理操作。

  1. 登入PAI控制台,在頁面上方選擇目標地區,並在右側選擇目標工作空間,然後單擊進入任務

  2. 在Tensorboard頁簽,管理Tensorboard執行個體。image

    • 啟動Tensorboard執行個體

      單擊啟動,可啟動已停止的Tensorboard執行個體。

    • 查看Tensorboard執行個體詳情

      單擊目標執行個體名稱,查看基本資料配置資訊

    • 查看關聯任務

      關聯任務列下,將滑鼠懸浮在表徵圖image上,查看已關聯的DLC任務ID,並支援單擊跳轉到相關任務詳情頁面。

    • 查看關聯資料集

      關聯資料集列下,將滑鼠懸浮在表徵圖image上,查看已關聯的資料集ID,並支援單擊跳轉到相關資料集詳情頁面。

    • 查看執行時間長度

      執行時間長度列下,查看目標執行個體的運行時間長度。停止執行個體後,該時間將重設。

    • 停止Tensorboard執行個體:

      • 單擊目標執行個體操作列下的停止,直接停止執行個體。

      • 單擊目標執行個體操作列下的自動停止設定,設定自動停止時間。

相關文檔

您也可以在AI資產管理 > 任務頁面,為分布式訓練(DLC)任務建立Tensorboard執行個體。具體操作,請參見建立及管理Tensorboard執行個體