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

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 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)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
存储 机器学习/深度学习 人工智能
【DSW Gallery】DSW基础使用介绍
PAI-DSW是一款云端机器学习开发IDE,为您提供交互式编程环境,适用于不同水平的开发者。本文为您介绍PAI-DSW的功能特点以及界面的基础使用。
【DSW Gallery】DSW基础使用介绍
关于DSW中不显示ipynb文件
在创建时看不到notebook的解决方法
|
5月前
|
弹性计算 API 持续交付
基于 ROS 的 Terraform 托管服务轻松部署文本转语音系统 ChatTTS
基于 IaC 的理念,通过定义一个模板,使用 ROS 提供的 Terraform 托管服务进行自动化部署,可以非常高效快捷地部署任意云资源和应用(比如 ChatTTS 服务)。相比于手动部署或者通过 API、SDK 的部署方式,有着高效、稳定等诸多优势,也是服务上云的最佳实践。
69 1
基于 ROS 的 Terraform 托管服务轻松部署文本转语音系统 ChatTTS
|
6月前
|
搜索推荐 语音技术 开发工具
ModelScope问题之文档部署到阿里云EAS 调用模型报错如何解决
ModelScope模型报错是指在使用ModelScope平台进行模型训练或部署时遇到的错误和问题;本合集将收集ModelScope模型报错的常见情况和排查方法,帮助用户快速定位问题并采取有效措施。
361 1
|
机器学习/深度学习 人工智能 算法
【DSW Gallery】PAI-DSW快速入门
PAI-DSW是一款为AI开发者量身定制的云端机器学习交互式开发IDE,随时随地开启Notebook快速读取数据、开发算法、训练及部署模型。本文介绍如何快速上手PAI-DSW。
【DSW Gallery】PAI-DSW快速入门
|
分布式计算 监控 PyTorch
【DSW Gallery】如何在DLC上提交ElasticBatch任务
ElasticBatch是一种分布式离线弹性批量推理作业类型, 本文将介绍ElasticBatch SDK接口以及如何在DLC上提交ElasticBatch任务。
【DSW Gallery】如何在DLC上提交ElasticBatch任务
|
机器学习/深度学习 监控 Kubernetes
【DSW Gallery】如何提交开启AIMaster容错监控的DLC任务
AIMaster是一个管控组件,起到任务监控、容错判断以及资源控制等作用。本文将介绍如何使用Python SDK提交开启AIMaster容错监控的DLC任务。
【DSW Gallery】如何提交开启AIMaster容错监控的DLC任务
|
存储 机器学习/深度学习 Kubernetes
【DSW Gallery】如何在DLC中进行Pytorch DDP分布式训练任务
本文基于Pytorch 1.8版本,介绍了如何使用DLC进行Pytorch DDP分布式训练任务.
【DSW Gallery】如何在DLC中进行Pytorch DDP分布式训练任务
|
存储 机器学习/深度学习 Cloud Native