【DSW Gallery】介绍如何使用命令行工具提交DLC任务

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 本文介绍如何使用DLC命令行工具提交任务到指定的工作空间内. 同时,会介绍如何提交预付费和后付费的DLC训练任务

直接使用

请打开基于介绍如何使用命令行工具提交DLC任务,并点击右上角 “ 在DSW中打开” 。

image.png

概述

PAI-DLC(Deep Learning Containers)是基于阿里巴巴容器服务ACK(Alibaba Cloud Container Service for Kubernetes)的深度学习训练平台,为您提供灵活、稳定、易用和极致性能的深度学习训练环境。

除了可以在PAI的控制台使用界面提交任务,PAI平台还提供了完善的SDK和OpenAPI,实现基于代码提交任务,使得PAI-DLC更灵活的应用到您的日常生产。

本文将介绍如何使用PAI-DLC提供的CLI,实现训练任务的提交。

如果您需要通过界面提交PAI-DLC公共资源组或专有资源组任务,请参见DLC命令行工具使用手册

前提条件

步骤一:安装DLC CLI

DLC命令行 Mac amd64版本下载链接

DLC命令行 Mac arm版本下载链接

DLC命令行 Linux版本下载链接

实际使用的时候,可以把DLC的命令行工具放入 /usr/local/bin中,chmod赋予DLC命令行执行的权限,并且使用下面的命令进行关联

exportdlc=/usr/local/bin/dlc


准备AI工作空间(必须)

工作空间是PAI的顶层概念,为团队提供统一的计算资源管理及人员权限管理能力,目的就是为AI开发者提供支持团队协作的全流程开发工具及AI资产管理能力。

PAI平台在开通时,会自动给用户 创建默认的工作空间

准备镜像(必须)

进行训练任务,需要明确指定计算节点所使用的镜像。PAI-DLC支持选择使用不同类型的镜像:

  • 社区镜像:由社区提供的标准镜像,不同的镜像的详情请参见社区镜像版本详情
  • PAI平台镜像:由阿里云PAI产品提供的多种官方镜像,支持不同的资源类型、Python版本及深度学习框架TensorFlow和PyTorch,镜像列表请参见公共镜像列表
  • 用户自定义镜像:可选择使用您添加到PAI的自定义的镜像,选择前,您需要先将自定义镜像添加到PAI中,操作详情请参见查看并添加镜像
  • 镜像地址:可选择使用您自定义的镜像,选择镜像地址后,您需要在配置框中配置公网环境下可访问的Docker Registry Image URL。

准备数据集(可选)

高质量的数据集是高精度模型的基础,是数据准备的核心目标。PAI平台提供了数据集管理模块,支持将各类数据(本地数据、阿里云存储中的数据等)注册为数据集,也支持扫描OSS文件夹生成索引数据集,为模型训练做准备。

准备代码源(可选)

进行模型训练任务提交等操作时,通常您需要提供自己的训练代码。PAI为您提供代码配置功能,便于您将需要使用的代码仓库创建为AI资产,方便在多个任务中引用。

步骤二:提交训练任务

以上准备好了训练需要的资源和配置,接下来会进行任务的提交。关于接口的更多说明,请参见API参考

配置命名行工具

在使用命令行工具之前,需要配置命令行工具,输入用户的ak,region以及所对应的region的DLC服务的endpoint

dlc config --access_id {.ak-id }       \
           --access_key {.ak-secret}  \
           --endpoint 'pai-dlc.{region-id}.aliyuncs.com' \   # region-id 例如cn-beijing/cn-hangzhou
           --region cn-hangzhou

创建预付费作业

独占资源组(也称为预付费资源组)是PAI推出的新功能,正在邀测阶段,如有需要,可以联系PAI团队。在预付费资源组中的资源为用户独占,用户可以提交DLC任务或者DSW实例,并且指定任务或者实例的资源量。当提交的任务超过资源组中的总量时,会自动排队,同时用户可以修改排队中的任务优先级来影响任务被执行的先后顺序。

值得注意的是,提交到资源组中的作业会遵循All-Or-Nothing(也叫Gang Scheduling)的原则,也即只有作业要求的所有worker都能得到资源保障的请求下,才会被调度执行;避免部分worker提交到集群,造成资源浪费。

下面的sample命令,就是提交一个DLC预付费的训练任务到46099这个工作空间,并且将任务调度到rgo80s1uv05bplin这个预付费资源组上面

dlc submit tf --name=test_2022  \--workers=1 \
    --worker_image=registry-vpc.cn-hangzhou.aliyuncs.com/pai-dlc/tensorflow-training:1.15-cpu-py36-ubuntu18.04 \
    --command="python /root/code/horovod/tf1.py" \
    --workspace_id='46099' \
    --resource_id='rgo80s1uv05bplin' \
    --worker_cpu="2" \
    --worker_memory='1Gi' \
    --code_source='code-738c8edd0e4a47e4b7fd805ec05914d7'

image.png

查看任务状态并获取日志:

查看任务的日志,需要指定任务的job_id以及pod_id。下面拿上面已经提交的任务为例

dlc logs dlcylztabt7alg7p dlcylztabt7alg7p-worker-0 --max_events_num=20

image.png

创建后付费多机分布式训练作业

后付费任务是DLC最先支持的一种业务模式,用户可以按需拉起所需要的资源,并且任务结束之后,资源就全部释放。

本文以Tensorflow多机分布式任务为例,展示如何使用DLC命令行工具创建多机分布式任务

下面的命令会创建一个2 worker,1 ps, 1 chief的TensorFlow多机分布式训练任务

./dlc submit tfjob --name=test2022 --workers=2 --worker_image=registry-vpc.cn-hangzhou.aliyuncs.com/pai-dlc/tensorflow-training:1.15-cpu-py36-ubuntu18.04 \
--command="python /root/code/horovod/tf-ps-worker-good7.py" \
--workspace_id='35206' \
--worker_spec='ecs.g6.large' \
--code_source="code-203baa3bf5404f04969501fdd8ec2950" \
--ps=1 \
--ps_image=registry-vpc.cn-hangzhou.aliyuncs.com/pai-dlc/tensorflow-training:1.15-cpu-py36-ubuntu18.04 \
--ps_spec='ecs.g6.large' \
--chief=1 \
--chief_image=registry-vpc.cn-hangzhou.aliyuncs.com/pai-dlc/tensorflow-training:1.15-cpu-py36-ubuntu18.04 \
--chief_spec='ecs.g6.large' \
--success_policy=ChiefWorker

image.png

对于TFJob来说,现在支持让用户自定义输入success policy:

--success_policy=ChiefWorker 这种模式下,TF分布式多机任务中的Chief的pod如果成功,那么就认为整个任务成功,任务会结束

--success_policy=AllWOrkers (Default) 这种模式下,TF分布式多机任务,必须所有的Workers全部成功,才会认为整个任务成功

查看任务yaml

可以用get job命令

./dlc get job dlc1fifr7w6ycnp

image.png

Stop 任务

可以用stop job命令

./dlc stop job dlc1fif7r7w6ycnq

image.png

步骤三:查看训练任务

当完成以上的PAI-DLC任务提交之后,可通过以下代码,实时查看任务运行的状态。 命令行工具支持多种维度去查询任务,具体可以用dlc get job -h查看详细参数列表,这里展示查询前面提交任务使用的预付费资源组中处于'Running'状态的任务

dlc get job --resource_id='rgo80s1uv05bplin' --status='Running'

image.png

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
2月前
|
存储 监控 数据可视化
开发者如何使用日志服务 SLS
【10月更文挑战第17天】开发者如何使用日志服务 SLS
518 3
|
存储 机器学习/深度学习 JSON
如何使用 EASCMD 客户端管理 PAI-EAS 服务|学习笔记
快速学习如何使用 EASCMD 客户端管理 PAI-EAS 服务。
199 0
|
JSON API 开发工具
API参考—实例管理—CreateDBInstance
API参考—实例管理—CreateDBInstance
162 0
|
XML JSON API
API参考—实例管理—DeleteDBInstance
调用DeleteDBInstance接口释放实例。
102 0
|
XML JSON API
API参考—实例管理—ModifyDBInstanceMaintainTime
调用ModifyDBInstanceMaintainTime接口修改实例可维护时间。
|
XML JSON API
API参考—实例管理—ModifyDBInstanceDescription
调用ModifyDBInstanceDescription接口修改实例描述。
|
XML JSON API
API参考—实例管理—RestartDBInstance
调用RestartDBInstance接口重启实例。
124 0
|
机器学习/深度学习 人工智能 算法
【DSW Gallery】PAI-DSW快速入门
PAI-DSW是一款为AI开发者量身定制的云端机器学习交互式开发IDE,随时随地开启Notebook快速读取数据、开发算法、训练及部署模型。本文介绍如何快速上手PAI-DSW。
【DSW Gallery】PAI-DSW快速入门
|
XML JSON API
API参考—实例管理—DescribeDBInstances
调用DescribeDBInstances接口查看实例列表详情。
|
存储 机器学习/深度学习 分布式计算
【DSW Gallery】COMMON_IO使用指南
COMMON_IO模块提供了TableReader和TableWriter两个接口,使用TableReader可以读取ODPS Table中的数据,使用TableWriter可以将数据写入ODPS Table。
【DSW Gallery】COMMON_IO使用指南