• [专家FAQ] NVIDIA:Operator、Cuda、CNI、Device、Device plugin环境变量使用
    NVIDAI GPU 相关环境变量1. nvidia-container-runtime OCI规范环境变量参数说明描述NVIDIA_VISIBLE_DEVICES0,1,2或者GPU-fef8089b,GPU-edab347b或者all或者none此变量控制哪些 GPU 可在容器内访问NVIDIA_DRIVER_CAPABILITIES容器所需的驱动程序功能的逗号分隔列表: compute,compat32, graphics, utility, video, display 或者 all;哪些特性可以被使用, 默认值:utility,computeNVIDIA_REQUIRE_CUDAcuda>=11.0对 CUDA 驱动程序版本的限制NVIDIA_REQUIRE_DRIVERdriver>=450对驱动程序版本的限制NVIDIA_REQUIRE_ARCHarch=amd64 arch=arm64对所选 GPU 的计算架构的约束NVIDIA_REQUIRE_BRANDGeForce、Tesla、GRID对所选 GPU 品牌的限制NVIDIA_DISABLE_REQUIREtrue or false关闭所有限制2. NVIDIA Device plugin 规范2.1 k8s-device-plugin 配置环境变量参数说明描述MIG_STRATEGYnone,single, mixed在支持 MIG 的 GPU 上公开 MIG 设备所需的策略. 默认值noneFAIL_ON_INIT_ERRORtrue 或 false如果初始化过程中遇到错误,则插件失败,无限期阻止. 默认值 trueNVIDIA_DRIVER_ROOT/run/nvidia/driverNVIDIA 驱动程序安装的根路径. 默认值 /PASS_DEVICE_SPECStrue 或 false允许设备插件与CPUManagerKubernetes 中的 进行互操作. 默认值 falseDEVICE_LIST_STRATEGYenvvar环境变量, volume-mounts卷mount, cdi-annotations CDI容器, cdi-criCRI 字段用于选择需要注入的 CDI 设备将设备列表传递给底层runtime所需的策略。默认值 envvarDEVICE_ID_STRATEGYuuid 或者 index将设备 ID 传递到底层runtime所需的策略. 默认值 uuidCONFIG_FILE“”将插件指向配置文件,而不是依赖命令行标志或环境变量. 设置参数优先顺序为 (1) 命令行标志、(2) 环境变量、(3) 配置文件。2.2 Config-Manager 配置环境变量参数说明描述ONESHOTtrue持续获取 或 false只获取一次获取node label资源; 默认值 falseNODE_LABELnvidia.com/device-plugin.config获取node 特定资源key; 默认值 nvidia.com/device-plugin.configDEFAULT_CONFIG“”默认配置,默认值:“”2.3 Hami-core 配置环境变量参数说明描述CUDA_DEVICE_MEMORY_LIMIT1g 或者 512Mi用于指定设备内存的上限CUDA_DEVICE_SM_LIMIT0-100的百分比用于指定每个设备的 SM 利用率百分比LIBCUDA_LOG_LEVEL0错误信息;1和2info信息;3waring信息;4debug信息来设置日志的可见性LD_PRELOAD“”优先加载的动态链接库3. Operator3.1 vGPU manager环境变量参数说明描述OPERATOR_NAMESPACE“”Operator 命名空间 默认值:“default”ENABLE_GPU_POD_EVICTIONtrue or false尝试节点耗尽之前仅尝试从节点中驱逐 GPU Pod. 默认值trueENABLE_AUTO_DRAINtrue or false. 默认值 trueDRAIN_USE_FORCEtrue or false驱逐未由任何复制控制器(例如部署、守护进程集、有状态集和副本集)管理的 GPU 容器。 默认值falseDRAIN_POD_SELECTOR_LABEL“”按标签驱逐. 默认值""DRAIN_TIMEOUT_SECONDS"0s"无超时驱逐超时时间. 默认值0sDRAIN_DELETE_EMPTYDIR_DATAtrue or false必须启用环境变量才能删除使用类型卷的 GPU容器. 默认值false4. cuda环境变量参数说明描述CUDA_VISIBLE_DEVICESMIG-<GPU-UUID>/<GPU instance ID>/<compute instance ID>GPU 标识符以整数索引或 UUID 字符串形式给出。CUDA_MANAGED_FORCE_DEVICE_ALLOC0 或 1(默认为 0)强制驱动程序将所有托管分配放置在设备内存中CUDA_DEVICE_ORDERFASTEST_FIRST,PCI_BUS_ID(默认为FASTEST_FIRST)FASTEST_FIRST 使 CUDA 使用简单的启发式算法,按从快到慢的顺序枚举可用设备。PCI_BUS_ID 按 PCI 总线 ID 升序排列设备CUDA_CACHE_DISABLE0 或 1(默认为 0)禁用缓存CUDA_CACHE_PATH“”指定即时编译器缓存二进制代码的文件夹;默认值~/.nv/ComputeCacheCUDA_CACHE_MAXSIZE整数(默认值为 268435456(256 MiB),最大值为 4294967296(4 GiB))即时编译器使用的缓存大小(以字节为单位)CUDA_FORCE_PTX_JIT0 或 1(默认为 0)设置为 1 时,强制设备驱动程序忽略应用程序中嵌入的任何二进制代码CUDA_DISABLE_PTX_JIT0 或 1(默认为 0)禁用嵌入式 PTX 代码的即时编译CUDA_DEVICE_MAX_CONNECTIONS1 到 32(默认为 8)设置从主机到每个计算能力 3.5 及以上的设备的计算和复制引擎并发连接(工作队列)的数量。CUDA_DEVICE_DEFAULT_PERSISTING_L2_CACHE_PERCENTAGE_LIMIT0-100使用 CUDA MPS 服务时,只能在启动 CUDA MPS 控制守护进程之前使用此环境变量来控制预留大小。应在运行以下命令之前设置环境变量: nvidia-cuda-mps-control -d
  • [问题求助] notebook预制镜像的CUDA版本与英伟达显卡驱动版本不适配
    使用py3.10+torch2.1.0(cu121)报“CUDA driver version is insufficient for CUDA runtime version”,进一步看英伟达显卡驱动支持到cuda11.4。但是我们项目计划使用YOLO v11必须cuda 11.8。不知有无好的解决办法。如需进一步信息,也请说明。感谢!
  • [技术干货] Centos7安装更新GPU driver驱动和cuda
    背景最近在做chatGLM3,但是发现模型升级到最新版后,输出反而变慢了。去官方询问得知是NVIDIA驱动版本旧了,需要升级常用命令查看显卡信息查看自己的显卡信息:lspci | grep -i nvidia我这里是A100的显卡,由于特殊原因无法显示。对于正常家用的GTX1080显卡,显示如下查看显卡状态nvidia-smi:GPU驱动版本,dirverAPI(支持的最高cuda版本)watch -n 1 nvidia-smi:动态监控显卡状态查看CUDAToolkit版本nvcc -V:CUDAToolkit版本,timeAPI(运行时API)更新CUDA版本找到NVIDIA版本列表:cid:link_1点击下载最新版:Download Latest CUDA Toolkit这里我的电脑是Centos,因此选择Linux。Architecture 可以使用如下命令查看使用uname -m可以查看当前Architecture架构(我这里是x86_64)CUDA 只支持Centos7基础安装在线安装方式如下sudo yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo sudo yum clean all sudo yum -y install cuda-toolkit-12-4安装好后,使用该命令可以验证安装是否成功yum list installed | grep cuda-toolkit驱动安装sudo yum -y install nvidia-driver-latest-dkms sudo yum -y install kmod-nvidia-open-dkms在执行第二条命令时报错了,查阅资料,网上说是因为本机装了太多个NVIDIA驱动,因此要删除旧版驱动使用yum list installed | grep dkms 命令,可以在已安装的软件列表中,搜索关键词带有dkms的软件并且,此时使用nvidia-smi命令会报错如下:Failed to initialize NVML: Driver/library version mismatch需要去官网下载最新的驱动。cid:link_2因为我这台显卡是A100,CUDA用的是最新的12.4,因此选择如下产品类型:Data Center / Tesla产品系列:A-Series产品家族:NVIDIA A100操作系统:Linux 64-bit RHEL 7CUDA Toolkit:12.4语言:Chinese(Simplified)然后点击搜索点击下载,从windows这里复制下载地址,然后在centos中,使用wget命令进行下载wget https://cn.download.nvidia.cn/tesla/550.54.14/nvidia-driver-local-repo-rhel7-550.54.14-1.0-1.x86_64.rpm使用下面进行安装rpm -ivh nvidia-driver-local-repo-rhel7-550.54.14-1.0-1.x86_64.rpm然后按照文档还要执行如下几个命令rpm -i nvidia-driver-local-repo-rhel7-460.106.00-1.0-1.x86_64.rpm yum clean all yum install cuda-drivers reboot解决问题nvidia-smi 报错Failed to initialize NVML: Driver/library version mismatch NVML library version: 550.54cat /proc/driver/nvidia/version 输出如下NVRM version: NVIDIA UNIX x86_64 Kernel Module 515.86.01 Wed Oct 26 09:12:38 UTC 2022 GCC version: gcc version 8.3.1 20190311 (Red Hat 8.3.1-3) (GCC)把nvidia有关的包全部卸载,然后重装Centos 7默认gcc版本为4.8,有时需要更高版本的,这里以升级至8.3.1版本为例,分别执行下面三条命令即可,无需手动下载源码编译。这个可以参考这篇博客:cid:link_3发生错误时,可以使用如下命令查看日志,对问题进行定位cat /var/log/nvidia-installer.log通过查看日志可以得知,是默认的gcc版本太低,切换成高版本的gcc后,通过NVIDIA官网脚本安装即可:cid:link_0
  • [问题求助] CANN-6.3使用pytorch框架loss在backward出现问题
    问题显示:  File "/home/ma-user/work/DDA6/src/models.py", line 99, in backward     loss.backward()   File "/home/ma-user/anaconda3/envs/Pytorch-1.8.1/lib/python3.7/site-packages/torch/tensor.py", line 245, in backward     torch.autograd.backward(self, gradient, retain_graph, create_graph, inputs=inputs)   File "/home/ma-user/anaconda3/envs/Pytorch-1.8.1/lib/python3.7/site-packages/torch/autograd/__init__.py", line 147, in backward     allow_unreachable=True, accumulate_grad=True)  # allow_unreachable flag RuntimeError: The size of tensor a (256) must match the size of tensor b (64) at non-singleton dimension 3问题描述:在pytorch框架下的代码,从cuda往cann迁移,在cuda正常运行,而在cann中可以开始训练,但会卡在 loss.backward() 求大佬帮忙