Arena是基于Kubernetes的机器学习轻量级解决方案,支持数据准备、模型开发、模型训练和模型预测的完整生命周期,提升数据科学家工作效率。同时和阿里云的基础云服务深度集成,支持GPU共享、CPFS等服务,可以运行阿里云优化的深度学习框架,最大化使用阿里云异构设备的性能和成本的效益。本文介绍如何配置Arena客户端。
前提条件
步骤一:配置Arena客户端
连接集群。
托管版集群
因为托管版集群无Master节点,所以您需要将Arena客户端安装在您的本地计算机上(例如:个人Mac)。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群。
专有版集群
用SSH方式登录专有版集群的管理节点,然后执行
arena
命令。具体操作,请参见通过SSH连接ACK专有集群的Master节点。说明您可以通过执行命令
kubectl get nodes
判断KubeConfig文件是否正确配置。根据您所使用的操作系统类型(Linux/macOS)和处理器架构(amd64/arm64)执行相应的命令以安装Arena客户端。
Linux/amd64
# 下载arena安装包 wget https://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/arena/arena-installer-0.12.0-linux-amd64.tar.gz # 解压安装包 tar -zxvf arena-installer-0.12.0-linux-amd64.tar.gz # 安装arena cd arena-installer-0.12.0-linux-amd64 bash install.sh --only-binary
Linux/arm64
# 下载arena安装包 wget https://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/arena/arena-installer-0.12.0-linux-arm64.tar.gz # 解压安装包 tar -zxvf arena-installer-0.12.0-linux-arm64.tar.gz # 安装arena cd arena-installer-0.12.0-linux-arm64 bash install.sh --only-binary
macOS/amd64
# 下载arena安装包 wget https://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/arena/arena-installer-0.12.0-darwin-amd64.tar.gz # 解压安装包 tar -zxvf arena-installer-0.12.0-darwin-amd64.tar.gz # 安装arena cd arena-installer-0.12.0-darwin-amd64 bash install.sh --only-binary
macOS/arm64
# 下载arena安装包 wget https://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/arena/arena-installer-0.12.0-darwin-arm64.tar.gz # 解压安装包 tar -zxvf arena-installer-0.12.0-darwin-arm64.tar.gz # 安装arena cd arena-installer-0.12.0-darwin-arm64 bash install.sh --only-binary
(可选)安装自动补全软件。安装自动补全软件支持命令参数自动提示功能,帮助您避免记忆命令行。安装完成后,在命令行终端通过Tab键即可自动补全命令。
安装补全软件。
CentOS或Linux
sudo yum install bash-completion -y
Debian或Ubuntu
sudo apt-get install bash-completion
macOS
brew install bash-completion@2
在profile文件中增加自动补全功能。
Linux
echo "source <(arena completion bash)" >> ~/.bashrc chmod u+x ~/.bashrc
macOS
echo "source $(brew --prefix)/etc/profile.d/bash_completion.sh" >> ~/.bashrc
步骤二:验证Arena
您可以执行以下步骤验证Arena是否正常工作。
执行以下命令检查集群的可用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%)
通过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
执行以下命令列出所有作业。
arena list
预期输出:
NAME STATUS TRAINER AGE NODE firstjob RUNNING TFJOB 5s 192.168.X.XXX
执行以下命令查看提交作业的状态。
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
执行以下命令查看作业日志。
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