H20 大模型推理系统环境配置踩坑
基础环境
CPU:INTEL(R) XEON(R) PLATINUM 8558P 48 Cores 96 Threads × 2
GPU:NVIDIA H20-3e NVL 141G × 8,NVLINK × 4
MEM:2TB
SYS:Ubuntu Desktop 22.04 LTS
环境安装
八张H20 141GB显卡拥有1128G巨量显存,可以支持DeepSeek R1/V3全量部署
但客户公司没有运维人员懂如何安装显卡驱动,无奈我们软件人员为了完成任务只好接下硬件驱动安装问题。在使用常规方式安装驱动与容器工具包后,即使驱动与nvcc都能检测到显卡存在,容器内torch无法检测到正确的显卡数量导致无法正常执行推理。
root@fe29691aa24c:/vllm-workspace# python3
Python 3.12.11 (main, Jun 4 2025, 08:56:18) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.cuda.is_available()
/usr/local/lib/python3.12/dist-packages/torch/cuda/__init__.py:174: UserWarning: CUDA initialization: Unexpected error from cudaGetDeviceCount().
Did you run some cuda functions before calling NumCudaDevices() that might have already set an error? Error 802: system not yet initialized (Triggered internally at /pytorch/c10/cuda/CUDAFunctions.cpp:109.)
安装踩坑
- 550版本驱动与H20显卡或者Ubuntu系统不兼容(不确定,没有时间继续测试了),导致开机系统加载驱动时卡死,需要尽量新版本驱动
- .run格式驱动安装包依赖对应gcc版本,可以在
/usr/bin内添加cc到gcc对应版本(在570驱动下为gcc12)可执行文件的的软链接 - 带有NVLINK桥的系统必须安装nvidia-fabricmanager依赖,否则即使驱动与nvcc显卡识别正常,torch也无法正常检测到显卡
- nvidia-fabricmanager的大版本与小版本必须与显卡驱动完全对应,否则无法安装
- nvidia-fabricmanager可下载的版本只有有限的一些:Index of /compute/cuda/repos/ubuntu2204/x86_64 (注意操作系统版本对应),需要首先确定可用nvidia-fabricmanager版本再确定cuda-driver、显卡驱动版本
- 装驱动这一类动系统内核较高风险软件前,尽量提前问客户要服务器远程BMC权限,方便自己重装系统,防止后续可能出现的经常性系统级翻车带来的沟通麻烦和面子问题
正确安装步骤
- 确定Ubuntu系统版本
- 确定可下载的nvidia-fabricmanager版本并下载Index of /compute/cuda/repos/ubuntu2204/x86_64
- 根据可下载的fabricmanager版本找到对应的cuda-toolkit的.run文件并下载安装CUDA Toolkit Archive
- 配置cuda toolkit依赖:安装gcc-12;执行
ln -s /usr/bin/cc /usr/bin/gcc-12; - 运行安装勾选驱动和toolkit安装
- 安装后重启
- 重启后系统未冻结且nvidia-smi与nvcc指令运行正常说明版本与硬件兼容良好
- 配置cuda toolkit依赖:安装gcc-12;执行
- 使用
dpkg -i命令安装与驱动版本完全一致的nvidia-fabricmanager - 正常安装docker、Nvidia Container Toolkit(最新版就可以)并运行工具配置docker
- 现在可以测试容器内torch与vllm的工作情况了
FAQ
如何确定系统是否带有NVLINK桥?
执行
lspci | grep NVIDIA如果显示有bridge设备则带显卡桥
H20 大模型推理系统环境配置踩坑的更多相关文章
- 记一次 Spring 事务配置踩坑记
记一次 Spring 事务配置踩坑记 问题描述:(SpringBoot + MyBatisPlus) 业务逻辑伪代码如下.理论上,插入数据 t1 后,xxService.getXxx() 方法的查询条 ...
- mybatis-generator:generate 生成代码配置踩坑详解
mybatis-generator:generate 生成代码配置踩坑不少,在此留下笔记以便后续填坑 一.mysql返回时间问题 错误信息: [ERROR] Failed to execute goa ...
- 在mac版virtual box中安装ubuntu虚拟机的NAT/Host-Only网络配置踩坑记录
之前用惯了vmware和parallels desktop,网络配置十分智能,基本不用自己配置.由于版权原因,工作电脑上换了免费的virtual box用,四五年都完全在虚拟机里干活的本菜鸡居然在虚拟 ...
- XXLJOB2.1.0数据源配置踩坑记录
最近在看XXLJOB,因为截至到发文时间最新的版本是2.1.0而且需要建立的数据库与Quartz解耦了,所以就用了最新的版本. 首先说一下踩坑过程: 代码开发完成之后,在定时跑的时候第一次跑的多数失败 ...
- Gradle AndroidStudio内网离线构建配置踩坑记录
最近一家新公司,由于办公环境都是在内网机上,导致在Unity导出android工程后,gradle离线构建也是第一次搞,花了一天时间也踩了一些坑,最后也终于构建成功了,这里记录下,方便大家少走些弯路. ...
- Kafka SASL ACL配置踩坑总结
源起:工程现阶段中间件采用的是kafka.满足了大数据的高吞吐,项目间的解耦合,也增强了工程的容错率与扩展性.但是在安全这一块还有漏洞,kafka集群中,只要网站内的任何人知道kafka集群的ip与t ...
- LAMP环境配置踩坑2外网无法访问
理论上我们配置LAMP环境的时候都会对httpd.config进行更改 vi /etc/httpd/conf/httpd.conf 把override node改成override all 并且开启8 ...
- jdk 环境配置踩坑
其实在网上已经有很多环境配置的介绍了.不过我还是想用切身经历告诉大家这里面可能遇到的坑. 首先,先给大家讲一下JAVA_HOME,path,CLASSPATH JAVA_HOME 指向的是JDK的安装 ...
- Gitlab Jenkins WebHook 持续集成配置踩坑记
Jenkins相关介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 目的 配置Gitla ...
- react中的路由配置踩坑记
react 路由配置中,如果根路由(/)匹配一个组件,另一个路由(/list)在进行匹配的时候也会匹配到根路由(/),即在 /list 页面展示的时候 / 页面总是展示在上方. 此时如果想进行严格匹配 ...
随机推荐
- Oracle - ORA-19809: 超出了恢复文件数的限制
场景重现 使用rman执行以下命令进行数据库备份的时候出现异常: RMAN> backup database; 出现如下错误: # 主要异常信息如下: # ... RMAN-00571: === ...
- Global.asax
转
备忘: 项目中的Global.asax文件里通常包含这5个方法: Application_Start – web 应用程序最初启动时执行 Application_End – 应用程序关闭时运行 App ...
- GStreamer开发笔记(一):GStreamer介绍,在windows平台部署安装,打开usb摄像头对比测试
前言 当前GStreamer是开源的多媒体框架,其适配后可以支持板卡的硬编码.硬解码,还提供RTSP服务器等功能,降低了音视频开发的门槛(转移到gstreamer配置和开发上了,但是跨平台),瑞芯 ...
- FirstUI:Deepseek能帮我们做很多事情,而这款开源框架专为开发者设计的开源UI框架,让你的项目加速起飞
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 开发者们总是在寻找能够提高工作效率.简化开发流程的工具.今天,我们要介绍的是一个名为Firs ...
- spring综合性利用工具-SpringBoot-Scan(一),附下载链接。
日常渗透过程中,经常会碰到Spring Boot搭建的微服务,于是就想做一个针对Spring Boot的开源渗透框架,主要用作扫描Spring Boot的敏感信息泄露端点,并可以直接测试Spring的 ...
- LinqHelper拓展
public static class LinqHelper { //NHibernate.Hql.Ast.HqlBooleanExpression public static Expression& ...
- Flex布局-子项
弹性盒子是一种用于 按行 或 按列的一维布局方法. 元素可以膨胀以填充额外的空间, 也可以 收缩 以适应更小的空间. flex 容器项重点 只是用表格进行排版而已, 横向内容无关联哈, 只是简要回忆一 ...
- SQL 日常练习 (二十)
也只是尽快搬完这快一个月 sql 的砖, 准备要来整新学习模块了, 因此, 正好趁着五一, 加波速. 也会一直坚守和追求, 学无止境, 气有浩然. 每次都会说, 这是一种精神的传承,而我想的是, 不仅 ...
- win10将python打包成apk详细文档
打包不支持windows所以可以找一台linux的电脑 或者用win10子系统(推荐) 我用的是Ubuntu 方法:https://www.jianshu.com/p/fcf21d45ea74 我简单 ...
- ansible-playbook常用模块
lineinfile 此模块是针对文件特殊行,使用后端引用的正则表达式来替换. - hosts: 192.168.50.1 gather_facts: no tasks: - name: 设置UseD ...