创建DSW实例

更新时间:2025-03-25 06:19:10
重要

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

交互式建模(DSW)是PAI的云端机器学习开发IDE,集成了Notebook、VSCode、Terminal多种开发环境,免去您手动购买、安装和启动云服务器ECS,使用DSW即可快速开始AI模型代码编写、调试和运行。

前提条件

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

  2. 操作账号授权。当使用主账号操作时,可跳过此步。当使用RAM账号时,需要具有算法开发和算法运维角色,或空间管理员角色。操作账号授权请参见管理工作空间 > 成员角色配置。

通过控制台创建实例

初次使用DSW的用户,推荐您使用控制台的方式创建实例,除此之外,DSW还提供了通过Python SDK创建实例的方式。

重要

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

  1. 进入DSW页面。

    1. 登录PAI控制台

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

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

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

  2. 单击新建实例

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

    基础信息

    参数

    描述

    参数

    描述

    实例名称

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

    标签

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

    资源信息

    参数

    描述

    参数

    描述

    资源类型

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

      说明

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

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

      • 竞价购买:可以选用竞价实例(抢占式实例),降低运行成本。详情请参见竞价购买DSW实例

        当前仅华东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/下。

    更多关于挂载的详情,请参见DSW挂载配置

    存储路径挂载

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

    • 支持类型:OSS、通用型NAS、极速型NAS、CPFS、智算CPFS。

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

    更多关于挂载的详情,请参见DSW挂载配置

    工作目录

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

    网络信息

    参数

    描述

    参数

    描述

    专有网络配置

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

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

    公网访问网关

    支持以下配置方法:

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

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

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

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

    说明

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

    访问配置

    参数

    描述

    参数

    描述

    启用SSH

    用于远程连接实例,选择专有网络后可配置。若您配置了自定义镜像,请确认自定义镜像安装了sshd。

    SSH公钥

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

    说明

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

    SSH访问方式

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

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

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

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

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

    自定义服务

    用于在公网中访问DSW中启动的服务,详情请参见在公网中访问实例中的服务

    创建VPC内访问域名

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

    高级信息

    参数

    描述

    参数

    描述

    可见范围

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

    实例所有者

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

    展开更多配置:实例RAM角色

    参数

    描述

    实例RAM角色

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

    实例RAM角色可配置为:

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

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

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

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

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

相关文档

  • DSW支持接入多种数据源,包括OSS、NASMaxCompute,详情请参见读写OSS、MaxCompute数据

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

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

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

  • 创建实例后,您可以将当前运行中的DSW实例环境保存为自定义镜像以便后续使用。详情请参见制作DSW实例镜像

附录: 通过Python SDK创建实例

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

    • Python版本 >= 3.7。

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

    pip install alibabacloud_credentials
  2. 获取账号AccessKey。本示例使用AK信息配置访问凭证,为防止账号信息泄露,建议您将AccessKey配置为环境变量,idsecret环境变量名分别为ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_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_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概览

  • 本页导读 (1)
  • 前提条件
  • 通过控制台创建实例
  • 基础信息
  • 资源信息
  • 环境信息
  • 网络信息
  • 访问配置
  • 高级信息
  • 相关文档
  • 附录: 通过Python SDK创建实例