全部產品
Search
文件中心

Platform For AI:使用競價任務

更新時間:Dec 20, 2024

在大模型時代,AI算力需求旺盛。因此,PAI特別推出了競價任務功能,提供了一定數目的算力資源,通過競價方式提供給客戶,來緩解客戶算力緊張的情況。相較於普通的公用資源執行個體(隨用隨付執行個體),競價資源通常在價格上有一定幅度的折扣,協助您以較低成本擷取所需的AI算力,從而降低任務運行所需的資源成本。在建立DLC任務時,您可以通過選擇競價資源來使用該功能。

使用限制

使用競價資源有如下限制:

限制類型

靈駿智算競價資源

通用計算競價資源

地區限制

  • 華北6(烏蘭察布)

  • 新加坡

  • 華北2(北京)

  • 華東2(上海)

  • 華東1(杭州)

  • 華南1(深圳)

  • 華北6(烏蘭察布)

  • 華南3(廣州)

架構類型

  • PyTorch

  • MPIJob

PyTorch

自動容錯(AIMaster)

支援

不支援

功能限制

  • 不支援轉換為訂用帳戶執行個體。

  • 不支援變更執行個體規格和頻寬。

  • 不支援備案服務。

  • 不支援大客戶折扣。

競價資源特點

  • 競價資源使用說明

    您可以使用通用計算或靈駿智算競價資源建立DLC任務。競價資源的市場價格會隨供需變化而浮動,相對於隨用隨付執行個體能最高節約90%的執行個體成本。由於競價資源為阿里雲所有使用者共同搶佔,不是穩定承諾可用的計算資源。使用競價資源的DLC任務提交後:

    • 當阿里雲的競價資產庫存不足時,有可能存在不能立即搶佔到執行個體資源的情況,此時會持續為您申請競價資源,在此階段任務會表現為等待狀態。

    • 當您申請到競價資源後,DLC任務即開始建立並運行。

    • 當競價資源被回收後,DLC任務表現為失敗結束。

  • 申請競價資源

    使用競價資源建立DLC任務,任務提交成功後即開始搶佔執行個體資源。當滿足如下條件時可成功搶佔資源:

    • 您配置的競價資源的出價上限≥市場價格

    • 競價資產庫存充足

  • 回收競價資源

    競價資源存在中斷回收機制,與市場價格、執行個體庫存以及建立任務時設定的單台執行個體上限價格、執行個體使用時間長度有關。出現以下情況時,DLC使用的競價資源可能會在沒有任何提示的情況下被回收:

    • 靈駿智算競價資源:競價資源出價上限低於系統平均價格,或競價資產庫存不足時,會被回收。

    • 通用計算競價資源:競價資源出價上限低於當前競價資源市場價,或競價資產庫存不足時,會被回收。

    為確保您的競價任務能夠持續穩定運行,您可以:

    • 在使用靈駿智算競價資源建立任務時,開啟自動容錯(AIMaster)開關。開啟開關後,您的任務將自動進入競價隊列,再次參與競價,從而有機會再次運行起來。詳情請參見AIMaster:彈性自動容錯引擎image

    • 在使用通用計算或靈駿智算競價資源建立任務時,使用EasyCkpt架構進行PyTorch大模型訓練。該訓練任務可以進行頻繁的Checkpoint儲存,支援中斷和繼續訓練。詳情請參見EasyCkpt:AI大模型高效能狀態儲存恢複

計費規則

  • 價格說明:

    PAI競價任務的出價模式是設定您的最高價(SpotWithPriceLimit)。當DLC任務使用競價資源時,由於競價資源的市場價格會隨供需變化而浮動,因此使用相同的資源提交多個任務,其固定時間的賬單價格可能是相同的。目前支援以下兩種出價類型:

    說明

    靈駿智算競價資源的出價類型僅支援Spot折扣。

    • 出價(Spot折扣):最高價是基於資源規格的市場價格,從1折到9折的離散選項。

    • 出價(Spot價格):最高價的出價範圍為市場價格區間。

    前往分布式訓練(DLC)的建立任務頁面,在資源資訊地區,資源來源選擇競價資源,然後在任務資源中查看支援使用的競價資源和市場價格區間。

    • 通用計算競價資源

      image

    • 靈駿智算競價資源image

  • 競價資源計費:

    競價資源為隨用隨付的計費模式,按照即時的市場價進行計費。

  • 查看賬單:

    任務執行成功後,您可以在次日訪問費用與成本的賬單詳情頁面,查看使用競價資源執行該任務產生的費用明細。該賬單為PAI-DLC的後付費賬單,執行個體標籤為key:acs:pai:dlc:payType value:spot。查看賬單明細的操作步驟,請參見查看賬單明細

應用情境

  • 適用情境:

    建議以下情境使用競價資源來降低成本:

    • 已耗用時間比較短的計算任務。

    • Debug狀態的計算任務。

    • 能夠容忍過程中失敗的計算任務。

    • 支援可中斷和繼續訓練的計算任務。例如使用EasyCkpt架構進行PyTorch大模型訓練的情境,能頻繁進行Checkpoint儲存並從Checkpoint中恢複,詳情請參見EasyCkpt:AI大模型高效能狀態儲存恢複

  • 不適用情境:

    對穩定性要求極高的服務,請勿選擇競價資源。

操作步驟

提交DLC任務時使用競價資源,支援以下兩種提交方式:

通過控制台

  1. 進入建立任務頁面。

    1. 登入PAI控制台,在頁面上方選擇目標地區,並在右側選擇目標工作空間,然後單擊進入DLC

    2. 在分布式訓練(DLC)頁面,單擊建立任務

  2. 配置以下關鍵參數,其他參數配置說明,請參見建立訓練任務

    參數

    描述

    資源資訊

    資源類型

    選擇靈駿智算通用計算

    說明

    僅當工作空間同時支援使用靈駿智算資源和通用計算資源時,才支援選擇資源類型。

    資源來源

    選擇競價資源

    任務資源

    資源規格列,單擊image選擇競價資源,並設定出價。該出價是基於執行個體的原價,從1折到9折的離散選項,表示參與競價的上限。當競價資源的最高出價≥市場價格且庫存充足時,可申請到競價資源。

    專用網路配置

    專用網路配置

    當使用靈駿智算競價資源提交DLC任務時,需要配置專用網路。在下拉框中選擇當前地區已建立好的專用網路、交換器和安全性群組。

    安全性群組

    交換器

    容錯與診斷

    自動容錯

    在使用靈駿智算競價資源提交任務時,強烈建議您開啟自動容錯開關。開啟AIMaster功能後,競價任務可以在由於系統平均價格超過客戶設定的上限價格導致資源回收後, 自動重新進入競價中,再次進行嘗試競價。競價任務可以在系統平均價格低於設定的上限價格時再次運行。關於AIMaster功能更詳細的內容介紹,請參見AIMaster:彈性自動容錯引擎

    靈駿智算競價資源

    image

    通用計算競價資源

    image

  3. 參數配置完成後,單擊確定

    任務提交後,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折扣。

說明
  • SpotDiscountLimitSpotPriceLimit不能同時設定。

  • 靈駿競價資源出價類型僅支援SpotDiscountLimit

SpotPriceLimit

出價類型為Spot價格。

UserVpc

使用靈駿競價資源提交任務時,該參數必填。配置任務所在地區的專用網路、交換器和安全性群組ID。