竞价资源是PAI提供的低成本算力选项,价格最高可比按量付费实例节约90%。竞价资源的价格随供需浮动,且可能被回收中断,适合可容忍中断的训练任务。
使用限制
竞价资源的使用限制如下:
限制类型 | 灵骏智算竞价资源 | 通用计算竞价资源 |
地域限制 |
|
|
框架类型 |
| PyTorch |
自动容错(AIMaster) | 支持 | 不支持 |
功能限制 |
| |
竞价资源特点
竞价资源使用说明
竞价资源的价格随供需浮动,相比按量付费实例最高节约90%。由于所有用户共同抢占,竞价资源不保证持续可用。任务提交后:
库存不足时可能无法立即获取资源,系统会持续申请,任务显示为等待状态。
申请到资源后,任务开始运行。
资源被回收后,任务失败结束。
申请竞价资源
任务提交后即开始抢占资源。满足以下条件时可抢占成功:
您配置的竞价资源的出价上限≥市场价格
竞价资源库存充足
回收竞价资源
竞价资源可能因价格变动或库存不足被回收。以下情况会触发回收:
灵骏智算竞价资源:竞价资源出价上限低于系统平均价格,或竞价资源库存不足时,会被回收。
通用计算竞价资源:竞价资源出价上限低于当前竞价资源市场价,或竞价资源库存不足时,会被回收。
为降低任务被回收的影响,建议:
使用灵骏智算竞价资源时,打开自动容错(AIMaster)开关。开启后,任务被回收时会自动重新参与竞价。详情请参见AIMaster:弹性自动容错引擎。

使用通用计算或灵骏智算竞价资源时,采用EasyCkpt框架训练,支持频繁保存Checkpoint,任务中断后可继续训练。详情请参见EasyCkpt:AI大模型高性能状态保存恢复。
计费规则
价格说明:
竞价任务采用最高价模式(SpotWithPriceLimit),支持以下两种出价类型:
说明灵骏智算竞价资源的出价类型仅支持Spot折扣。
出价(Spot折扣):最高价是基于资源规格的市场价格,从1折到9折的离散选项。
出价(Spot价格):最高价的出价范围为市场价格区间。
前往分布式训练(DLC)的新建任务页面,在资源信息区域,资源来源选择竞价资源,然后在任务资源中查看支持使用的竞价资源和市场价格区间。
说明具体资源规格的价格,请以控制台显示为准。
通用计算竞价资源

灵骏智算竞价资源

竞价资源计费:
竞价资源按实时市场价计费。
查看账单:
任务完成后,次日可在费用与成本的账单详情页面查看费用明细。该账单为PAI-DLC后付费账单,实例标签为
key:acs:pai:dlc:payType value:spot。查看账单明细请参见查看账单明细。
应用场景
适用场景:
以下场景适合使用竞价资源:
运行时间比较短的计算任务。
Debug状态的计算任务。
可容忍中断的计算任务。
支持中断后继续训练的任务。例如使用EasyCkpt框架训练,可频繁保存Checkpoint并从中恢复,详情请参见EasyCkpt:AI大模型高性能状态保存恢复。
不适用场景:
对稳定性要求极高的服务,请勿选择竞价资源。
操作步骤
使用竞价资源提交DLC任务,支持以下两种方式:
通过控制台
进入新建任务页面。
登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入DLC。
在分布式训练(DLC)页面,单击新建任务。
配置以下关键参数,其他参数配置说明,请参见创建训练任务。
参数
描述
资源信息
资源类型
选择灵骏智算或通用计算。
说明仅当工作空间同时支持使用灵骏智算资源和通用计算资源时,才支持选择资源类型。
资源来源
选择竞价资源。
任务资源
在资源规格列,单击
选择竞价资源,并设置出价。出价为原价的1~9折,表示您愿意支付的最高价。出价≥市场价且库存充足时,可获得竞价资源。专有网络配置
专有网络配置
使用灵骏智算竞价资源时需配置专有网络。选择当前地域已创建的专有网络、交换机和安全组。
安全组
交换机
容错与诊断
自动容错
使用灵骏智算竞价资源时,强烈建议打开自动容错开关。开启后,资源被回收时任务会自动重新竞价,在价格回落到上限以下时恢复运行。详情请参见AIMaster:弹性自动容错引擎。
灵骏智算竞价资源
说明具体资源规格的价格,请以控制台显示为准。

通用计算竞价资源
说明具体资源规格的价格,请以控制台显示为准。

参数配置完成后,单击确定。
任务提交后,DLC开始申请竞价资源并运行任务。未申请到资源时,任务显示为等待状态。
通过SDK
步骤一:安装Python SDK
安装工作空间SDK。
pip install alibabacloud_aiworkspace20210204==3.0.1安装DLC SDK。
pip install alibabacloud_pai_dlc20201203==1.4.17
步骤二:提交竞价任务
SpotDiscountLimit
#!/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}')
SpotPriceLimit
#!/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}')
关键参数说明如下,更多配置请参见Python SDK。
参数 | 描述 |
SpotStrategy | 竞价策略。设置为SpotWithPriceLimit时出价类型才生效。 |
SpotDiscountLimit | 出价类型为Spot折扣。 说明
|
SpotPriceLimit | 出价类型为Spot价格。 |
UserVpc | 使用灵骏竞价资源时必填。配置任务所在地域的专有网络、交换机和安全组ID。、 |