保姆级教程:手把手教你用nvidia-smi命令玩转A100的MIG分区(附完整配置流程)
保姆级教程手把手教你用nvidia-smi命令玩转A100的MIG分区附完整配置流程在AI计算领域NVIDIA A100显卡的MIGMulti-Instance GPU技术正逐渐成为资源优化的利器。这项技术允许将一块物理GPU划分为多个独立的计算单元每个单元都能独立运行不同的任务就像把一台服务器虚拟化成多台虚拟机一样。对于运维工程师和AI平台管理员来说掌握MIG配置技能意味着能够更灵活地分配GPU资源提升硬件利用率同时保证不同任务之间的隔离性。本文将带你从零开始逐步掌握A100显卡MIG分区的完整操作流程。不同于简单的命令罗列我们会深入每个步骤背后的原理解释关键参数的含义并分享实际配置中的经验技巧。无论你是初次接触MIG的新手还是希望系统化掌握这项技术的工程师这篇教程都能为你提供实用的指导。1. 环境准备与MIG模式启用在开始配置MIG之前首先需要确认你的硬件和软件环境是否符合要求。你需要准备搭载NVIDIA A100显卡的服务器已安装最新版本的NVIDIA驱动建议450.80.02或更高具备sudo权限的用户账户检查GPU状态是第一步运行以下命令查看当前GPU信息nvidia-smi -i 0典型输出如下----------------------------------------------------------------------------- | NVIDIA-SMI 450.80.02 Driver Version: 450.80.02 CUDA Version: 11.0 | |--------------------------------------------------------------------------- | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | || | 0 A100-SXM4-40GB Off | 00000000:36:00.0 Off | 0 | | N/A 29C P0 62W / 400W | 0MiB / 40537MiB | 6% Default | | | | Disabled | ---------------------------------------------------------------------------注意输出中的MIG M.状态显示为Disabled表示MIG模式尚未启用。启用MIG模式需要使用以下命令sudo nvidia-smi -i 0 -mig 1成功执行后会显示Enabled MIG Mode for GPU 00000000:36:00.0 All done.注意启用MIG模式会导致GPU短暂重置正在运行的任务会被中断建议在业务低峰期操作。启用后可以再次运行nvidia-smi -i 0确认状态此时MIG M.应显示为Enabled。如果遇到启用失败的情况可能是由于驱动版本不兼容GPU正在运行计算任务硬件不支持MIG功能2. 理解MIG Profile与实例类型MIG技术的核心在于Profile概念它定义了GPU资源的划分方式。A100显卡支持多种Profile每种Profile对应不同的计算资源和内存配置。理解这些Profile对于合理规划资源分配至关重要。查看可用Profile的命令是nvidia-smi mig -lgip输出结果类似----------------------------------------------------------------------------- | GPU instance profiles: | | GPU Name ID Instances Memory P2P SM DEC ENC | | Free/Total GiB CE JPEG OFA | || | 0 MIG 1g.5gb 19 7/7 4.75 No 14 0 0 | | 1 0 0 | ----------------------------------------------------------------------------- | 0 MIG 1g.5gbme 20 1/1 4.75 No 14 1 0 | | 1 1 1 | ----------------------------------------------------------------------------- | 0 MIG 1g.10gb 15 4/4 9.62 No 14 1 0 | | 1 0 0 | ----------------------------------------------------------------------------- | 0 MIG 2g.10gb 14 3/3 9.62 No 28 1 0 | | 2 0 0 | ----------------------------------------------------------------------------- | 0 MIG 3g.20gb 9 2/2 19.50 No 42 2 0 | | 3 0 0 | ----------------------------------------------------------------------------- | 0 MIG 4g.20gb 5 1/1 19.50 No 56 2 0 | | 4 0 0 | ----------------------------------------------------------------------------- | 0 MIG 7g.40gb 0 1/1 39.25 No 98 5 0 | | 7 1 1 | -----------------------------------------------------------------------------Profile名称的格式通常为slice_countg.memory_sizegb例如1g.5gb1个GPU切片配备5GB内存3g.20gb3个GPU切片配备20GB内存关键参数解析Instances可创建的实例数量当前空闲/总量Memory每个实例分配的内存大小SM流处理器数量决定计算能力DEC/ENC解码/编码引擎数量CE复制引擎数量选择Profile时需要考虑应用的计算需求需要多少SM资源内存需求模型大小和数据量需要的实例数量是否需要专用编解码引擎例如如果运行多个小型推理服务1g.5gb可能是不错的选择而训练中等规模模型则可能需要3g.20gb。3. 创建GPU实例与计算实例理解了Profile后就可以开始创建GPU实例(GI)和计算实例(CI)了。这两个概念的区别在于GPU实例(GI)定义了物理资源的划分计算实例(CI)在GI基础上创建的逻辑计算单元创建GPU实例的基本命令格式sudo nvidia-smi mig -cgi profile_spec -C其中profile_spec可以是Profile ID如9短名称如3g.20gb全名如MIG 3g.20gb例如要创建两个3g.20gb实例sudo nvidia-smi mig -cgi 9,3g.20gb -C成功执行后输出Successfully created GPU instance ID 2 on GPU 0 using profile MIG 3g.20gb (ID 9) Successfully created compute instance ID 0 on GPU 0 GPU instance ID 2 using profile MIG 3g.20gb (ID 2) Successfully created GPU instance ID 1 on GPU 0 using profile MIG 3g.20gb (ID 9) Successfully created compute instance ID 0 on GPU 0 GPU instance ID 1 using profile MIG 3g.20gb (ID 2)验证实例创建sudo nvidia-smi mig -lgi输出显示已创建的GI---------------------------------------------------- | GPU instances: | | GPU Name Profile Instance Placement | | ID ID Start:Size | || | 0 MIG 3g.20gb 9 1 4:4 | ---------------------------------------------------- | 0 MIG 3g.20gb 9 2 0:4 | ----------------------------------------------------查看详细资源分配nvidia-smi输出中包含MIG设备信息----------------------------------------------------------------------------- | MIG devices: | -------------------------------------------------------------------------- | GPU GI CI MIG | Memory-Usage | Vol| Shared | | ID ID Dev | | SM Unc| CE ENC DEC OFA JPG | || | 0 1 0 0 | 11MiB / 20224MiB | 42 0 | 3 0 2 0 0 | -------------------------------------------------------------------------- | 0 2 0 1 | 11MiB / 20096MiB | 42 0 | 3 0 2 0 0 | --------------------------------------------------------------------------在实际操作中可能会遇到以下常见问题资源不足尝试创建的实例超过可用资源Profile冲突某些Profile不能共存权限问题需要sudo权限执行创建命令4. 实例管理与销毁MIG实例的动态管理是其强大之处可以根据需求随时调整资源配置。当某些实例不再需要时应该及时销毁以释放资源。销毁全部计算实例和GPU实例sudo nvidia-smi mig -dci sudo nvidia-smi mig -dgi这会按顺序销毁所有CI和GI输出类似Successfully destroyed compute instance ID 0 from GPU 0 GPU instance ID 1 Successfully destroyed compute instance ID 1 from GPU 0 GPU instance ID 1 Successfully destroyed compute instance ID 2 from GPU 0 GPU instance ID 1 Successfully destroyed GPU instance ID 1 from GPU 0 Successfully destroyed GPU instance ID 2 from GPU 0选择性销毁特定GI下的CIsudo nvidia-smi mig -dci -gi 1 -ci 0,1,2这在需要保留其他实例时特别有用。仅销毁GPU实例会自动销毁关联的CIsudo nvidia-smi mig -dgi提示销毁操作是不可逆的确保没有重要任务在实例上运行后再执行。验证销毁结果nvidia-smi输出中MIG设备部分应显示----------------------------------------------------------------------------- | MIG devices: | -------------------------------------------------------------------------- | No MIG devices found | -----------------------------------------------------------------------------在实际运维中建议建立实例生命周期管理流程记录创建的实例及其用途设置监控告警及时发现闲置实例定期审查实例配置优化资源分配建立销毁审批流程避免误操作5. 高级配置与最佳实践掌握了基本操作后下面介绍一些高级配置技巧和最佳实践帮助你更高效地使用MIG功能。多Profile混合配置 A100支持同时创建不同Profile的实例例如sudo nvidia-smi mig -cgi 9,14 -C这会创建一个3g.20gb实例和一个2g.10gb实例。但需要注意确保总资源不超过物理GPU容量某些Profile组合可能不被支持持久化配置 默认情况下MIG配置在重启后会丢失。要实现配置持久化可以创建启动脚本/etc/rc.local添加MIG启用和实例创建命令确保脚本有执行权限资源监控 使用以下命令监控MIG实例的资源使用情况nvidia-smi mig -i 0 -lgiop输出显示每个实例的资源利用率---------------------------------------------------- | GPU instance profiles: | | GPU Name Profile Instance Utilization | | ID ID SM Memory Enc Dec | || | 0 MIG 3g.20gb 9 1 25% 30% | ---------------------------------------------------- | 0 MIG 3g.20gb 9 2 15% 20% | ----------------------------------------------------最佳实践建议预留资源不要将GPU资源100%分配保留少量余量应对突发需求标签管理为每个实例添加描述标签方便后续管理性能测试不同Profile对特定应用的性能影响差异很大建议实际测试安全隔离虽然MIG提供资源隔离但仍需注意数据安全常见问题排查无法启用MIG检查驱动版本和GPU型号是否支持创建实例失败确认资源是否足够尝试重启GPU服务性能不符合预期检查Profile选择是否合适监控实际资源使用6. 自动化部署与工具集成对于需要频繁配置MIG的环境手动操作效率低下。下面介绍如何将MIG配置自动化集成到你的工作流程中。使用mig-parted工具 NVIDIA提供的mig-parted工具可以简化MIG配置# 安装 pip install nvidia-mig-parted # 查看可用配置 mig-parted info # 应用配置 mig-parted apply -f config.yml编写配置脚本 下面是一个自动创建MIG实例的bash脚本示例#!/bin/bash # 启用MIG模式 sudo nvidia-smi -i 0 -mig 1 # 等待GPU重置完成 sleep 30 # 创建GPU实例 sudo nvidia-smi mig -cgi 9,14 -C # 验证创建结果 nvidia-smi mig -lgi与容器平台集成 在Kubernetes环境中可以通过NVIDIA K8s Device Plugin实现MIG资源调度配置节点标签部署Device Plugin在Pod定义中请求MIG资源示例Pod定义片段resources: limits: nvidia.com/gpu: 1 requests: nvidia.com/mig-1g.5gb: 1监控告警配置 建议配置以下监控指标每个MIG实例的GPU利用率内存使用情况温度和其他健康指标可以使用Prometheus和Grafana搭建监控面板设置合理的告警阈值。配置管理建议将MIG配置纳入版本控制系统实现配置的幂等性可重复执行记录每次配置变更的详细日志建立回滚机制在实际生产环境中我们通常会遇到需要动态调整MIG配置的情况。例如白天可能需要更多小型实例处理推理请求而夜间则可以合并资源进行训练任务。针对这种场景可以编写定时任务脚本根据预设时间表自动调整MIG配置。