赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 分布式云容器平台ACK One
  4. 操作指南
  5. 注册集群
  6. 调度
  7. 通过ack-co-scheduler使用共享GPU调度

通过ack-co-scheduler使用共享GPU调度

  • 调度
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

共享GPU调度作为一种资源管理策略,允许多个任务或进程共享同一GPU。您可以在注册集群中使用共享GPU调度,帮您解决传统GPU调度的资源浪费问题,从而提升GPU利用率。

前提条件

  • 已创建注册集群,并将自建Kubernetes集群接入注册集群。具体操作,请参见创建注册集群并接入本地数据中心集群。

  • 已通过kubectl连接注册集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群。

  • 系统组件版本具体要求如下表所示。

    组件

    版本要求

    Kubernetes

    1.22及以上版本

    操作系统

    • CentOS 7.6(停止维护)

    • CentOS 7.7(停止维护)

    • Ubuntu 16.04

    • Ubuntu 18.04

    • Alibaba Cloud Linux 2(停止维护)

    • Alibaba Cloud Linux 3

计费说明

在使用共享GPU调度前,需开通云原生AI套件。关于云原生AI套件的介绍及计费说明,请参见云原生AI套件概述、云原生AI套件计费说明。

使用限制

  • 请勿将共享GPU调度的节点的CpuPolicy设置为static。

  • 共享GPU的DaemonSet的Pod在节点上的优先级不是最高的,所以节点资源有可能被其他优先级高的Pod抢占而导致被驱逐。如果想避免这个问题,可以对您实际使用的DaemonSet(如共享GPU显存的gpushare-device-plugin-ds)进行修改,加上priorityClassName: system-node-critical来保证其优先级。

步骤一:安装组件

  1. 在注册集群中安装ack-ai-installer组件。该组件可以提供共享GPU调度(包括共享隔离能力)、GPU拓扑感知调度等调度能力。

    1. 登录容器服务管理控制台,在左侧导航栏选择集群列表。

    2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Helm。

    3. 在Helm页面,单击创建。搜索并安装ack-ai-installer组件。

  2. 在注册集群中安装ack-co-scheduler组件。通过该组件,您可以自定义ResourcePolicy CR对象,使用多级弹性调度功能。

    1. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理。

    2. 在组件管理页面,搜索ack-co-scheduler组件,在卡片右下方单击安装。

步骤二:安装和使用GPU资源查询工具

  1. 下载kubectl-inspect-cgpu。需将执行文件下载至PATH环境变量包含目录下,本文以/usr/local/bin/为例。

    • 如果您使用的是Linux系统,您可以通过以下命令下载kubectl-inspect-cgpu。

      wget http://aliacs-k8s-cn-beijing.oss-cn-beijing.aliyuncs.com/gpushare/kubectl-inspect-cgpu-linux -O /usr/local/bin/kubectl-inspect-cgpu
    • 如果您使用的是macOS系统,您可以通过以下命令下载kubectl-inspect-cgpu。

      wget http://aliacs-k8s-cn-beijing.oss-cn-beijing.aliyuncs.com/gpushare/kubectl-inspect-cgpu-darwin -O /usr/local/bin/kubectl-inspect-cgpu
  2. 执行以下命令,为kubectl-inspect-cgpu添加执行权限。

    chmod +x /usr/local/bin/kubectl-inspect-cgpu

步骤三:创建GPU节点

创建GPU云服务器,并安装驱动和nvidia-container-runtime。具体操作,请参见创建和管理节点池。

说明
  • 如果您添加节点池时已经创建GPU节点并配置好环境,可以跳过此步骤。

  • 如果您没有安装驱动的脚本,请参见手动升级GPU节点驱动。

  • 使用共享GPU调度的节点需要有标签ack.node.gpu.schedule=share,您可以手动为云下节点打上该标签。对于云上节点,您可以使用节点池的节点标签功能将标签的值升级为ack.node.gpu.schedule=cgpu直接开启显存隔离能力。具体操作,请参见GPU节点调度属性标签说明。

步骤四:使用共享GPU调度

  1. 执行以下命令,查看集群GPU使用情况。

    kubectl inspect cgpu

    预期输出:

    NAME                           IPADDRESS       GPU0(Allocated/Total)  GPU Memory(GiB)
    cn-zhangjiakou.192.168.66.139  192.168.66.139  0/15                   0/15
    ---------------------------------------------------------------------------
    Allocated/Total GPU Memory In Cluster:
    0/15 (0%)
  2. 使用以下内容,创建GPUtest.yaml。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: gpu-share-sample
    spec:
      parallelism: 1
      template:
        metadata:
          labels:
            app: gpu-share-sample
        spec:
          schedulerName: ack-co-scheduler
          containers:
          - name: gpu-share-sample
            image: registry.cn-hangzhou.aliyuncs.com/ai-samples/gpushare-sample:tensorflow-1.5
            command:
            - python
            - tensorflow-sample-code/tfjob/docker/mnist/main.py
            - --max_steps=100000
            - --data_dir=tensorflow-sample-code/data
            resources:
              limits:
                # 单位为GiB,该Pod总共申请了3 GiB显存。
                aliyun.com/gpu-mem: 3 # 设置GPU显存大小。
            workingDir: /root
          restartPolicy: Never
  3. 执行以下命令,部署一个GPU示例应用,该应用申请3GiB显存。

    kubectl apply -f GPUtest.yaml
  4. 执行以下命令,查看集群GPU显存使用情况。

    kubectl inspect cgpu

    预期输出:

    NAME                           IPADDRESS       GPU0(Allocated/Total)  GPU Memory(GiB)
    cn-zhangjiakou.192.168.66.139  192.168.66.139  3/15                   3/15
    ---------------------------------------------------------------------------
    Allocated/Total GPU Memory In Cluster:
    3/15 (20%)             

    预期输出表明,节点cn-zhangjiakou.192.168.66.139共有15 GiB显存,已分配3 GiB显存。

相关文档

更多关于共享GPU调度的信息,请参见共享GPU调度。

相关文章

通过ack-co-scheduler组件实现协同调度 2025-04-18 18:12

与原生的Kubernetes调度器相比,容器服务ACK的调度器扩展出更多其他功能,例如Gang Scheduling、CPU拓扑感知、ECI弹性调度等。本文介绍通过为注册集群安装ack-co-scheduler组件的方式,以实现在您的本地集群中使用阿里云容器服务ACK的调度能力,让您能够便捷地使用容

通过ack-co-scheduler实现多级弹性调度 2025-04-18 18:12

在混合云场景下,通过多级弹性调度,可以使您线上线下混合部署的业务能更好的发挥混合云的优势,实现业务高可用,并能根据波峰波谷进行弹性资源申请等。本文介绍如何通过ack-co-scheduler进行多级弹性调度。 前提条件

通过ack-co-scheduler使用共享GPU调度 2025-04-18 18:12

共享GPU调度作为一种资源管理策略,允许多个任务或进程共享同一GPU。您可以在注册集群中使用共享GPU调度,帮您解决传统GPU调度的资源浪费问题,从而提升GPU利用率。 前提条件 已创建注册集群,并将自建Kubernetes集群接入注册集群。具体操作,请参见创建注册集

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号