阿里云助力您在中国加快取得成功
一站式安全合规咨询服务
MLPS 2.0 一站式合规解决方案
依托我们的网络进军中国市场
提升面向互联网应用的性能和安全性
保障您的中国业务安全无忧
通过强大的数据安全框架保护您的数据资产
申请 ICP 备案的流程解读和咨询服务
面向大数据建设、管理及应用的全域解决方案
企业内大数据建设、管理和应用的一站式解决方案
将您的采购和销售置于同一企业级全渠道数字平台上
全渠道内置 AI 驱动、拟人化、多语言对话的聊天机器人
快速搭建在线教育平台
提供域名注册、分析和保护服务
即时部署可伸缩的虚拟云服务器
完全托管、本地部署的阿里云基础架构和服务。
阿里云开放给企业应用服务商和其客户的服务管理PaaS平台
助您构建公共云上的专有资源池
富弹性可伸缩的高性能计算服务
易用、安全、高效的云上桌面服务
高效运维、稳定安全和操作流畅的云端虚拟手机
基于GPU的弹性计算服务
可快速搭建应用且易于管理的轻量级云服务器
根据用户的业务需求和策略,自动调整其弹性计算资源的管理服务
云原生 Kubernetes 容器化应用运行环境
以 Kubernetes 为使用界面的容器服务产品,提供符合容器规范的算力资源
安全的镜像托管服务,支持全生命周期管理
多集群环境下微服务应用流量统一管理
提供任意基础设施上容器集群的统一管控,助您轻松管控分布式云场景
高弹性、高可靠的企业级无服务器 Kubernetes 容器产品
敏捷安全的 Serverless 容器运行服务
为虚拟机和容器提供高可靠性、高性能、低时延的块存储服务
一款海量、安全、低成本、高可靠的云存储服务
可靠、弹性、高性能、多共享的文件存储服务
全托管、可扩展的并行文件系统服务。
全托管的 NoSQL 结构化数据实时存储服务
可抵扣多种存储产品的容量包,兼具灵活性和长期成本优化
让您的应用跨不同可用区资源自动分配访问量
随时绑定和解绑 VPC ECS
云网络公网、跨域流量统一计费
高性价比,可抵扣按流量计费的流量费用
创建云上隔离的网络,在专有环境中运行资源
在 VPC 环境下构建公网流量的出入口
具备网络状态可视化、故障智能诊断能力的自助式网络运维服务。
安全便捷的云上服务专属连接
基于阿里云专有网络的私有 DNS 解析服务
保障在线业务不受大流量 DDoS 攻击影响
系统运维和安全审计管控平台
业务上云的第一个网络安全基础设施
集零信任内网访问、办公数据保护、终端管理等多功能于一体的办公安全管控平台
提供7X24小时安全运维平台
防御常见 Web 攻击,缓解 HTTP 泛洪攻击
实现全站 HTTPS,呈现可信的 WEB 访问
为云上应用提供符合行业标准和密码算法等级的数据加解密、签名验签和数据认证能力
一款发现、分类和保护敏感数据的安全服务
创建、控制和管理您的加密密钥
快速提高应用高可用能力服务
围绕应用和微服务的 PaaS 平台
兼容主流开源微服务生态的一站式平台
多集群环境下微服务应用流量统一管理
企业级全托管实时数据流平台
全托管,开箱即用的Apache Kafka全托管服务
提供物联网移动端和云交互的消息队列
开箱即用的全托管 RabbitMQ 服务
提供基于消息的可靠异步通信机制
应用之间的消息队列和通知
无服务器事件总线服务
Super MySQL 和 PostgreSQL,高度兼容 Oracle 语法
全托管 MySQL、PostgreSQL、SQL Server、MariaDB
兼容 Redis® 的缓存和KV数据库
兼容Apache Cassandra、Apache HBase、Elasticsearch、OpenTSDB 等多种开源接口
文档型数据库,支持副本集和分片架构
100%兼容 Apache HBase 并深度扩展,稳定、易用、低成本的NoSQL数据库。
低成本、高可用、可弹性伸缩的在线时序数据库服务
专为搜索和分析而设计,成本效益达到开源的两倍,采用最新的企业级AI搜索和AI助手功能。
一款兼容PostgreSQL协议的实时交互式分析产品
一种快速、完全托管的 TB/PB 级数据仓库
基于 Flink 为大数据行业提供解决方案
基于Qwen和其他热门模型的一站式生成式AI平台,可构建了解您业务的智能应用程
一站式机器学习平台,满足数据挖掘分析需求
高性能向量检索服务,提供低代码API和高成本效益
帮助您的应用快速构建高质量的个性化推荐服务能力
提供定制化的高品质机器翻译服务
全面的AI计算平台,满足大模型训练等高性能AI计算的算力和性能需求
具备智能会话能力的会话机器人
基于机器学习的智能图像搜索产品
基于阿里云深度学习技术,为用户提供图像分割、视频分割、文字识别等离线SDK能力,支持Android、iOS不同的适用终端。
语音识别、语音合成服务以及自学习平台
一站式智能搜索业务开发平台
助力金融企业快速搭建超低时延、高质量、稳定的行情数据服务
帮助企业快速测算和分析企业的碳排放和产品碳足迹
企业工作流程自动化,全面提高效率
金融级云原生分布式架构的一站式高可用应用研发、运维平台
eKYC 数字远程在线解决方案
可智能检测、大数据驱动的综合性反洗钱 (AML) 解决方案
阿里云APM类监控产品
实时云监控服务,确保应用及服务器平稳运行
为系统运维人员管理云基础架构提供全方位服务的云上自动化运维平台
面向您的云资源的风险检测服务
提升分布式环境下的诊断效率
日志类数据一站式服务,无需开发就能部署
ECS 预留实例
让弹性计算产品的成本和灵活性达到最佳平衡的付费方式。云原生 AI 套件
加速AI平台构建,提高资源效率和交付速度FinOps
实时分析您的云消耗并实现节约SecOps
实施细粒度安全控制DevOps
快速、安全地最大限度提高您的DevOps优势自带IP上云
自带公网 IP 地址上云全球网络互联
端到端的软件定义网络解决方案,可推动跨国企业的业务发展全球应用加速
提升面向互联网应用的性能和安全性全球互联网接入
将IDC网关迁移到云端云原生 AI 套件
加速AI平台构建,提高资源效率和交付速度FinOps
实时分析您的云消耗并实现节约SecOps
实施细粒度安全控制DevOps
快速、安全地最大限度提高您的DevOps优势金融科技云数据库解决方案
利用专为金融科技而设的云原生数据库解决方案游戏行业云数据库解决方案
提供多种成熟架构,解决所有数据问题Oracle 数据库迁移
将 Oracle 数据库顺利迁移到云原生数据库数据库迁移
加速迁移您的数据到阿里云阿里云上的数据湖
实时存储、管理和分析各种规模和类型的数据数码信贷
利用大数据和 AI 降低信贷和黑灰产风险面向企业数据技术的大数据咨询服务
帮助企业实现数据现代化并规划其数字化未来人工智能对话服务
全渠道内置 AI 驱动、拟人化、多语言对话的聊天机器人EasyDispatch 现场服务管理
为现场服务调度提供实时AI决策支持在线教育
快速搭建在线教育平台窄带高清 (HD) 转码
带宽成本降低高达 30%广电级大型赛事直播
为全球观众实时直播大型赛事,视频播放流畅不卡顿直播电商
快速轻松地搭建一站式直播购物平台用于供应链规划的Alibaba Dchain
构建和管理敏捷、智能且经济高效的供应链云胸牌
针对赛事运营的创新型凭证数字服务数字门店中的云 POS 解决方案
将所有操作整合到一个云 POS 系统中元宇宙
元宇宙是下一代互联网人工智能 (AI) 加速
利用阿里云 GPU 技术,为 AI 驱动型业务以及 AI 模型训练和推理加速DevOps
快速、安全地最大限度提高您的DevOps优势数据迁移解决方案
加速迁移您的数据到阿里云企业 IT 治理
在阿里云上构建高效可控的云环境基于日志管理的AIOps
登录到带有智能化日志管理解决方案的 AIOps 环境备份与存档
数据备份、数据存档和灾难恢复用阿里云金融服务加快创新
在云端开展业务,提升客户满意度
为全球资本市场提供安全、准确和数字化的客户体验
利用专为金融科技而设的云原生数据库解决方案
利用大数据和 AI 降低信贷和黑灰产风险
建立快速、安全的全球外汇交易平台
新零售时代下,实现传统零售业转型
利用云服务处理流量波动问题,扩展业务运营、降低成本
快速轻松地搭建一站式直播购物平台
面向大数据建设、管理及应用的全域解决方案
全渠道内置 AI 驱动、拟人化、多语言对话的聊天机器人
利用自动化、数字化、智能化的物流解决方案,平衡成本和用户体验
构建和管理敏捷、智能且经济高效的供应链
为现场服务调度提供实时AI决策支持
以数字化媒体旅程为当今的媒体市场准备就绪您的内容
带宽成本降低高达 30%
快速轻松地搭建一站式直播购物平台
为全球观众实时直播大型赛事,视频播放流畅不卡顿
使用阿里云弹性高性能计算 E-HPC 将本地渲染农场连接到云端
构建发现服务,帮助客户找到最合适的内容
保护您的媒体存档安全
通过统一的数据驱动平台提供一致的全生命周期客户服务
在钉钉上打造一个多功能的电信和数字生活平台
在线存储、共享和管理照片与文件
提供全渠道的无缝客户体验
面向中小型企业,为独立软件供应商提供可靠的IT服务
打造最快途径,助力您的新云业务扬帆起航
先进的SD-WAN平台,可实现WAN连接、实时优化并降低WAN成本
通过自动化和流程标准化实现快速事件响应
针对关键网络安全威胁提供集中可见性并进行智能安全分析
提供大容量、可靠且高度安全的企业文件传输
用智能技术数字化体育赛事
基于人工智能的低成本体育广播服务
专业的广播转码及信号分配管理服务
基于云的音视频内容引入、编辑和分发服务
在虚拟场馆中模拟关键运营任务
针对赛事运营的创新型凭证数字服务
智能和交互式赛事指南
轻松管理云端背包单元的绑定直播流
通过数据加强您的营销工作
元宇宙是下一代互联网
加速迁移您的数据到阿里云
在阿里云上建立一个安全且易扩容的环境,助力高效率且高成本效益的上云旅程
迁移到完全托管的云数据库
将 Oracle 数据库顺利迁移到云原生数据库
自带公网 IP 地址上云
利用阿里云强大的安全工具集,保障业务安全、应用程序安全、数据安全、基础设施安全和帐户安全
保护、备份和还原您的云端数据资产
MLPS 2.0 一站式合规解决方案
快速高效地将您的业务扩展到中国,同时遵守适用的当地法规
实现对 CloudOps、DevOps、SecOps、AIOps 和 FinOps 的高效、安全和透明的管理
构建您的原生云环境并高效管理集群
快速、安全地最大限度提高您的DevOps优势
实施细粒度安全控制
提供运维效率和总体系统安全性
实时分析您的云消耗并实现节约
利用生成式 AI 加速创新,创造新的业务佳绩
阿里云高性能开源大模型
探索阿里云人工智能和数据智能的所有功能、新优惠和最新产品
该体验中心提供广泛的用例和产品帮助文档,助您开始使用阿里云 AI 产品和浏览您的业务数据。
利用阿里云 GPU 技术,为 AI 驱动型业务以及 AI 模型训练和推理加速
元宇宙是下一代互联网
构建发现服务,帮助客户找到最合适的内容
全渠道内置 AI 驱动、拟人化、多语言对话的聊天机器人
实时存储、管理和分析各种规模和类型的数据
登录到带有智能化日志管理解决方案的 AIOps 环境
帮助企业实现数据现代化并规划其数字化未来
帮助零售商快速规划数字化之旅
将全球知名的 CRM 平台引入中国
在线存储、共享和管理照片与文件
构建、部署和管理高可用、高可靠、高弹性的应用程序
快速、安全地最大限度提高您的DevOps优势
将您的采购和销售置于同一企业级全渠道数字平台上
企业内大数据建设、管理和应用的一站式解决方案
帮助企业简化 IT 架构、实现商业价值、加速数字化转型的步伐
快速高效地将您的业务扩展到中国,同时遵守适用的当地法规
快速搜集、处理、分析联网设备产生的数据
0.0.201
完成准备工作后,您可以通过控制台、Python SDK或命令行提交DLC任务。本文为您介绍提交DLC任务的具体操作步骤。
已准备资源、镜像、数据集和代码集。详情请参见准备工作。
如果使用Python SDK提交训练任务,需要配置环境变量。详情请参见安装Credentials工具和在Linux、macOS和Windows系统配置环境变量。
进入新建任务页面。
登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入DLC。
在分布式训练(DLC)页面,单击新建任务。
分别在以下几个区域,配置训练任务相关参数。
基本信息
配置任务名称和标签。
环境信息
参数 | 描述 |
参数 | 描述 |
节点镜像 | 工作节点的镜像。当前支持选择如下类型的镜像:
|
数据集 | 支持挂载以下两种类型数据集:
两种类型数据集均需配置挂载路径,表示将数据集挂载到DLC容器的指定路径,例如 重要
|
直接挂载 | 支持将数据源OSS、通用型NAS、极速型NAS和BMCPFS直接挂载到DLC容器中。单击相应数据源,然后配置数据源信息和挂载路径即可。 说明 仅灵骏智算资源的任务可以使用BMCPFS数据源。 |
启动命令 | 本任务需要执行的命令。支持Shell命令,例如,使用 提交训练任务时,PAI会自动注入多个通用环境变量,您可以通过配置 说明 如果配置了数据集,您可以通过设置相应的命令,将训练结果导出至数据集挂载目录,方便您在数据集中查看训练结果。 |
环境变量 | 提供额外的配置信息或参数。格式为 |
三方库配置 | 支持以下两种配置方式:
|
代码配置 | 将训练所需代码文件上传到DLC容器中。支持以下两种配置方式:
|
资源信息
参数 | 描述 |
参数 | 描述 |
资源类型 | 仅当工作空间同时支持使用灵骏智算资源和通用计算资源提交DLC任务时,才支持选择资源类型,取值如下:
|
资源来源 | 您可以选择使用公共资源、资源配额(包括通用计算资源或灵骏智算资源)或竞价资源。 说明
|
资源配额 | 仅资源来源选择资源配额时,需要配置该参数。选择已准备好的资源配额,关于如何准备资源配额,请参见资源配额(Quota)功能介绍。 |
优先级 | 当资源来源选择资源配额时,支持配置该参数。 表示同时运行的任务执行的优先级,取值范围为[1,9],其中1表示优先级最低。 |
框架 | 支持使用以下几种深度学习训练框架和训练工具,它们提供了丰富的功能和接口,方便您进行构建、训练和优化深度学习模型。
说明 当资源配额选择灵骏智算资源时,仅支持提交Tensorflow、PyTorch、ElasticBatch、MPIJob和Ray类型的任务。 |
任务资源 | 根据您选择的框架,支持配置Worker、PS、Chief、Evaluator和GraphLearn节点的资源。
|
指定节点调度 | 打开开关,在调度指定节点页面,选择要用于任务调度的节点。 说明 仅使用资源配额提交任务时,支持配置该参数。 |
闲时资源 | 使用资源配额提交DLC训练任务时,您可以合理利用并配置闲时资源。关于闲时资源的更多使用说明,请参见使用闲时资源。 |
CPU亲和性 | 启用CPU亲和性,能够将容器或Pod中的进程绑定到特定的CPU核心上执行。通过这种方式,可以减少CPU缓存未命中、上下文切换等现象,从而提高CPU使用率,提升应用性能,适用于对性能敏感和实时性要求高的场景。 |
最长运行时长 | 您可以设置任务运行的最长时长,在完成配置后,超过该时长的任务将停止运行。默认为30小时。 |
保留时长 | 配置执行成功或失败的任务的保留时长,开启任务保留会一直占用资源。超过该时长的任务将被删除。 重要 DLC任务删除后无法恢复,请谨慎操作。 |
专有网络
不配置专有网络,将使用公网连接。由于公网连接的带宽有限,可能导致任务执行过程中出现卡顿或无法正常进行的情况。
配置专有网络,以确保充足的网络带宽和更稳定的性能。
选择当前地域可用的专有网络,并选择对应的交换机与安全组。配置完成后,任务运行的集群将能够直接访问此专有网络内的服务,并使用此处选择的安全组进行安全访问限制。
此外,您在配置专有网络时还可以配置公网访问网关,支持以下两种配置方法:
专有网关:您可以使用不同的带宽来独享网络资源。选择该方式后,您需要为DLC任务关联的专有网络创建公网NAT网关、绑定EIP并配置SNAT条目。配置方法,请参考DSW通过专有公网网关访问公网。
公有网关:使用共享的公网带宽,在用户高并发时下载速度会比较慢。
当前运行DLC任务时,需保障任务资源组实例、数据集存储(OSS)在同一地域的VPC网络环境中,且与代码仓库的网络是连通状态。
如果数据集配置选择CPFS类型的数据集,需要配置专有网络,且选择的专有网络需要与CPFS一致。否则,提交的DLC训练任务可能长时间处于环境准备中状态。
当使用灵骏智算竞价资源提交DLC任务时,需要配置专有网络。
容错与诊断
参数 | 描述 |
参数 | 描述 |
自动容错 | 打开自动容错开关并配置相应参数后,系统将提供作业检测和控制能力,能够及时检测训练任务算法层面的报错,并规避错误,从而提升GPU的利用率。更详细的配置说明,请参见AIMaster:弹性自动容错引擎。 说明 启用自动容错功能后,系统将启动一个AIMaster实例与任务实例一起运行,这会占用一定的计算资源。关于AIMaster实例资源使用详情如下:
|
健康检测 | 打开健康检测开关,健康检测会对参与训练的资源进行全面检测,自动隔离故障节点,并触发后台自动化运维流程,有效减少任务训练初期遇到问题的可能性,提升训练成功率。详情请参见SanityCheck:算力健康检测。 说明 仅基于灵骏智算资源配额提交的Pytorch类型的训练任务且GPU(卡数)大于0时,支持开启健康检测功能。 |
角色与权限
实例RAM角色配置说明如下。关于该功能更详细的内容介绍,请参见配置DLC RAM角色。
实例RAM角色 | 描述 |
实例RAM角色 | 描述 |
PAI默认角色 | 基于服务角色AliyunPAIDLCDefaultRole运作,它仅拥有访问ODPS、OSS的权限,且权限更加精细。基于PAI默认角色签发的临时访问凭证:
|
自定义角色 | 选择或填写一个自定义的RAM角色。在实例内基于STS临时凭证访问云产品时,拥有的权限将与该自定义角色的权限保持一致。 |
不关联角色 | 不为DLC任务关联RAM角色,默认选择该方式。 |
参数配置完成后,单击确定。
安装工作空间SDK。
pip install alibabacloud_aiworkspace20210204==3.0.1
安装DLC SDK。
pip install alibabacloud_pai_dlc20201203==1.4.17
如果您希望采用按量计费方式提交训练任务,可以使用公共资源。使用公共资源提交的训练任务可能会遇到排队延时,建议在任务量相对较少,对任务时效性要求不高的场景下使用。
如果您希望采用包年包月方式提交训练任务,可以使用AI计算资源(包括通用计算资源和灵骏智算资源)。在任务量相对较多时,通过AI计算资源来保障训练任务能正常执行。
如果您希望降低任务运行所需的资源成本,可以使用竞价资源。竞价资源通常有一定幅度的折扣,但不是稳定承诺可用的计算资源,有可能会出现无法立即抢占或被回收的情况。关于竞价资源的使用限制和详情介绍,请参见使用竞价任务。
创建并提交任务的具体调用代码如下所示。
#!/usr/bin/env python3
from __future__ import print_function
import json
import time
from alibabacloud_tea_openapi.models import Config
from alibabacloud_credentials.client import Client as CredClient
from alibabacloud_pai_dlc20201203.client import Client as DLCClient
from alibabacloud_pai_dlc20201203.models import (
ListJobsRequest,
ListEcsSpecsRequest,
CreateJobRequest,
GetJobRequest,
)
from alibabacloud_aiworkspace20210204.client import Client as AIWorkspaceClient
from alibabacloud_aiworkspace20210204.models import (
ListWorkspacesRequest,
CreateDatasetRequest,
ListDatasetsRequest,
ListImagesRequest,
ListCodeSourcesRequest
)
def create_nas_dataset(client, region, workspace_id, name,
nas_id, nas_path, mount_path):
'''创建NAS的数据集。
'''
response = client.create_dataset(CreateDatasetRequest(
workspace_id=workspace_id,
name=name,
data_type='COMMON',
data_source_type='NAS',
property='DIRECTORY',
uri=f'nas://{nas_id}.{region}{nas_path}',
accessibility='PRIVATE',
source_type='USER',
options=json.dumps({
'mountPath': mount_path
})
))
return response.body.dataset_id
def create_oss_dataset(client, region, workspace_id, name,
oss_bucket, oss_endpoint, oss_path, mount_path):
'''创建OSS数据集。
'''
response = client.create_dataset(CreateDatasetRequest(
workspace_id=workspace_id,
name=name,
data_type='COMMON',
data_source_type='OSS',
property='DIRECTORY',
uri=f'oss://{oss_bucket}.{oss_endpoint}{oss_path}',
accessibility='PRIVATE',
source_type='USER',
options=json.dumps({
'mountPath': mount_path
})
))
return response.body.dataset_id
def wait_for_job_to_terminate(client, job_id):
while True:
job = client.get_job(job_id, GetJobRequest()).body
print('job({}) is {}'.format(job_id, job.status))
if job.status in ('Succeeded', 'Failed', 'Stopped'):
return job.status
time.sleep(5)
return None
def main():
# 请确认您的主账号已授权DLC,且拥有足够的权限。
region_id = 'cn-hangzhou'
# 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
# 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
# 本示例通过Credentials SDK默认从环境变量中读取AccessKey,来实现身份验证为例。
cred = CredClient()
# 1. create client;
workspace_client = AIWorkspaceClient(
config=Config(
credential=cred,
region_id=region_id,
endpoint="aiworkspace.{}.aliyuncs.com".format(region_id),
)
)
dlc_client = DLCClient(
config=Config(
credential=cred,
region_id=region_id,
endpoint='pai-dlc.{}.aliyuncs.com'.format(region_id),
)
)
print('------- Workspaces -----------')
# 获取工作空间列表。您也可以在参数workspace_name中填入您创建的工作空间名。
workspaces = workspace_client.list_workspaces(ListWorkspacesRequest(
page_number=1, page_size=1, workspace_name='',
module_list='PAI'
))
for workspace in workspaces.body.workspaces:
print(workspace.workspace_name, workspace.workspace_id,
workspace.status, workspace.creator)
if len(workspaces.body.workspaces) == 0:
raise RuntimeError('found no workspaces')
workspace_id = workspaces.body.workspaces[0].workspace_id
print('------- Images ------------')
# 获取镜像列表。
images = workspace_client.list_images(ListImagesRequest(
labels=','.join(['system.supported.dlc=true',
'system.framework=Tensorflow 1.15',
'system.pythonVersion=3.6',
'system.chipType=CPU'])))
for image in images.body.images:
print(json.dumps(image.to_map(), indent=2))
image_uri = images.body.images[0].image_uri
print('------- Datasets ----------')
# 获取数据集。
datasets = workspace_client.list_datasets(ListDatasetsRequest(
workspace_id=workspace_id,
name='example-nas-data', properties='DIRECTORY'))
for dataset in datasets.body.datasets:
print(dataset.name, dataset.dataset_id, dataset.uri, dataset.options)
if len(datasets.body.datasets) == 0:
# 当前数据集不存在时,创建数据集。
dataset_id = create_nas_dataset(
client=workspace_client,
region=region_id,
workspace_id=workspace_id,
name='example-nas-data',
# Nas文件系统ID。
# 通用型NAS:31a8e4****。
# 极速型NAS:必须以extreme-开头,例如extreme-0015****。
# CPFS:必须以cpfs-开头,例如cpfs-125487****。
nas_id='***',
nas_path='/',
mount_path='/mnt/data/nas')
print('create dataset with id: {}'.format(dataset_id))
else:
dataset_id = datasets.body.datasets[0].dataset_id
print('------- Code Sources ----------')
# 获取代码集列表。
code_sources = workspace_client.list_code_sources(ListCodeSourcesRequest(
workspace_id=workspace_id))
for code_source in code_sources.body.code_sources:
print(code_source.display_name, code_source.code_source_id, code_source.code_repo)
print('-------- ECS SPECS ----------')
# 获取DLC的节点规格列表。
ecs_specs = dlc_client.list_ecs_specs(ListEcsSpecsRequest(page_size=100, sort_by='Memory', order='asc'))
for spec in ecs_specs.body.ecs_specs:
print(spec.instance_type, spec.cpu, spec.memory, spec.memory, spec.gpu_type)
print('-------- Create Job ----------')
# 创建DLC作业。
create_job_resp = dlc_client.create_job(CreateJobRequest().from_map({
'WorkspaceId': workspace_id,
'DisplayName': 'sample-dlc-job',
'JobType': 'TFJob',
'JobSpecs': [
{
"Type": "Worker",
"Image": image_uri,
"PodCount": 1,
"EcsSpec": ecs_specs.body.ecs_specs[0].instance_type,
},
],
"UserCommand": "echo 'Hello World' && ls -R /mnt/data/ && sleep 30 && echo 'DONE'",
'DataSources': [
{
"DataSourceId": dataset_id,
},
],
}))
job_id = create_job_resp.body.job_id
wait_for_job_to_terminate(dlc_client, job_id)
print('-------- List Jobs ----------')
# 获取DLC的作业列表。
jobs = dlc_client.list_jobs(ListJobsRequest(
workspace_id=workspace_id,
page_number=1,
page_size=10,
))
for job in jobs.body.jobs:
print(job.display_name, job.job_id, job.workspace_name,
job.status, job.job_type)
pass
if __name__ == '__main__':
main()
登录PAI控制台。
按照下图操作指引,在工作空间列表页面查看您所在的工作空间ID。
按照下图操作指引,查看您的专有资源组的资源配额ID。
使用以下代码创建并提交任务。可使用的公共镜像列表,详情请参见步骤二:准备镜像。
from alibabacloud_pai_dlc20201203.client import Client
from alibabacloud_credentials.client import Client as CredClient
from alibabacloud_tea_openapi.models import Config
from alibabacloud_pai_dlc20201203.models import (
CreateJobRequest,
JobSpec,
ResourceConfig, GetJobRequest
)
# 初始化一个Client,用来访问DLC的API。
region = 'cn-hangzhou'
# 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
# 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
# 本示例通过Credentials SDK默认从环境变量中读取AccessKey,来实现身份验证为例。
cred = CredClient()
client = Client(
config=Config(
credential=cred,
region_id=region,
endpoint=f'pai-dlc.{region}.aliyuncs.com',
)
)
# 声明任务的资源配置,关于镜像选择可以参考文档中公共镜像列表,也可以传入自己的镜像地址。
spec = JobSpec(
type='Worker',
image=f'registry-vpc.cn-hangzhou.aliyuncs.com/pai-dlc/tensorflow-training:1.15-cpu-py36-ubuntu18.04',
pod_count=1,
resource_config=ResourceConfig(cpu='1', memory='2Gi')
)
# 声明任务的执行内容。
req = CreateJobRequest(
resource_id='<替换成您自己的资源配额ID>',
workspace_id='<替换成您自己的WorkspaceID>',
display_name='sample-dlc-job',
job_type='TFJob',
job_specs=[spec],
user_command='echo "Hello World"',
)
# 提交任务。
response = client.create_job(req)
# 获取任务ID。
job_id = response.body.job_id
# 查询任务状态。
job = client.get_job(job_id, GetJobRequest()).body
print('job status:', job.status)
# 查看任务执行的命令。
job.user_command
#!/usr/bin/env python3
from alibabacloud_tea_openapi.models import Config
from alibabacloud_credentials.client import Client as CredClient
from alibabacloud_pai_dlc20201203.client import Client as DLCClient
from alibabacloud_pai_dlc20201203.models import CreateJobRequest
region_id = '<region-id>' # DLC任务所在地域ID,例如华东1(杭州)为cn-hangzhou。
cred = CredClient()
workspace_id = '12****' # DLC任务所在工作空间ID。
dlc_client = DLCClient(
Config(credential=cred,
region_id=region_id,
endpoint='pai-dlc.{}.aliyuncs.com'.format(region_id),
protocol='http'))
create_job_resp = dlc_client.create_job(CreateJobRequest().from_map({
'WorkspaceId': workspace_id,
'DisplayName': 'sample-spot-job',
'JobType': 'PyTorchJob',
'JobSpecs': [
{
"Type": "Worker",
"Image": "dsw-registry-vpc.<region-id>.cr.aliyuncs.com/pai/pytorch-training:1.12-cpu-py39-ubuntu20.04",
"PodCount": 1,
"EcsSpec": 'ecs.g7.xlarge',
"SpotSpec": {
"SpotStrategy": "SpotWithPriceLimit",
"SpotDiscountLimit": 0.4,
}
},
],
'UserVpc': {
"VpcId": "vpc-0jlq8l7qech3m2ta2****",
"SwitchId": "vsw-0jlc46eg4k3pivwpz8****",
"SecurityGroupId": "sg-0jl4bd9wwh5auei9****",
},
"UserCommand": "echo 'Hello World' && ls -R /mnt/data/ && sleep 30 && echo 'DONE'",
}))
job_id = create_job_resp.body.job_id
print(f'jobId is {job_id}')
#!/usr/bin/env python3
from alibabacloud_tea_openapi.models import Config
from alibabacloud_credentials.client import Client as CredClient
from alibabacloud_pai_dlc20201203.client import Client as DLCClient
from alibabacloud_pai_dlc20201203.models import CreateJobRequest
region_id = '<region-id>'
cred = CredClient()
workspace_id = '12****'
dlc_client = DLCClient(
Config(credential=cred,
region_id=region_id,
endpoint='pai-dlc.{}.aliyuncs.com'.format(region_id),
protocol='http'))
create_job_resp = dlc_client.create_job(CreateJobRequest().from_map({
'WorkspaceId': workspace_id,
'DisplayName': 'sample-spot-job',
'JobType': 'PyTorchJob',
'JobSpecs': [
{
"Type": "Worker",
"Image": "dsw-registry-vpc.<region-id>.cr.aliyuncs.com/pai/pytorch-training:1.12-cpu-py39-ubuntu20.04",
"PodCount": 1,
"EcsSpec": 'ecs.g7.xlarge',
"SpotSpec": {
"SpotStrategy": "SpotWithPriceLimit",
"SpotPriceLimit": 0.011,
}
},
],
'UserVpc': {
"VpcId": "vpc-0jlq8l7qech3m2ta2****",
"SwitchId": "vsw-0jlc46eg4k3pivwpz8****",
"SecurityGroupId": "sg-0jl4bd9wwh5auei9****",
},
"UserCommand": "echo 'Hello World' && ls -R /mnt/data/ && sleep 30 && echo 'DONE'",
}))
job_id = create_job_resp.body.job_id
print(f'jobId is {job_id}')
其中关键配置说明如下:
参数 | 描述 |
SpotStrategy | 竞价策略。仅该参数设置为SpotWithPriceLimit时,出价类型才能生效。 |
SpotDiscountLimit | 出价类型为Spot折扣。 说明
|
SpotPriceLimit | 出价类型为Spot价格。 |
UserVpc | 使用灵骏竞价资源提交任务时,该参数必填。配置任务所在地域的专有网络、交换机和安全组ID。 |
根据您使用的操作系统下载Linux 64或Mac版本的客户端工具并完成用户认证,详情请参见准备工作。
登录PAI控制台。
按照下图操作指引,在工作空间列表页面查看您所在的工作空间ID(WorkspaceID)。
按照下图操作指引,查看您的资源配额ID。
参考以下文件内容准备参数文件 tfjob.params
。更多关于参数文件的配置方法,请参见提交命令。
name=test_cli_tfjob_001
workers=1
worker_cpu=4
worker_gpu=0
worker_memory=4Gi
worker_shared_memory=4Gi
worker_image=registry-vpc.cn-beijing.aliyuncs.com/pai-dlc/tensorflow-training:1.12.2PAI-cpu-py27-ubuntu16.04
command=echo good && sleep 120
resource_id=<替换成您的资源配额ID>
workspace_id=<替换成您的WorkspaceID>
使用以下代码示例传入params_file参数提交任务,可以将DLC任务提交到指定的工作空间和资源配额。
./dlc submit tfjob --job_file ./tfjob.params
使用以下代码查看您提交的DLC任务。
./dlc get job <jobID>
提交训练任务后,您可以执行以下操作:
查看任务基本信息、资源视图和操作日志。详情请参见查看训练详情。
管理任务,包括克隆、停止和删除任务等。详情请参见管理训练任务。
通过Tensorboard查看结果分析报告。详情请参见Tensorboard。
设置任务的监控与报警。详情请参见训练监控与报警。
查看任务运行的账单明细。详情请参见账单明细。
在工作空间中配置SLS日志转发功能,将当前工作空间中的DLC任务日志转发至指定的SLS日志库,实现自定义分析。详情请参见订阅任务日志。
在PAI工作空间的事件中心中创建消息通知规则,以便跟踪和监控DLC任务的状态。详情请参见消息通知。
有关在执行DLC任务过程中可能出现的问题及其解决方法,请参考DLC常见问题。
关于DLC的使用案例,请参见DLC使用案例汇总。