在大模型時代,AI算力需求旺盛。因此,PAI特別推出了競價任務功能,提供了一定數目的算力資源,通過競價方式提供給客戶,來緩解客戶算力緊張的情況。相較于普通的公共資源實例(按量付費實例),競價資源通常在價格上有一定幅度的折扣,幫助您以較低成本獲取所需的AI算力,從而降低任務運行所需的資源成本。在創建DLC任務時,您可以通過選擇競價資源來使用該功能。
使用限制
使用競價資源有如下限制:
限制類型 | 靈駿智算競價資源 | 通用計算競價資源 |
地域限制 |
|
|
框架類型 |
| PyTorch |
自動容錯(AIMaster) | 支持 | 不支持 |
功能限制 |
|
競價資源特點
競價資源使用說明
您可以使用通用計算或靈駿智算競價資源創建DLC任務。競價資源的市場價格會隨供需變化而浮動,相對于按量付費實例能最高節約90%的實例成本。由于競價資源為阿里云所有用戶共同搶占,不是穩定承諾可用的計算資源。使用競價資源的DLC任務提交后:
當阿里云的競價資源庫存不足時,有可能存在不能立即搶占到實例資源的情況,此時會持續為您申請競價資源,在此階段任務會表現為等待狀態。
當您申請到競價資源后,DLC任務即開始創建并運行。
當競價資源被回收后,DLC任務表現為失敗結束。
申請競價資源
使用競價資源創建DLC任務,任務提交成功后即開始搶占實例資源。當滿足如下條件時可成功搶占資源:
您配置的競價資源的出價上限≥市場價格
競價資源庫存充足
回收競價資源
競價資源存在中斷回收機制,與市場價格、實例庫存以及創建任務時設置的單臺實例上限價格、實例使用時長有關。出現以下情況時,DLC使用的競價資源可能會在沒有任何提示的情況下被回收:
靈駿智算競價資源:競價資源出價上限低于系統平均價格,或競價資源庫存不足時,會被回收。
通用計算競價資源:競價資源出價上限低于當前競價資源市場價,或競價資源庫存不足時,會被回收。
為確保您的競價任務能夠持續穩定運行,您可以:
在使用靈駿智算競價資源創建任務時,打開自動容錯(AIMaster)開關。開啟開關后,您的任務將自動進入競價隊列,再次參與競價,從而有機會再次運行起來。詳情請參見AIMaster:彈性自動容錯引擎。
在使用通用計算或靈駿智算競價資源創建任務時,使用EasyCkpt框架進行PyTorch大模型訓練。該訓練任務可以進行頻繁的Checkpoint保存,支持中斷和繼續訓練。詳情請參見EasyCkpt:AI大模型高性能狀態保存恢復。
計費規則
價格說明:
PAI競價任務的出價模式是設定您的最高價(SpotWithPriceLimit)。當DLC任務使用競價資源時,由于競價資源的市場價格會隨供需變化而浮動,因此使用相同的資源提交多個任務,其固定時間的賬單價格可能是相同的。目前支持以下兩種出價類型:
說明靈駿智算競價資源的出價類型僅支持Spot折扣。
出價(Spot折扣):最高價是基于資源規格的市場價格,從1折到9折的離散選項。
出價(Spot價格):最高價的出價范圍為市場價格區間。
前往分布式訓練(DLC)的新建任務頁面,在資源信息區域,資源來源選擇競價資源,然后在任務資源中查看支持使用的競價資源和市場價格區間。
通用計算競價資源
靈駿智算競價資源
競價資源計費:
競價資源為按量計費的計費模式,按照實時的市場價進行計費。
查看賬單:
任務執行成功后,您可以在次日訪問費用與成本的賬單詳情頁面,查看使用競價資源執行該任務產生的費用明細。該賬單為PAI-DLC的后付費賬單,實例標簽為
key:acs:pai:dlc:payType value:spot
。查看賬單明細的操作步驟,請參見查看賬單明細。
應用場景
適用場景:
建議以下場景使用競價資源來降低成本:
運行時間比較短的計算任務。
Debug狀態的計算任務。
能夠容忍過程中失敗的計算任務。
支持可中斷和繼續訓練的計算任務。例如使用EasyCkpt框架進行PyTorch大模型訓練的場景,能頻繁進行Checkpoint保存并從Checkpoint中恢復,詳情請參見EasyCkpt:AI大模型高性能狀態保存恢復。
不適用場景:
對穩定性要求極高的服務,請勿選擇競價資源。
操作步驟
提交DLC任務時使用競價資源,支持以下兩種提交方式:
通過控制臺
進入新建任務頁面。
登錄PAI控制臺,在頁面上方選擇目標地域,并在右側選擇目標工作空間,然后單擊進入DLC。
在分布式訓練(DLC)頁面,單擊新建任務。
配置以下關鍵參數,其他參數配置說明,請參見創建訓練任務。
參數
描述
資源信息
資源類型
選擇靈駿智算或通用計算。
說明僅當工作空間同時支持使用靈駿智算資源和通用計算資源時,才支持選擇資源類型。
資源來源
選擇競價資源。
任務資源
在資源規格列,單擊選擇競價資源,并設置出價。該出價是基于實例的原價,從1折到9折的離散選項,表示參與競價的上限。當競價資源的最高出價≥市場價格且庫存充足時,可申請到競價資源。
專有網絡配置
專有網絡配置
當使用靈駿智算競價資源提交DLC任務時,需要配置專有網絡。在下拉框中選擇當前地域已創建好的專有網絡、交換機和安全組。
安全組
交換機
容錯與診斷
自動容錯
在使用靈駿智算競價資源提交任務時,強烈建議您打開自動容錯開關。開啟AIMaster功能后,競價任務可以在由于系統平均價格超過客戶設定的上限價格導致資源回收后, 自動重新進入競價中,再次進行嘗試競價。競價任務可以在系統平均價格低于設定的上限價格時再次運行。關于AIMaster功能更詳細的內容介紹,請參見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。 |