Arena是基于Kubernetes的机器学习轻量级解决方案,支持数据准备、模型开发、模型训练和模型预测的完整生命周期,提升数据科学家工作效率。同时和阿里云的基础云服务深度集成,支持GPU共享、CPFS等服务,可以运行阿里云优化的深度学习框架,最大化使用阿里云异构设备的性能和成本的效益。本文介绍如何安装Arena。

前提条件

步骤一:安装Arena组件

步骤二:配置Arena客户端

如果您使用的是专有版集群,以SSH方式登录到专有版集群的管理节点上,然后直接执行arena命令。有关使用SSH方式登录集群的具体步骤,请参见通过SSH连接ACK专有版集群的Master节点

如果您使用的是托管版集群,由于托管版集群无Master节点,您需要将Arena客户端安装在您的本地计算机上(比如:个人Mac)。在安装Arena之前,请确保KubeConfig文件在计算机的正确位置:$HOME/.kube/config,具体步骤,请参见获取集群KubeConfig并通过kubectl工具连接集群。然后配置Arena客户端,具体操作步骤如下。

说明
  • 您可以通过执行命令kubectl get nodes 判断KubeConfig文件是否正确配置。
  • 您可以执行以下步骤升级Arena客户端。
  1. 下载Arena客户端。
  2. 解压安装包。
    • 对于Linux版系统,执行以下命令解压安装包。
      tar -xvf arena-installer-0.9.7-d51fe2e-linux-amd64.tar.gz
    • 对于Mac版系统,执行以下命令解压安装包。
      tar -xvf arena-installer-0.9.7-d51fe2e-darwin-amd64.tar.gz
  3. 执行以下命令安装Arena。
    cd arena-installer
    bash install.sh  --only-binary
  4. 可选:安装自动补齐软件。
    安装自动补齐软件支持命令参数自动提示功能,帮助您避免记忆命令行。
    • 执行以下命令安装CentOS或Alibaba Cloud Linux 2。
      sudo yum install bash-completion -y
    • 执行以下命令安装Debian或Ubuntu。
      sudo apt-get install bash-completion
    • 执行以下命令安装macOS。
      brew install bash-completion@2
  5. 执行以下命令在profile文件中增加自动补齐功能。
    • Linux
      echo "source <(arena completion bash)" >> ~/.bashrc
      chmod u+x ~/.bashrc
    • macOS
      echo "source $(brew --prefix)/etc/profile.d/bash_completion.sh" >> ~/.bashrc
    在命令行终端通过Tab键即可自动补齐命令。

步骤三:验证Arena

您可以执行以下步骤验证Arena是否正常工作。

  1. 执行以下命令检查集群的可用GPU资源。
    arena top node
    看到输出为节点和GPU卡的信息,代表输出正确。
    NAME                        IPADDRESS      ROLE    STATUS  GPU(Total)  GPU(Allocated)
    cn-huhehaote.192.168.X.XXX  192.168.0.117  <none>  ready   8           0
    cn-huhehaote.192.168.X.XXX  192.168.0.118  <none>  ready   8           0
    cn-huhehaote.192.168.X.XXX  192.168.0.119  <none>  ready   8           0
    cn-huhehaote.192.169.X.XXX  192.168.0.120  <none>  ready   8           0
    -----------------------------------------------------------------------------------------
    Allocated/Total GPUs In Cluster:
    0/32 (0%)
  2. 通过arena提交一个训练作业, 看到任务被成功提交。
    arena submit tf \
          --name=firstjob \
          --gpus=1 \
          --image=registry.cn-hangzhou.aliyuncs.com/tensorflow-samples/tf-mnist-standalone:gpu \
          "python /app/main.py"

    预期输出:

    configmap/firstjob-tfjob created
    configmap/firstjob-tfjob labeled
    tfjob.kubeflow.org/firstjob created
    INFO[0001] The Job firstjob has been submitted successfully
    INFO[0001] You can run `arena get firstjob --type tfjob` to check the job status
  3. 执行以下命令列出所有作业。
    arena list

    预期输出:

    NAME      STATUS   TRAINER  AGE  NODE
    firstjob  RUNNING  TFJOB    5s   192.168.X.XXX
  4. 执行以下命令查看提交作业的状态。
    arena get firstjob

    预期输出:

    STATUS: SUCCEEDED
    NAMESPACE: default
    PRIORITY: N/A
    TRAINING DURATION: 52s
    NAME      STATUS     TRAINER  AGE  INSTANCE          NODE
    firstjob  SUCCEEDED  TFJOB    14m  firstjob-chief-0  192.168.X.XXX
  5. 执行以下命令查看作业日志。
    arena logs --tail=10 firstjob

    预期输出:

    Accuracy at step 910: 0.9694
    Accuracy at step 920: 0.9687
    Accuracy at step 930: 0.9676
    Accuracy at step 940: 0.9678
    Accuracy at step 950: 0.9704
    Accuracy at step 960: 0.9692
    Accuracy at step 970: 0.9721
    Accuracy at step 980: 0.9696
    Accuracy at step 990: 0.9675
    Adding run metadata for 999