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

Container Service for Kubernetes:Arena を使用したシングルノード TensorFlow トレーニングジョブの送信

最終更新日:Jan 28, 2026

TensorFlow は、さまざまなディープラーニングのトレーニングタスクで広く使用されているオープンソースの深層学習フレームワークです。このトピックでは、Arena を使用してシングルノードの TensorFlow トレーニングジョブを送信し、TensorBoard を使用してトレーニングジョブを可視化する方法について説明します。

前提条件

背景情報

この例では、Git URL からソースコードをダウンロードします。データセットは、NAS 上の永続ボリューム (PV) と永続ボリューム要求 (PVC) を使用する共有ストレージシステムに保存されます。この例では、training-data という名前の PVC があり、その中に tf_data という名前のディレクトリにデータセットが含まれていることを前提としています。

操作手順

ステップ 1:GPU リソースの表示

arena top node

想定される出力:

NAME                        IPADDRESS        ROLE    STATUS  GPU(Total)  GPU(Allocated)
cn-beijing.192.168.xxx.xxx  192.168.xxx.xxx  <none>  Ready   0           0
cn-beijing.192.168.xxx.xxx  192.168.xxx.xxx  <none>  Ready   0           0
cn-beijing.192.168.xxx.xxx  192.168.xxx.xxx  <none>  Ready   2           0
cn-beijing.192.168.xxx.xxx  192.168.xxx.xxx  <none>  Ready   2           0
---------------------------------------------------------------------------------------------------
Allocated/Total GPUs In Cluster:
0/4 (0.0%)

この出力は、クラスターに 2 つの GPU ノードがあることを示しています。各ノードには、トレーニングジョブに使用できる 2 つのアイドル状態の GPU があります。

ステップ 2:TensorFlow トレーニングジョブの送信

arena submit tfjob/tf [--flag] コマンドを実行して TensorFlow ジョブを送信します。

以下のコードは、シングルノード、シングル GPU の TensorFlow タスクを送信する方法の例です。

arena submit tf \
    --name=tf-mnist \
    --working-dir=/root \
    --workers=1 \
    --gpus=1 \
    --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/tensorflow-mnist-example:2.15.0-gpu \
    --sync-mode=git \
    --sync-source=https://github.com/kubeflow/arena.git \
    --env=GIT_SYNC_BRANCH=master \
    --data=training-data:/mnt \
    --tensorboard \
    --logdir=/mnt/tf_data/logs \
    "python /root/code/arena/examples/tensorflow/mnist/main.py --data /mnt/tf_data/mnist.npz --dir /mnt/tf_data/logs"

想定される出力:

service/tf-mnist-tensorboard created
deployment.apps/tf-mnist-tensorboard created
tfjob.kubeflow.org/tf-mnist created
INFO[0005] The Job tf-mnist has been submitted successfully
INFO[0005] You can run `arena get tf-mnist --type tfjob -n default` to check the job status

次の表にパラメーターを示します。

パラメーター

必須

説明

デフォルト

--name

必須

送信するジョブの名前。名前はグローバルに一意である必要があります。

なし

--working-dir

任意

コマンドが実行されるディレクトリ。

/root

--gpus

任意

ジョブのワーカーノードが必要とする GPU の数。

0

--image

必須

トレーニング環境のレジストリアドレス。

なし

--sync-mode

任意

コードの同期モード。git または rsync を指定できます。この例では Git モードを使用します。

なし

--sync-source

任意

コード同期用のリポジトリアドレス。このパラメーターは --sync-mode と一緒に使用する必要があります。この例では Git モードを使用します。このパラメーターの値は、任意の GitHub プロジェクトまたは Alibaba Cloud Code プロジェクトなどの他の Git ベースのコードホスティングサービスのアドレスにすることができます。プロジェクトコードは --working-dir の下の code/ ディレクトリにダウンロードされます。この例では、パスは /root/code/arena です。

なし

--data

任意

共有ストレージボリューム (PVC) を実行環境にマウントします。このパラメーターはコロン (:) で区切られた 2 つの部分で構成されます。コロンの左側の部分は、準備した PVC の名前です。arena data list を実行して、現在のクラスターで利用可能な PVC のリストを表示できます。コロンの右側の部分は、PVC をマウントする実行環境内のパスです。これは、トレーニングコードがデータを読み取るローカルパスでもあります。PVC をマウントすることで、コードは PVC 上のデータにアクセスできます。

説明

arena data list を実行して、この例で現在のクラスターで利用可能な PVC のリストを表示します。

NAME           ACCESSMODE     DESCRIPTION  OWNER  AGE
training-data  ReadWriteMany                      35m

利用可能な PVC がない場合は、作成してください。詳細については、「NAS 共有ストレージの設定」をご参照ください。

なし

--tensorboard

任意

トレーニングタスクのデータを可視化するために TensorBoard サービスを開始します。このパラメーターを --logdir と一緒に使用して、TensorBoard が読み取るイベントパスを指定できます。このパラメーターを指定しない場合、TensorBoard サービスは開始されません。

なし

--logdir

任意

このパラメーターは --tensorboard と一緒に使用する必要があります。TensorBoard がイベントデータを読み取るパスを指定します。

/training_logs

説明

非公開 Git リポジトリを使用する場合は、GIT_SYNC_USERNAMEGIT_SYNC_PASSWORD 環境変数を設定して、Git のユーザー名とパスワードを指定できます。

arena submit tf \
    --name=tf-mnist \
    --working-dir=/root \
    --workers=1 \
    --gpus=1 \
    --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/tensorflow-mnist-example:2.15.0-gpu \
    --sync-mode=git \
    --sync-source=https://github.com/kubeflow/arena.git \
    --env=GIT_SYNC_BRANCH=master \
    --env=GIT_SYNC_USERNAME=yourname \
    --env=GIT_SYNC_PASSWORD=yourpwd \
    --data=training-data:/mnt \
    --tensorboard \
    --logdir=/mnt/tf_data/logs \
    "python /root/code/arena/examples/tensorflow/mnist/main.py --data /mnt/tf_data --dir /mnt/tf_data/logs"

arena コマンドは git-sync を使用してソースコードを同期します。git-sync プロジェクトで定義されている環境変数を設定できます。

重要

この例では、GitHub リポジトリからソースコードをプルします。ネットワークの問題でコードのプルに失敗した場合は、手動でコードを共有ストレージシステムにダウンロードできます。このトピックで提供されているデモイメージには、サンプルコード /code/github.com/kubeflow/arena/examples/tensorflow/mnist/main.py がすでに含まれています。次のように直接トレーニングジョブを送信できます。

arena submit tf \
    --name=tf-mnist \
    --working-dir=/root \
    --workers=1 \
    --gpus=1 \
    --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/tensorflow-mnist-example:2.15.0-gpu \
    --data=training-data:/mnt \
    --tensorboard \
    --logdir=/mnt/tf_data/logs \
    "python /code/github.com/kubeflow/arena/examples/tensorflow/mnist/main.py --data /mnt/tf_data/mnist.npz --dir /mnt/tf_data/logs"

ステップ 3:TensorFlow トレーニングジョブの表示

  1. 次のコマンドを実行して、Arena を使用して送信されたすべてのジョブを表示します。

    arena list

    想定される出力:

    NAME      STATUS   TRAINER  DURATION  GPU(Requested)  GPU(Allocated)  NODE
    tf-mnist  RUNNING  TFJOB    3s        1               1               192.168.xxx.xxx
  2. 次のコマンドを実行して、ジョブが使用する GPU リソースを確認できます。

    arena top job

    想定される出力:

    NAME      STATUS   TRAINER  AGE  GPU(Requested)  GPU(Allocated)  NODE
    tf-mnist  RUNNING  TFJOB    29s  1               1               192.168.xxx.xxx
    
    Total Allocated/Requested GPUs of Training Jobs: 1/1
  3. 次のコマンドを実行して、クラスターが使用する GPU リソースを確認します。

    arena top node

    想定される出力:

    NAME                        IPADDRESS        ROLE    STATUS  GPU(Total)  GPU(Allocated)
    cn-beijing.192.168.xxx.xxx  192.168.xxx.xxx  <none>  Ready   0           0
    cn-beijing.192.168.xxx.xxx  192.168.xxx.xxx  <none>  Ready   0           0
    cn-beijing.192.168.xxx.xxx  192.168.xxx.xxx  <none>  Ready   2           1
    cn-beijing.192.168.xxx.xxx  192.168.xxx.xxx  <none>  Ready   2           0
    ---------------------------------------------------------------------------------------------------
    Allocated/Total GPUs In Cluster:
    1/4 (25.0%)
  4. 次のコマンドを実行して、トレーニングジョブの詳細を表示します。

    arena get -n default tf-mnist

    想定される出力:

    Name:        tf-mnist
    Status:      RUNNING
    Namespace:   default
    Priority:    N/A
    Trainer:     TFJOB
    Duration:    22s
    CreateTime:  2026-01-26 16:01:42
    EndTime:
    
    Instances:
      NAME              STATUS   AGE  IS_CHIEF  GPU(Requested)  NODE
      ----              ------   ---  --------  --------------  ----
      tf-mnist-chief-0  Running  45s  true      1               cn-beijing.192.168.xxx.xxx
    
    Tensorboard:
      Your tensorboard will be available on:
      http://192.168.xxx.xxx:31243
    説明

    この例では TensorBoard が有効になっているため、ジョブ詳細の最後の 2 行に TensorBoard の Web エンドポイントが表示されます。TensorBoard が有効になっていない場合、この情報は表示されません。

ステップ 4:TensorBoard の表示

ブラウザで TensorBoard を表示します。

  1. ローカルマシンで次のコマンドを実行して、クラスター内の TensorBoard サービスをローカルマシンのポート 9090 にマッピングします。

    重要

    kubectl port-forward を使用して設定されたポートフォワーディングは、本番環境では信頼性、安全性、拡張性に欠けます。これは開発とデバッグのみを目的としています。本番環境でポートフォワーディングを設定するためにこのコマンドを使用しないでください。ACK クラスターの本番環境で使用されるネットワークソリューションの詳細については、「Ingress 管理」をご参照ください。

    kubectl port-forward -n default svc/tf-mnist-tensorboard 9090:6006
  2. ブラウザで http://localhost:9090 にアクセスして TensorBoard を表示します。次の図に示します。

    tensorboard

ステップ 5:トレーニングジョブログの表示

次のコマンドを実行して、ジョブログを表示します。

arena logs -n default tf-mnist

想定される出力:

Train Epoch: 14 [55680/60000 (93%)]     Loss: 0.029811
Train Epoch: 14 [56320/60000 (94%)]     Loss: 0.029721
Train Epoch: 14 [56960/60000 (95%)]     Loss: 0.029682
Train Epoch: 14 [57600/60000 (96%)]     Loss: 0.029781
Train Epoch: 14 [58240/60000 (97%)]     Loss: 0.029708
Train Epoch: 14 [58880/60000 (98%)]     Loss: 0.029761
Train Epoch: 14 [59520/60000 (99%)]     Loss: 0.029684

Test Accuracy: 9842/10000 (98.42%)

938/938 - 3s - loss: 0.0299 - accuracy: 0.9924 - val_loss: 0.0446 - val_accuracy: 0.9842 - lr: 0.0068 - 3s/epoch - 3ms/step
説明
  • ジョブログをリアルタイムで表示するには、-f パラメーターを追加します。

  • ログの最後の N 行のみを表示するには、-t N または --tail N パラメーターを追加します。

  • その他の使用方法については、arena logs --help を実行してください。

(任意) ステップ 6:環境のクリーンアップ

トレーニングジョブが完了した後、不要になった場合は、次のコマンドを実行して削除します。

arena delete -n default tf-mnist

想定される出力:

INFO[0002] The training job tf-mnist has been deleted successfully