計算能力が不足している場合、Platform for AI (PAI) のプリエンプティブルジョブ機能を使用できます。この機能は、入札システムを使用して計算リソースを割り当てます。ほとんどの場合、プリエンプティブルリソースは、パブリックな従量課金リソースよりも価格面で優れています。これにより、AI 計算能力にコスト効率よくアクセスし、ジョブの総コストを削減できます。このトピックでは、Deep Learning Containers (DLC) ジョブを作成する際にプリエンプティブルリソースを使用する方法について説明します。
制限事項
プリエンプティブルリソースには、以下の制限事項があります。
|
タイプ |
Lingjun リソース |
汎用コンピューティングリソース |
|
サポートされているリージョン |
|
|
|
フレームワークタイプ |
|
PyTorch |
|
AIMaster ベースの自動フォールトトレランス |
サポート済み |
サポート対象外 |
|
機能に関する制限 |
|
|
特徴
-
プリエンプティブルリソースの使用
汎用コンピューティングリソースまたは Lingjun リソースを使用して DLC ジョブを作成できます。プリエンプティブルリソースの市場価格は、需要と供給に基づいて変動します。プリエンプティブルインスタンスは、従量課金インスタンスよりも最大 90% 低コストになる場合があります。プリエンプティブルリソースは、すべての Alibaba Cloud ユーザーによってプリエンプトされる可能性があり、保護期間が終了するとリリースされます。プリエンプティブルリソースを使用して DLC ジョブを送信する際には、次の点に注意する必要があります。
-
インスタンスリソースの不足により DLC がプリエンプティブルインスタンスを取得できない場合、プリエンプティブルジョブは待機状態になり、DLC はプリエンプティブルリソースの申請を継続します。
-
システムがプリエンプティブルリソースを申請した後、DLC ジョブが作成され、実行されます。
-
プリエンプティブルリソースがリリースされると、DLC ジョブは失敗し、実行を停止します。
-
-
プリエンプティブルリソースの申請
プリエンプティブルリソースを使用して DLC ジョブを作成すると、ジョブを送信した後に DLC がインスタンスリソースのプリエンプションを開始します。プリエンプティブルインスタンスを作成するには、次の要件を満たす必要があります。
-
プリエンプティブルリソースに設定した最大入札価格が市場価格以上であること。
-
プリエンプティブルリソースの在庫が十分であること。
-
-
プリエンプティブルリソースのリリース
プリエンプティブルリソースは、市場価格、リソース在庫、ジョブ作成時にインスタンスに設定された最大入札価格、および使用期間に基づいて中断およびリリースされることがあります。次のシナリオでは、プリエンプティブルリソースが通知なしにリリースされる場合があります。
-
Lingjun リソース:プリエンプティブルリソースの最大入札価格が平均価格より低い場合、またはリソースの在庫が不十分な場合、リソースはリリースされます。
-
汎用コンピューティングリソース:プリエンプティブルリソースの最大入札価格が現在の市場価格より低い場合、またはプリエンプティブルリソースの在庫が不十分な場合、プリエンプティブルリソースはリリースされます。
プリエンプティブルジョブを継続的かつ安定して実行できるようにするには、次の操作を実行できます。
-
Lingjun リソースを使用してジョブを作成する際に、自動フォールトトレランスを有効にします。自動フォールトトレランスを有効にすると、ジョブは自動的にキューに入り、プリエンプティブルリソースの入札を行います。詳細については、「AIMaster:弾力的で自動的なフォールトトレランスエンジン」をご参照ください。
-
汎用コンピューティングリソースまたは Lingjun リソースを使用してジョブを作成する場合、EasyCkpt フレームワークを使用して PyTorch 大規模言語モデル (LLM) をトレーニングできます。ジョブは頻繁にチェックポイントを実行および保存でき、中断が許容されます。詳細については、「EasyCkpt」をご参照ください。
-
課金
-
料金
プリエンプティブルジョブの入札モードは、`SpotWithPriceLimit` パラメーターで指定された最大入札価格を設定するために使用されます。プリエンプティブルリソースを使用して DLC ジョブが作成されるシナリオでは、プリエンプティブルリソースの市場価格は需要と供給に基づいて変動します。同じプリエンプティブルリソースを使用して複数の DLC ジョブを送信した場合、一定期間内のジョブの料金は同じになることがあります。以下の入札タイプがサポートされています。
説明Lingjun リソースは、スポット割引入札タイプのみをサポートします。
-
スポット割引入札タイプに基づく入札価格:最大入札価格はインスタンスタイプの市場価格に基づいており、市場価格の 10% から 90% の範囲で 10% 間隔です。
-
スポット価格入札タイプに基づく入札価格:最大入札価格は市場価格の範囲内です。
DLC のジョブの作成ページの [リソース情報] セクションで、[ソース] を [プリエンプティブルリソース] に設定し、[ジョブリソース] セクションでプリエンプティブルリソースと市場価格範囲を表示します。
説明リソース仕様の具体的な料金については、コンソールをご参照ください。
-
汎用コンピューティングリソース
汎用コンピューティングリソースを使用するには、[リソース情報] セクションで リソースタイプ を 汎用コンピューティング、リソースソース を プリエンプティブルリソース に設定し、フレーム として PyTorch を選択した後、[ジョブリソース] テーブルで Worker ノードのノード数、[リソース仕様]、市場価格帯、および [入札価格 (割引)] を設定します。
-
Lingjun リソース
ジョブ作成ページの [リソース情報] セクションで、次の設定を行います。
-
リソースタイプ: [Lingjun AI コンピューティングサービス] を選択します。
-
リソースソース:プリエンプティブルリソース を選択します。
-
フレーム: PyTorch を選択します。
-
[ジョブリソース]:Worker ノードのノード数、[リソース仕様]、市場価格の範囲、および [入札価格 (割引)] を設定します。
-
-
-
課金モード
プリエンプティブルリソースは、従量課金方式に基づいて課金されます。料金は市場価格に基づいて請求されます。
-
請求書の表示
ジョブを実行した後、翌日に課金管理の 請求明細 ページに移動して、プリエンプティブルリソースが使用されたジョブの請求明細を表示します。従量課金料金は DLC によって生成されます。インスタンスのタグは
key:acs:pai:dlc:payType value:spotです。請求明細の表示方法の詳細については、「PAI の請求明細の表示」をご参照ください。
利用シーン
-
サポートされるシナリオ
コストを削減するために、次のシナリオでプリエンプティブルリソースを使用することを推奨します。
-
短期的な計算ジョブ。
-
デバッグ状態の計算ジョブ。
-
フォールトトレランスのある計算ジョブ。
-
中断が許容される計算ジョブ。たとえば、EasyCkpt フレームワークを使用して PyTorch LLM をトレーニングするシナリオでは、頻繁にチェックポイントを保存し、チェックポイントからデータを復元できます。詳細については、「EasyCkpt」をご参照ください。
-
-
サポートされないシナリオ
高い安定性を必要とするサービス
操作手順
次のいずれかの方法でプリエンプティブルジョブを送信できます。
PAI コンソールの使用
-
[ジョブの作成] ページに移動します。
-
PAI コンソールにログインし、リージョンとワークスペースを選択します。次に、[Enter Deep Learning Containers (DLC)] をクリックします。
-
[Deep Learning Containers (DLC)] ページで、[ジョブの作成] をクリックします。
-
-
[ジョブの作成] ページで、次の表で説明されているパラメーターを設定します。その他のパラメーターについては、「トレーニングジョブの作成」をご参照ください。
パラメーター
説明
リソース情報
リソースタイプ
[Lingjun AI コンピューティングサービス] または [汎用コンピューティング] を選択します。
説明このパラメーターは、ワークスペースで Lingjun リソースと汎用コンピューティングリソースの使用が許可されている場合にのみ使用できます。
ソース
[プリエンプティブルリソース] を選択します。
ジョブリソース
[リソースタイプ] 列で、
アイコンをクリックしてプリエンプティブルリソースを選択し、[入札価格 (割引)] パラメーターを設定します。 入札価格はインスタンスタイプの元の価格に基づく最大入札価格であり、市場価格の 10% から 90% の範囲で、10% の間隔となります。 入札額が市場価格以上で、かつ在庫が十分な場合に、プリエンプティブルリソースを取得できます。VPC
VPC
Lingjun リソースを使用して DLC ジョブを送信する場合は、Virtual Private Cloud (VPC) を設定します。ドロップダウンリストから VPC、vSwitch、およびセキュリティグループを選択します。
セキュリティグループ
vSwitch
耐障害性と診断
自動耐障害性
Lingjun リソースを使用して DLC ジョブを送信する場合、[自動耐障害性] を有効にすることをお勧めします。 自動耐障害性機能により、プリエンプティブルジョブはリソースの失効後に自動的に入札キューに再登録されます。 平均市場価格がお客様の最大入札価格を下回ると、ジョブは再開できます。 AIMaster の詳細については、「AIMaster: 弾力的な自動耐障害性エンジン」をご参照ください。
Lingjun リソース
説明リソース仕様の具体的な料金については、コンソールをご参照ください。
Lingjun AI 計算を使用するプリエンプティブルリソースのトレーニングタスクの主要な設定項目は次のとおりです。
-
リソースソース: プリエンプティブルリソースを選択します。
-
[ジョブリソース]:Worker ノードのノード数とリソース仕様を設定し、最大入札価格と市場価格の範囲を確認します。[履歴価格] をクリックして履歴価格を表示します。
-
[VPC]:VPC、vSwitch、およびセキュリティグループを選択します。
-
[自動フォールトトレランス]:この機能を有効にすると、追加の計算リソースが消費されます。[設定の変更] をクリックして、フォールトトレランスの設定を調整します。
汎用コンピューティングリソース
説明リソース仕様の具体的な料金については、コンソールをご参照ください。
リソース設定ページで、次の手順を実行します。
-
リソースソース を プリエンプティブルリソース に設定します。
-
フレーム には、PyTorch などの必須のフレームワークを選択します。
-
[ジョブリソース] テーブルで、Worker ノードを設定します。ノード数、[リソース仕様]、および [入札価格 (割引)] を設定します。市場価格の範囲は、コンソールでの実際の表示に準じます。
-
[フォールトトレランスと診断] セクションで、[自動フォールトトレランス] をオンにします。この機能を有効にすると、追加の計算リソースが消費されます。
-
-
パラメーターを設定したら、[確認] をクリックします。
ジョブを送信すると、DLC はプリエンプティブルリソースを申請してジョブを作成し、実行します。プリエンプティブルリソースが申請されない場合、ジョブは待機状態になります。
SDK の使用
ステップ 1: Python 用 SDK のインストール
-
ワークスペース 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>' # DLC ジョブが存在するリージョンの ID (例: 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 |
スポット割引入札タイプ。 説明
|
|
SpotPriceLimit |
スポット価格入札タイプ。 |
|
UserVpc |
このパラメーターは、Lingjun リソースを使用してジョブを送信する場合に必須です。ジョブが存在するリージョンの VPC、vSwitch、およびセキュリティグループ ID を設定します。 |