Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Submit a standalone TensorFlow job using Arena

Dernière mise à jour :Sep 17, 2026

Cette rubrique explique comment soumettre une tâche d'entraînement TensorFlow autonome avec Arena et la visualiser à l'aide de TensorBoard.

Prérequis

Contexte

Cet exemple télécharge le code source depuis un référentiel Git et utilise un jeu de données issu d'un système de stockage partagé basé sur des PV et des PVC gérés par NAS. Il suppose que vous disposez d'une instance PVC nommée training-data (un volume de stockage partagé) contenant le jeu de données dans un répertoire nommé tf_data.

Procédure

Étape 1 : Afficher les ressources GPU

arena top node

Résultat attendu :

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%)

Le résultat indique que le cluster dispose de deux nœuds GPU. Chaque nœud possède deux cartes GPU inactives disponibles pour les tâches d'entraînement.

Étape 2 : Soumettre une tâche TensorFlow

Exécutez la commande arena submit tfjob/tf [--flag] pour soumettre une tâche TensorFlow.

Utilisez la commande suivante pour soumettre une tâche TensorFlow autonome qui utilise un seul nœud et une seule carte GPU.

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"

Résultat attendu :

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

Le tableau suivant décrit les paramètres.

Paramètre

Obligatoire

Description

Valeur par défaut

--name

Oui

Nom de la tâche. Il doit être globalement unique.

N/A

--working-dir

Non

Répertoire dans lequel la commande est exécutée.

/root

--gpus

Non

Nombre de cartes GPU utilisées par le nœud worker de la tâche.

0

--image

Oui

URL de l'image pour l'environnement d'entraînement.

N/A

--sync-mode

Non

Mode de synchronisation du code source. Les valeurs valides sont git et rsync. Cet exemple utilise git.

N/A

--sync-source

Non

URL du référentiel de code source. Ce paramètre est requis lorsque vous spécifiez --sync-mode. Pour le mode git, ce paramètre peut correspondre à l'URL de n'importe quel référentiel de code basé sur Git, tel qu'un projet GitHub ou un projet Alibaba Cloud Code. Le code du projet est téléchargé dans le répertoire code/ situé dans le chemin spécifié par --working-dir. Dans cet exemple, le chemin est /root/code/arena.

N/A

--data

Non

Monte un volume de stockage partagé (PVC) dans le conteneur de la tâche. Le format de la valeur est pvc-name:mount-path. pvc-name correspond au nom d'un PVC existant. Vous pouvez exécuter arena data list pour répertorier les PVC disponibles. mount-path correspond au chemin de destination à l'intérieur du conteneur à partir duquel votre code d'entraînement lit les données.

Remarque

Exécutez arena data list pour afficher les PVC disponibles dans le cluster.

NAME           ACCESSMODE     DESCRIPTION  OWNER  AGE
    training-data  ReadWriteMany                      35m

Si aucun PVC n'est disponible, vous devez en créer un. Pour plus d'informations, consultez Configurer le stockage partagé NAS.

N/A

--tensorboard

Non

Active un service TensorBoard pour la visualisation des données. Utilisez ce paramètre avec --logdir pour spécifier le chemin d'accès aux fichiers d'événements lus par TensorBoard.

N/A

--logdir

Non

Spécifie le chemin d'accès aux fichiers d'événements pour TensorBoard. Ce paramètre est requis lorsque --tensorboard est spécifié.

/training_logs

Remarque

Pour utiliser un référentiel Git privé, définissez vos identifiants à l'aide des variables d'environnement GIT_SYNC_USERNAME et GIT_SYNC_PASSWORD.

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 utilise git-sync pour synchroniser le code source. Vous pouvez donc utiliser n'importe quelle variable d'environnement prise en charge par le projet git-sync.

Important

Si le téléchargement du code échoue en raison de problèmes réseau, vous pouvez le télécharger manuellement vers votre système de stockage partagé. L'image d'exemple fournie inclut également le code d'exemple à l'emplacement /code/github.com/kubeflow/arena/examples/tensorflow/mnist/main.py, ce qui vous permet de soumettre la tâche directement comme indiqué ci-dessous :

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"

Étape 3 : Vérifier l'état de la tâche

  1. Exécutez la commande suivante pour répertorier toutes les tâches soumises avec Arena.

    arena list

    Résultat attendu :

    NAME      STATUS   TRAINER  DURATION  GPU(Requested)  GPU(Allocated)  NODE
    tf-mnist  RUNNING  TFJOB    3s        1               1               192.168.xxx.xxx
  2. Exécutez la commande suivante pour vérifier les ressources GPU utilisées par la tâche.

    arena top job

    Résultat attendu :

    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. Exécutez la commande suivante pour vérifier les ressources GPU utilisées par le cluster.

    arena top node

    Résultat attendu :

    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. Exécutez la commande suivante pour afficher les détails de la tâche d'entraînement.

    arena get -n default tf-mnist

    Résultat attendu :

    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
    Remarque

    Comme TensorBoard est activé, le résultat inclut l'URL de TensorBoard. Cette URL n'est pas affichée si TensorBoard est désactivé.

Étape 4 : Afficher TensorBoard

Consultez le tableau de bord TensorBoard à l'aide d'un navigateur web.

  1. Exécutez la commande suivante pour transférer le service TensorBoard du cluster vers le port 9090 de votre machine locale.

    Important

    kubectl port-forward est destiné uniquement au développement et au débogage ; il n'est ni fiable, ni sécurisé, ni évolutif pour la production. Pour la mise en réseau en production, consultez Présentation d'Ingress.

    kubectl port-forward -n default svc/tf-mnist-tensorboard 9090:6006
  2. Ouvrez http://localhost:9090 dans votre navigateur pour afficher le tableau de bord TensorBoard.

    Le panneau SCALARS de TensorBoard affiche deux courbes : train (rouge) et test (bleu). La métrique accuracy_1 converge vers une valeur supérieure à 0,96 après environ 1 000 étapes, et la métrique cross_entropy_1 chute jusqu'à environ 0,05 à 0,10. Cela indique que le modèle MNIST a été entraîné avec succès. Dans le panneau de gauche, vous pouvez ajuster les options d'affichage telles que Smoothing (actuellement 0,6) et Horizontal Axis (actuellement STEP). Le chemin des journaux est /mnt/tf_data/logs.

Étape 5 : Afficher les journaux de la tâche

Exécutez la commande suivante pour obtenir les journaux de la tâche.

arena logs -n default tf-mnist

Résultat attendu :

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
Remarque
  • Pour diffuser les journaux de la tâche en temps réel, ajoutez le paramètre -f.

  • Pour afficher uniquement les N dernières lignes des journaux, ajoutez le paramètre -t N ou --tail N.

  • Pour plus d'options, exécutez arena logs --help.

(Facultatif) Étape 6 : Nettoyer l'environnement

Une fois la tâche d'entraînement terminée, supprimez-la en exécutant la commande suivante :

arena delete -n default tf-mnist

Résultat attendu :

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