GPU虚拟化之隔离性最优型的最佳实践

容器引擎 CCE

  • 功能发布记录
  • 产品描述
    • 介绍
    • 优势
    • 使用限制
    • 应用场景
    • 核心概念
    • 特性
  • 开发指南
    • EFK日志采集系统部署指南
    • 创建LoadBalancer类型的Service
    • Prometheus监控系统部署指南
    • kubectl管理配置
    • 在CCE集群中使用-Network-Policy
  • 常用工具
    • 视图命令行场景示例
  • 产品公告
    • CCE 新版集群管理发布公告
    • CCE 控制台升级公告
    • Kubernetes 版本发布说明
      • CCE发布Kubernetes 1.18版本说明
      • CCE发布Kubernetes 1.30版本说明
      • CCE Kubernetes 版本更新说明
      • CCE发布Kubernetes 1.22版本说明
      • CCE发布Kubernetes 1.20版本说明
      • CCE发布Kubernetes 1.28版本说明
      • CCE发布Kubernetes 1.24版本说明
      • CCE发布Kubernetes 1.26版本说明
    • 安全漏洞修复公告
      • 漏洞CVE-2020-14386修复公告
      • 修复漏洞CVE-2021-30465公告
      • 漏洞CVE-2019-5736修复公告
      • 漏洞CVE-2025-1097、CVE-2025-1098等修复公告
      • 关于 runc 的安全问题(CVE-2024-21626)影响声明
  • 快速入门
    • 快速部署nginx应用
    • 使用CCE容器引擎流程概述
  • 典型实践
    • CCE集群网络说明及规划
    • CCE典型实践之容器网络模式选择
    • Pod异常问题排查
    • 通过 CCE Ingress 实现虚机和容器服务的统一接入
    • CCE集群使用Jenkins持续发布
    • CCE-访问公网实践
    • Linux系统配置常用参数说明
    • 用户使用自定义 CNI 插件方法
    • CCE典型实践之Guestbook搭建
    • 使用KMS对etcd数据加密
    • 添加CGroup V2节点
    • CCE容器运行时选择
    • CCE使用检查清单
    • VPC-ENI模式集群访问公网实践
    • 利用 Velero 实现将应用跨云迁移到 百度CCE
    • 使用 CNI 配置容器内网络参数
    • CCE Resource Recommender 用户文档
    • CCE集群中使用私有镜像实践
    • 云原生AI
      • 使用 CCE AITraining Operator 实现弹性容错训练
      • 部署 TensorFlow Serving 推理服务
      • GPU虚拟化之隔离性最优型的最佳实践
  • 操作指南
    • 多用户访问控制
    • 使用须知
    • 命名空间管理
      • 设置资源配额
      • 设置资源限制
      • 命名空间基本操作
    • 弹性伸缩
      • 使用 cce-autoscaling-placeholder 实现秒级弹性伸缩
      • CCE 集群节点自动伸缩
      • 容器定时水平伸缩(CronHPA)
      • 容器水平伸缩(HPA)
    • 存储管理
      • 使用云盘CDS
      • 使用并行文件存储PFS
      • 使用对象存储BOS
      • 使用并行文件存储PFS L2
      • 使用本地存储
      • 使用数据湖存储加速工具RapidFS
      • 使用文件存储CFS
      • 概述
    • 节点管理
      • 移出节点
      • kubelet容器监控只读端口风险提示
      • 管理污点
      • 设置GPU显存共享
      • 添加节点
      • 自定义Kubelet参数
      • 设置节点封锁
      • 节点排水
      • 管理节点标签
    • 组件管理
      • CCE CSI BOS Plugin 说明
      • Kube Scheduler 说明文档
      • CCE CSI PFS L2 Plugin
      • CCE NodeLocal DNSCache 说明
      • CCE Ingress NGINX Controller 说明
      • CCE RDMA Device Plugin 说明
      • CCE Node Problem Detector 说明
      • CCE Credential Controller 说明
      • Kube Controller Manager 说明
      • CCE Ingress Controller 说明
      • CCE GPU Manager 说明
      • CCE Backup Controller 说明
      • CCE QoS Agent 说明
      • CCE Descheduler 说明
      • 组件概述
      • CCE Image Accelerate 说明
      • CCE Network Plugin说明
      • Kube ApiServer 说明
      • CCE Log Operator 说明
      • CoreDNS 说明
      • CCE NPU Manager 说明
      • CCE AI Job Scheduler 说明
      • CCE LB Controller 说明
      • CCE P2P Accelerator 说明
      • CCE_Hybrid_Manager说明
      • CCE CSI PFS Plugin 说明
      • CCE Deep Learning Frameworks Operator 说明
      • CCE Node Remedier 说明
      • CCE CSI CDS Plugin 说明
      • CCE Ascend Mindx DL说明
      • CCE Calico Felix 说明
      • CCE Virtual Kubelet组件
      • CCE Fluid说明
      • CCE Onepilot 说明
      • CCE CronHPA Controller 说明
      • CCE 动态调度插件说明
    • 云原生AI
      • 云原生AI概述
      • GPU虚拟化
        • MPS 最佳实践&注意事项
        • GPU独占和共享说明
        • GPU在离线混部使用说明
        • GPU虚拟化适配表
        • 单GPU容器共享多卡使用说明
        • 共享GPU场景下的镜像构建注意事项
        • 关闭节点显存共享功能注意事项
      • 队列管理
        • 逻辑队列和物理队列使用说明
        • 修改队列
        • 删除队列
        • 新建队列
      • 任务管理
        • 基于 NCCL的RDMA分布式训练示例
        • 新建AITraining任务
        • 新建PaddlePaddle任务
        • 删除任务
        • 查看任务信息
        • 新建Mxnet任务
        • 新建TensorFlow任务
        • 新建Pytorch任务
      • 数据集管理
        • 删除数据集
        • 操作数据集
        • 查看数据集
        • 新建数据集
      • AI监控大盘
        • 接入监控实例并开启采集任务
        • NVIDIA芯片资源观测
          • AI Job Scheduler组件
          • GPUManager组件
          • GPU资源池总览
          • GPU节点资源
          • GPU工作负载资源
        • 昇腾芯片资源观测
          • 昇腾节点资源
          • 昇腾资源池总览
          • 昇腾工作负载资源
      • AI 加速套件
        • 使用AIAK-Inference 加速推理业务
        • 使用AIAK-Training Pytorch版
        • AIAK 简介
        • 使用 AIAK-Training 部署分布式训练任务
    • Helm管理
      • Helm模板
      • Helm实例
    • 应用管理
      • 部署
      • 保密字典
      • 服务
      • 配置字典
      • 容器组
      • 概述
    • 镜像仓库
      • 使用容器镜像构建服务
      • 镜像仓库基本操作
    • Serverless集群
      • 在Serverless集群中使用Service
      • 产品概述
      • 创建Serverless集群
    • 工作负载
      • 设置工作负载自动水平伸缩
      • Statefulset管理
      • 使用私有镜像创建工作负载
      • Job管理
      • 查看容器组
      • CronJob管理
      • Daemonset管理
      • 免密拉取容器镜像
      • Deployment管理
    • 节点组管理
      • 节点组管理
      • 节点组介绍
      • 升级节点组
      • 添加外部已有节点
      • 自定义节点组 Kubelet 配置
      • 添加备选机型
      • 节点组节点故障检测自愈
      • 配置扩缩容策略
    • 监控日志
      • 使用Prometheus监控集群
      • CCE 事件中心
      • 集群审计仪表盘
      • CCE 集群异常事件报警
      • Java应用监控
      • 集群服务画像
      • 日志管理
      • 集群审计
      • 日志中心
        • 在容器引擎控制台配置采集规则
        • 查看集群控制面日志
        • 日志概述
        • 查看业务日志
        • 使用CRD配置采集规则
    • 网络管理
      • CCE 集群内容器访问集群外服务
      • 容器网段空间耗尽如何继续扩容(VPC-ENI模式)
      • 容器网段空间耗尽如何继续扩容(VPC网络模式)
      • CCE IP Masquerade Agent 用户指南
      • 创建VPC-ENI模式集群
      • 对等连接场景下容器流量转发配置
      • 使用Network Policy网络策略
      • CCE 支持 IPv4 和 IPv6 双栈网络
      • 在CCE集群中使用NetworkPolicy
      • 网络编排
        • 集群 Pod 子网拓扑分布(容器网络 v2)
        • 容器网络 QoS 管理
        • VPC-ENI指定子网分配IP(容器网络 v2)
      • 网络连通性
        • 容器网络通过 NAT 网关访问公网
      • 网络维护
        • CCE容器网络常见错误码对应表
      • DNS
        • DNS 原理概述
        • DNS 问题排查指南
        • CoreDNS 组件手动升级指南
    • 虚拟节点
      • 管理虚拟节点
      • 配置BCIPod
      • 配置bci-profile
    • 备份中心
      • 备份概述
      • 恢复管理
      • 备份仓库
      • 备份管理
    • 巡检与诊断
      • GPU运行环境检查
      • 集群巡检
      • 故障诊断
    • 流量接入
      • NGINX Ingress 使用配置参考
      • CCE基于nginx-ingress实现灰度发布
      • BLB Ingress Annotation说明
      • 通过CCE使用K8S_Ingress
      • 通过YAML创建LoadBalancer_Service
      • 通过CCE使用K8S_Service
      • LoadBalancer Service Annotation说明
      • 使用直连 Pod 模式 LoadBalancer Service
      • Service复用已有负载均衡BLB
      • 通过YAML创建CCE_Ingress
      • 使用 NGINX Ingress
    • 权限管理
      • 配置集群OIDC认证
      • 配置IAM标签权限策略
      • 配置IAM自定义权限策略
      • 配置IAM预置权限策略
      • 权限概述
      • 配置预置RBAC权限策略
    • 配置管理
      • Secret管理
      • Configmap管理
    • 集群管理
      • 集群快照
      • CCE 安全组
      • 查看集群
      • 创建集群
      • 操作集群
      • 升级集群Kubernetes版本
      • 通过kubectl连接集群
      • 托管集群使用说明
      • CCE 支持 GPUSharing 集群
      • CCE节点资源预留说明
      • CCE 节点 CDS 扩容
  • 服务等级协议SLA
    • CCE服务等级协议SLA(V1.0)
  • Solution-Fabric
    • Fabric解决方案
  • API参考
    • 通用说明
    • 公共头和错误返回
    • 概述
  • 常见问题
    • windows下使用kubectl
    • 自动扩缩容常见问题
    • 通过kubectl创建简单的服务
    • 业务应用如何使用负载均衡?
    • 常见问题总览
    • 集群管理常见问题
  • API_V2参考
    • 通用说明
    • Instance相关接口
    • 附录
    • Autoscaler相关接口
    • 组件管理相关接口
    • 套餐适配相关接口
    • Task相关接口
    • 公共头和错误返回
    • Network相关接口
    • 服务域名
    • Cluster相关接口
    • Kubeconfig相关接口
    • InstanceGroup相关接口
    • RBAC相关接口
    • 概述
  • 产品定价
    • 产品定价
  • Solution-Xchain
    • 超级链解决方案
  • SDK
    • Go-SDK
      • 节点组管理
      • 节点管理
      • 集群管理
      • 初始化
      • 安装SDK工具包
      • 概述
所有文档
menu
没有找到结果,请重新输入

容器引擎 CCE

  • 功能发布记录
  • 产品描述
    • 介绍
    • 优势
    • 使用限制
    • 应用场景
    • 核心概念
    • 特性
  • 开发指南
    • EFK日志采集系统部署指南
    • 创建LoadBalancer类型的Service
    • Prometheus监控系统部署指南
    • kubectl管理配置
    • 在CCE集群中使用-Network-Policy
  • 常用工具
    • 视图命令行场景示例
  • 产品公告
    • CCE 新版集群管理发布公告
    • CCE 控制台升级公告
    • Kubernetes 版本发布说明
      • CCE发布Kubernetes 1.18版本说明
      • CCE发布Kubernetes 1.30版本说明
      • CCE Kubernetes 版本更新说明
      • CCE发布Kubernetes 1.22版本说明
      • CCE发布Kubernetes 1.20版本说明
      • CCE发布Kubernetes 1.28版本说明
      • CCE发布Kubernetes 1.24版本说明
      • CCE发布Kubernetes 1.26版本说明
    • 安全漏洞修复公告
      • 漏洞CVE-2020-14386修复公告
      • 修复漏洞CVE-2021-30465公告
      • 漏洞CVE-2019-5736修复公告
      • 漏洞CVE-2025-1097、CVE-2025-1098等修复公告
      • 关于 runc 的安全问题(CVE-2024-21626)影响声明
  • 快速入门
    • 快速部署nginx应用
    • 使用CCE容器引擎流程概述
  • 典型实践
    • CCE集群网络说明及规划
    • CCE典型实践之容器网络模式选择
    • Pod异常问题排查
    • 通过 CCE Ingress 实现虚机和容器服务的统一接入
    • CCE集群使用Jenkins持续发布
    • CCE-访问公网实践
    • Linux系统配置常用参数说明
    • 用户使用自定义 CNI 插件方法
    • CCE典型实践之Guestbook搭建
    • 使用KMS对etcd数据加密
    • 添加CGroup V2节点
    • CCE容器运行时选择
    • CCE使用检查清单
    • VPC-ENI模式集群访问公网实践
    • 利用 Velero 实现将应用跨云迁移到 百度CCE
    • 使用 CNI 配置容器内网络参数
    • CCE Resource Recommender 用户文档
    • CCE集群中使用私有镜像实践
    • 云原生AI
      • 使用 CCE AITraining Operator 实现弹性容错训练
      • 部署 TensorFlow Serving 推理服务
      • GPU虚拟化之隔离性最优型的最佳实践
  • 操作指南
    • 多用户访问控制
    • 使用须知
    • 命名空间管理
      • 设置资源配额
      • 设置资源限制
      • 命名空间基本操作
    • 弹性伸缩
      • 使用 cce-autoscaling-placeholder 实现秒级弹性伸缩
      • CCE 集群节点自动伸缩
      • 容器定时水平伸缩(CronHPA)
      • 容器水平伸缩(HPA)
    • 存储管理
      • 使用云盘CDS
      • 使用并行文件存储PFS
      • 使用对象存储BOS
      • 使用并行文件存储PFS L2
      • 使用本地存储
      • 使用数据湖存储加速工具RapidFS
      • 使用文件存储CFS
      • 概述
    • 节点管理
      • 移出节点
      • kubelet容器监控只读端口风险提示
      • 管理污点
      • 设置GPU显存共享
      • 添加节点
      • 自定义Kubelet参数
      • 设置节点封锁
      • 节点排水
      • 管理节点标签
    • 组件管理
      • CCE CSI BOS Plugin 说明
      • Kube Scheduler 说明文档
      • CCE CSI PFS L2 Plugin
      • CCE NodeLocal DNSCache 说明
      • CCE Ingress NGINX Controller 说明
      • CCE RDMA Device Plugin 说明
      • CCE Node Problem Detector 说明
      • CCE Credential Controller 说明
      • Kube Controller Manager 说明
      • CCE Ingress Controller 说明
      • CCE GPU Manager 说明
      • CCE Backup Controller 说明
      • CCE QoS Agent 说明
      • CCE Descheduler 说明
      • 组件概述
      • CCE Image Accelerate 说明
      • CCE Network Plugin说明
      • Kube ApiServer 说明
      • CCE Log Operator 说明
      • CoreDNS 说明
      • CCE NPU Manager 说明
      • CCE AI Job Scheduler 说明
      • CCE LB Controller 说明
      • CCE P2P Accelerator 说明
      • CCE_Hybrid_Manager说明
      • CCE CSI PFS Plugin 说明
      • CCE Deep Learning Frameworks Operator 说明
      • CCE Node Remedier 说明
      • CCE CSI CDS Plugin 说明
      • CCE Ascend Mindx DL说明
      • CCE Calico Felix 说明
      • CCE Virtual Kubelet组件
      • CCE Fluid说明
      • CCE Onepilot 说明
      • CCE CronHPA Controller 说明
      • CCE 动态调度插件说明
    • 云原生AI
      • 云原生AI概述
      • GPU虚拟化
        • MPS 最佳实践&注意事项
        • GPU独占和共享说明
        • GPU在离线混部使用说明
        • GPU虚拟化适配表
        • 单GPU容器共享多卡使用说明
        • 共享GPU场景下的镜像构建注意事项
        • 关闭节点显存共享功能注意事项
      • 队列管理
        • 逻辑队列和物理队列使用说明
        • 修改队列
        • 删除队列
        • 新建队列
      • 任务管理
        • 基于 NCCL的RDMA分布式训练示例
        • 新建AITraining任务
        • 新建PaddlePaddle任务
        • 删除任务
        • 查看任务信息
        • 新建Mxnet任务
        • 新建TensorFlow任务
        • 新建Pytorch任务
      • 数据集管理
        • 删除数据集
        • 操作数据集
        • 查看数据集
        • 新建数据集
      • AI监控大盘
        • 接入监控实例并开启采集任务
        • NVIDIA芯片资源观测
          • AI Job Scheduler组件
          • GPUManager组件
          • GPU资源池总览
          • GPU节点资源
          • GPU工作负载资源
        • 昇腾芯片资源观测
          • 昇腾节点资源
          • 昇腾资源池总览
          • 昇腾工作负载资源
      • AI 加速套件
        • 使用AIAK-Inference 加速推理业务
        • 使用AIAK-Training Pytorch版
        • AIAK 简介
        • 使用 AIAK-Training 部署分布式训练任务
    • Helm管理
      • Helm模板
      • Helm实例
    • 应用管理
      • 部署
      • 保密字典
      • 服务
      • 配置字典
      • 容器组
      • 概述
    • 镜像仓库
      • 使用容器镜像构建服务
      • 镜像仓库基本操作
    • Serverless集群
      • 在Serverless集群中使用Service
      • 产品概述
      • 创建Serverless集群
    • 工作负载
      • 设置工作负载自动水平伸缩
      • Statefulset管理
      • 使用私有镜像创建工作负载
      • Job管理
      • 查看容器组
      • CronJob管理
      • Daemonset管理
      • 免密拉取容器镜像
      • Deployment管理
    • 节点组管理
      • 节点组管理
      • 节点组介绍
      • 升级节点组
      • 添加外部已有节点
      • 自定义节点组 Kubelet 配置
      • 添加备选机型
      • 节点组节点故障检测自愈
      • 配置扩缩容策略
    • 监控日志
      • 使用Prometheus监控集群
      • CCE 事件中心
      • 集群审计仪表盘
      • CCE 集群异常事件报警
      • Java应用监控
      • 集群服务画像
      • 日志管理
      • 集群审计
      • 日志中心
        • 在容器引擎控制台配置采集规则
        • 查看集群控制面日志
        • 日志概述
        • 查看业务日志
        • 使用CRD配置采集规则
    • 网络管理
      • CCE 集群内容器访问集群外服务
      • 容器网段空间耗尽如何继续扩容(VPC-ENI模式)
      • 容器网段空间耗尽如何继续扩容(VPC网络模式)
      • CCE IP Masquerade Agent 用户指南
      • 创建VPC-ENI模式集群
      • 对等连接场景下容器流量转发配置
      • 使用Network Policy网络策略
      • CCE 支持 IPv4 和 IPv6 双栈网络
      • 在CCE集群中使用NetworkPolicy
      • 网络编排
        • 集群 Pod 子网拓扑分布(容器网络 v2)
        • 容器网络 QoS 管理
        • VPC-ENI指定子网分配IP(容器网络 v2)
      • 网络连通性
        • 容器网络通过 NAT 网关访问公网
      • 网络维护
        • CCE容器网络常见错误码对应表
      • DNS
        • DNS 原理概述
        • DNS 问题排查指南
        • CoreDNS 组件手动升级指南
    • 虚拟节点
      • 管理虚拟节点
      • 配置BCIPod
      • 配置bci-profile
    • 备份中心
      • 备份概述
      • 恢复管理
      • 备份仓库
      • 备份管理
    • 巡检与诊断
      • GPU运行环境检查
      • 集群巡检
      • 故障诊断
    • 流量接入
      • NGINX Ingress 使用配置参考
      • CCE基于nginx-ingress实现灰度发布
      • BLB Ingress Annotation说明
      • 通过CCE使用K8S_Ingress
      • 通过YAML创建LoadBalancer_Service
      • 通过CCE使用K8S_Service
      • LoadBalancer Service Annotation说明
      • 使用直连 Pod 模式 LoadBalancer Service
      • Service复用已有负载均衡BLB
      • 通过YAML创建CCE_Ingress
      • 使用 NGINX Ingress
    • 权限管理
      • 配置集群OIDC认证
      • 配置IAM标签权限策略
      • 配置IAM自定义权限策略
      • 配置IAM预置权限策略
      • 权限概述
      • 配置预置RBAC权限策略
    • 配置管理
      • Secret管理
      • Configmap管理
    • 集群管理
      • 集群快照
      • CCE 安全组
      • 查看集群
      • 创建集群
      • 操作集群
      • 升级集群Kubernetes版本
      • 通过kubectl连接集群
      • 托管集群使用说明
      • CCE 支持 GPUSharing 集群
      • CCE节点资源预留说明
      • CCE 节点 CDS 扩容
  • 服务等级协议SLA
    • CCE服务等级协议SLA(V1.0)
  • Solution-Fabric
    • Fabric解决方案
  • API参考
    • 通用说明
    • 公共头和错误返回
    • 概述
  • 常见问题
    • windows下使用kubectl
    • 自动扩缩容常见问题
    • 通过kubectl创建简单的服务
    • 业务应用如何使用负载均衡?
    • 常见问题总览
    • 集群管理常见问题
  • API_V2参考
    • 通用说明
    • Instance相关接口
    • 附录
    • Autoscaler相关接口
    • 组件管理相关接口
    • 套餐适配相关接口
    • Task相关接口
    • 公共头和错误返回
    • Network相关接口
    • 服务域名
    • Cluster相关接口
    • Kubeconfig相关接口
    • InstanceGroup相关接口
    • RBAC相关接口
    • 概述
  • 产品定价
    • 产品定价
  • Solution-Xchain
    • 超级链解决方案
  • SDK
    • Go-SDK
      • 节点组管理
      • 节点管理
      • 集群管理
      • 初始化
      • 安装SDK工具包
      • 概述
  • 文档中心
  • arrow
  • 容器引擎CCE
  • arrow
  • 典型实践
  • arrow
  • 云原生AI
  • arrow
  • GPU虚拟化之隔离性最优型的最佳实践
本页目录
  • 1. 概览
  • 2. 业务流程
  • 3. 前提条件
  • 3.1 集群创建
  • 3.2 安装必要组件:
  • 3.2.1 CCE GPU Manager组件:
  • 3.2.2 CCE Deep Learning Frameworks Operator和CCE AI Job Scheduler 组件
  • 3.3 节点开启显存共享步骤:
  • 3.4 批量打开节点的GPU虚拟化功能
  • 3.5 获得RBAC授权
  • 4. GPU 资源描述
  • 4.1 GPU卡型号和资源名称
  • 4.2 资源描述
  • 5. 创建任务
  • 5.1. 在控制台创建任务
  • 5.1.1 单卡/多卡独占
  • 5.1.2 单卡共享(不进行算力隔离,仅显存隔离)
  • 5.1.3 单卡共享(显存隔离和算力隔离)
  • 5.2. 在控制台创建工作负载
  • 5.3. 使用 YAML 创建任务/工作负载
  • 5.3.1 单卡独占
  • 5.3.2 多卡独占
  • 5.3.3 单卡共享(不进行算力隔离,仅显存隔离)
  • 5.3.4 单卡共享(显存隔离和算力隔离)
  • 5.3.6 单容器多卡能力(GPU显存/算力同时隔离&仅显存隔离)
  • 6. 共享GPU场景下的镜像构建注意事项
  • 7. (可选)验证GPU虚拟化的隔离效果
  • 8. 关闭显存共享

GPU虚拟化之隔离性最优型的最佳实践

更新时间:2025-08-21

1. 概览

本指南旨在帮助用户高效地使用百度云的 GPU虚拟化的隔离性最优型 服务。通过本文档,您将了解如何选择和配置 GPU 资源,实现 GPU 独占和共享模式,并确保任务的稳定性和安全性。

2. 业务流程

截屏2024-07-12 下午2.53.17.png

3. 前提条件

在开始使用 GPU虚拟化的隔离性最优型 服务前,您需要完成以下操作,才可以进行进一步配置。

3.1 集群创建

(可参考集群创建相关使用文档)

  1. 登录百度智能云平台:
  • 若没有用户名,请先完成注册,操作请参考注册百度账号。
  • 若有用户名,登录操作请参考登录。
  1. 登录成功后,选择“产品服务>云原生>容器引擎 CCE”,进入“集群管理>集群列表”页面。
  2. (可选)“集群列表”页面会显示所有已创建的 CCE 集群名称/ID、状态、版本等信息,并且用户可以通过集群名称进行搜索集群的操作。
  3. (可选)选择区域,请根据实际需求进行选择切换。容器引擎 CCE 服务目前支持华北—北京、华北—保定、华南-广州、华东-苏州、中国香港等区域。
  4. 点击“创建集群”,进入“选择模板”界面,根据模板介绍结合业务需求选择模板。
  • 默认单一区域下集群配额为20个,每个集群内节点配额为200个。
  • 如有需求,可以提工单提升配额。
  1. 点击“确认”,根据集群创建导航并结合业务需求配置。
  2. 付费及地域

image (2).png

  1. 基础配置

image (3).png

  1. 网络配置

容器网络为独立的地址空间,须与节点网络、节点子网、其他集群的容器网络相互独立。

image (4).png

  1. 节点配置
  • 用户可以选择“新建节点”。

image (5).png

  • 选择后点击添加节点,弹出“添加节点”对话框。

image (6).png

注意:在实例配置部分,若该节点想使用GPU虚拟化功能,配置时请参考隔离性最优型对应的GPU虚拟化适配表。为确保任务能够顺利创建,请根据适配表选择合适的实例,否则创建任务时识别不到不适配的GPU。

  1. 服务器配置

image (7).png

3.2 安装必要组件:

您需要在“集群>组件管理>云原生AI”中安装 CCE GPU Manager组件、CCE Deep Learning Frameworks Operator和CCE AI Job Scheduler 组件。

3.2.1 CCE GPU Manager组件:

组件参数说明:

参数 可选值 说明
组件类型 隔离性最优型 请注意对应的GPU虚拟化适配表。
GPU显存共享单位 GiB GPU显存切分的最小单位,目前仅支持GiB
精细化调度 开启/关闭 关闭精细化调度后,资源上报不区分具体的GPU型号。
开启精细化调度后,创建队列和任务时均支持选择具体的GPU型号。

image (8).png

3.2.2 CCE Deep Learning Frameworks Operator和CCE AI Job Scheduler 组件

进入组件管理部分安装即可

image (9).png

3.3 节点开启显存共享步骤:

  1. 登录百度智能云官网,并进入管理控制台。
  2. 选择“产品服务 > 云原生 > 容器引擎 CCE”,进入 集群管理 > 集群列表 。
  3. 在集群列表页面中,单击目标集群名称进入集群管理页面。
  4. 选择页面左侧 节点管理 > Worker ,进入节点列表页面。
  5. 在节点列表中,选择需要设置显存共享的 GPU 节点,单击 开启显存共享。
  6. 打开显存共享开关后单击 确定,完成设置显存共享。

image (10).png

3.4 批量打开节点的GPU虚拟化功能

方法一:批量针对已有节点添加虚拟化节点标签

  1. 登录百度智能云官网,并进入管理控制台。
  2. 选择“产品服务 > 云原生 > 容器引擎 CCE”,进入 集群管理 > 集群列表 。
  3. 在集群列表页面中,单击目标集群名称进入集群管理页面。
  4. 选择页面左侧 节点管理 > Worker ,进入节点列表页面。
  5. 点击标签与污点管理进入

46ab850449e4d5d906fed69fab4dbe57.png

  1. 点击编辑标签,输入标签键和值,点击确定
Plain Text
1标签键:cce.baidubce.com/gpu-share-device-plugin
2值:enable

截屏2024-07-10 下午6.43.03.png

方法二:使用节点组默认添加节点标签

  1. 登录百度智能云官网,并进入管理控制台。
  2. 选择“产品服务 > 云原生 > 容器引擎 CCE”,进入 集群管理 > 集群列表 。
  3. 在集群列表页面中,单击目标集群名称进入集群管理页面。
  4. 选择页面左侧 节点管理 > 节点组,进入节点组页面。
  5. 点击创建节点组进入

截屏2024-07-10 下午6.48.23.png

  1. 填写节点组基本配置:
  • 节点组名称:自定义,支持大小写字母、数字、中文以及“-_ /.”;必须以字母开头,长度1-65
  • VPC网络:集群的VPC网络
  • 节点配置:节点组中节点的配置,包括可用区、节点子网、实例规格等。后续扩容节点组将以此配置作为创建节点的模版。创建节点时填写的节点数量即初始设置的期望节点数
  • 自动伸缩:启用自动伸缩,系统将根据节点配置和自动伸缩配置,在符合扩容条件时,自动进行扩容操作。并自动计算节点费用、生成订单。扩容操作完成后,可自行查看节点和订单信息
  • 高级设置:支持对扩缩容策略、kubelet数据目录、容器数据目录、部署前执行脚本、部署后执行脚本、自定义kubelet参数、封锁节点(cordon)、资源标签、K8S标签、污点设置(Taints)、注释(Annotations)等参数的设置。 配置K8S标签
Plain Text
1标签键:cce.baidubce.com/gpu-share-device-plugin
2值:enable

666eb846ef822dfe9ffd01b382464d54.png

3.5 获得RBAC授权

注意:若您是子用户,您需要拥有主账号或具有管理员权限的子用户的RBAC授权,您才能新建任务。若不是,则不需要此步骤。

  1. 获得IAM授权。子用户需要先在IAM中至少被授予CCE的只读权限,详细的授权流程请参考配置IAM预置权限策略
  2. 获得RBAC授权。详细的授权流程请参考配置预置RBAC权限策略

4. GPU 资源描述

4.1 GPU卡型号和资源名称

正确指定 GPU 卡型号对应的资源名称是使用 GPU虚拟化的隔离性最优型 的关键,在创建任务前,了解GPU资源配置和适配才可以正确的创建任务。若需指定 GPU 卡算力资源或显存资源,请在资源名称后加上“_core”或“_memory”。

以下是常见 GPU 卡型号及其对应的资源名称:

GPU卡型号 资源名称
NVIDIA V100 16GB baidu.com/v100_16g_cgpu
NVIDIA V100 32GB baidu.com/v100_32g_cgpu
NVIDIA T4 baidu.com/t4_16g_cgpu
NVIDIA A100 80GB baidu.com/a100_80g_cgpu
NVIDIA A100 40GB baidu.com/a100_40g_cgpu
NVIDIA A800 80GB baidu.com/a800_80g_cgpu
NVIDIA A30 baidu.com/a30_24g_cgpu
NVIDIA A10 baidu.com/a10_24g_cgpu
NVIDIA RTX3090 baidu.com/rtx_3090_cgpu
NVIDIA RTX4090 baidu.com/rtx_4090_cgpu
NVIDIA H800 baidu.com/h800_80g_cgpu
NVIDIA L20 baidu.com/l20_cgpu
NVIDIA H20 96GB baidu.com/h20_96g_cgpu
NVIDIA H20 141GB baidu.com/h20_141g_cgpu
NVIDIA H20z baidu.com/h20z_141g_cgpu

4.2 资源描述

资源名称 类型 单位 说明
baidu.com/xxx_xxx_cgpu int64 1 GPU 卡数量,共享场景下请填 1。
单容器多卡情况下表示申请的GPU共享卡个数
baidu.com/xxx_xxx_cgpu_core int64 5% GPU 卡算力,最小单位 5%
baidu.com/xxx_xxx_cgpu_memory int64 GiB GPU 卡显存
baidu.com/xxx_xxx_cgpu_memory_percent int64 1% 按百分比申请 GPU 卡显存,最小单位 1%

5. 创建任务

用户可通过CCE控制台创建任务/工作负载或者YAML 创建任务/工作负载,可根据您的需求选择不同的方式创建。创建的细节如下文所示。

注意:共享场景下的镜像构建注意事项在第七部分有详细说明。

5.1. 在控制台创建任务

操作步骤(可参考云原生AI任务管理)

  1. 登录百度智能云官网,并进入管理控制台。
  2. 选择“产品服务 > 云原生 > 容器引擎 CCE”,单击进入容器引擎管理控制台。
  3. 单击左侧导航栏中的集群管理 > 集群列表。
  4. 在集群列表页面中,单击目标集群名称进入集群管理页面。
  5. 在集群管理页面单击云原生AI > 任务管理。
  6. 在任务管理页面单击新建任务。
  7. 在新建任务页面中,完成任务基本信息配置:

image (11).png

  • 任务名称:自定义任务名称,支持大小写字母、数字、以及-_ /.特殊字符,必须以中文或字母开头,长度 1-65。
  • 命名空间:选择新建任务所在的命名空间。
  • 选择队列:选择新建任务关联的队列。
  • 任务优先级:选择任务对应的任务优先级。
  • 允许超发:允许超发将使用任务抢占超发功能,需要先安装CCE AI Job Scheduler组件并升级到1.4.0及以上版本。
  • 延迟容忍:开启后系统将优先把该任务或工作负载调度到集群碎片资源。
  1. 完成代码基本信息配置:
  • 代码配置类型:指定代码配置方式,目前支持“BOS文件”、“本地文件上传”与“暂不配置”。
  • 执行命令:指定代码的执行命令。

    9.完成数据相关信息配置:

  • 设置数据源:当前同时支持数据集和持久卷声明。选择数据集时列出所有可用的数据集,选择后会同时选择与数据集同名的持久卷声明;使用持久卷声明时直接选择即可。

    10.点击“下一步”,进入容器相关配置。

    11.完成任务类型相关信息配置:

  • 选择框架:选择“ TensorFlow ”。
  • 训练方式:指定训练方式为“单机”或“分布式”。
  • 选择角色:训练方式为“单机”时,只能选择“Woker”;训练方式为“分布式”时,可额外选择“PS”、“Chief”、“Evaluator”。 12.完成容器组相关信息配置,可以根据需要同时进行高级设置。
  • 期望Pod数:指定容器组的Pod数目。
  • 重启策略:指定容器组的重启策略,可选择的策略有“失败重启”或“从不重启”。
  • 镜像地址:指定容器的镜像拉取地址,也可以直接点击“选择镜像”,选择需要使用的镜像。共享GPU场景下镜像构建注意事项在第六部分。
  • 镜像版本:指定镜像的版本,若不指定默认拉取latest版。
  • 容器配额:指定容器的CPU、内存、GPU资源相关信息。 您可在任务的容器组配置中指定GPU类型为独占或共享,不同类型如下。

5.1.1 单卡/多卡独占

  • 当您指定GPU类型为独占GPU时,若希望任务使用整张GPU卡资源,操作步骤如下:
  1. 选择 GPU 卡型号。
  2. 输入 GPU 卡数量,范围为 [1~当前集群中单节点所含 GPU 卡最大数量]。
  • 若希望任务仅使用CPU和内存资源,无需使用GPU资源,操作步骤如下:

GPU卡型号保持为空,仅输入所需CPU和内存资源量。

image (12).png

5.1.2 单卡共享(不进行算力隔离,仅显存隔离)

当您指定GPU类型为共享GPU时,若希望任务只进行显存隔离,算力无需隔离,操作步骤如下:

  1. 选择 GPU 卡型号。
  2. 算力开关关闭。
  3. 输入所需 GPU 显存,范围为 [1~所选 GPU 卡显存大小]。

截屏2024-07-04 上午10.38.14.png

5.1.3 单卡共享(显存隔离和算力隔离)

当您指定GPU类型为共享GPU时,若希望任务同时进行显存隔离和算力隔离,操作步骤如下:

  1. 选择GPU卡型号。
  2. 打开算力开关,输入所需算力值百分比,百分比大小应为[5~100正整数]。
  3. 再输入所需GPU显存,显存大小应为正整数,范围为[1~所选GPU卡显存大小]。

截屏2024-07-04 上午10.39.37.png

13.完成任务高级信息相关配置。

  • 最大训练时长:指定允许的最大训练时长,若不指定,则为不限制时间。
  • 私有仓库凭证:若需要使用私有镜像仓库,请在此处添加对应镜像仓库的访问凭证。
  • Tensorboard:若需要任务可视化时,可开启Tensorboard功能,开启后需要指定“服务类型”与“ 训练日志读取路径”。
  • K8S标签:指定任务对应的K8S Label。
  • 注释:指定任务对应的Annotation。
  1. 点击“完成”按钮,完成任务的新建。

5.2. 在控制台创建工作负载

若您通过CCE控制台创建工作负载(操作步骤可参考工作负载),您可在工作负载的容器配置中指定GPU类型为独占或共享。独占和共享的资源输入限制和上文中AI任务的创建一致。

image (13).png

5.3. 使用 YAML 创建任务/工作负载

若您通过Yaml创建任务或工作负载(详细配置可参考云原生AI任务管理、工作负载),您可在Yaml配置中指定所需GPU卡资源为独占或共享,具体示例如下:

备注:

  1. 如使用Yaml的方式创建任务,调度器必须指定 schedulerName: volcano
  2. GPU显存资源必须申请,且 baidu.com/v100_32g_cgpu_memory 和 baidu.com/v100_32g_cgpu_memory_percent只能填写一个,不可同时填写
  3. 卡的资源名称根据第四部分资源描述填写,不同卡型号对应不同的资源名称。

5.3.1 单卡独占

Plain Text
1resources:
2  requests:
3    baidu.com/v100_32g_cgpu: 1 // 1卡
4    cpu: "4"
5    memory: 60Gi
6  limits:
7    baidu.com/v100_32g_cgpu: 1 // limit与request必须一致
8    cpu: "4"
9    memory: 60Gi

5.3.2 多卡独占

Plain Text
1resources:
2  requests:
3    baidu.com/v100_32g_cgpu: 2 // 2卡
4    cpu: "4"
5    memory: 60Gi
6  limits:
7    baidu.com/v100_32g_cgpu: 2 // limit与request必须一致
8    cpu: "4"
9    memory: 60Gi

5.3.3 单卡共享(不进行算力隔离,仅显存隔离)

Plain Text
1resources:
2  requests:
3    baidu.com/v100_32g_cgpu_memory: 10 // 10GB,用户可根据自己的需求填写
4    cpu: "4"
5    memory: 60Gi
6  limits:
7    baidu.com/v100_32g_cgpu_memory: 10
8    cpu: "4"
9    memory: 60Gi

5.3.4 单卡共享(显存隔离和算力隔离)

Plain Text
1resources:
2  requests:
3    baidu.com/v100_32g_cgpu_core: 50 // 50%, 0.5卡算力,用户可根据自己的需求填写
4    baidu.com/v100_32g_cgpu_memory: 10 // 10GB,用户可根据自己的需求填写
5    cpu: "4"
6    memory: 60Gi
7  limits:
8    baidu.com/v100_32g_cgpu_core: 50 // 
9    baidu.com/v100_32g_cgpu_memory: 10
10    cpu: "4"
11    memory: 60Gi

5.3.6 单容器多卡能力(GPU显存/算力同时隔离&仅显存隔离)

通过指定资源描述符使用sGPU的单容器多卡能力,分为GPU显存/算力同时隔离以及仅隔离显存的场景。

  1. GPU显存/算力同时隔离

单张共享卡的资源:

  • 每张 GPU卡的算力资源:baidu.com/xxx_xxx_cgpu_core/baidu.com/xxx_xxx_cgpu
  • 每张 GPU卡的显存资源:baidu.com/xxx_xxx_cgpu_memory/baidu.com/xxx_xxx_cgpu

资源描述示例,如下示例代表:该Pod共申请50%的算力,以及10GiB的显存,2张GPU共享卡。所以每张GPU共享卡的资源为 25%的算力以及5GiB显存。

Plain Text
1resources:
2limits:
3baidu.com/a10_24g_cgpu: "2"
4baidu.com/a10_24g_cgpu_core: "50"
5baidu.com/a10_24g_cgpu_memory: "10"
  1. GPU显存隔离,算力共享

单张共享卡的资源:

  • 每张 GPU卡的算力资源:与其他容器共享100%的算力。
  • 每张 GPU卡的显存资源:baidu.com/xxx_xxx_cgpu_memory/baidu.com/xxx_xxx_cgpu

资源描述示例,如下示例代表:该Pod共申请10GiB的显存,2张GPU共享卡。所以每张GPU共享卡的资源为 共享100%的算力以及5GiB显存。

Plain Text
1resources:
2          limits:
3            baidu.com/a10_24g_cgpu: "2"
4            baidu.com/a10_24g_cgpu_memory: "10"
  1. 使用限制
  • 单卡的显存/算力需要为正整数, 即算力(baidu.com/xxx_xxx_cgpu_core/baidu.com/xxx_xxx_cgpu),显存(baidu.com/xxx_xxx_cgpu_memory/baidu.com/xxx_xxx_cgpu )需为正整数。
  • 单卡的显存/算力需要大于等于显存/算力的最小单位。
  • 如果没有申请_cgpu_memory或者_cgpu_memory_percent,是不允许申请_cgpu_core
  • 显存隔离最小单位:1GiB。

6. 共享GPU场景下的镜像构建注意事项

  1. 在共享GPU场景下,您在创建任务选择镜像时,需要注意该镜像的环境变量。

以下环境变量会由 GPU Manager的组件进行注入,请不要添加到镜像的环境变量里面:

环境变量 说明
NVIDIA_VISIBLE_DEVICES 可见 GPU 设备列表,由调度器分配
NVIDIA_VISIBLE_GPUS_SLOT 可见 GPU 设备插槽,由调度器分配
NVIDIA_VISIBLE_GPUS_UUID UUID 形式的可见 GPU 设备列表,由调度器分配
LD_LIBRARY_PATH 不推荐设置 LD_LIBRARY_PATH 环境变量,如果非要设置,需要把 /usr/lib64 目录也按 LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH 形式添加进去
CUDA_MPS_ACTIVE_THREAD_PERCENTAGE MPS 算力隔离设置,由调度器分配
CUDA_MPS_LOG_DIRECTORY MPS 相关日志地址
CUDA_MPS_PIPE_DIRECTORY 和 MPS SERVER 通信的地址
CGPUX_XXX 以 CGPU 开头的环境变量,用于运行显存&算力隔离功能,比如 CGPU0_PRIORITY,CGPU0_SHAREMODE
CGPU_COUNT 设备数量
SGPU_DISABLE 使用隔离最优型时,表示是否使用虚拟化的方式使用 GPU
  1. 构建镜像时,请不要直接将集群中运行的 GPU 容器保存为镜像使用,此种方式保存的镜像会包含GPU Manager组件注入的环境变量,造成虚拟化功能不符合预期或者不可用。

7. (可选)验证GPU虚拟化的隔离效果

您在完成以上操作后,若您想验证被共享的GPU是否按照所设置的隔离参数运行,可通过以下步骤查看。

  1. 登录百度智能云官网,并进入管理控制台。
  2. 选择“产品服务 > 云原生 > 容器引擎 CCE”,单击进入容器引擎管理控制台。
  3. 单击左侧导航栏中的集群管理 > 集群列表。
  4. 在集群列表页面中,单击目标集群名称进入集群管理页面。
  5. 在集群管理页面单击工作负载>容器组。
  6. 单击您要查看的Pod名称

截屏2024-07-09 下午4.39.57.png

  1. 点击WebSSH,指令类型选择/bin/sh,点击连接

image (18).png

  1. 输入命令行:nvidia-smi,按下回车键
参数 说明
GPU Name 列出了服务器上的所有GPU。
Memory-Usage 显示了每个GPU的内存使用情况。
GPU-Util 显示了每个GPU的利用率。
Processes 显示了正在使用GPU的进程。

8. 关闭显存共享

1.关闭显存共享功能的限制条件

已开启显存共享功能的节点需要关闭显存共享功能时,系统会验证当前节点上是否有正在运行的显存共享任务,需等该节点所有显存共享任务都运行完成后才能够关闭显存共享功能,否则可能导致显存共享任务中断或任务结束时无法正常回收资源,影响节点上的后续任务。

您可以通过2、3提供的命令查看开启了显存共享的节点和查看该节点上显存共享任务的情况。

4d15fe7778cb7866f8314133e837f61f.png

2.查询开启显存共享的节点

Plain Text
1kubectl get nodes -l cce.baidubce.com/gpu-share-device-plugin=enable

该命令会列出开启了显存共享功能的所有节点,这些节点上都有标签cce.baidubce.com/gpu-share-device-plugin:enable。

3.查询运行显存共享任务的Pods

Plain Text
1kubectl get pods --all-namespaces -o json | jq -r '.items[] | select(.status.phase=="Running") | select(.spec.containers[].resources.limits // empty | keys[] // empty | test("baidu.com/.*(_core|_memory|_memory_percent)$")) | "\(.metadata.name) \(.spec.nodeName)"' | sort | uniq

该命令会列出所有在运行状态且使用了显存共享功能的 Pods,以及它们所在的节点。这些节点都无法马上关闭显存共享功能,需要等这些Pods结束以后才能关闭节点显存共享功能。

4.使用label命令修改节点标签的风险

除控制台方式外,可以使用kubectl label nodes命令来修改节点标签为cce.baidubce.com/gpu-share-device-plugin:disable,关闭节点的显存共享功能,修改前请关注以下风险:

  • 业务中断:修改节点标签之后会触发非共享场景的环境安装,导致正在运行的显存共享任务中断或者结束时无法正常回收资源,影响节点上的后续任务。
  • 调度失败:修改标签之后,调度器可以向该节点调度非共享类型的任务,可能存在单机同时运行两种类型的任务,会有错卡,共享显存功能异常等问题。

为了避免这些风险,请始终确保集群中的节点标签正确地反映节点的能力,并且只有在确定节点上没有正在运行的显存共享任务时,再关闭节点显存共享功能。

  • 算力隔离最小值:5%。

上一篇
部署 TensorFlow Serving 推理服务
下一篇
操作指南