创建DSW实例

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

DSW(Data Science Workshop)为您提供云端IDEAI开发环境(开发机),熟悉Notebook/VSCode的开发者,可以快速开始模型开发。本文为您介绍如何创建DSW实例,以及实例启动和释放时常见的问题。

快速创建一个基础DSW实例

  1. 登录PAI控制台,选择目标地域,在左侧导航栏单击工作空间列表,选择并进入目标工作空间。

  2. 在左侧导航栏单击交互式建模(DSW) > 新建实例,配置以下关键参数,其他参数默认即可。控制台全量参数请参见控制台全参数列表

    参数

    说明

    实例名称

    例如:dsw_test

    资源类型

    选择公共资源,其采用按量付费的计费方式。

    资源规格

    选择如:ecs.gn7i-c8g1.2xlarge(配置为:1A10 GPU、8 vCPU、30 GiB内存)。

    如果该规格库存不足,请尝试选择列表中的其他规格。

    镜像配置

    选择官方镜像,搜索并选择modelscope:1.31.0-pytorch2.8.0-gpu-py311-cu124-ubuntu22.04(Python版本为3.11、CUDA版本为12.4)。

    ModelScope的镜像兼容性较好,且三方库较全,因此推荐使用ModelScope镜像。

    单击确定创建实例,当实例状态为运行中时,代表创建成功。

    如果实例启动失败请参见DSW实例启动常见问题
  3. DSW实例列表页,单击右侧操作列下的打开按钮,即可进入DSW实例开始模型开发。

    后续您可以查看控制台访问和管理DSW,了解DSW实例界面的功能,以及如何停止、释放、变更DSW实例。

警告
  • 使用公共资源创建DSW实例后,将开始按照实例的服务时长计费。当不需要使用DSW时请及时停止或删除实例,以免继续扣费

  • 上述创建的DSW示例,数据默认存储在免费的云盘中,如果实例停止超过15天,云盘的内容将被清空,且无法恢复。对于重要数据请及时备份,或挂载并转移至云存储中。

典型应用场景配置

基础的DSW实例配置在实际AI开发中可能无法满足需要,因此,以下为您总结了典型的应用场景配置:

场景

需求/痛点

配置要点

相关文档

持久化存储代码和数据

DSW实例的系统盘是临时存储,在实例删除或长时间停止后数据会被清空。

需要长期保存重要文件,或在多个实例间共享数据。

通过数据集挂载存储路径挂载将云存储(如:对象存储OSS)挂载到实例指定目录下。

挂载数据集/OSS/NAS/CPFS

提升公网下载速度

DSW实例默认使用共享网关,受带宽限制,下载大型文件时网速可能无法满足需求。

在网络信息中,配置专有网络(VPC),并使用专有网关。还需要为VPC创建NAT网关和弹性公网IP (EIP)。

远程连接:SSH直连方式

通过SSH远程开发

习惯使用本地的VSCode、PyCharm等工具进行开发和调试,不希望局限于Web IDE。

在访问配置中,启用SSH,填入SSH公钥,并选择公网访问方式,关联已有的NAT网关和弹性公网IP (EIP)。

通过专有网关提升公网访问速率

访问实例内的Web服务

将实例内运行的Web应用发布到公网,以便通过URL直接访问或分享。

在访问配置中,添加自定义服务,配置服务端口并启用公网访问。同时,必须在安全组中添加入方向规则,放行该端口。

通过公网访问实例中的服务

控制台全参数列表

基础信息

参数

描述

实例名称

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

标签

根据业务需要对实例打标,便于对资源进行多维度查找、定位、批量操作、分账。

资源信息

参数

描述

资源类型

  • 公共资源:计费方式为按量付费,无法转为包年包月

    说明

    使用公共资源,每个阿里云账号(主账号)在每个Region2GPU的限制,当资源使用量超出限额时可能会出现报错。如果您需要提升限额,请提交工单。

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

    • 竞价购买:可以选用竞价实例(抢占式实例),降低运行成本。当提示抢占型实例暂无库存时,可尝试选择其他规格。

      当前仅华东1(杭州)、华东2(上海)、华北2(北京)、华北6(乌兰察布)、华南1(深圳)、华南3(广州)、日本(东京)、新加坡地域支持配置该参数。

  • 资源配额:计费方式为预付费(包年包月)。

    • 资源配额:可选择通用计算资源、灵骏智算资源,如果没有可选资源,单击关联资源配额进行配置。

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

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

    • CPU亲和性:能够将容器或Pod中的进程绑定到特定的CPU核心上执行。通过这种方式,可以减少CPU缓存未命中、上下文切换等现象,从而提高CPU利用率,提升应用性能,适用于对性能敏感和实时性要求高的场景。当前仅华北2(北京)、华南1(深圳)地域支持配置该参数。

环境信息

参数

描述

镜像配置

除了可以选择官方镜像外,还支持以下镜像类型:

  • 自定义镜像:可使用添加到PAI的自定义镜像,镜像仓库需要设置为公开拉取状态,或将镜像存储在容器镜像服务ACR中,详情请参见自定义镜像

  • 镜像地址:支持配置公网环境下可访问的自定义镜像或官方镜像地址。

    • 如果是私有镜像地址,需要单击输入账号密码,并配置镜像仓库用户名和密码。

    • 提升镜像拉取速度,可参见镜像加速

系统盘

用于存储开发过程中的文件。当资源类型选择公共资源,或当资源配额选择预付费通用计算资源(CPU核数≥2且内存≥4G,或配有GPU)时:每个实例会赠送100 GiB免费云盘作为系统盘。云盘支持扩容,具体扩容价格以控制台界面为准。

警告
  • 仅使用免费额度云盘,如果实例停止超过15天,云盘的内容将被清空。

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

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

  • 实例删除,云盘同步释放,删除前请确保必要数据备份。

如果您需要永久性存储,可以配置数据集挂载存储路径挂载

数据集挂载

可用于存储需要读取的数据集,或持久化存储开发过程中的文件,支持以下两种数据集类型:

  • 自定义数据集:您可以创建自定义数据集来存放训练所需的数据文件,支持设置是否只读及版本选择。

  • 公共数据集:PAI预置有公开的数据集,仅支持只读挂载模式。

挂载路径:表示数据集挂载到DSW的路径,例如/mnt/data,在代码中您可以检索该路径获取数据集。

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

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

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

更多关于挂载的详情,请参见挂载数据集/OSS/NAS/CPFS

存储挂载

您也可以使用存储类型挂载存储需要读取的数据集,或持久化存储开发过程中的文件。

更多关于挂载的详情,请参见挂载数据集/OSS/NAS/CPFS

工作目录

工作目录是Notebook、WebIDE的启动路径,默认为/mnt/workspace

展开更多配置

参数

描述

自定义启动脚本

用于在实例启动过程中定制环境或执行初始化任务。自定义脚本的执行时间在镜像和资源准备完成后,JupyterLab、Code Server等开发应用启动前。

说明
  • 超时时间为3分钟:自定义脚本会增加实例的启动时间,脚本超时时间为3分钟,请勿在自定义脚本中执行镜像下载等长耗时任务。

  • 可查看脚本运行日志:实例启动后可在/var/log/user-command/路径下找到自定义脚本运行产生的日志。

环境变量

用于主容器启动、系统进程和用户进程。您可以按需增加自定义的环境变量或覆盖系统默认环境变量。

注意:如下环境变量不建议修改:

# 修改不会生效
USER_NAME # 会被service里的逻辑覆盖

# 不建议修改的系统变量,修改可能会影响正常使用
JUPYTER_NAME:默认由实例信息构造而来,可用于修改jupyterlaburl访问路径
JUPYTER_COMMAND: jupyter启动指令,默认设置为lab用于启动jupyterlab
JUPYTER_SERVER_ADDR: jupyterlab服务监听地址,默认为0.0.0.0
JUPYTER_SERVER_PORT: jupyterlab服务监听端口,默认为8088
JUPYTER_SERVER_AUTH: jupyterlab访问密码,默认为空
JUPYTER_SERVER_ROOT: jupyter工作目录,优先级不如WORKSPACE_DIR高
CODE_SERVER_ADDR: code-server服务监听地址,默认为0.0.0.0
CODE_SERVER_PORT: code-server服务监听端口,默认为8082
CODE_SERVER_AUTH: code-server访问密码,默认为空
WORKSPACE_DIR: 系统根据实例新建时设置的工作目录参数设定这个环境变量。可改变jupyter、code-server的启动目录。如果路径不存在可能报错。

高级配置

允许用户通过高级配置,来调整部分业务所需且安全的内核参数。目前只支持灵骏资源组实例进行设置,参数详情请参见下表。

高级配置参数

默认值

说明

注意事项

VmMaxMapCount

65530

设置进程可拥有的最大内存映射区域数量。例如,可配置为1024000。

小于65530不生效,过高值可能导致内存资源浪费。

网络信息

参数

描述

专有网络配置

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

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

公网访问网关

支持以下配置方法:

  • 公有网关:其网络带宽受限,在用户高并发或下载大型文件时,网络速度可能无法满足需求。

  • 专有网关:为解决公有网关带宽限制问题,可以在DSW的专有网络中创建公网NAT网关、绑定EIP并配置SNAT条目,详情请参考通过专有网关提升公网访问速率

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

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

说明

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

访问配置

参数

描述

启用SSH

用于远程连接实例,选择专有网络后可配置。当打开该开关后,会出现名称为SSH自定义服务。若您配置了自定义镜像,请确认自定义镜像安装了sshd。

SSH公钥

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

说明

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

自定义服务

用于配置SSH远程访问或通过公网访问实例中的服务

  • 监听端口:DSW实例中运行的服务监听的端口。

  • 服务访问方式

    • VPC内访问:默认支持该访问方式。您可以从VPC内的其他终端(例如ECS),访问DSW中的服务。

    • 公网访问:选中该项,可以增加公网访问方式。同时必须配置NAT网关弹性公网IP

  • 公网访问端口:允许从公网访问的端口。

创建VPC内访问域名

创建一条内置权威域名(Private Zone),您可在VPC内使用该域名来访问当前实例的SSH服务或其他自定义服务,避免使用变化的实例IP带来的访问不便。请注意创建的内置权威域名会产生费用,详情请参见云解析DNS产品计费

NAT网关

通过公网访问实例中服务时,负责将公网请求 (EIP:端口) 映射到私网 DSW 实例 (私有IP:端口)。

弹性公网IP

通过公网访问实例中服务时,提供公网访问IP地址。

角色与权限

参数

描述

可见范围

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

实例所有者

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

展开更多配置

参数

描述

实例RAM角色

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

实例RAM角色可配置为:

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

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

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

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

常见问题

DSW实例启动常见问题

单击展开

Q:DSW实例启动失败

排查方法:单击DSW实例名称,在事件页签下查看报错信息。

image

常见报错及解决方案如下:

  • Your requested resource type [ecs.******] is not enough currently, please try other regions or other resource types

    • 错误原因:该地域下您所选取的资源规格库存紧张,导致无法创建实例。

    • 解决方案:稍后再尝试创建,或者更换其他资源规格和地域。

  • Your resource usage has exceeded the default limitation. Please contact us via ticket system to raise the limitation.

    • 错误原因:在创建DSW实例时,当前限制每个阿里云账号(主账号)在每个地域最多一次创建2*GPU规格的实例,当选择的规格超过2*GPU时,会创建失败。

    • 解决方案:如果您需要提升限额,请提交工单联系我们。

  • Sales of this resource are temporarily suspended in the specified zone. We recommend that you use the multi-zone creation function to avoid the risk of insufficient resource.

    当前指定可用区的资源销售已暂停,您可以尝试以下操作来规避资源不足的风险:

    • 切换至其他地域。

    • 调整实例的资源规格。

    • 尝试在非高峰时段启动实例。

  • CommodityInstanceNotAvailableError:Commodity instance has been released due to prolonged arrears at past. Please create a new instance for use

    • 错误原因:因长时间欠费,系统自动回收资源并释放了实例。

    • 解决方案:需要重新创建新的实例。

  • The charge of current ECI instance has been stopped, but the related resources are still being cleaned.

    • 错误原因:试用资源是公共资源,如果在使用高峰期来启动DSW实例时,有可能启动时间长达半个多小时,如果一个小时拉取不到资源,系统会提示当前地域没有您所选的规格。

    • 解决方案:尝试以下操作:

      • 切换地域。

      • 变配实例的资源规格(等待中的实例不支持修改规格,您可手动停止实例,然后进行规格切换)。

      • 在非高峰期(如非工作时间)时使用。

      • 如果上述方法均无法解决问题,请联系您的商务经理进行处理。

  • The cluster resources are fully utilized. Please try later or other regions.

    • 错误原因:当前计算资源已完全被占用。

    • 解决方案:尝试以下操作:

      • 切换地域。

      • 变配实例的资源规格(等待中的实例不支持修改规格,您可手动停止实例,然后进行规格切换)。

      • 在非高峰期(如非工作时间)时使用。

      • 如果上述方法均无法解决问题,请联系您的商务经理进行处理。

  • Create ECI failed because the specified instance is out of stock. It is recommended to use the multi-zone creation function to avoid the risk of stockout.

    错误原因:指定的计算资源已经售罄。

    解决方案:尝试以下操作:

    • 切换地域。

    • 变配实例的资源规格(等待中的实例不支持修改规格,您可手动停止实例,然后进行规格切换)。

    • 在非高峰期(如非工作时间)时使用。

    • 如果上述方法均无法解决问题,请联系您的商务经理进行处理。

  • back-off 10s restarting failed container=dsw-notebook pod

    • 错误原因:系统盘已满,需要对系统盘进行扩容。

      查看系统盘占用情况:

      image

      image

    • 解决方案:通过变更配置对系统盘进行扩容:

      image

      重要

      扩容过系统盘后,无论实例是否处于运行状态,系统盘都会持续计费。如果您想停止DSW实例相关的一切计费,请删除DSW实例。删除前请务必确保必要数据已备份。

  • the available zone with vSwitch is out of stockInternalError-ResourceAllocateFailed

    • 错误原因:在创建DSW实例时配置了VPC专有网络,由于VPC下的vSwitch交换机具有可用区属性,配置交换机后,计算资源的查找范围将被限制在该交换机所在的可用区内,可能会出现资源短缺的问题。

    • 解决方案:对指定DSW实例进行配置变更,将专有网络配置为空。

      image

      说明

      如果需要使用专有网络,建议切换到另一个可用区并重新创建一个vSwitchDSW实例,以扩大可用资源的范围,避免因资源范围小而导致的货源短缺问题。

  • 启动失败,提示Workspace member not found

    此错误表示您当前登录的账号不是目标工作空间的成员。请联系您的工作空间管理员,将您的账号添加为该工作空间的成员。

  • failed to create containerd container: failed to prepare layer from archive: failed to validate archive quota ...

    • 错误原因:创建实例使用的镜像太大,导致系统盘空间不足。

    • 解决方法:打开实例详情页,扩容系统盘。请注意,扩容系统盘将根据容量收取额外费用。

      image

  • InternalError-Failed to perform action, error: OperationDenied.NoStock: The resource is out of stock in the specified zone. Please try other types, or choose other regions and zones.

    指定可用区的资源暂时缺货,请尝试选择其他类型或更换到其他地域和可用区。

  • RISK.RISK_CONTROL_REJECTION

    账号因为风控的原因被限制了,需要解除风控后才能进行创建。

其他启动失败原因:

  • 欠费导致创建失败

    如果您的账号欠费,将导致创建DSW实例创建失败,并且代金券不能抵扣欠费,您可登录费用与成本控制台,查看账户是否欠费。

Q:DSW启动时可以开机执行Python文件吗?

您可以在创建DSW实例时,或通过变更实例配置的方式设置自定义启动脚本

image

该功能可用于在实例启动过程中定制环境或执行初始化任务。自定义脚本的执行时间在镜像和资源准备完成后,JupyterLab、Code Server等开发应用启动前。

说明
  • 超时时间为3分钟:自定义脚本会增加实例的启动时间,脚本超时时间为3分钟,请勿在自定义脚本中执行镜像下载等长耗时任务。

  • 可查看脚本运行日志:实例启动后可在/var/log/user-command/路径下找到自定义脚本运行产生的日志。

Q:找不到DSW实例?

您可以在概览页面查看创建地不同类型的实例,并尝试切换不同地域。

image

Q:DSW 页面异常或无法操作怎么办?

如果遇到页面白屏、Notebook 一直转圈加载,或者 Terminal 无法输入命令这类问题,通常与您的本地环境有关。请尝试以下步骤:

  1. 清理浏览器缓存后重试。

  2. 使用浏览器的 无痕/隐私模式 访问。

  3. 更换网络环境,例如从公司内网切换至手机热点,以排查防火墙限制。

  4. 尝试使用 其他浏览器(如 Chrome、Firefox)。

Q:包含云盘系统盘的DSW实例停止、重启、变更规格、更换镜像是否会丢失系统盘中数据?

包含云盘系统盘的DSW实例类型有:公共资源组创建的实例,以及选择云盘作为系统盘的通用资源实例,其系统盘中的数据丢失情况如下:

  • 停止实例:可能会丢失。如果云盘未扩容且实例停止超过15天,数据会被清空且无法恢复。如果云盘扩容过或者实例停止未超过15天,则数据不会丢失。

  • 重启实例:不会丢失。在实例停止或重启后,所有通过pip安装的包、代码文件以及其他存储在实例系统盘中的数据都会被保留,不会丢失。

  • 变更实例规格:不会丢失。调整实例规格(如CPU、内存、GPU等资源配置)不会影响实例的系统盘中数据。

  • 更换实例镜像:可能会丢失部分数据。变更镜像不会影响挂载的数据集或OSS存储中的数据,但系统盘内的内容可能会被重置。因此,您在变更实例镜像时,注意保存实例数据。比如可以将数据复制或移动到数据集或OSS中。详情请参见挂载数据集/OSS/NAS/CPFS

对于选择临时存储作为系统盘的通用资源实例,不论其所在AI资源组是否配有预付费云盘,其停止、重启、变更规格或镜像都会丢失系统盘中的数据。

Q:使用公共资源创建的 DSW 实例,超过15 天未登录被释放,可以找回吗?

使用公共资源创建的DSW实例,如果云盘系统盘未付费扩容,且关机后连续15天以上未启动,其系统盘将被自动清空且无法恢复。

Q:启动DSW实例时间越来越长

每次启动时间逐渐变长可能是由于您的保存镜像体积较大所致。

DSW实例停止或释放常见问题

单击展开

Q:如何释放DSW实例?

DSW实例列表页,单击停止或删除实例。

image

注意:如果创建DSW实例时有扩容过系统盘,无论实例是否处于运行状态,系统盘都会持续计费。如果您想停止DSW实例相关的一切计费,请删除DSW实例。

Q:怎么找不到DSW实例?

如果找不到实例,您可以尝试切换不同地域和工作空间。

image

Q:如何释放免费试用抵扣包?

免费试用抵扣包无需释放或停止。

Q:如何完全停止DSW实例的计费?“停止”和“删除”操作有什么不同?

  • 停止实例:此操作释放实例的计算资源(CPU/GPU),并暂停计算费用。注意:扩容的系统盘会继续计费

  • 删除实例:此操作永久删除实例及其所有资源(包括系统盘)。所有相关计费会完全停止。

如何选择

  • 停止:临时不用,但想保留数据和环境供未来重启。

  • 删除:不再需要,希望停止所有计费。操作前请备份数据。

Q:为什么我的DSW实例长时间处于“停止中”或“删除中”状态,无法完成操作?

停止或删除实例需要时间。系统需要安全地终止任务、保存状态和回收资源。如果实例长时间无响应,常见原因如下:

  • 实例中有未正常结束的进程。

  • 内存占用过高,导致实例无法响应关机指令。

遇到这种情况,通常耐心等待一段时间后刷新页面,实例状态会正常停止。

Q:停止或删除DSW实例后,我的数据和代码会丢失吗?

数据是否保留取决于您的操作以及实例的资源组类型。

  • 停止实例

    数据保留策略因资源组类型而异。

    • 包含云盘系统盘的实例(大多数按量付费规格,选择了云盘作为系统盘的通用资源实例):如果云盘未扩容且实例停止超过15天,数据会被清空且无法恢复。如果云盘扩容过或者实例停止未超过15天,则数据不会丢失。

    • 使用临时存储作系统盘的实例:数据存储在临时存储中。停止实例会删除数据,且无法恢复。

  • 删除实例

    其系统盘中的所有数据都将被永久擦除,且无法恢复。因此,在删除前务必备份所有重要数据。

Q:为什么我正在运行的DSW实例会自动停止?

实例配置了闲置自动关机策略。此策略旨在节省资源,默认对免费试用实例启用。

  • 触发条件:实例的 CPU 和 GPU 使用率连续 3 小时低于设定阈值。

  • 操作建议:

    • 手动停止:为确保节省资源,请在不使用时手动停止实例。自动关机策略不保证每次都触发。

    • 修改策略:如需运行长时任务,请修改或禁用此策略。具体操作步骤如下:

      修改DSW自动关机策略

      1. 进入工作空间详情页,单击工作空间配置 > 调度配置

        image

      2. 找到DSW的配置区域,在此处即可修改DSW的关机策略以及排除策略。

        image

Q:我已经将所有DSW实例停止或删除了,为什么还显示“运行中”或收到计费通知?

检查以下常见原因:

  • 混淆了资源包与实例。您看到的“运行中”状态可能指资源包(如“每月250计算时”),而非实例。资源包在有效期内始终有效,其状态与实例无关。

  • 扩容的系统盘仍在计费。停止实例仅暂停计算费用。扩容后的系统盘会继续产生存储费用。

  • 账单存在延迟。计费并非实时,账单可能在您使用资源几小时后才生成。例如,上午产生的费用,可能在下午才显示在账单中。

附录: 通过Python SDK创建实例

  1. 阿里云 SDK 通过 Credentials 工具获取凭证信息。调用 API 前,请先安装并配置该工具。要求:

    • Python版本 >= 3.7。

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

    安装命令如下:

    pip install alibabacloud_credentials
  2. 获取账号AccessKey。本示例使用AK信息配置访问凭证,为防止账号信息泄露,建议您将AccessKey配置为环境变量,idsecret环境变量名分别为ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET

  3. 安装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
  4. 创建一个DSW实例。

    创建实例的代码示例

    import os
    
    from alibabacloud_aiworkspace20210204.client import Client as AIWorkspaceClient
    from alibabacloud_aiworkspace20210204.models import (ListWorkspacesRequest,
                                                         ListImagesRequest)
    from alibabacloud_credentials.client import Client
    from alibabacloud_credentials.models import Config
    from alibabacloud_pai_dsw20220101.client import Client as DSWClient
    from alibabacloud_pai_dsw20220101.models import (GetInstanceRequest,
                                                     ListEcsSpecsRequest,
                                                     CreateInstanceRequest)
    from alibabacloud_tea_openapi.client import TeaException
    from alibabacloud_tea_openapi.models import Config as AliyunConfig
    
    # 配置访问凭证
    # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    # 强烈建议不要把AccessKey IDAccessKey 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概览