☰
AMD MI50 32G Ubuntu跑大模型实战:BIOS设置、ROCm驱动与vllm部署
2026/10/6 15:33:25 网站建设 项目流程

如果你最近在淘二手显卡跑本地大模型,大概率会看到这么一张神奇的卡:AMD Instinct MI50 32G。这卡当年是数据中心里的正经计算卡,如今在二手市场却被以白菜价甩卖。很多人半信半疑地买回来,发现它跑大模型居然还挺香;但也有不少人卡在第一步——装系统、开BIOS、装驱动的连环坑里进退不得。这篇就是把我在MI50 32G + Ubuntu上从零折腾到能跑vllm、能凑合微调qwen2.5-7b的路线记录一遍,�的踩坑过程也都写出来了。

1. 为什么是MI50 32G:这块老卡凭什么还能战大模型

1.1 硬件底子与性价比真相

MI50 32G大概是2024到2025年二手市场最魔幻的一张卡。它的底子是7nm Vega 20核心,32GB HBM2显存,显存带宽标称接近1TB/s,PCIe 4.0 x16接口。和自家消费级、专业级显卡全家相比,这个规格放在AI推理场景里,最大卖点就是32GB大显存和高带宽。大模型推理最卡脖子的恰恰是显存容量和带宽,而不是显卡上堆多少TFLOPS。

说它是“白菜价计算卡”一点都不夸张。二手市场里它的价格通常远低于同显存的N卡,不少玩家是拿它当过渡方案,先让本地大模型跑起来再考虑升级。这片卡FP16算力大概13T左右,和N卡里几张主流型号比确实弱不少,但推理场景里瓶颈往往是显存,算力只要够用就行。很多人实测下来,跑7B、13B、甚至某些量化后的30B模型,32G显存的MI50都能装得下,体验远比小显存卡来得从容。

1.2 适合谁、不适合谁

我不建议小白把它当主力卡直接开冲。MI50在消费级平台上的兼容性并不完美,需要用户愿意折腾BIOS、驱动、内核,甚至忍受开源软件对Vega 20支持不稳定的问题。比较合适的用户是这几类:有一定Linux动手能力、手头有老服务器或大板子、预算特别紧张但有耐心调参的玩家,以及想用32G大显存做推理实验或微调入门的人。

如果只想“插上就能用”,我的建议是老老实实选N卡,或者买新一点的AMD消费卡。MI50的快乐是建立在解决问题的过程之上的,这篇避坑指南就是为了让这个过程尽量短一点。折腾它之前,先把心态放平:这是一张有脾气的卡,但你理顺了规律,它就能给你超出价格的价值。

2. BIOS关键设置:这一步不改,后面全白搭

2.1 Above 4G Decoding必须打开

MI50的32GB显存用完会超过4GB地址空间,操作系统要用64位PCIe BAR机制去访问全部显存,前提就是主板BIOS里的Above 4G Decoding这个选项必须设为Enabled。不同主板叫法不太一样,有些叫Above 4G MMIO BIOS assignment,有些叫PCIe 64-bit BAR support,反正看到包含“4G”“BAR”“64-bit”这类关键词的选项,就要往这个方向想。

很多机器尤其戴尔、联想这类品牌机的台式机或工作站,这项默认是Disabled或Auto。如果不开,系统虽然能识别到卡,但显存地址会映射不完整,常见表现是计算机只看到一小部分显存,或者驱动反复报错、显存访问异常。我在某台消费主板上试过,开着Above 4G时rocm-smi能看到32768MB,关掉后只剩几百MB甚至直接找不到设备。这一步的优先级最高,建议新装机时第一时间改。

2.2 Resizable BAR和CSM怎么处理

Resizable BAR,也就是可调整大小的BAR,在大多数BIOS里叫Re-Size BAR Support或Smart Access Memory。MI50本身对这种机制并不挑剔,但建议和Above 4G一起开启,这样PCIe地址映射更完整,UEFI启动时初始化更顺利。你要是用服务器主板,可能在PCIe子系统设置里找这组选项,确认状态是Enabled再往下走。

CSM(Compatibility Support Module)则是另一个关键点。如果主板BIOS里CSM是开启状态,很多独显在POST阶段会走Legacy的VGA路径,对大显存的AMD专业卡来说,容易出现黑屏、无法显示、甚至系统起不来的情况。我建议直接关闭CSM,保证系统以纯UEFI模式启动,然后用板载核显或第二张卡来看桌面。如果是无头服务器,不接显示器也行,但为了调试方便,建议至少留一个视频输出口。

注意:部分老主板BIOS里没有Above 4G Decoding选项,多见于2015到2018年间的消费级平台。这时候要么去官方BIOS页面刷最新版,要么用修改版BIOS,要么干脆换个平台。不要寄希望于操作系统层硬改,地址解码属于BIOS和CPU平台层面的机制,操作系统没有权限去绕过。

2.3 服务器主板的BMC/IPMI路径

如果你和我一样用的是超微、戴尔这类服务器主板,那么除了传统BIOS设置,还要关注BMC里几个和PCIe相关的选项。比如超微的Advanced -> PCIe/PCI/PnP Configuration里,Above 4G Decoding选项在有的BIOS版本里叫MMIO High Base或类似名字,需要把相关项都调到Enabled,或者把高位地址窗口开到足够大,比如512GB以上。

在服务器场景下还要注意PCIe槽位。MI50属于双槽厚卡,老服务器比如AMD EPYC 7002平台的机器,如果插在某些PCIe交换芯片后面,可能需要额外规划功耗和散热。BMC日志里如果出现PCIe link training失败,先别急着怀疑卡坏了,多半是槽位或BIOS配置问题,换个槽位试试往往就能解决。

热词里有人搜“amd epyc bios”“dell bios设置u盘启动”,说明确实不少人在用服务器板子跑MI50。这类板子的BIOS功能项多,但只要把Above 4G、ReBAR、CSM这三板斧搞定,基础就稳了。接下来就要进入驱动安装这个核心环节。

3. ROCm驱动安装实战:从Ubuntu到能跑vllm的距离

3.1 系统版本不要乱选

MI50对应的是gfx906架构,ROCm官方对它的支持经历过几个阶段:最早原生支持,后来标记为默认不支持,再之后需要环境变量强行启用。实测下来最容易上手的组合是Ubuntu 22.04,加上ROCm 5.7.x或5.6.x的amdgpu-install脚本。ROCm 6.0及以上对Vega系列的支持变得很别扭,我不推荐新手一上来就装最新的6.x,能用当然好,但如果装完发现卡不亮、rocm-smi空白,大概率还是要退回5.x。

系统安装时注意两点:一是用UEFI模式安装并关闭Secure Boot,否则amdgpu内核模块的签名问题会让你在重启后白屏;二是如果准备后续跑Docker和vllm,建议在装完系统后先把基础工具链装齐,比如build-essential、git、python3-venv、docker,免得后面缺什么补什么,浪费时间。

提示:ROCm安装之前最好先确认内核版本。Ubuntu 22.04的HWE最新内核有时候会和老版本的dkms模块冲突,如果出现编译失败,切回官方默认内核往往就好了,我用的5.15内核基本没出过问题。

3.2 amdgpu-install的具体安装流程

大致步骤是去AMD ROCm官网下载对应Ubuntu版本的amdgpu-install包,然后执行安装命令。以Ubuntu 22.04和ROCm 5.7.1为例,常用的是下面这套流程:

# 系统更新 sudo apt update && sudo apt upgrade -y # 下载amdgpu-install安装包 wget https://repo.radeon.com/amdgpu-install/5.7.1/jammy/amdgpu-install_5.7.50701-1_all.deb # 安装安装器本体 sudo apt install -y ./amdgpu-install_5.7.50701-1_all.deb # 安装ROCm运行时 sudo amdgpu-install --usecase=rocm

加--usecase=rocm是为了只装ROCm运行环境,不装给消费卡用的图形驱动栈。MI50本来也没有视频输出接口,所以不需要额外的桌面驱动。如果想要更轻量,还能加--no-dkms跳过内核模块编译,但这时候你需要自己确认内核里是否已经带了amdgpu模块,否则重启后设备还是不可用。

安装完记得跑一下rocminfo,如果能看到Agent列表里出现gfx906设备,驱动层面就通了大半。再跑rocm-smi看显存大小,正常时应该显示32768MB。如果显存大小不对,回到第2章检查BIOS,这一步千万不能跳过。

3.3 gfx906被驱动“屏蔽”的终极解法

重点来了:在ROCm 6.x或者某些新版驱动下,gfx906默认不在受支持列表里,这时候即使驱动装好了,PyTorch也找不到GPU。解决方法是伪造GPU版本号,让运行时认为它是gfx908,方法是设置环境变量:

export HSA_OVERRIDE_GFX_VERSION=9.0.6

把这个变量写进~/.bashrc或/etc/environment,以后跑torch和vllm都能生效。9.0.6对应的是gfx906,别写错。很多教程只说“设置这个变量”,但没解释为什么。原因是ROCm的运行时在加载kernel和library时会根据target id去匹配预编译代码,gfx906在某些版本里没有对应分支,把它伪造成gfx908就能走兼容分支,性能和功能基本可用。

不过要提醒你,这种方法属于踩在官方不支持列表的边缘强行运行,个别算子可能编译失败或性能衰减。实测跑推理任务影响不大,但跑训练和算子重一些的微调任务,可能偶尔遇到类似"Not implemented"的错误。能忍就继续,不能忍就换N卡。

4. 踩坑实录:我在这块卡上踩过的坑

4.1 驱动装了但设备不识别

常见现象是rocminfo只显示一个CPU Agent,没有GPU Agent,或者PyTorch里检查GPU可用性时返回False。排查顺序很重要:先看内核模块加载了没有,执行lsmod | grep amdgpu;再看当前用户有没有权限访问/dev/kfd。默认情况下,要把用户加入render和video组才能正常访问AMD计算设备:

sudo usermod -aG render,video $USER

重登后再试。如果还是不行,把HSA_OVERRIDE_GFX_VERSION=9.0.6手动设置上,再跑一次rocminfo。这个组合能解决我遇到过的八成“装了驱动但不识别”问题。如果以上都不奏效,检查一下是不是内核模块根本没编译成功,去/var/log/dkms日志里翻翻错误原因,十有八九是内核头文件缺失。

4.2 性能低得离谱

MI50跑大模型推理时的预期是能跑、时延可接受、但打不过同价位新卡。但如果出现显存带宽完全跑不满、推理速度比CPU还慢的情况,大概率不是这张卡本身的问题,而是PCIe链路掉到了x1或PCIe 2.0。用lspci -vvv | grep -A5 "VGA"查一下LnkCap和LnkSta,如果是x1或x4,可能是槽位物理问题、金手指接触不良或者BIOS里的PCIe协商问题。重新插拔、换个槽位、在BIOS里强制指定PCIe速率,都是常见解决办法。

另外散热也是个隐藏坑。MI50的散热器有两种版本:数据中心版偏吵,改装版偏弱。高负载跑30B模型时,HBM显存温度很容易冲到90度以上,显存过热会降频,性能反而更难看。有条件可以加风扇对着吹,或者把功耗墙调低一点。温度、功耗、风扇转速全部能用rocm-smi监控,这个命令对MI50的支持相当好:

rocm-smi --showtemp --showpower --showuse

4.3 新旧ROCm混装的经典错误

这个属于自己作死。我在一台机器上装过ROCm 5.7,后来为了某个算子又手动叠加了ROCm 6.x的库,结果连rocm-smi都崩了,各种符号找不到。AMD的ROCm安装脚本虽然会给多个版本留目录,但混装非常容易把运行时库路径弄乱。如果你要换ROCm版本,最干净的做法是先彻底卸载,把/opt/rocm*手动删掉,再装新版本。

经验:MI50这种老计算卡,稳定优先。装一个确定能用的版本,不要为了追新功能反复折腾。生产环境尤其如此,我现在这台机器就一直钉在ROCm 5.7.1上,配合PyTorch的ROCm 5.7轮子,跑各类推理任务都很稳。

5. 大模型部署初体验:ollama和vllm都能跑

5.1 用ollama做最快验证

装好ROCm之后,最快验证整条链路的方式就是用ollama。官网安装脚本会帮你处理驱动探测,运行时自动走ROCm后端。直接拉一个7B模型试试:

curl -fsSL https://ollama.com/install.sh | sh ollama run qwen2.5:7b

如果能看到显存占用、生成速度稳定,说明从BIOS到驱动的整条链路已经通了。ollama对ROCm的支持不一定是最优性能,但作为“能不能用”的探针非常可靠。热词里很多人搜“ollama本地部署大模型哪个模型最佳”,我的答案是先拿7B级别的Qwen2.5或Llama 3.1 8B跑通,再按显存余量往上升级。32G显存跑7B模型一般也就占用8到12GB,后面还有很大的空间跑更大模型。

5.2 vllm部署:显存规划是关键

如果ollama验证通过,下一步就可以上vllm。vllm在处理长上下文和高并发时有更好的页式显存管理机制,推理吞吐明显更稳。以Qwen2.5-7B的AWQ或GPTQ量化版本为例,模型权重大约4到6GB,KV Cache再占几个GB,32G显存跑起来很轻松,甚至能再拉一个14B甚至32B量化模型。

启动命令大致是:

python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen2.5-7B-Instruct \ --dtype float16 \ --gpu-memory-utilization 0.9 \ --max-model-len 8192

--dtype float16保证用上MI50的FP16算力,--gpu-memory-utilization建议从0.8起步试,跑不稳再往下调。如果你的环境里没有vllm,用pip install vllm直接装即可,前提是PyTorch已经能用ROCm。这里容易踩的坑是PyTorch版本匹配问题,建议直接安装torch==2.0.1+rocm5.4.2这类官方预编译的ROCm版本,别自己从源码编译,会省非常多事。

初期遇到类似"out of memory"的报错,先别慌,看看是不是显存碎片或者KV Cache设太高。vllm的日志会对显存占用和KV Cache分配给出详细诊断,照着调参数就好。

5.3 微调方向补充

热词里有人搜“qwen2.5-7b微调行业大模型”,我对MI50跑微调的建议是:能做小步子的LoRA和QLoRA实验,但不要指望它当训练主力。32G显存跑7B的QLoRA,也就是4bit权重,是可行的。transformers + peft + bitsandbytes在ROCm下基本可用,但训练时算子兼容性问题会比推理多。

真要跑微调,优先用比较保守的框架版本和PyTorch版本,把HSA_OVERRIDE_GFX_VERSION设置好。跑大一点的数据集之前,先切小样本,把显存占用、梯度累积、Learning Rate这些参数调稳再说,不然一次爆显存,前面的训练轮数全白跑。

6. 常见问题速查表(可直接抄作业)

现象原因解决办法
装好ROCm后rocm-smi看不到GPU内核模块未加载 / gfx906被屏蔽lsmod | grep amdgpu,export HSA_OVERRIDE_GFX_VERSION=9.0.6
显存显示几百MB或不对Above 4G Decoding未开启BIOS开启Above 4G Decoding / ReBAR
开机黑屏、不显示CSM兼容模式或Secure Boot关闭CSM,关闭Secure Boot,纯UEFI启动
系统重启后驱动白屏dkms模块未正确编译卸载重装amdgpu-install,检查内核版本,切回默认内核
推理特别慢PCIe链路速率低 / 显存过热lspci -vvv查LnkSta,检查金手指、槽位,加强散热
安装vllm失败PyTorch/ROCm版本不匹配使用官方支持组合,避免混装ROCm版本

这个表是我反复折腾的浓缩版。遇到问题先对表查,解决不了的再贴日志去AMD ROCm GitHub的issue区或相关社区提问,把rocminfo输出和内核版本一并贴出来,别人帮你定位会快很多。

最后再分享一个小技巧:MI50在消费级桌面上跑大模型,电源和主板供电规划别忽略。这张卡标称最大功耗大概300W,虽然实际跑模型时不容易一直吃满,但多路12V供电不够还是会导致重启或黑屏概率增加。你把系统其余配件的功耗预留出来,比一味求“全默认”要稳得多。折腾到这一步,这台老计算卡基本就发挥出它该有的价值了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询