创建DSW实例

更新时间: 2024-12-17 14:52:24

交互式建模(DSW)是PAI产品的云端机器学习开发IDE,为您提供交互式编程环境。在使用DSW前,您需要创建DSW实例。DSW支持通过控制台和Python SDK两种方式创建实例。本文为您介绍如何创建DSW实例。

背景信息

DSW支持通过控制台或Python SDK的方式创建实例,二者分别适用于不同的用户:

  • 通过控制台创建实例

    适用于普通开发者,您可以通过控制台管理实例,例如,在DSW中进行模型开发的开发者。

  • 通过Python SDK创建实例

    适用于需要对实例整体生命周期进行管理的开发者。例如,您需要将DSW系统中的资源整合到其他系统中,可以通过DSW的OpenAPI SDK实现。

前提条件

  1. 权限开通

    1. 使用主账号开通PAI并创建工作空间。登录PAI控制台,左上角选择开通区域,然后一键授权和开通产品,详情见开通PAI并创建工作空间

    2. 操作账号授权。当使用主账号操作DSW实例时,可跳过此步。当使用RAM账号操作时,需要进行操作账号授权

  2. 【可选】准备专有资源组

    在完成步骤1后,系统将为您准备好公共资源组。当您需要使用专有资源组时,需要购买专有资源并分配资源配额,具体操作可参见下面教程。

  3. 【可选】准备数据集

    公共资源组和专有资源组默认数据存储空间有限,且无法持久化存储,因此,当您需要扩展实例的存储空间或持久化存储数据时,可通过挂载NAS、OSS类型数据集或OSS路径的方式实现。新建数据集,请参见创建及管理数据集

    重要
    • 公共资源组的DSW实例,数据存储在空间有限的免费云盘中,在删除实例或停机超过15天后,云盘数据将被清空。

    • 专有资源组的DSW实例,数据存储在实例的系统盘中,在停止或删除实例后,临时存储将被清空。

  4. 【可选】自定义镜像

    DSW预置了多种类型的官方镜像,例如PyTorch、TensorFlow、ModelScope等。如果您需要自定义镜像来满足特定场景下的开发需求,请参见自定义镜像

使用限制

由于每个阿里云账号(主账号)在每个Region有2卡GPU的限制,当资源使用量超出限额时可能会出现报错。如果您需要提升限额,请提交工单联系我们。

创建实例

重要

当您使用公共资源创建实例后,将开始按照实例的服务时长计费,当停止或删除实例后计费才会停止,详细计费规则,请参见交互式建模(DSW)计费说明

通过控制台创建实例

  1. 进入DSW页面。

    1. 登录PAI控制台

    2. 概览页面选择目标地域。

    3. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。

    4. 在工作空间页面的左侧导航栏选择模型开发与训练 > 交互式建模(DSW),进入DSW页面。

  2. 单击新建实例

  3. 配置实例向导页面,配置以下关键参数。

  4. 参数

    描述

    基础信息

    实例名称

    参考界面提示信息配置DSW实例名称。

    资源信息

    资源类型

    支持选择:

    • 公共资源:目前仅支持按量付费模式,无法转为包年包月

    • 资源配额:可选择通用训练资源专有资源组、灵骏智算资源,如果没有可选的目标资源,请单击关联资源配额进行配置。

    资源类型不同,相关参数配置不同:

    • 资源类型公共资源时,需要设置以下参数:

      • 资源规格:可选择GPU、CPU或免费试用资源。规格信息,请参见实例规格族

      • 竞价购买:当您使用公共资源创建DSW实例时,您可以选用竞价实例(抢占式实例),降低运行成本。详情请参见竞价购买DSW实例

        当前仅华东1(杭州)、华北2(北京)、华南1(深圳)、华南3(广州)、日本(东京)地域支持配置该参数。

    • 资源类型资源配额时,需要设置以下参数:

      • 资源配额:可选择通用训练资源专有资源组、灵骏智算资源。

      • 资源规格:根据实际需求设置GPU、CPU和内存等。

      • 优先级: 优先级范围为1~9 ,数值越大,优先级越高。

      • CPU亲和性:启用CPU亲和性,能够将容器或Pod中的进程绑定到特定的CPU核心上执行。通过这种方式,可以减少CPU缓存未命中、上下文切换等现象,从而提高CPU利用率,提升应用性能,适用于对性能敏感和实时性要求高的场景。

        当前仅华北2(北京)、华南1(深圳)地域支持配置该参数。

    环境信息

    镜像

    支持选择以下镜像:

    • 官方镜像:预置的官方镜像,覆盖Python、TensorFlow和PyTorch的多个版本。

    • 自定义镜像:支持选择已创建的自定义镜像。如何添加自定义镜像,请参见自定义镜像

    • 镜像地址:可输入公共可访问的镜像公网地址,或者当前Region下ACR个人版中镜像的公网地址。

    系统盘

    • 资源配额选择公共资源组时:

      每个实例会免费赠送100 GiB云盘作为系统盘,用于持久化存储。如果实例停机超过15天,云盘的内容将被清空。云盘支持扩容,具体扩容价格以控制台界面为准。

    警告
    • 扩容后不支持缩容,请按需操作扩容。

    • 扩容后整块系统盘(免费+付费)后,不再受到停机15天释放的限制,但会持续产生费用。

    • 实例删除系统盘同步销毁,删除前请确保必要数据备份。

    • 资源配额选择专有资源组时:

      使用实例自带的系统盘,并作为数据的临时存储,在停止或删除实例后,存储将被清空

    如果您需要永久性存储,可以配置数据集,或在挂载配置中添加OSS路径。

    数据集

    单击添加,可挂载已创建的自定义数据集,其中,OSS类型的自定义数据集支持多种挂载模式和自定义配置,公共数据集只支持只读挂载模式。

    说明
    • 多个数据集挂载的路径不能重复。

    • 如果配置了CPFS类型的数据集,则需要设置网络配置,且选择的专有网络需要与CPFS一致。否则,DSW实例可能会创建失败。

    • 当资源组选择专有资源组时,第一个数据集必须选择NAS类型数据集,且会被同时挂载到您指定的路径和DSW默认工作目录/mnt/workspace/下。

    挂载配置

    单击添加,可直接挂载OSS路径,OSS支持多种挂载模式和自定义配置。

    工作目录

    工作目录是Notebook、WebIDE的启动路径,挂载至/mnt/workspace

    网络信息

    专有网络配置

    仅当资源配额选择公共资源时,支持配置该参数。

    当您想要在专有网络内使用DSW实例时,可配置此参数,同时配置交换机安全组。不同场景的配置策略详情,请参见DSW网络配置

    公网访问网关

    公网访问网关支持以下配置方法:

    • 公有网关:集群中的DSW实例使用共享的公网带宽,在用户高并发时下载速度会比较慢。

    • 专有网关:独享带宽,您可以根据需求选择不同的带宽。选择该方式后,您需要为DSW实例关联的专有网络创建公网NAT网关、绑定EIP并配置SNAT条目。具体配置方法,请参见DSW通过专有公网网关访问公网

    仅当挂载配置选择CPFS类型的数据集时,支持配置以下参数:

    • 启用所有选项:默认为关闭,系统会禁用与CPFS类型的数据集不通的专有网络。

    • 隐藏禁用选项:选中复选框,系统会隐藏与CPFS类型的数据集不通的专有网络。

    说明

    如果挂载配置选择了CPFS类型的数据集,则需要配置专有网络,且选择的专有网络需要与CPFS一致。

    访问配置

    启用SSH

    选择专有网络后可配置SSH。

    启用后您可基于已选专有网络,使用SSH原生方式直连登录DSW实例。 若您配置了自定义镜像,请确认自定义镜像安装了sshd。

    SSH公钥

    打开SSH配置开关后可配置该参数。

    说明

    如果您需要同时支持VPC内登录和公网登录方式,您需要同时添加多个客户端的公钥。请按照回车换行的方式逐个添加公钥,最多支持添加10个公钥。

    SSH访问方式

    打开SSH配置开关后可配置该参数。

    • VPC内访问:默认支持该访问方式。您可以从VPC内的其他终端(例如ECS),通过SSH远程连接DSW实例。

    • 公网访问:选中该项,可以增加公网访问方式。后续,您可以通过本地命令行或其他终端使用SSH远程连接DSW实例。

      • NAT网关:选择为专有网络创建的公网NAT网关。

      • 弹性公网IP:选择在公网NAT网关中已创建的弹性公网IP。

    自定义服务

    将实例中启动的自定义服务提供对外访问能力。具体配置,请参见自定义服务访问配置

    高级信息

    可见范围

    可选择仅实例所有者可见工作空间内公开可见

    实例所有者

    仅工作空间管理员可修改实例所有者。

    实例RAM角色

    当在DSW实例内访问其他云资源时,可以为实例关联RAM角色,该方式基于STS临时凭证访问其他云资源,无需配置长期AccessKey,有效降低密钥泄露的风险。

    实例RAM角色可配置为:

    • PAI默认角色:拥有访问PAI内部产品、MaxCompute和OSS的权限。基于PAI默认角色签发的临时访问凭证,在访问PAI内部产品、MaxCompute表时,将拥有等同于DSW实例所有者的权限;在访问OSS时,仅能访问当前工作空间配置的默认存储路径Bucket。

    • 自定义角色:当您想要定制或者更精细的权限管理,可以配置自定义角色。

    • 不关联角色:当您想直接通过AccessKey访问其它云产品时,可以选择不关联角色。

    更多关于实例RAM角色的配置说明,请参见配置DSW实例RAM角色

  5. 确认所选配置无问题后,单击确定

通过Python SDK创建实例

  1. 安装阿里云的Credentials工具。当您通过阿里云SDK调用OpenAPI进行资源操作时,必须安装Credentials工具配置凭证信息。要求:

    • Python版本 >= 3.7。

    • 使用V2.0代系的阿里云SDK。

pip install alibabacloud_credentials
  1. 获取账号AccessKey。本示例使用AK信息配置访问凭证,为防止账号信息泄漏,建议您将AccessKey配置为环境变量,id和secret环境变量名分别为ALIBABA_CLOUD_ACCESS_KEY_ID,ALIBABA_CLOUD_ACCESS_KEY_SECRET。

  2. 安装PAI相关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
# 预付费资源组查询SDK安装。
pip install https://sdk-portal-us-prod.oss-accelerate.aliyuncs.com/downloads/u-b8602de7-c468-436c-8a02-2eca4a30d376-python-paistudio.zip -U -q
  1. 创建一个DSW实例。

创建实例的代码示例如下所示。

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的访问权限,建议您使用RAM用户进行API访问或日常运维。
# 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码中,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
# 本示例通过Credentials SDK默认从环境变量中读取AccessKey进行身份验证。
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实例信息的Helper函数。
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)

# 查询一个已经存在的工作空间(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)

# 使用查询到的第一个结果作为后续操作的工作空间,您可以按需切换或者直接指定一个字符串类型的ID。
workspace_id = workspaces.body.workspaces[0].workspace_id

# 获取镜像列表,可以使用labels进行过滤。
images = workspace_client.list_images(ListImagesRequest(
                    page_size=100,
                    #workspace_id=workspace_id, #不指定workspace_id则意味着查询所有PAI平台内置的镜像
                    labels=','.join(['system.supported.dsw=true',
                                    #'system.framework=tensorflow', #指定pytorch或者tensorflow
                                    'system.pythonVersion=3.6',
                                    ]),
                    verbose=True # verbose=True会列出更加详细的信息,包括labels
                    )) 

# 可以查看所有可用的镜像。
for image in images.body.images:
    print(image.image_id, image.image_uri)

# 获得用于提交任务所使用的镜像,这里取第一个作为示例。
image_uri = images.body.images[0].image_uri
print('image_uri', image_uri)

# 获取DSW的节点规格列表。
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))

    # 获得用于提交任务的节点规格。
    ecs_spec = resp.ecs_specs[0].instance_type
    print('Selected ecs_spec:', ecs_spec)
    
# 创建DSW实例。
request = CreateInstanceRequest(instance_name="Test_From_SDK_1",
                                ecs_spec=ecs_spec,
                                workspace_id=workspace_id,
                                #image_id='', #可以指定工作空间中的镜像的ID,但是与image_url只能指定一个参数
                                image_url=image_uri) 
try:
    ins_resp = dsw_client.create_instance(request)
except TeaException as t:
    print('创建实例失败,错误消息:' + t.message)
else:
    instance_id = ins_resp.body.instance_id
    print("Created Instance ID:", instance_id)

    show_instance(instance_id)                           

关于更多接口的说明,请参见API概览

相关文档

  • 创建实例后,您可以准备开发所需要的数据文件。DSW支持接入多种数据源,包括OSS、NAS和MaxCompute,详情请参见读写数据

  • DSW提供了数据上传和下载功能,适用于小数据量的文件传输,详情请参见上传与下载数据文件

  • DSW的功能特点、使用流程、快速入门等,详情请参见什么是DSW

  • 关于DSW的使用案例,详情请参见DSW使用案例汇总

  • 创建DSW实例等DSW相关API,详情请参见DSW API概览

上一篇: 云产品依赖与授权:DSW 下一篇: DSW挂载配置
阿里云首页 人工智能平台 PAI 相关技术圈