すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:プリエンプティブルジョブの使用

最終更新日:Feb 07, 2025

十分な計算能力がない場合は、入札システムを使用して計算リソースを割り当てるPlatform for AI (PAI) のプリエンプティブルジョブ機能を使用できます。 ほとんどの場合、プリエンプティブルリソースは、公共の従量課金リソースよりも価格優位性を提供します。 これにより、AIコンピューティングパワーへの費用対効果の高いアクセスが可能になり、ジョブの総コストが削減されます。 このトピックでは、ディープラーニングコンテナ (DLC) ジョブを作成するときにプリエンプティブルリソースを使用する方法について説明します。

制限事項

プリエンプティブルリソースには次の制限があります。

タイプ

Lingjun リソース

汎用コンピューティングリソース

サポートされるリージョン

  • 中国 (ウランチャブ)

  • シンガポール

  • 中国 (北京)

  • 中国 (上海)

  • 中国 (杭州)

  • 中国 (深セン)

  • 中国 (ウランチャブ)

  • 中国 (広州)

フレームワークタイプ

  • PyTorch

  • MPIJob

PyTorch

AIMasterベースの自動フォールトトレランス

対応

非対応

機能の制限

  • プリエンプティブルインスタンスをサブスクリプションインスタンスに変換することはできません。

  • インスタンスと帯域幅の仕様は変更できません。

  • ICPファイリングサービスはサポートされていません。

  • 主要な顧客には割引は提供されません。

機能

  • プリエンプティブルリソースの使用

    汎用コンピューティングリソースまたはLingjunリソースを使用して、DLCジョブを作成できます。 プリエンプティブルリソースの市場価格は、需要と供給に基づいて変化します。 プリエンプティブルインスタンスのコストは、従量課金インスタンスよりも最大90% 低くなります。 プリエンプティブルリソースは、すべてのAlibaba Cloudユーザーがプリエンプトでき、保護期間が終了するとリリースされます。 プリエンプティブルリソースを使用してDLCジョブを送信する場合は、次の考慮事項に注意する必要があります。

    • インスタンスリソースが不十分なためにDLCがプリエンプティブルインスタンスのプリエンプトに失敗した場合、プリエンプティブルジョブは待機状態になり、DLCは引き続きプリエンプティブルリソースを申請します。

    • システムがプリエンプティブルリソースを申請すると、DLCジョブが作成されて実行されます。

    • プリエンプティブルリソースがリリースされると、DLCジョブは失敗して実行を停止します。

  • プリエンプティブルリソースの申請

    プリエンプティブルリソースを使用してDLCジョブを作成すると、DLCはジョブの送信後にインスタンスリソースのプリエンプトを開始します。 プリエンプティブルインスタンスを作成する場合は、次の要件を満たす必要があります。

    • プリエンプティブルリソース用に設定した最大入札価格は、市場価格以上である必要があります。

    • プリエンプティブルリソースのインベントリで十分です。

  • プリエンプティブルリソースの解放

    プリエンプティブルリソースは、市場価格、リソースインベントリ、ジョブ作成中にインスタンスに設定された最大入札価格、および使用期間に基づいて中断およびリリースできます。 次のシナリオでは、プリエンプティブルリソースは通知なしでリリースされる可能性があります。

    • Lingjunリソース: プリエンプティブルリソースの最大入札価格が平均価格よりも低い場合、またはリソースのインベントリが不十分な場合、リソースはリリースされます。

    • 汎用コンピューティングリソース: プリエンプティブルリソースの最大入札価格が現在の市場価格よりも低い場合、またはプリエンプティブルリソースの在庫が不十分な場合、プリエンプティブルリソースはリリースされます。

    プリエンプティブルジョブを継続的かつ安定して実行できるようにするには、次の操作を実行します。

    • Lingjunリソースを使用してジョブを作成するときに、自動フォールトトレランスをオンにします。 自動フォールトトレランスをオンにすると、ジョブは自動的にキューに入り、プリエンプティブルリソースに入札します。 詳細については、「AIMaster: Elastic fault tolerance engine」をご参照ください。image

    • 汎用コンピューティングまたはLingjunリソースを使用してジョブを作成する場合、EasyCkptフレームワークを使用してPyTorchラージ言語モデル (LLM) をトレーニングできます。 ジョブはチェックポイントを頻繁に実行および保存でき、中断を許可します。 詳細については、「EasyCkptを使用した基礎モデルのトレーニングの保存と再開」をご参照ください。

課金

  • 料金

    プリエンプティブルジョブの入札モードは、SpotWithPriceLimitパラメーターで指定された最大入札価格を設定するために使用されます。 プリエンプティブルリソースを使用してDLCジョブが作成されるシナリオでは、プリエンプティブルリソースの市場価格は需要と供給に基づいて変動します。 同じプリエンプティブルリソースを使用して複数のDLCジョブを送信する場合、一定期間内のジョブの料金は同じになる可能性があります。 次の入札タイプがサポートされています。

    説明

    Lingjunリソースは、スポット割引入札タイプのみをサポートします。

    • スポット割引入札タイプに基づく入札価格: 最大入札価格はインスタンスタイプの市場価格に基づいており、10% 間隔で市場価格の10% から90% の範囲です。

    • スポット価格入札タイプに基づく入札価格: 最大入札価格は市場価格帯にあります。

    DLCの [ジョブの作成] ページの [リソース情報] セクションで、[ソース][プリエンプティブルリソース] に設定し、[ジョブリソース] セクションでプリエンプティブルリソースと市場価格範囲を表示します。

    説明

    リソース仕様の特定の価格については、コンソールを参照してください。

    • 汎用コンピューティングリソース

      image

    • Lingjunリソース image

  • 課金モード

    プリエンプティブルリソースに対しては、従量課金に基づいて課金されます。 あなたは市場価格に基づいて請求されます。

  • 請求書の表示

    ジョブを実行したら、 プリエンプティブルリソースが使用されているジョブの請求の詳細を表示するには、翌日の費用とコストの請求の詳細ページに移動します。 従量課金はDLCによって生成されます。 インスタンスタグはkey:acs:pai:dlc:payType value:spotです。 課金の詳細を表示する方法の詳細については、「課金の詳細の表示」をご参照ください。

シナリオ

  • サポートされるシナリオ

    コストを削減するために、以下のシナリオでプリエンプティブルリソースを使用することを推奨します。

    • 短期コンピューティングの仕事。

    • デバッグ状態のコンピューティングジョブ。

    • フォールトトレラントなコンピューティングジョブ。

    • 中断を可能にするコンピューティングジョブ。 たとえば、EasyCkptフレームワークを使用してPyTorch LLMをトレーニングするシナリオでは、チェックポイントを頻繁に保存したり、チェックポイントからデータを復元したりできます。 詳細については、「EasyCkptを使用した基礎モデルのトレーニングの保存と再開」をご参照ください。

  • サポートされていないシナリオ

    高い安定性を必要とするサービス

手順

次のいずれかの方法を使用して、プリエンプティブルジョブを送信できます。

PAIコンソールの使用

  1. [ジョブの作成] ページに移動します。

    1. PAI コンソールにログインします。 リージョンとワークスペースを選択します。 次に、[ディープラーニングコンテナ (DLC) の入力] をクリックします。

    2. [ディープラーニングコンテナ (DLC)] ページで、[ジョブの作成] をクリックします。

  2. [ジョブの作成] ページで、次の表に示すパラメーターを設定します。 その他のパラメーターについては、「トレーニングジョブの送信」をご参照ください。

    パラメーター

    説明

    リソース情報

    リソースタイプ

    Lingjun AI Computing ServiceまたはGeneral Computingを選択します。

    説明

    このパラメーターは、ワークスペースでLingjunリソースと汎用コンピューティングリソースを使用できる場合にのみ使用できます。

    ソース

    [プリエンプティブルリソース] を選択します。

    求人リソース

    [リソースタイプ] 列で、imageアイコンをクリックしてプリエンプティブルリソースを選択し、[入札価格] パラメーターを設定します。 入札価格は、インスタンスタイプの元の価格に基づく最大入札価格であり、10% の間隔で市場価格の10% から90% の範囲です。 入札額が市場価格を満たしているか超えており、在庫が十分である場合は、プリエンプティブルリソースを取得できます。

    [VPC]

    [VPC]

    Lingjunリソースを使用してDLCジョブを送信する場合は、仮想プライベートクラウド (VPC) を設定します。 ドロップダウンリストからVPC、vSwitch、およびセキュリティグループを選択します。

    [セキュリティグループ]

    vSwitch

    フォールトトレランスと診断

    自動故障トレランス

    Lingjunリソースを使用してDLCジョブを送信する場合は、自動フォールトトレランスを有効にすることを推奨します。 自動フォールトトレランス機能を使用すると、リソースの取り消し後にプリエンプティブルジョブが自動的に入札キューに再入力できます。 平均市場価格が最大入札価格を下回ったときに、仕事を再開できます。 AIMasterの詳細については、「AIMaster: Elastic fault tolerance engine」をご参照ください。

    Lingjun リソース

    説明

    リソース仕様の特定の価格については、コンソールを参照してください。

    image

    汎用コンピューティングリソース

    説明

    リソース仕様の特定の価格については、コンソールを参照してください。

    image

  3. パラメーターを設定したら、[確認] をクリックします。

    ジョブを送信すると、DLCはプリエンプティブルリソースを申請してジョブを作成および実行します。 プリエンプティブルリソースが適用されていない場合、ジョブは待機状態になります。

SDKの使用

ステップ1: SDK for Pythonをインストールします。

  • ワークスペースSDKをインストールします。

    pip install alibabacloud_aiworkspace20210204==3.0.1
  • DLC SDKをインストールします。

    pip install alibabacloud_pai_dlc20201203==1.4.17

ステップ2: プリエンプティブルジョブの送信

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>'  # The ID of the region in which the DLC job resides, such as cn-hangzhou. 
cred = CredClient()
workspace_id = '12****'  # The ID of the workspace to which the DLC job belongs. 

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}')

次の表に、主要なパラメーターを示します。 その他のパラメーターについては、「SDK For Pythonの使用」をご参照ください。

パラメーター

説明

SpotStrategy

入札ポリシー。 入札タイプのパラメーターは、このパラメーターをSpotWithPriceLimitに設定した場合にのみ有効になります。

SpotDiscountLimit

スポット割引入札タイプ。

説明
  • SpotDiscountLimitパラメーターとSpotPriceLimitパラメーターを同時に指定することはできません。

  • SpotDiscountLimitパラメーターは、Lingjunリソースに対してのみ有効です。

SpotPriceLimit

スポット価格入札タイプ。

UserVpc

このパラメーターは、Lingjunリソースを使用してジョブを送信する場合に必要です。 ジョブが存在するリージョンのVPC、vSwitch、およびセキュリティグループIDを設定します。