創(chuàng)建DSW實(shí)例
交互式建模(DSW)是PAI產(chǎn)品的云端機(jī)器學(xué)習(xí)開發(fā)IDE,為您提供交互式編程環(huán)境。在使用DSW前,您需要創(chuàng)建DSW實(shí)例。DSW支持通過控制臺和Python SDK兩種方式創(chuàng)建實(shí)例。本文為您介紹如何創(chuàng)建DSW實(shí)例。
背景信息
DSW支持通過控制臺或Python SDK的方式創(chuàng)建實(shí)例,二者分別適用于不同的用戶:
通過控制臺創(chuàng)建實(shí)例
適用于普通開發(fā)者,您可以通過控制臺管理實(shí)例,例如,在DSW中進(jìn)行模型開發(fā)的開發(fā)者。
通過Python SDK創(chuàng)建實(shí)例
適用于需要對實(shí)例整體生命周期進(jìn)行管理的開發(fā)者。例如,您需要將DSW系統(tǒng)中的資源整合到其他系統(tǒng)中,可以通過DSW的OpenAPI SDK實(shí)現(xiàn)。
前提條件
權(quán)限開通
使用主賬號開通PAI并創(chuàng)建工作空間。登錄PAI控制臺,左上角選擇開通區(qū)域,然后一鍵授權(quán)和開通產(chǎn)品,詳情見開通PAI并創(chuàng)建工作空間。
操作賬號授權(quán)。當(dāng)使用主賬號操作DSW實(shí)例時,可跳過此步。當(dāng)使用RAM賬號操作時,需要進(jìn)行操作賬號授權(quán)。
【可選】準(zhǔn)備專有資源組
在完成步驟1后,系統(tǒng)將為您準(zhǔn)備好公共資源組。當(dāng)您需要使用專有資源組時,需要購買專有資源并分配資源配額,具體操作可參見下面教程。
使用通用計(jì)算資源專有資源組。請參見新建資源組并購買通用計(jì)算資源和通用計(jì)算資源配額。
使用靈駿智算資源。請參見新建資源組并購買靈駿智算資源和靈駿智算資源配額。
【可選】準(zhǔn)備數(shù)據(jù)集
公共資源組和專有資源組默認(rèn)數(shù)據(jù)存儲空間有限,且無法持久化存儲,因此,當(dāng)您需要擴(kuò)展實(shí)例的存儲空間或持久化存儲數(shù)據(jù)時,可通過掛載NAS、OSS類型數(shù)據(jù)集或OSS路徑的方式實(shí)現(xiàn)。新建數(shù)據(jù)集,請參見創(chuàng)建及管理數(shù)據(jù)集。
重要公共資源組的DSW實(shí)例,數(shù)據(jù)存儲在空間有限的免費(fèi)云盤中,在刪除實(shí)例或停機(jī)超過15天后,云盤數(shù)據(jù)將被清空。
專有資源組的DSW實(shí)例,數(shù)據(jù)存儲在實(shí)例的系統(tǒng)盤中,在停止或刪除實(shí)例后,臨時存儲將被清空。
【可選】自定義鏡像
DSW預(yù)置了多種類型的官方鏡像,例如PyTorch、TensorFlow、ModelScope等。如果您需要自定義鏡像來滿足特定場景下的開發(fā)需求,請參見自定義鏡像。
使用限制
由于每個阿里云賬號(主賬號)在每個Region有2卡GPU的限制,當(dāng)資源使用量超出限額時可能會出現(xiàn)報錯。如果您需要提升限額,請提交工單聯(lián)系我們。
創(chuàng)建實(shí)例
當(dāng)您使用公共資源創(chuàng)建實(shí)例后,將開始按照實(shí)例的服務(wù)時長計(jì)費(fèi),當(dāng)停止或刪除實(shí)例后計(jì)費(fèi)才會停止,詳細(xì)計(jì)費(fèi)規(guī)則,請參見交互式建模(DSW)計(jì)費(fèi)說明。
通過控制臺創(chuàng)建實(shí)例
進(jìn)入DSW頁面。
登錄PAI控制臺。
在概覽頁面選擇目標(biāo)地域。
在左側(cè)導(dǎo)航欄單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進(jìn)入對應(yīng)工作空間內(nèi)。
在工作空間頁面的左側(cè)導(dǎo)航欄選擇 ,進(jìn)入DSW頁面。
單擊新建實(shí)例。
在配置實(shí)例向?qū)ы撁?,配置以下關(guān)鍵參數(shù)。
公共資源組,目前僅支持按量付費(fèi)模式,無法轉(zhuǎn)為包年包月。
通用訓(xùn)練資源專有資源組。如果沒有可選的專有資源組,您可以單擊關(guān)聯(lián)資源配額。
靈駿智算資源。如果沒有可選的靈駿智算資源,您可以單擊關(guān)聯(lián)資源配額。
優(yōu)先級: 優(yōu)先級范圍為1~9 ,數(shù)值越大,優(yōu)先級越高。
CPU親和性:啟用CPU親和性,能夠?qū)⑷萜骰騊od中的進(jìn)程綁定到特定的CPU核心上執(zhí)行。通過這種方式,可以減少CPU緩存未命中、上下文切換等現(xiàn)象,從而提高CPU利用率,提升應(yīng)用性能,適用于對性能敏感和實(shí)時性要求高的場景。當(dāng)前僅華北2(北京)、華南1(深圳)地域支持配置該參數(shù)。
當(dāng)資源配額選擇公共資源組時,根據(jù)實(shí)際需求選擇資源規(guī)格,規(guī)格信息,請參見實(shí)例規(guī)格族。
當(dāng)資源組選擇專有資源組時,根據(jù)實(shí)際需求設(shè)置GPU、CPU、GiB和優(yōu)先級。
當(dāng)資源配額選擇公共資源組時:
每個實(shí)例會免費(fèi)贈送100 GiB云盤作為系統(tǒng)盤,用于持久化存儲。如果實(shí)例停機(jī)超過15天,云盤的內(nèi)容將被清空。云盤支持?jǐn)U容,具體擴(kuò)容價格以控制臺界面為準(zhǔn)。
擴(kuò)容后不支持縮容,請按需操作擴(kuò)容。
擴(kuò)容后整塊系統(tǒng)盤(免費(fèi)+付費(fèi))后,不再受到停機(jī)15天釋放的限制,但會持續(xù)產(chǎn)生費(fèi)用。
實(shí)例刪除系統(tǒng)盤同步銷毀,刪除前請確保必要數(shù)據(jù)備份。
當(dāng)資源配額選擇專有資源組時:
使用實(shí)例自帶的系統(tǒng)盤,并作為數(shù)據(jù)的臨時存儲,在停止或刪除實(shí)例后,存儲將被清空。
多個數(shù)據(jù)集掛載的路徑不能重復(fù)。
如果配置了CPFS類型的數(shù)據(jù)集,則需要設(shè)置網(wǎng)絡(luò)配置,且選擇的專有網(wǎng)絡(luò)需要與CPFS一致。否則,DSW實(shí)例可能會創(chuàng)建失敗。
當(dāng)資源組選擇專有資源組時,第一個數(shù)據(jù)集必須選擇NAS類型數(shù)據(jù)集,且會被同時掛載到您指定的路徑和DSW默認(rèn)工作目錄/mnt/workspace/下。
公有網(wǎng)關(guān):集群中的DSW實(shí)例使用共享的公網(wǎng)帶寬,在用戶高并發(fā)時下載速度會比較慢。
專有網(wǎng)關(guān):獨(dú)享帶寬,您可以根據(jù)需求選擇不同的帶寬。選擇該方式后,您需要為DSW實(shí)例關(guān)聯(lián)的專有網(wǎng)絡(luò)創(chuàng)建公網(wǎng)NAT網(wǎng)關(guān)、綁定EIP并配置SNAT條目。具體配置方法,請參見DSW通過專有公網(wǎng)網(wǎng)關(guān)訪問公網(wǎng)。
啟用所有選項(xiàng):默認(rèn)為關(guān)閉,系統(tǒng)會禁用與CPFS類型的數(shù)據(jù)集不通的專有網(wǎng)絡(luò)。
隱藏禁用選項(xiàng):選中復(fù)選框,系統(tǒng)會隱藏與CPFS類型的數(shù)據(jù)集不通的專有網(wǎng)絡(luò)。
VPC內(nèi)訪問:默認(rèn)支持該訪問方式。您可以從VPC內(nèi)的其他終端(例如ECS),通過SSH遠(yuǎn)程連接DSW實(shí)例。
公網(wǎng)訪問:選中該項(xiàng),可以增加公網(wǎng)訪問方式。后續(xù),您可以通過本地命令行或其他終端使用SSH遠(yuǎn)程連接DSW實(shí)例。
NAT網(wǎng)關(guān):選擇為專有網(wǎng)絡(luò)創(chuàng)建的公網(wǎng)NAT網(wǎng)關(guān)。
彈性公網(wǎng)IP:選擇在公網(wǎng)NAT網(wǎng)關(guān)中已創(chuàng)建的彈性公網(wǎng)IP。
PAI默認(rèn)角色:擁有訪問PAI內(nèi)部產(chǎn)品、MaxCompute和OSS的權(quán)限?;赑AI默認(rèn)角色簽發(fā)的臨時訪問憑證,在訪問PAI內(nèi)部產(chǎn)品、MaxCompute表時,將擁有等同于DSW實(shí)例所有者的權(quán)限;在訪問OSS時,僅能訪問當(dāng)前工作空間配置的默認(rèn)存儲路徑Bucket。
自定義角色:當(dāng)您想要定制或者更精細(xì)的權(quán)限管理,可以配置自定義角色。
不關(guān)聯(lián)角色:當(dāng)您想直接通過AccessKey訪問其它云產(chǎn)品時,可以選擇不關(guān)聯(lián)角色。
確認(rèn)所選配置無問題后,單擊確定。
參數(shù) | 描述 | |
基礎(chǔ)信息 | 實(shí)例名稱 | 參考界面提示信息配置DSW實(shí)例名稱。 |
資源信息 | 資源配額 | 支持選擇: 說明 當(dāng)選擇通用訓(xùn)練資源專有資源組或靈駿智算資源組創(chuàng)建DSW實(shí)例時,還需要設(shè)置以下參數(shù): |
資源規(guī)格 | ||
環(huán)境信息 | 鏡像 | 支持選擇以下鏡像: |
系統(tǒng)盤 | 警告 如果您需要永久性存儲,可以配置數(shù)據(jù)集,或在掛載配置中添加OSS路徑。 | |
數(shù)據(jù)集 | 單擊添加,可掛載已創(chuàng)建的自定義數(shù)據(jù)集,其中,OSS類型的自定義數(shù)據(jù)集支持多種掛載模式和自定義配置,公共數(shù)據(jù)集只支持只讀掛載模式。 說明 | |
掛載配置 | 單擊添加,可直接掛載OSS路徑,OSS支持多種掛載模式和自定義配置。 | |
工作目錄 | 工作目錄是Notebook、WebIDE的啟動路徑,掛載至 | |
網(wǎng)絡(luò)信息 | 專有網(wǎng)絡(luò)配置 | 僅當(dāng)資源配額選擇公共資源時,支持配置該參數(shù)。 當(dāng)您想要在專有網(wǎng)絡(luò)內(nèi)使用DSW實(shí)例時,可配置此參數(shù),同時配置交換機(jī)和安全組。不同場景的配置策略詳情,請參見DSW網(wǎng)絡(luò)配置。 |
公網(wǎng)訪問網(wǎng)關(guān) | 公網(wǎng)訪問網(wǎng)關(guān)支持以下配置方法: 僅當(dāng)掛載配置選擇CPFS類型的數(shù)據(jù)集時,支持配置以下參數(shù): 說明 如果掛載配置選擇了CPFS類型的數(shù)據(jù)集,則需要配置專有網(wǎng)絡(luò),且選擇的專有網(wǎng)絡(luò)需要與CPFS一致。 | |
訪問配置 | 啟用SSH | 選擇專有網(wǎng)絡(luò)后可配置SSH。 啟用后您可基于已選專有網(wǎng)絡(luò),使用SSH原生方式直連登錄DSW實(shí)例。 若您配置了自定義鏡像,請確認(rèn)自定義鏡像安裝了sshd。 |
SSH公鑰 | 打開SSH配置開關(guān)后可配置該參數(shù)。 說明 如果您需要同時支持VPC內(nèi)登錄和公網(wǎng)登錄方式,您需要同時添加多個客戶端的公鑰。請按照回車換行的方式逐個添加公鑰,最多支持添加10個公鑰。 | |
SSH訪問方式 | 打開SSH配置開關(guān)后可配置該參數(shù)。 | |
自定義服務(wù) | 將實(shí)例中啟動的自定義服務(wù)提供對外訪問能力。具體配置,請參見自定義服務(wù)訪問配置。 | |
高級信息 | 可見范圍 | 可選擇僅實(shí)例所有者可見或工作空間內(nèi)公開可見。 |
實(shí)例所有者 | 僅工作空間管理員可修改實(shí)例所有者。 | |
實(shí)例RAM角色 | 當(dāng)在DSW實(shí)例內(nèi)訪問其他云資源時,可以為實(shí)例關(guān)聯(lián)RAM角色,該方式基于STS臨時憑證訪問其他云資源,無需配置長期AccessKey,有效降低密鑰泄露的風(fēng)險。 實(shí)例RAM角色可配置為: 更多關(guān)于實(shí)例RAM角色的配置說明,請參見配置DSW實(shí)例RAM角色。 |
通過Python SDK創(chuàng)建實(shí)例
安裝阿里云的Credentials工具。當(dāng)您通過阿里云SDK調(diào)用OpenAPI進(jìn)行資源操作時,必須安裝Credentials工具配置憑證信息。要求:
Python版本 >= 3.7。
使用V2.0代系的阿里云SDK。
pip install alibabacloud_credentials
獲取賬號AccessKey。本示例使用AK信息配置訪問憑證,為防止賬號信息泄漏,建議您將AccessKey配置為環(huán)境變量,id和secret環(huán)境變量名分別為ALIBABA_CLOUD_ACCESS_KEY_ID,ALIBABA_CLOUD_ACCESS_KEY_SECRET。
獲取AccessKey信息,請參見創(chuàng)建AccessKey。
如何設(shè)置環(huán)境變量,請參見配置環(huán)境變量。
其它Credentials憑證配置方式,請參見安裝Credentials工具。
安裝PAI相關(guān)Python SDK。
# 工作空間SDK安裝。
pip install alibabacloud-aiworkspace20210204 -U -q
# DSW SDK安裝。
pip install alibabacloud_pai_dsw20220101 -U -q
# OpenAPI依賴。
pip install alibabacloud_tea_openapi -U -q
# 預(yù)付費(fèi)資源組查詢SDK安裝。
pip install https://sdk-portal-us-prod.oss-accelerate.aliyuncs.com/downloads/u-b8602de7-c468-436c-8a02-2eca4a30d376-python-paistudio.zip -U -q
創(chuàng)建一個DSW實(shí)例。
創(chuàng)建實(shí)例的代碼示例如下所示。
import os
from alibabacloud_credentials.client import Client
from alibabacloud_credentials.models import Config
from alibabacloud_aiworkspace20210204.client import Client as AIWorkspaceClient
from alibabacloud_aiworkspace20210204.models import (ListWorkspacesRequest,
ListImagesRequest,
ListDatasetsRequest,
ListResourcesRequest)
from alibabacloud_pai_dsw20220101.client import Client as DSWClient
from alibabacloud_pai_dsw20220101.models import (GetInstanceRequest,
ListInstancesRequest,
ListEcsSpecsRequest,
CreateInstanceRequest,
StopInstanceRequest,
CreateInstanceShutdownTimerRequest,
CreateInstanceRequestRequestedResource,
CreateInstanceSnapshotRequest,
ListInstanceSnapshotRequest,
GetInstanceMetricsRequest,
CreateIdleInstanceCullerRequest)
from alibabacloud_tea_openapi.models import Config as AliyunConfig
from alibabacloud_tea_openapi.client import TeaException
# 配置訪問憑證
# 阿里云賬號AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶進(jìn)行API訪問或日常運(yùn)維。
# 強(qiáng)烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼中,否則可能導(dǎo)致AccessKey泄露,威脅您賬號下所有資源的安全。
# 本示例通過Credentials SDK默認(rèn)從環(huán)境變量中讀取AccessKey進(jìn)行身份驗(yàn)證。
region_id = 'cn-beijing' # Region,可以是cn-hangzhou、cn-shanghai、cn-shenzhen等。
config = Config(
type='access_key',
access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
)
cred = Client(config)
# client config。
workspace_client = AIWorkspaceClient(
config=AliyunConfig(
credential=cred,
region_id=region_id,
endpoint="aiworkspace.{}.aliyuncs.com".format(region_id),
)
)
dsw_client = DSWClient(
config=AliyunConfig(
credential=cred,
region_id=region_id,
endpoint='pai-dsw.{}.aliyuncs.com'.format(region_id),
)
)
# 定義一個用來顯示DSW實(shí)例信息的Helper函數(shù)。
def show_instance(instance_id):
instance = dsw_client.get_instance(instance_id=instance_id, request=GetInstanceRequest()).body
print(instance.status, instance.instance_name, instance.ecs_spec, instance.accumulated_running_time_in_ms)
# 查詢一個已經(jīng)存在的工作空間(Workspace)的屬性和ID。
workspace_name = '已有的AI工作空間名稱'
# 獲取工作空間列表。
workspaces = workspace_client.list_workspaces(ListWorkspacesRequest(
page_number=1,
page_size=10,
workspace_name=workspace_name, # 模糊匹配,如果未指定名稱,則返回所有workspace。
))
if len(workspaces.body.workspaces) == 0:
raise RuntimeError('請指定正確的workspace_name')
for workspace in workspaces.body.workspaces:
print(workspace.workspace_name,
workspace.workspace_id,
workspace.status, workspace.creator)
# 使用查詢到的第一個結(jié)果作為后續(xù)操作的工作空間,您可以按需切換或者直接指定一個字符串類型的ID。
workspace_id = workspaces.body.workspaces[0].workspace_id
# 獲取鏡像列表,可以使用labels進(jìn)行過濾。
images = workspace_client.list_images(ListImagesRequest(
page_size=100,
#workspace_id=workspace_id, #不指定workspace_id則意味著查詢所有PAI平臺內(nèi)置的鏡像
labels=','.join(['system.supported.dsw=true',
#'system.framework=tensorflow', #指定pytorch或者tensorflow
'system.pythonVersion=3.6',
]),
verbose=True # verbose=True會列出更加詳細(xì)的信息,包括labels
))
# 可以查看所有可用的鏡像。
for image in images.body.images:
print(image.image_id, image.image_uri)
# 獲得用于提交任務(wù)所使用的鏡像,這里取第一個作為示例。
image_uri = images.body.images[0].image_uri
print('image_uri', image_uri)
# 獲取DSW的節(jié)點(diǎn)規(guī)格列表。
try:
resp = dsw_client.list_ecs_specs(ListEcsSpecsRequest(accelerator_type='CPU', # CPU 或者 GPU
)).body
except TeaException as t:
print("List ECS Specs failed:", t.message)
else:
for spec in resp.ecs_specs:
print(spec.instance_type + ", CPU: " + str(spec.cpu) + ", Memory: " + str(spec.memory))
# 獲得用于提交任務(wù)的節(jié)點(diǎn)規(guī)格。
ecs_spec = resp.ecs_specs[0].instance_type
print('Selected ecs_spec:', ecs_spec)
# 創(chuàng)建DSW實(shí)例。
request = CreateInstanceRequest(instance_name="Test_From_SDK_1",
ecs_spec=ecs_spec,
workspace_id=workspace_id,
#image_id='', #可以指定工作空間中的鏡像的ID,但是與image_url只能指定一個參數(shù)
image_url=image_uri)
try:
ins_resp = dsw_client.create_instance(request)
except TeaException as t:
print('創(chuàng)建實(shí)例失敗,錯誤消息:' + t.message)
else:
instance_id = ins_resp.body.instance_id
print("Created Instance ID:", instance_id)
show_instance(instance_id)
關(guān)于更多接口的說明,請參見API概覽。
相關(guān)文檔
創(chuàng)建實(shí)例后,您可以準(zhǔn)備開發(fā)所需要的數(shù)據(jù)文件。DSW支持接入多種數(shù)據(jù)源,包括OSS、NAS和MaxCompute,詳情請參見讀寫數(shù)據(jù)。
DSW提供了數(shù)據(jù)上傳和下載功能,適用于小數(shù)據(jù)量的文件傳輸,詳情請參見上傳與下載數(shù)據(jù)文件。
DSW的功能特點(diǎn)、使用流程、快速入門等,詳情請參見什么是DSW。
關(guān)于DSW的使用案例,詳情請參見DSW使用案例匯總。
創(chuàng)建DSW實(shí)例等DSW相關(guān)API,詳情請參見DSW API概覽。