GPU资源切分(MIG) 1确保已安装支持MIG的NVIDIA驱动。你可以通过nvidia-smi命令查看右上角的驱动版本推荐 使用最新的vGPU软件或企业版驱动如550版本。2确定你的显卡是支持多实例GPU (MIG)技术的专业显卡。MIG M.: 显示当前该GPU的MIG模式状态。Disabled: 表示硬件支持但功能未开启这是默认状态。Enabled/N/A:Enabled表示已开启N/A则表示显卡本身不支持MIG。3打开MIG# 开启持久化模式推荐 sudo nvidia-smi -pm 1# 开启MIG模式针对所有GPU或指定GPU如 -i 0 sudo nvidia-smi -mig 1下图是开启GPU0的MIG命令sudo nvidia-smi -mig 1 -i 04执行切分前确保目标GPU上没有正在运行的进程如训练任务、监控程序等否则命令可 能失败。5查询GPU的切分方式nvidia-smi mig -lgip -i 0命令详解:mig: 进入MIG管理子命令。-lgip: 列出所有可用的GPU实例配置文件。这个命令会输出一个表格展示所有可用的配置文件Profiles如上文对话中你收到的输出所示。每个配置都定义了切分后的“虚拟GPU”拥有的资源如显存大小、SM流处理器数量等。​参数说明6切分MIG# 使用配置文件ID 9 来创建 MIG 1g.42gb 实例sudo nvidia-smi mig -i 0 -cgi 99 -C7如果显卡多的话可以写成脚本#!/bin/bash# MIG自动化配置脚本 - 适用于8张RTX 6000D Blackwell# 功能检测并启用MIG模式输出切分配置建议set -e # 遇到错误立即退出# 颜色输出定义RED\033[0;31mGREEN\033[0;32mYELLOW\033[1;33mBLUE\033[0;34mNC\033[0m # No Color# 日志函数log_info() {echo -e ${GREEN}[INFO]${NC} $1}log_warn() {echo -e ${YELLOW}[WARN]${NC} $1}log_error() {echo -e ${RED}[ERROR]${NC} $1}log_step() {echo -e ${BLUE}[STEP]${NC} $1}# 获取GPU数量get_gpu_count() {nvidia-smi --query-gpuname --formatcsv,noheader | wc -l}# 检查MIG状态check_mig_status() {local gpu_id$1local status$(nvidia-smi -i $gpu_id --query-gpumig.mode.current --formatcsv,noheader 2/dev/null | tr -d )echo $status}# 启用单张GPU的MIG模式enable_mig_for_gpu() {local gpu_id$1log_info 正在为 GPU $gpu_id 启用MIG模式...sudo nvidia-smi -i $gpu_id -mig 1if [ $? -eq 0 ]; thenlog_info GPU $gpu_id MIG模式已启用log_warn 注意MIG模式已启用但在当前会话中可能显示为 Pending 状态log_info 你仍然可以立即创建 MIG 实例重启后配置将持久化elselog_error GPU $gpu_id MIG模式启用失败return 1fi}# 查询GPU支持的MIG配置文件query_mig_profiles() {local gpu_id$1log_info GPU $gpu_id 支持的MIG配置sudo nvidia-smi mig -lgip -i $gpu_id}# 创建MIG实例create_mig_instances() {local gpu_id$1local profile$2local count$3log_info 在 GPU $gpu_id 上创建 $count 个 $profile 实例...# 构建配置字符串local configfor i in $(seq 1 $count); doif [ -z $config ]; thenconfig$profileelseconfig$config,$profilefidonesudo nvidia-smi mig -cgi $config -i $gpu_id -Cif [ $? -eq 0 ]; thenlog_info GPU $gpu_id 切分成功$count x $profilereturn 0elselog_error GPU $gpu_id 切分失败return 1fi}# 清除所有MIG实例clear_mig_instances() {local gpu_id$1log_warn 清除 GPU $gpu_id 上的所有MIG实例...# 获取所有计算实例ID并删除local ci_list$(nvidia-smi mig -lci -i $gpu_id 2/dev/null | awk /^| [0-9]/ {if($1~/^[0-9]$/) print $1})for ci in $ci_list; dosudo nvidia-smi mig -dci -i $gpu_id -ci $ci 2/dev/nulldone# 获取所有GPU实例ID并删除local gi_list$(nvidia-smi mig -lgi -i $gpu_id 2/dev/null | awk /^| [0-9]/ {if($1~/^[0-9]$/) print $1})for gi in $gi_list; dosudo nvidia-smi mig -dgi -i $gpu_id -gi $gi 2/dev/nulldonelog_info GPU $gpu_id MIG实例已清除}# 显示当前MIG状态show_mig_status() {log_step 当前MIG状态nvidia-smi --query-gpuindex,mig.mode.current --formatcsvecho log_step MIG实例详情nvidia-smi mig -lgi 2/dev/null || echo 未配置MIG实例}# 生成切分建议generate_splitting_recommendation() {local gpu_count$1echo log_step RTX 6000D 切分建议 echo cat EOF根据RTX 6000D Blackwell的规格84GB显存以下是推荐的切分配置┌─────────────────────────────────────────────────────────────────┐│ 切分方案对比表 │├──────────────┬────────────┬──────────┬────────────┬────────────┤│ 方案名称 │ 配置文件 │ 每实例显存 │ 每实例SM │ 单卡实例数 │├──────────────┼────────────┼──────────┼────────────┼────────────┤│ 轻量开发 │ 1g.42gb │ 42 GB │ 78 SM │ 2个 ││ 均衡配置 │ 混合 │ 4242 GB │ 7878 SM │ 2个 ││ 单卡全量 │ 2g.84gb │ 84 GB │ 156 SM │ 1个 │└──────────────┴────────────┴──────────┴────────────┴────────────┘EOFecho -e ${YELLOW}推荐方案1轻量开发模式适合多人小任务${NC}echo 每张卡切成2个 1g.42gb 实例echo 8张卡总计可提供 16 个独立GPU环境echo 适用场景多人并行开发、轻量级模型训练echo echo -e ${YELLOW}推荐方案2混合模式适合不同需求${NC}echo 部分卡切成2个实例部分卡保持完整echo 例如4张卡切分8个实例 4张卡完整4个实例echo 适用场景既有小任务又有大模型训练echo echo -e ${YELLOW}推荐方案3高性能模式适合大模型训练${NC}echo 每张卡保持完整 2g.84gb 实例echo 8张卡可支持8个独立的大模型训练任务echo 适用场景大规模模型训练、高计算需求场景echo echo -e ${GREEN}根据你的实际使用场景建议${NC}echo → 如果以小型AI开发为主选择方案1echo → 如果混合负载选择方案2echo → 如果大模型训练为主选择方案3echo echo -e ${BLUE}8张卡多用户分配建议${NC}echo • 方案116个实例 → 可分配给16个用户同时使用echo • 方案212个实例 → 可分配给12个用户echo • 方案38个实例 → 可分配给8个用户echo }# 交互式配置MIG实例configure_mig_instances() {local gpu_count$1echo echo 请选择切分方案echo 1) 方案1 - 轻量开发模式每卡2个1g.42gb实例echo 2) 方案2 - 混合模式需手动指定echo 3) 方案3 - 高性能模式每卡1个2g.84gb实例echo 4) 自定义配置指定GPU ID、配置和数量echo 5) 跳过配置read -p 请输入选择 (1-5): choicecase $choice in1)for i in $(seq 0 $((gpu_count-1))); doclear_mig_instances $icreate_mig_instances $i 1g.42gb 2done;;2)read -p 请输入要切分的GPU数量其余保持完整2g.84gb: split_countif [[ $split_count ~ ^[0-9]$ ]] [ $split_count -le $gpu_count ]; then# 切分的GPUfor i in $(seq 0 $((split_count-1))); doclear_mig_instances $icreate_mig_instances $i 1g.42gb 2done# 保持完整的GPUfor i in $(seq $split_count $((gpu_count-1))); doclear_mig_instances $icreate_mig_instances $i 2g.84gb 1doneelselog_error 无效的GPU数量fi;;3)for i in $(seq 0 $((gpu_count-1))); doclear_mig_instances $icreate_mig_instances $i 2g.84gb 1done;;4)read -p 请输入GPU ID (0-$((gpu_count-1))): gpu_idread -p 请输入配置文件如1g.42gb或2g.84gb: profileread -p 请输入实例数量: countif [[ $gpu_id ~ ^[0-9]$ ]] [ $gpu_id -lt $gpu_count ]; thenclear_mig_instances $gpu_idcreate_mig_instances $gpu_id $profile $countread -p 是否继续配置其他GPU(y/N): continue_configif [[ $continue_config ~ ^[Yy]$ ]]; thenconfigure_mig_instances $gpu_countfielselog_error 无效的GPU IDfi;;5)log_info 跳过MIG实例配置;;*)log_warn 无效选择跳过配置;;esac}# 主函数main() {log_step MIG自动化配置脚本开始 echo # 检查是否有NVIDIA驱动if ! command -v nvidia-smi /dev/null; thenlog_error 未找到nvidia-smi命令请确认NVIDIA驱动已安装exit 1fi# 获取GPU数量GPU_COUNT$(get_gpu_count)log_info 检测到 $GPU_COUNT 张GPUif [ $GPU_COUNT -eq 0 ]; thenlog_error 未检测到GPUexit 1fi# 存储需要启用的GPUNEEDS_ENABLE()ALREADY_ENABLED()# 检查每张GPU的MIG状态log_step 检查各GPU的MIG状态...for i in $(seq 0 $((GPU_COUNT-1))); dostatus$(check_mig_status $i)if [ $status Enabled ]; thenlog_info GPU $i: MIG已启用 ✓ALREADY_ENABLED($i)elselog_warn GPU $i: MIG未启用 ✗NEEDS_ENABLE($i)fidone# 启用MIG模式如果有需要启用的if [ ${#NEEDS_ENABLE[]} -gt 0 ]; thenlog_step 开始启用MIG模式...for i in ${NEEDS_ENABLE[]}; doenable_mig_for_gpu $idoneecho log_warn log_warn MIG模式已启用不需要重启即可立即创建实例log_warn 重启后配置会持久化但当前会话仍然可用log_warn echo elselog_info 所有GPU的MIG模式均已启用fi# 显示当前状态show_mig_status# 生成切分建议generate_splitting_recommendation $GPU_COUNT# 交互式配置MIG实例configure_mig_instances $GPU_COUNT# 最终状态显示echo log_step 最终MIG状态show_mig_status# 提供持久化提示echo log_step 配置完成 if [ ${#NEEDS_ENABLE[]} -gt 0 ]; thenecho log_info 提示如果你想使MIG配置持久化重启后仍然生效请执行echo sudo nvidia-smi -pm 1 # 启用持久化模式echo sudo reboot # 重启系统echo log_info 如果你不需要持久化当前配置在当前会话中完全可用fi}# 运行主函数main $8实例划分好之后系统重启有可能就恢复默认状态这点特别注意。9如何删除实例呢# 删除 GPU 0 上的所有计算实例 sudo nvidia-smi mig -dci -i 0 # 删除 GPU 0 上的所有GPU实例 sudo nvidia-smi mig -dgi -i 010关闭MIG# 关闭指定GPU (例如GPU 0) 的MIG模式 sudo nvidia-smi -i 0 -mig 0