You need to enable JavaScript to run this app.
导航
GPU/CPU灵活配比使用指南
最近更新时间:2025.11.10 16:14:41首次发布时间:2025.02.06 11:16:41
复制全文
我的收藏
有用
有用
无用
无用

灵活配比 GPU/CPU 功能打破了传统云厂商“CPU/内存/GPU”强绑定的模式,允许用户在创建计算实例时,自定义 GPU 和 GPU 的资源组合。该功能主要面向资源管理员以及需要模型训练、推理等高性能计算任务的开发者,解决不同计算阶段对资源需求不一导致的成本浪费问题,帮助你最大化资源利用率。

说明

此功能为开白功能,且开白后不支持回滚(取消开白),请按需申请使用。

关键特性

  • 自定义资源配比:允许你在创建计算实例时,不再受限于固定模板,可以根据实际业务需求,自由指定所需的 GPU 卡数和 CPU 核心数。
  • 多种 GPU 卡类型支持:支持 NVIDIA A100、V100、T4 等多种主流 GPU 卡型号,以满足不同性能和成本要求的计算任务。

使用限制

  • 资源类型:当前仅支持预付费资源。后付费、按量后付费资源不支持。
  • 配额限制:单个实例最大可申请的 GPU 卡数受限于物理机规格,具体配额请参考你的配额中心。
  • 可用区限制:部分老旧可用区可能不支持自定义配比功能,请在创建时关注相关提示或标签。

创建资源规格模板

管理员可以为在资源组中为团队开发以及算法工程师配置资源规格模板 (CPU/GPU/内存) 。

说明

管理员权限请授权 MLPlatformAdminAccess,详细请参见权限管理

控制台资源组 > 预付费实例规格 > 负载规格配置。

  • 支持纯CPU负载(仅在预付费 GPU 实例展示):为了避免该实例下 CPU 、内存负载过高,影响 GPU 资源使用,用户可以在此限制 CPU 的资源使用
    • 限制仅使用 CPU 的任务,即纯 CPU 负载,关闭则不可在实例上提交纯CPU负载。
      • 开启 CPU 负载,可设定 CPU、内存使用的阈值,指纯 CPU 任务最大可以使用的 CPU资源和内存资源,管理员可以根据业务情况预留 GPU 任务足够的内容和CPU资源。
    • 若GPU实例上已有运行中的纯CPU负载,此时不支持关闭开关「支持纯CPU负载」,也不支持调小 CPU负载阈值。
  • 规格模板:设定资源规格的资源配比,包含 CPU、vCPU、内存,配置后,开发人员或者算法工程师可在 开发机、自定义任务、在线服务等选择资源时选择使用。
    • 若某规格模板正被负载任务使用,管理员暂不可删除、编辑该模板。
    • 使用限制:命令行提交任务时,平台不会强制校验规格,用户仍可自定义资源配置。

该功能需要额外开白使用,如需使用,请提交工单申请。

使用灵活配比

开发机/自定义任务/在线服务均支持GPU/CPU灵活配比功能。

  • 开发机路径:【开发机】-【创建开发机】-【环境配置-计算资源】
  • 自定义任务路径:【自定义任务】-【创建自定义任务】-【资源配置-实例配置】
  • 在线服务路径:【在线服务】-【创建服务】-【资源配置-计算资源】

以下说明为自定义任务中操作步骤:

  1. 点击自定义任务-创建自定任务,选择资源配置-实例配置。实例配置中支持选择GPU服务器以及CPU服务器。在使用GPU服务器时支持如下资源配置方式:
    1. 选择CPU服务器,则GPU规格置灰不可操作,仅可选择对应的CPU/内存资源。
    2. 选择GPU服务器,GPU卡数选择范围为0-8(详细取决队列GPU配额上限),可根据GPU选择的卡数选择对应的CPU/内存资源。
      1. 由于该种资源配置方式下,容易造成GPU资源碎片。因此当选择GPU机器而不分配GPU资源(选择0卡)时,建议启用「使用闲时资源」功能。此时造成碎片的CPU任务可能会被GPU任务抢占,以提升GPU利用率。
    3. 可选的GPU和CPU规格为队列配额上限,即若队列中无GPU资源,则此时不可见GPU规格选项。

Image

命令行

  • 在 volc cli中ml_task相关命令下增加对灵活配比方式指定资源的支持。
    • 自定义任务yaml定义中对指定资源的结构体做了扩展。

      • 非灵活配比方式提交自定义任务,格式不做变更。

        # self define e.g text_classfication
        TaskName: "非灵活配比方式提交的任务"
        # description for this task
        Description: ""
        # entry point command
        Entrypoint: "sleep infinity"
        Tags: []
        # the code path you want to upload locally
        UserCodePath: ""
        # remote path mount in training container
        RemoteMountCodePath: ""
        # user define env var
        Envs: []
        # queue created under Resource Group, empty as default queue
        ResourceQueueID: "q-xxxxxxxxxx"
        # distributed framework, support: TensorFlow PS,PyTorch DDP,Horovod,BytePS
        Framework: "Custom"
        TaskRoleSpecs:
            - RoleName: "worker"
              RoleReplicas: 1
              Flavor: "ml.c2i.large"
        ActiveDeadlineSeconds: 864000
        # enable tensor board or not
        EnableTensorBoard: false
        # storages
        Storages: []
        ImageUrl: "vemlp-cn-beijing.cr.volces.com/preset-images/python:3.10"
        CacheType: "Cloudfs"
        # user define retry options
        RetryOptions:
            EnableRetry: true
            MaxRetryTimes: 5
            IntervalSeconds: 120
            PolicySets:
                - "Failed"
        
      • 开启灵活配比方式提交自定义任务后,指定资源格式作了对应扩展。

        # self define e.g text_classfication
        TaskName: "灵活配比方式提交的gpu/cpu任务"
        # description for this task
        Description: ""
        # entry point command
        Entrypoint: "sleep inf"
        Tags: []
        # the code path you want to upload locally
        UserCodePath: ""
        # remote path mount in training container
        RemoteMountCodePath: ""
        # user define env var
        Envs: []
        # queue created under Resource Group, empty as default queue
        ResourceQueueID: "q-xxxxxxxxxx"
        # distributed framework, support: TensorFlow PS,PyTorch DDP,Horovod,BytePS
        Framework: "TensorFlowPS"
        TaskRoleSpecs:
            - RoleName: "worker"
              RoleReplicas: 1
              
              # 当使用灵活配比方式提交的GPU任务时,填写以下参数。提交CPU任务时请注释掉
              Flavor: "custom"
              ResourceSpec:
                Family: "ml.hpcpni2l"
                CPU: 105.000
                Memory: 1875.000
                GPUNum: 8
            # 当使用灵活配比方式提交的CPU任务时,填写以下参数。提交GPU任务时请注释掉
              Flavor: "custom"
              ResourceSpec:
                CPU: 2.000
                Memory: 8.000         
                         
        ActiveDeadlineSeconds: 864000
        # enable tensor board or not
        EnableTensorBoard: false
        # storages
        Storages: []
        ImageUrl: "vemlp-cn-beijing.cr.volces.com/preset-images/python:3.10"
        CacheType: "Cloudfs"
        # user define retry options
        RetryOptions:
            EnableRetry: false
            MaxRetryTimes: 5
            IntervalSeconds: 120
            PolicySets: []
        
    • submit 子命令

      • cli 端会对填写的CPU/内存做前置校验,只允许填写该用户在平台前端提交任务时可见的CPU/内存组合。
      • 不允许未灵活配比开白的用户使用灵活配比方式提交,提交时会报错拦截。
        • 允许灵活配比开白的用户使用之前非灵活配比方式提交,提交后会根据原方式下指定的Flavor自动转成对应的灵活配比方式的写法。
    • export 子命令

      • 支持对"灵活配比方式"指定资源的任务的导出。

已知问题
  1. 开白后仍然按原Flavor提交的方式新提交的负载(只可能是cli提交的)资源请求量相较原来会变小。
  2. 开白后用户使用原有yaml文件在混合队列提交任务时可能会出现部分不兼容情况,建议使用新的任务提交方式。
  3. 因为队列已申请quota的统计问题,存量的队列的Quota会变小。
    • 这期间可能会出现存量队列超Quota。
    • 存量的排队任务可能会有Quota但排队(用户可以重新按新的灵活配比方式提交这个任务)。
    • 因为存量队列Quota变小,有可能出现一定提不到这个队列的存量负载。