You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
容器共享 mGPU
配置 mGPU 调度
复制全文
下载 pdf
配置 mGPU 调度
本文主要介绍在容器服务中使用 mGPU 功能,实现容器共享 GPU 的方法。
使用限制
  • Pod 不能同时使用 mGPU 与 RDMA 设备插件。
  • mGPU 无法与特权容器共同使用,否则将导致容器创建、删除失败。
  • 使用 mGPU 功能时,对集群和 GPU 卡有如下环境要求和使用限制。
项目
要求
Kubernetes 版本
不低于 v1.20.15-vke.4 版本。
集群 Kubernetes 版本的查看方法,请参见 FAQ
操作系统
创建集群时,操作系统 选择使用容器服务提供的 公共镜像,系统会自动为您配置该版本的操作系统。目前支持的操作系统包括:veLinux 1.0、veLinux 1.0 CentOS 兼容版、velinux 2.0、Ubuntu 20.04、Ubuntu 22.04。
内核版本
创建集群时,操作系统 选择使用容器服务提供的 公共镜像,系统会自动为您配置该版本的操作系统内核。 目前支持 5.4 版本的内核。
Nvidia 驱动版本
使用 v470、 v535、v550 或 v580 版本,具体小版本以官方支持为准,参见:操作系统镜像概述
创建 GPU 计算型节点池时,系统会自动为您配置该版本的 Nvidia 驱动。
GPU 卡
VKE 产品支持 Turing、Volta、Ampere、Hopper、Ada Lovelace 等主流 NVIDIA 架构的 GPU 卡型,更多卡型需求请咨询官方售前或技术支持。
不同类型 GPU 卡支持的节点实例规格参见:GPU 云服务器实例规格介绍
mGPU 个数(对应 Container 个数)
一个 GPU 上最多可创建 16 个 mGPU。 计算性能会随 mGPU 的创建数量衰减,建议按照容器申请的资源大小,规划单张 GPU 卡可共享部署的 mGPU 个数。
容器个数
使用 mGPU 时,单个 Pod 内的容器数建议不超过 5 个。
调度器说明
mGPU 必须与 scheduler-plugin 组件结合使用才能实现容器共享 GPU 调度。scheduler-plugin 组件是拓展原生 kube-scheduler 调度器的调度能力及策略,支持配置 GPU 节点和 GPU 显卡的 binpack/spread 策略,详情请请参见:scheduler-plugin
注意
本场景要求创建集群时必须安装 scheduler-plugin 组件,且首次配置完成后,不允许修改。因此,请在创建集群的 组件配置 步骤,根据实际情况配置 binpack/spread 调度策略。
若创建集群时未修改 scheduler-plugin 组件调度策略,则 mGPU 会采用如下默认调度策略:
GPU 节点调度策略
GPU 卡调度策略
调度方式
适用场景
Spread
Binpack
  • Pod 分散调度到 GPU 分配率低的节点。
  • 容器优先调度到该节点上装箱率高的 GPU 卡。
节点故障隔离性较强,碎片资源相对较少。
前提条件
已安装 mgpu 组件。详情请参见 mgpu
说明
如需使用 mGPU 算力分配策略能力,请确保 mgpu 组件的版本不低于 v0.0.3。详细的说明,请参见 配置 mGPU 算力分配策略
操作步骤
步骤一:创建 GPU 节点池
  1. 在左侧导航栏中选择 集群,单击目标集群名称,进入集群控制台。
  1. 在左侧导航栏中,单击 节点池
  1. 在节点池配置页面中,单击 创建节点池,根据您的实际需求,创建节点池。详细参数说明,请参见 创建节点池。其中:
  • 计算规格 中,选择 GPU 计算型 规格,为集群添加包含 GPU 的节点。
  • 高级配置 中,单击 添加节点标签,为节点池添加 GPU 调度标签。
  • 配置标签键为vke.node.gpu.schedule,标签值为mgpu。表示在该节点池中的节点上,开启容器共享 GPU 调度能力和 GPU 显存隔离能力。
注意
  • GPU 调度时使用的更多标签相关说明和注意事项,请参见 GPU 调度概述
  • 您可以通过开启或关闭节点池的 节点标签及污点自动更新 功能,控制是否同步标签到节点池中的存量节点中。关闭该功能时,可能导致存量节点上的 GPU 调度能力与预期不符,请谨慎配置。
  • 配置标签键为vke.volcengine.com/mgpu-compute-policy,标签值为fixed-shareguaranteed-burst-sharenative-burst-share。表示在该节点池中的节点上,配置算力分配策略。
说明
配置算力分配策略的详细说明,请参见 通过 mGPU 实现算力分配策略
步骤二:配置工作负载
本文以创建无状态负载(Deployment)为例进行介绍,详细创建步骤参见 创建无状态负载
通过控制台配置
  1. 在集群管理页面的左侧导航栏中,选择 工作负载 > 无状态负载
  1. 无状态负载 页面,创建无状态负载或更新已有的负载。在 容器配置 步骤的 资源配额 相关配置项中,根据需求配置 GPU 资源。
  • 配置项
    说明
    GPU 资源类型
    本文中选择 mGPU
    多卡共享配置
    mGPU 多卡共享功能,允许单个容器可使用同一节点上的多张 GPU 卡共同提供算力和显存资源。本文中保持关闭即可。多卡共享的配置方式,请参见 通过 mGPU 实现多卡共享
    GPU 算力
    配置容器的 GPU 算力,支持配置为 0.01~1 的两位小数、大于 1 的正整数。例如:0.01 或 2。
    说明
    mGPU 推荐的最小 GPU 算力为 0.05 且步长为 0.05(不足 1 Card 时),最小 GPU 显存为 1 GiB。该推荐值能够为您的容器间 GPU 共享场景,提供更好的体验。
    GPU 显存
    配置容器的 GPU 显存,这些显存将由多张 GPU 卡以等分的形式共同提供。
    • 当 GPU 算力为 0.01~1 的两位小数时,需输入大于等于 256 MiB,步长为 1 的 GPU 显存。
    • 当 GPU 算力为大于等于 1 的整数时,表示使用整张 GPU 卡算力,默认使用 GPU 卡的全部显存。
    显卡类型
    配置 Pod 需要调度的节点 GPU 型号。默认不限制型号,配置型号后将按照所选型号调度到指定 GPU 节点。
  1. 其他参数配置完成后,单击 确定,创建工作负载。
通过 kubectl 命令行配置
注意
在 mGPU 使用场景中,requests 必须与 limits 内容完全一致。
通过 YAML 创建工作负载,并实现 mGPU 调度示例,如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
name: mgpu-demo # Deployment 名称
namespace: default # Deployment 所属命名空间
spec:
replicas: 1 # Pod 实例个数
selector:
matchLabels:
app: mgpu-deployment
template:
metadata:
labels:
app: mgpu-deployment
spec:
containers:
- name: mgpu-container # 容器名称
image: doc-cn-beijing.cr.volces.com/vke/gpu-burn:1.0 # 容器镜像地址
command: ["/bin/sh"]
args: ["-c", "sleep infinity"]
resources:
requests: # 与 limits 保持一致
vke.volcengine.com/mgpu-memory: 4096
vke.volcengine.com/mgpu-core: 30
limits:
vke.volcengine.com/mgpu-memory: 4096 # GPU 显存,单位为 MiB,此处表示 GPU 显存为 4 GiB
vke.volcengine.com/mgpu-core: 30 # GPU 算力百分比,此处表示配置 30% 的 GPU 算力
ports:
- containerPort: 80
结果验证
查看 GPU 显卡信息
mGPU 提供 mGPU Client(mgpu-cli),支持开发者在终端查看 mGPU 相关信息。
  1. 登录 Pod 所在节点。您可以通过 ECS Terminal 登录,详细操作,请参见 ECS Terminal
  1. 执行如下命令,查看 GPU 物理显卡信息。
  • mgpu-cli device info -a
  • 系统返回如下,可以查看 GPU 显卡未分配的算力百分比、算力调度策略等信息。
  • +-----------------------------------+-------------+
    | device_id | 0 |
    +-----------------------------------+-------------+
    | compute_free_weight | 100 |
    +-----------------------------------+-------------+
    | compute_free_weight_online | 70 |
    +-----------------------------------+-------------+
    | compute_load_balance_mode | 0 |
    +-----------------------------------+-------------+
    | compute_policy | 0 |
    +-----------------------------------+-------------+
    | compute_qos_enabled | 1 |
    +-----------------------------------+-------------+
    | compute_qos_enabled_native_burst | 1 |
    +-----------------------------------+-------------+
    | compute_timeslice | 200 |
    +-----------------------------------+-------------+
    | compute_timeslice_native_burst | 4096 |
    +-----------------------------------+-------------+
    | compute_total_weight_native_burst | 30 |
    +-----------------------------------+-------------+
    | device_major | 510 |
    +-----------------------------------+-------------+
    | instance_deploy_mode | 1 |
    +-----------------------------------+-------------+
    | instance_major | 509 |
    +-----------------------------------+-------------+
    | online_offline_switch | 2 |
    +-----------------------------------+-------------+
    | user_instance_major | 511 |
    +-----------------------------------+-------------+
    | vmem_free_bytes | 23359324160 |
    +-----------------------------------+-------------+
    | vmem_limit | 4096 MiB |
    +-----------------------------------+-------------+
  • 指标名称
    指标含义
    compute_free_weight_online
    设备未分配的算力百分比,本例中为 70%。
    compute_load_balance_mode
    容器使用该设备时的负载均衡模式。
    compute_policy
    算力调度策略:
    • 0:表示fixed-share
    • 1:表示guaranteed-burst-share
    • 2:表示native-burst-share
    compute_timeslice
    算力时间片百分比。
    device_major
    /dev/mgpuX主设备号。
    instance_major
    /dev/mgpuXinstY/dev/mgpuXctl-$(container_id)主设备号。
    vmem_free_bytes
    该设备剩余的显存容量,单位: byte。
查看容器 mGPU 信息
  1. 登录 Pod 所在节点。您可以通过 ECS Terminal 登录,详细操作,请参见 ECS Terminal
  1. 执行如下命令,查看容器维度的 mGPU 信息。
  • mgpu-cli container info
  • 系统返回如下,可以看到容器维度的 mGPU 显存分配信息。
  • +--------------+-----------+-------------+---------+------------------+---------------------+----------------+-----------------------------+-----------------------+-------+--------------------------+--------+----------+-------+----------------+------------+---------------+------------------+
    | container_id | device_id | instance_id | pod_uid | compute_priority | compute_qos_enabled | compute_weight | compute_weight_native_burst | compute_weight_online | minor | nvidia/compute_timeslice | online | position | tasks | vmem_info | vmem_limit | vmem_priority | vmem_qos_enabled |
    +--------------+-----------+-------------+---------+------------------+---------------------+----------------+-----------------------------+-----------------------+-------+--------------------------+--------+----------+-------+----------------+------------+---------------+------------------+
    | 7b0622290a6e | 0 | 0 | N/A | 0 | 1 | 0 | 30 | 30 | 0 | 0 | 1 | normal | N/A | Free: 4096 MiB | 4096 MiB | 0 | 1 |
    +--------------+-----------+-------------+---------+------------------+---------------------+----------------+-----------------------------+-----------------------+-------+--------------------------+--------+----------+-------+----------------+------------+---------------+------------------+
  • 指标名称
    指标含义
    container_id
    容器 ID。
    device_id
    实例对应的设备 ID。
    instance_id
    实例 ID。
    compute_weight
    该实例分配的离线算力百分比。
    compute_weight_native_burst
    该实例在native burst策略下分配的算力百分比。
    compute_weight_online
    该实例分配的在线算力百分比。
    online
    是否为在线容器。
    vmem_info
    容器申请的显存信息,包含:空闲、PID、已使用。
    vmem_limit
    容器申请的容器显存限制。
查看 mGPU 监控
您可以通过云原生观测功能监控 mGPU 的各项监控指标。更多详情,请参见 AI 资源观测
相关文档
最近更新时间:2026.08.17 17:27:20
这个页面对您有帮助吗?
有用
有用
无用
无用