【DSW Gallery】How to use the SDK to submit DLC training tasks
概要
PAI-DLC (Deep Learning Containers) は、Alibaba Cloud Container Service for Kubernetes (ACK) ベースのディープラーニングトレーニングプラットフォームで、柔軟性、安定性、使いやすさ、優れたパフォーマンスを備えたディープラーニングトレーニング環境を提供します。
PAI プラットフォームでは、コンソール画面からのタスク送信に加えて、完全な SDK と OpenAPI を提供し、コードベースのタスク送信を実現できるため、日常の運用で PAI-DLC をより柔軟に活用できます。
本記事では、PAI-DLC が提供する SDK を使用してトレーニングタスクを送信する方法について紹介します。
PAI-DLC のパブリックリソースグループまたは専有リソースグループのタスクを画面から送信する必要がある場合は、「タスクの送信 (Training ページ)」をご参照ください。
前提条件
• PAI-DLC を有効化し、権限付与を完了してください。詳細については、「クラウドプロダクトの依存関係と権限付与: DLC」をご参照ください。
• トレーニングタスクを実行するには、リソースグループクラスターを準備してください (本記事ではパブリック DLC リソースグループを使用して説明します)
• Alibaba Cloud アカウントの AccessKey ID と AccessKey Secret を取得済みであること。詳細については、「AccessKey の取得」をご参照ください。
Step 1: Python SDK のインストール
• AI Workspace SDK のインストール
• PAI-DLC 用 SDK のインストール
• サブスクリプションリソースグループ管理用 SDK のインストール (オプション)
。pip install alibabacloud-aiworkspace20210204 -U -q
。pip install alibabacloud-pai-dlc20201203 -U -q
# Query the SDK required by the prepaid resource group
。pip install https://sdk-portal-us-prod.oss-accelerate.aliyuncs.com/downloads/u-b8602de7-c468-436c-8a02-2eca4a30d376-python-paistudio.zip -U -q
Step 2: タスク送信前の準備
PAI-DLC はトレーニングタスクの実行時に、PAI プラットフォームの各 AI アセットモジュール (データセット、イメージ、コードセットなど) のリソースを利用して、開発素材の再利用を容易にします。同時に、関連ワークフローを統合するため、事前に AI ワークスペースを準備する必要があります。
from __future__ import print_function
import json
import time
from alibabacloud_tea_openapi.models import Config
from alibabacloud_pai_dlc20201203.client import Client as DLCClient
from alibabacloud_pai_dlc20201203.models import (
ListJobsRequest,
ListEcsSpecsRequest,
CreateJobRequest,
UpdateJobRequest,
JobSpec
)
from alibabacloud_aiworkspace20210204.client import Client as AIWorkspaceClient
from alibabacloud_aiworkspace20210204.models import (
ListWorkspacesRequest,
CreateDatasetRequest,
ListDatasetsRequest,
ListImagesRequest,
ListCodeSourcesRequest,
ListResourcesRequest
)
from alibabacloud_paistudio20220112.models import (ListResourceGroupMachineGroupsRequest)
from alibabacloud_paistudio20220112.client import Client as StudioClient
# client config
region_id = 'cn-beijing' # Region, can be cn-hangzhou, cn-shanghai, cn-shenzhen, etc.
access_key_id = '**your access_key_id**'
access_key_secret = '**your access_key_secret**'
# Read AK information from the file
import os.path
config_path="/mnt/data/pai.config"
if os.path.isfile(config_path):
with open(config_path) as f:
workspace_client = AIWorkspaceClient(
Config(access_key_id=access_key_id,
access_key_secret=access_key_secret,
region_id=region_id,
endpoint='aiworkspace.{}.aliyuncs.com'.format(region_id)))
dlc_client = DLCClient(
Config(access_key_id=access_key_id,
access_key_secret=access_key_secret,
region_id=region_id,
endpoint='pai-dlc.{}.aliyuncs.com'.format(region_id)))
# Studio Client is only required for prepaid resource groups
studio_client = StudioClient(Config(access_key_id=access_key_id,
access_key_secret=access_key_secret,
region_id = region_id))
AI ワークスペースの準備 (必須)
ワークスペースは PAI の最上位概念であり、チームに対する統合されたコンピューティングリソース管理とユーザー権限管理機能を提供します。AI 開発者にチーム開発に対応したフルプロセスの開発ツールと AI アセット管理機能を提供することを目的としています。
PAI プラットフォームの有効化時に、デフォルトのワークスペースが自動で作成されます
workspace_name = '**Existing AI workspace name**'
# Get a list of workspaces.
workspaces = workspace_client.list_workspaces(ListWorkspacesRequest(
page_number=1,
page_size=10,
workspace_name=workspace_name,
))
if len(workspaces. body. workspaces) == 0:
raise RuntimeError('Please specify the correct workspace_name')
for workspace in workspaces.body.workspaces:
print(workspace.workspace_name, workspace.workspace_id,
workspace.status, workspace.creator)
# Get the workspace ID used to submit the task
workspace_id = workspaces.body.workspaces[0].workspace_id
イメージの準備 (必須)
トレーニングタスクを実行するには、コンピューティングノードが使用するイメージを明示的に指定する必要があります。PAI-DLC では、以下の異なるタイプのイメージを使用できます。
• コミュニティイメージ: コミュニティが提供する標準イメージです。各イメージの詳細については、「コミュニティイメージバージョンの詳細」をご参照ください。
• PAI プラットフォームイメージ: Alibaba Cloud PAI プロダクトが提供する各種公式イメージで、異なるリソースタイプ、Python バージョン、およびディープラーニングフレームワークの TensorFlow や PyTorch に対応しています。イメージ一覧については、「パブリックイメージ一覧」をご参照ください。
• ユーザー定義イメージ: PAI に追加したカスタムイメージを選択して使用できます。選択前に、カスタムイメージを PAI に追加する必要があります。詳細については、「イメージの表示と追加」をご参照ください。
• イメージアドレス: カスタムイメージを使用して選択できます。イメージアドレス選択後、設定ボックスにパブリックネットワーク環境でアクセス可能な Docker Registry のイメージ URL を設定する必要があります。
# Get the mirror list, you can use labels to filter
images = workspace_client.list_images(ListImagesRequest(
labels=','.join(['system.supported.dlc=true',
'system.framework=Tensorflow 1.15',
'system.pythonVersion=3.6',
'system. chipType=CPU']), verbose=True))
# You can view all available mirrors
for image in images.body.images:
print(image. image_id, image. image_uri)
# Obtain the image used to submit the task, here is the first one as an example
image_uri = images.body.images[0].image_uri
print('image_uri', image_uri)
ノードスペックの準備 (従量課金の場合に必須)
トレーニングタスクでは、コンピューティングノードのスペックを準備します。スペックと料金の詳細一覧については、PAI-DLC 課金説明をご参照ください。
# Get a list of node specifications for DLC.
ecs_specs = dlc_client.list_ecs_specs(ListEcsSpecsRequest(page_size=100, sort_by='Memory', order='asc'))
# for spec in ecs_specs.body.ecs_specs:
# print(spec. instance_type, spec. cpu, spec. memory, spec. memory, spec. gpu_type)
# Get the node specification used to submit the job
ecs_spec = ecs_specs.body.ecs_specs[0].instance_type
print('ecs_spec', ecs_spec)
データセットの準備 (オプション)
高品質なデータセットは高精度モデルの基盤であり、データ準備の核心です。PAI プラットフォームはデータセット管理モジュールを提供し、さまざまなタイプのデータ (ローカルデータ、Alibaba Cloud に保存されたデータなど) をデータセットとして登録できるほか、OSS フォルダをスキャンしてインデックスデータセットを生成し、モデルトレーニングの準備を行います。
dataset_name = 'example-nas-data'
nas_id = '**The id of the created nas'
def create_nas_dataset(client, region, workspace_id, name,
nas_id, nas_path, mount_path):
'''NAS データセットを作成します。
'''
response = client.create_dataset(CreateDatasetRequest(
workspace_id = workspacee_id,
name=name,
data_type='COMMON',
data_source_type='NAS',
property='DIRECTORY',
uri=f'nas://{nas_id}.{region}{nas_path}',
accessibility='PRIVATE',
source_type='USER',
options=json.dumps({
'mountPath': mount_path
})
))
return response.body.dataset_id
def create_oss_dataset(client, region, workspace_id, name,
oss_bucket, oss_endpoint, oss_path, mount_path):
response = client.create_dataset(CreateDatasetRequest(
workspace_id=workspace_id,
name=name,
data_type='COMMON',
data_source_type='OSS',
property='DIRECTORY',
uri=f'oss://{oss_bucket}.{oss_endpoint}{oss_path}',
accessibility='PRIVATE',
source_type='USER',
options=json.dumps({
'mountPath': mount_path
})
))
return response.body.dataset_id
# datasets = workspace_client.list_datasets(ListDatasetsRequest(
# workspace_id=workspace_id,
# name=dataset_name, properties='DIRECTORY'))
# for dataset in datasets.body.datasets:
# print(dataset.name, dataset.dataset_id, dataset.uri, dataset.options)
# if len(datasets.body.datasets) == 0:
# dataset_id = create_nas_dataset(
# client=workspace_client,
# region=region_id,
# workspace_id=workspace_id,
# name=dataset_name,
# nas_id=nas_id,
# nas_path='/',
# mount_path='/mnt/data/example-nas')
# print('create dataset with id: {}'.format(dataset_id))
# else:
# dataset_id = datasets.body.datasets[0].dataset_id
# print('dataset_id', dataset_id)
PAI-DLC (Deep Learning Containers) は、Alibaba Cloud Container Service for Kubernetes (ACK) ベースのディープラーニングトレーニングプラットフォームで、柔軟性、安定性、使いやすさ、優れたパフォーマンスを備えたディープラーニングトレーニング環境を提供します。
PAI プラットフォームでは、コンソール画面からのタスク送信に加えて、完全な SDK と OpenAPI を提供し、コードベースのタスク送信を実現できるため、日常の運用で PAI-DLC をより柔軟に活用できます。
本記事では、PAI-DLC が提供する SDK を使用してトレーニングタスクを送信する方法について紹介します。
PAI-DLC のパブリックリソースグループまたは専有リソースグループのタスクを画面から送信する必要がある場合は、「タスクの送信 (Training ページ)」をご参照ください。
前提条件
• PAI-DLC を有効化し、権限付与を完了してください。詳細については、「クラウドプロダクトの依存関係と権限付与: DLC」をご参照ください。
• トレーニングタスクを実行するには、リソースグループクラスターを準備してください (本記事ではパブリック DLC リソースグループを使用して説明します)
• Alibaba Cloud アカウントの AccessKey ID と AccessKey Secret を取得済みであること。詳細については、「AccessKey の取得」をご参照ください。
Step 1: Python SDK のインストール
• AI Workspace SDK のインストール
• PAI-DLC 用 SDK のインストール
• サブスクリプションリソースグループ管理用 SDK のインストール (オプション)
。pip install alibabacloud-aiworkspace20210204 -U -q
。pip install alibabacloud-pai-dlc20201203 -U -q
# Query the SDK required by the prepaid resource group
。pip install https://sdk-portal-us-prod.oss-accelerate.aliyuncs.com/downloads/u-b8602de7-c468-436c-8a02-2eca4a30d376-python-paistudio.zip -U -q
Step 2: タスク送信前の準備
PAI-DLC はトレーニングタスクの実行時に、PAI プラットフォームの各 AI アセットモジュール (データセット、イメージ、コードセットなど) のリソースを利用して、開発素材の再利用を容易にします。同時に、関連ワークフローを統合するため、事前に AI ワークスペースを準備する必要があります。
from __future__ import print_function
import json
import time
from alibabacloud_tea_openapi.models import Config
from alibabacloud_pai_dlc20201203.client import Client as DLCClient
from alibabacloud_pai_dlc20201203.models import (
ListJobsRequest,
ListEcsSpecsRequest,
CreateJobRequest,
UpdateJobRequest,
JobSpec
)
from alibabacloud_aiworkspace20210204.client import Client as AIWorkspaceClient
from alibabacloud_aiworkspace20210204.models import (
ListWorkspacesRequest,
CreateDatasetRequest,
ListDatasetsRequest,
ListImagesRequest,
ListCodeSourcesRequest,
ListResourcesRequest
)
from alibabacloud_paistudio20220112.models import (ListResourceGroupMachineGroupsRequest)
from alibabacloud_paistudio20220112.client import Client as StudioClient
# client config
region_id = 'cn-beijing' # Region, can be cn-hangzhou, cn-shanghai, cn-shenzhen, etc.
access_key_id = '**your access_key_id**'
access_key_secret = '**your access_key_secret**'
# Read AK information from the file
import os.path
config_path="/mnt/data/pai.config"
if os.path.isfile(config_path):
with open(config_path) as f:
workspace_client = AIWorkspaceClient(
Config(access_key_id=access_key_id,
access_key_secret=access_key_secret,
region_id=region_id,
endpoint='aiworkspace.{}.aliyuncs.com'.format(region_id)))
dlc_client = DLCClient(
Config(access_key_id=access_key_id,
access_key_secret=access_key_secret,
region_id=region_id,
endpoint='pai-dlc.{}.aliyuncs.com'.format(region_id)))
# Studio Client is only required for prepaid resource groups
studio_client = StudioClient(Config(access_key_id=access_key_id,
access_key_secret=access_key_secret,
region_id = region_id))
AI ワークスペースの準備 (必須)
ワークスペースは PAI の最上位概念であり、チームに対する統合されたコンピューティングリソース管理とユーザー権限管理機能を提供します。AI 開発者にチーム開発に対応したフルプロセスの開発ツールと AI アセット管理機能を提供することを目的としています。
PAI プラットフォームの有効化時に、デフォルトのワークスペースが自動で作成されます
workspace_name = '**Existing AI workspace name**'
# Get a list of workspaces.
workspaces = workspace_client.list_workspaces(ListWorkspacesRequest(
page_number=1,
page_size=10,
workspace_name=workspace_name,
))
if len(workspaces. body. workspaces) == 0:
raise RuntimeError('Please specify the correct workspace_name')
for workspace in workspaces.body.workspaces:
print(workspace.workspace_name, workspace.workspace_id,
workspace.status, workspace.creator)
# Get the workspace ID used to submit the task
workspace_id = workspaces.body.workspaces[0].workspace_id
イメージの準備 (必須)
トレーニングタスクを実行するには、コンピューティングノードが使用するイメージを明示的に指定する必要があります。PAI-DLC では、以下の異なるタイプのイメージを使用できます。
• コミュニティイメージ: コミュニティが提供する標準イメージです。各イメージの詳細については、「コミュニティイメージバージョンの詳細」をご参照ください。
• PAI プラットフォームイメージ: Alibaba Cloud PAI プロダクトが提供する各種公式イメージで、異なるリソースタイプ、Python バージョン、およびディープラーニングフレームワークの TensorFlow や PyTorch に対応しています。イメージ一覧については、「パブリックイメージ一覧」をご参照ください。
• ユーザー定義イメージ: PAI に追加したカスタムイメージを選択して使用できます。選択前に、カスタムイメージを PAI に追加する必要があります。詳細については、「イメージの表示と追加」をご参照ください。
• イメージアドレス: カスタムイメージを使用して選択できます。イメージアドレス選択後、設定ボックスにパブリックネットワーク環境でアクセス可能な Docker Registry のイメージ URL を設定する必要があります。
# Get the mirror list, you can use labels to filter
images = workspace_client.list_images(ListImagesRequest(
labels=','.join(['system.supported.dlc=true',
'system.framework=Tensorflow 1.15',
'system.pythonVersion=3.6',
'system. chipType=CPU']), verbose=True))
# You can view all available mirrors
for image in images.body.images:
print(image. image_id, image. image_uri)
# Obtain the image used to submit the task, here is the first one as an example
image_uri = images.body.images[0].image_uri
print('image_uri', image_uri)
ノードスペックの準備 (従量課金の場合に必須)
トレーニングタスクでは、コンピューティングノードのスペックを準備します。スペックと料金の詳細一覧については、PAI-DLC 課金説明をご参照ください。
# Get a list of node specifications for DLC.
ecs_specs = dlc_client.list_ecs_specs(ListEcsSpecsRequest(page_size=100, sort_by='Memory', order='asc'))
# for spec in ecs_specs.body.ecs_specs:
# print(spec. instance_type, spec. cpu, spec. memory, spec. memory, spec. gpu_type)
# Get the node specification used to submit the job
ecs_spec = ecs_specs.body.ecs_specs[0].instance_type
print('ecs_spec', ecs_spec)
データセットの準備 (オプション)
高品質なデータセットは高精度モデルの基盤であり、データ準備の核心です。PAI プラットフォームはデータセット管理モジュールを提供し、さまざまなタイプのデータ (ローカルデータ、Alibaba Cloud に保存されたデータなど) をデータセットとして登録できるほか、OSS フォルダをスキャンしてインデックスデータセットを生成し、モデルトレーニングの準備を行います。
dataset_name = 'example-nas-data'
nas_id = '**The id of the created nas'
def create_nas_dataset(client, region, workspace_id, name,
nas_id, nas_path, mount_path):
'''NAS データセットを作成します。
'''
response = client.create_dataset(CreateDatasetRequest(
workspace_id = workspacee_id,
name=name,
data_type='COMMON',
data_source_type='NAS',
property='DIRECTORY',
uri=f'nas://{nas_id}.{region}{nas_path}',
accessibility='PRIVATE',
source_type='USER',
options=json.dumps({
'mountPath': mount_path
})
))
return response.body.dataset_id
def create_oss_dataset(client, region, workspace_id, name,
oss_bucket, oss_endpoint, oss_path, mount_path):
response = client.create_dataset(CreateDatasetRequest(
workspace_id=workspace_id,
name=name,
data_type='COMMON',
data_source_type='OSS',
property='DIRECTORY',
uri=f'oss://{oss_bucket}.{oss_endpoint}{oss_path}',
accessibility='PRIVATE',
source_type='USER',
options=json.dumps({
'mountPath': mount_path
})
))
return response.body.dataset_id
# datasets = workspace_client.list_datasets(ListDatasetsRequest(
# workspace_id=workspace_id,
# name=dataset_name, properties='DIRECTORY'))
# for dataset in datasets.body.datasets:
# print(dataset.name, dataset.dataset_id, dataset.uri, dataset.options)
# if len(datasets.body.datasets) == 0:
# dataset_id = create_nas_dataset(
# client=workspace_client,
# region=region_id,
# workspace_id=workspace_id,
# name=dataset_name,
# nas_id=nas_id,
# nas_path='/',
# mount_path='/mnt/data/example-nas')
# print('create dataset with id: {}'.format(dataset_id))
# else:
# dataset_id = datasets.body.datasets[0].dataset_id
# print('dataset_id', dataset_id)
Related Articles
-
A detailed explanation of Hadoop core architecture HDFS
Knowledge Base Team
-
What Does IOT Mean
Knowledge Base Team
-
6 Optional Technologies for Data Storage
Knowledge Base Team
-
What Is Blockchain Technology
Knowledge Base Team
Explore More Special Offers
-
Short Message Service(SMS) & Mail Service
50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00
