LLM 硬件平台适配指南

0 阅读18分钟

NVIDIA / AMD / 昇腾 NPU / Apple Silicon / CPU 五大硬件平台的开源大模型部署完整指南。 主指南:LLM部署微调学习指南.md 更新日期:2026-04-27

不同硬件平台的开源大模型支持成熟度差异巨大。本文档帮你快速判断:你手上的硬件能跑什么、跑不动什么、需要装哪些东西。


目录


硬件平台总览

平台生态成熟度推理微调国内可得性性价比
NVIDIA GPU★★★★★★★★★★★★★★★限制供应
AMD GPU(ROCm)★★★★★★★★★★容易较高
昇腾 NPU★★★★★★★★★★国产首选高(企业)
Apple Silicon★★★★★★★(M3+)★★容易
CPU(GGUF)★★★★★★(小模型)×任何 PC极低门槛
Intel GPU(Arc)★★★★★容易较高

总原则:

  • 学习阶段:Apple Silicon 或 CPU(GGUF)可零成本起步
  • 工作机:NVIDIA(4090 / 5090)生态最全,文档最多
  • 企业/云:NVIDIA(A100 / H100)或昇腾(国产合规)
  • 避坑:不要买消费级 AMD 显卡(RX 6000/7000)做大模型,ROCm 在消费卡上不稳定

一、NVIDIA GPU(主流)

self-llm 教程默认平台,所有代码都是基于 NVIDIA + CUDA 写的。本节主要讲如何根据 NVIDIA 卡型号做对应配置

1.1 显卡能力对照

显卡显存FP16 算力(TFLOPS)推荐用途7B 推理速度
RTX 306012 GB~13学习、小模型推理~25 tok/s
RTX 309024 GB~367B 推理+LoRA~40 tok/s
RTX 409024 GB~83主力开发~80 tok/s
RTX 509032 GB~120旗舰~120 tok/s
A100 40G40 GB~78企业生产~100 tok/s
A100 80G80 GB~78大模型微调~100 tok/s
H100 80G80 GB~756(FP8)顶级~250 tok/s
H200141 GB~756(FP8)大模型推理之王~270 tok/s

注:tok/s 是单 batch 单流推理速度,vLLM 多并发能更高。

1.2 CUDA 与驱动配置

驱动版本:NVIDIA 驱动 535+ 才能用 CUDA 12.x。

CUDA 版本选择:

  • CUDA 11.8:兼容性好,适合老卡
  • CUDA 12.1:推荐,主流 PyTorch / vLLM 都支持
  • CUDA 12.4+:最新功能(FP8 等),需要新卡(40 系 / H100)

安装顺序(全新机器):

# 1. 装驱动(Ubuntu)
sudo ubuntu-drivers autoinstall
sudo reboot

# 2. 验证
nvidia-smi    # 应显示驱动版本和显卡信息

# 3. CUDA Toolkit 不需要单独装,PyTorch 会自带 CUDA runtime
# 直接装 PyTorch 即可
pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu121

1.3 多卡配置

单机多卡:几乎零配置,PyTorch 和 vLLM 自动支持。

# vLLM 4 卡
python -m vllm.entrypoints.openai.api_server \
  --model ./Qwen2.5-72B-Instruct \
  --tensor-parallel-size 4

注意:--tensor-parallel-size 必须能整除模型的注意力头数。Qwen2.5-72B 有 64 个头,可以填 1/2/4/8。

多机多卡(超大模型):需要 NCCL + Ray 集群,超出本指南范围,看 vLLM 官方文档。

1.4 NVLink vs PCIe

A100/H100 多卡之间走 NVLink(900 GB/s),消费卡(3090/4090)只有 PCIe(64 GB/s)。消费卡多卡训练通信会成为瓶颈,所以:

  • 消费卡多卡:适合张量并行的纯推理(通信少),不适合需要大量 all-reduce 的训练
  • A100/H100 多卡:训练推理都行

1.5 NVIDIA 平台典型问题

问题 1:Could not load library libcudnn_cnn_infer.so.8 原因:CUDA 12 的 cuDNN 版本和 PyTorch 不匹配。 解法:pip install nvidia-cudnn-cu12

问题 2:多卡推理负载不均 原因:tensor_parallel_size 不是 2 的幂或不整除头数。 解法:改成合法值;或降级到单卡推理。

问题 3:Windows 下 vLLM 报错 原因:vLLM 官方不支持 Windows 原生。 解法:用 WSL2 + Ubuntu(显卡直通,性能损失 <5%)。


二、AMD GPU(ROCm)

AMD 大学计划赞助了 self-llm 项目,所以仓库里有专门的 AMD 教程。但消费级和数据中心级体验差很多

2.1 哪些 AMD 卡能用

ROCm 支持实际可用性
MI300X (192GB)✅ 官方数据中心级,与 H100 竞争
MI250 / MI250X✅ 官方企业级,性能接近 A100
MI210✅ 官方性能不如 A100
RX 7900 XTX (24GB)⚠️ 半官方消费卡里最好的,但 bug 多
RX 7900 XT / 7800 XT⚠️ 社区不推荐
RX 6000 系列⚠️ 老兼容差,放弃
Radeon AI Pro✅ 官方工作站卡,推荐

核心建议:做严肃工作买 MI300X / MI250;消费级随便玩可买 7900 XTX;其他都别想了。

2.2 ROCm 环境配置(Ubuntu)

# 1. 添加 ROCm 仓库(Ubuntu 22.04 为例)
wget https://repo.radeon.com/amdgpu-install/6.2/ubuntu/jammy/amdgpu-install_6.2.60200-1_all.deb
sudo apt install ./amdgpu-install_6.2.60200-1_all.deb

# 2. 安装 ROCm
sudo amdgpu-install --usecase=hiplibsdk,rocm,dkms
sudo reboot

# 3. 验证
rocminfo                    # 显示 GPU 设备
rocm-smi                    # 类似 nvidia-smi

# 4. 装 ROCm 版 PyTorch
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.2

# 5. 验证 PyTorch
python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name())"
# 注意:即使是 AMD,API 名字仍叫 cuda(为了兼容)

2.3 主要库的 AMD 支持

AMD 支持备注
transformers✅ 完全改一行 device_map="cuda"
accelerate✅ 完全自动识别 ROCm
peft / LoRA✅ 完全无差异
bitsandbytes⚠️ 实验性ROCm 版叫 bitsandbytes-rocm,QLoRA 可用但不稳
vLLM✅ 0.5+官方支持,装 vllm-rocm
Flash Attention✅ 2.xrocBLAS 后端
DeepSpeedROCm 后端

2.4 vLLM on AMD

# 安装 ROCm 版
pip install vllm-rocm    # 或从源码编译

# 启动(命令完全相同)
python -m vllm.entrypoints.openai.api_server \
  --model ./Qwen2.5-7B-Instruct \
  --max-model-len 8192

2.5 Gemma3 + Ryzen AI 300 系列

self-llm 仓库特别支持了 AMD Ryzen AI 300 系列处理器(集成的 NPU + GPU),用 lemonade-server 部署:

# 安装 lemonade-server
pip install lemonade-sdk

# 启动 Gemma3 在 NPU 上
lemonade serve --model gemma3-1b --device hybrid

性能:比纯 CPU 快 3-5 倍,但仅限 1-3B 小模型。

2.6 AMD 平台典型问题

问题 1:HIP error: invalid device function 原因:GPU 架构不支持(常见于消费卡)。 解法:设环境变量 HSA_OVERRIDE_GFX_VERSION=11.0.0(7900 XTX)或 10.3.0(6000 系)。

问题 2:vLLM 启动比 NVIDIA 慢很多 原因:ROCm 没有 CUDA Graph 等价物,首次编译耗时。 解法:可以接受,后续推理速度正常。

问题 3:bitsandbytes 在 AMD 上不工作 解法:用 optimum-quantoauto-gptq 替代做量化。

2.7 性能对比(7B 推理)

推理速度价格
MI300X~280 tok/s企业级
7900 XTX~60 tok/s¥7000
RTX 4090~80 tok/s¥15000
MI250~100 tok/s二手 ¥30000

7900 XTX 是消费 AMD 卡里最有性价比的,接近 4090 性能但显存一致。


三、昇腾 NPU(华为)

self-llm 已经支持昇腾 NPU(support_model_Ascend.md),是国产合规场景的首选。

3.1 硬件型号

Atlas A2 系列(昇腾 910B 芯片):

  • Atlas 800I A2:推理服务器(8 卡)
  • Atlas 800T A2:训练服务器
  • Atlas 300I A2:推理卡(单卡 64GB,可插服务器)

Atlas A3 系列(昇腾 910C 芯片,新一代):

  • Atlas 800I A3:推理(性能接近 H100)
  • Atlas 800T A3:训练

3.2 软件栈

昇腾的软件栈是独立体系,不基于 CUDA。核心组件:

应用层:transformers / vLLM / MindIE
        ↓
中间层:torch-npu(PyTorch 适配层)
        ↓
计算引擎:CANN(类似 CUDA Toolkit)
        ↓
驱动层:NPU 驱动 + 固件
        ↓
硬件:昇腾 910B / 910C

3.3 环境配置

# 1. 安装 NPU 驱动和固件(由华为提供)
# 通常云服务商(华为云)预装好

# 2. 安装 CANN(类似 CUDA Toolkit)
# 从 https://www.hiascend.com 下载对应版本

# 3. 安装 Python 环境
conda create -n ascend_llm python=3.9
conda activate ascend_llm

# 4. 安装 torch-npu(关键)
pip install torch==2.1.0 --index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install torch_npu==2.1.0.post3 --index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 5. 配置环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh

# 6. 验证
python -c "import torch; import torch_npu; print(torch.npu.is_available())"

3.4 transformers 在昇腾上跑

只需把 cuda 改成 npu:

import torch
import torch_npu                # 关键:必须 import
from transformers import AutoModelForCausalLM, AutoTokenizer

MODEL_PATH = "./Qwen2.5-7B-Instruct"

tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    MODEL_PATH,
    torch_dtype=torch.float16,   # 昇腾推荐 FP16,不是 BF16
    trust_remote_code=True
).to("npu:0")                     # ← 关键

# 推理代码完全相同
inputs = tokenizer("你好", return_tensors="pt").to("npu:0")
outputs = model.generate(**inputs, max_new_tokens=128)

3.5 MindIE:昇腾原生推理引擎

类似 vLLM,华为自研的推理引擎,在昇腾上性能最好。

# 安装(需要华为账号下载)
# pip install mindie

# 启动 OpenAI 兼容服务
python -m mindie.entrypoints.openai_server \
  --model ./Qwen2.5-7B-Instruct \
  --device npu:0

性能:MindIE 在昇腾上比 vLLM-npu 快约 30%,是生产环境推荐。

3.6 vLLM 在昇腾上

vLLM 官方有 npu 适配版本:

pip install vllm-ascend          # 社区维护

python -m vllm.entrypoints.openai.api_server \
  --model ./Qwen2.5-7B-Instruct \
  --device npu \
  --max-model-len 8192

3.7 昇腾平台典型问题

问题 1:AttributeError: module 'torch' has no attribute 'npu' 原因:没 import torch_npu。 解法:import torch_npu 必须放在 import torch 之后。

问题 2:某些模型不支持 原因:特殊算子未在昇腾实现。 解法:看 self-llm 的 support_model_Ascend.md 列表;不支持的模型只能等社区适配。

问题 3:精度问题(BF16 输出乱码) 原因:910B 对 BF16 支持不完美。 解法:用 FP16,或用 INT8 量化。

问题 4:微调速度慢 原因:torch_npu 的某些算子没充分优化。 解法:用华为 MindSpore + MindFormers 框架(脱离 PyTorch),性能最佳但学习曲线陡。

3.8 何时选昇腾

  • 强制要求:政府/金融/国企的国产化合规场景
  • 性价比:同等算力比 NVIDIA 便宜(企业采购)
  • 算力密度:Atlas 800I A2 单机 8 卡 512GB HBM,适合大模型部署

不推荐:个人学习(生态远不如 NVIDIA)、研究新模型(适配滞后)。


四、Apple Silicon(MLX)

M1/M2/M3/M4 系列芯片可以跑大模型,因为统一内存架构(CPU/GPU 共享内存)显存可以做到 64-192GB。

4.1 哪些 Mac 能用

芯片内存范围推荐用途
M1 (8-16GB)8-16 GB1-3B 模型推理
M2 (8-24GB)8-24 GB1-7B 推理
M3 / M4 (16-128GB)16-128 GB主力学习/开发
M3 Ultra / M4 Max64-192 GB70B 模型推理

关键认知:M 系列的"统一内存"意味着 64GB 内存的 Mac 可以加载 60GB 的模型(NVIDIA 24GB 显存的 4090 做不到)。

4.2 三条技术路线

路线 1:llama.cpp + GGUF(最广泛)

  • 跨平台 C++ 实现,Metal 后端硬件加速
  • 模型用 GGUF 格式(各种量化)
  • 见第五章 CPU/GGUF 节,Mac 上自动用 Metal

路线 2:MLX(Apple 官方) Apple 自家的 ML 框架,专为 Apple Silicon 优化:

pip install mlx-lm

# 推理
python -m mlx_lm.generate \
  --model mlx-community/Qwen2.5-7B-Instruct-4bit \
  --prompt "你好" \
  --max-tokens 256

# 启动 OpenAI 兼容服务
python -m mlx_lm.server \
  --model mlx-community/Qwen2.5-7B-Instruct-4bit \
  --port 8080

路线 3:Ollama(最简单) 零配置一键部署:

# 安装 Ollama
brew install ollama

# 启动服务
ollama serve

# 下载并运行模型
ollama run qwen2.5:7b           # 自动下载并跑
ollama run llama3.1:8b
ollama run deepseek-coder:6.7b

# 已支持的中文模型
ollama run qwen2.5:0.5b         # 边缘设备
ollama run qwen2.5:7b
ollama run qwen2.5:14b
ollama run qwen2.5:32b
ollama run qwen2.5:72b          # M3 Ultra 192GB 才能跑

4.3 性能参考

Mac模型速度
M2 Max (32GB)Qwen2.5-7B Q4~25 tok/s
M3 Max (64GB)Qwen2.5-14B Q4~30 tok/s
M3 Max (128GB)Qwen2.5-32B Q4~15 tok/s
M3 Ultra (192GB)Qwen2.5-72B Q4~10 tok/s

参考:同尺寸下,M3 Max 推理速度约为 RTX 4090 的 1/3,但能跑更大模型。

4.4 微调能力(弱项)

Apple Silicon 微调支持差:

  • MLX 支持 LoRA 微调(mlx-lm 有 lora 子命令),但生态不如 PyTorch
  • 训练速度只有 NVIDIA 的 1/5 到 1/10
  • 不推荐用 Mac 做微调,推理足够

4.5 Apple Silicon 典型问题

问题 1:模型加载占内存巨大 原因:MLX 加载时会把权重展开到 RAM。 解法:用量化版(Q4 / Q5),内存占用减半。

问题 2:Ollama 模型从哪下载? 解法:Ollama 有自己的 registry(类似 Docker Hub),自动从 ollama.com 拉取。国内速度慢的话:OLLAMA_HOST=hf-mirror.com ollama pull ...

问题 3:CPU 不被充分利用 原因:Metal 后端用的是 GPU,CPU 在等待。 解法:这是正常的,不是 bug。


五、CPU(llama.cpp / GGUF)

完全没有显卡也能跑大模型,代价是慢。llama.cpp 是这条路线的开山之作。

5.1 GGUF 格式

GGUF(GPT-Generated Unified Format)是为 CPU 推理优化的模型格式:

  • 支持各种量化(Q2_K / Q3_K / Q4_K / Q5_K / Q8_0 等)
  • 单文件,加载快
  • 完整支持中文模型

5.2 llama.cpp 安装

# 编译(macOS / Linux)
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp

# CPU 版
make

# GPU 加速(可选)
make GGML_CUDA=1                     # NVIDIA
make GGML_METAL=1                    # Apple Silicon(默认开)
make GGML_HIPBLAS=1                  # AMD ROCm
make GGML_VULKAN=1                   # 跨平台 GPU

Windows 用户:用 winget install llama.cpp 或下载预编译二进制。

5.3 下载 GGUF 模型

HuggingFace 上有大量 GGUF 量化版,搜 qwen2.5 GGUF:

# 用 huggingface-cli
pip install huggingface_hub
huggingface-cli download Qwen/Qwen2.5-7B-Instruct-GGUF \
  qwen2.5-7b-instruct-q4_k_m.gguf \
  --local-dir ./models

或国内 ModelScope:

modelscope download --model Qwen/Qwen2.5-7B-Instruct-GGUF \
  --local_dir ./models

5.4 量化等级如何选

后缀文件大小(7B)质量损失速度
Q2_K~3 GB大(可感知降智)最快
Q3_K_M~3.5 GB较大较快
Q4_K_M~4.5 GB小(默认推荐)
Q5_K_M~5.5 GB极小
Q6_K~6.5 GB几乎无较慢
Q8_0~8 GB最慢

推荐:Q4_K_M 性价比最高,7B 模型 ~4.5GB,在 16GB 内存的笔记本流畅跑。

5.5 命令行推理

# 单次推理
./llama-cli \
  -m ./models/qwen2.5-7b-instruct-q4_k_m.gguf \
  -p "用三句话介绍量子计算" \
  -n 256 \
  -t 8                              # CPU 线程数

# 交互式聊天
./llama-cli \
  -m ./models/qwen2.5-7b-instruct-q4_k_m.gguf \
  -i \
  -cnv                              # 对话模式

5.6 启动 OpenAI 兼容服务

./llama-server \
  -m ./models/qwen2.5-7b-instruct-q4_k_m.gguf \
  --port 8080 \
  -c 4096                           # 上下文长度

调用方式和 vLLM 完全一样:

from openai import OpenAI
client = OpenAI(base_url="http://localhost:8080/v1", api_key="x")
resp = client.chat.completions.create(
    model="qwen2.5",
    messages=[{"role": "user", "content": "你好"}]
)

5.7 CPU 推理性能

CPU模型速度
i5-12500 (6核)Qwen2.5-7B Q4~6 tok/s
i7-13700K (16核)Qwen2.5-7B Q4~10 tok/s
i9-14900K (24核)Qwen2.5-7B Q4~14 tok/s
AMD Ryzen 7950XQwen2.5-7B Q4~12 tok/s
Apple M2 MaxQwen2.5-7B Q4~25 tok/s(用 Metal)

6-10 tok/s 是 CPU 的常态,适合做演示和单用户工具,不要用于多用户服务

5.8 自己量化模型

如果 HuggingFace 上没有现成的 GGUF,可以自己转:

# 1. 用 transformers 格式的模型转 GGUF
python convert-hf-to-gguf.py ./models/Qwen2.5-7B-Instruct \
  --outfile qwen2.5-7b.gguf \
  --outtype f16

# 2. 量化到 Q4
./llama-quantize qwen2.5-7b.gguf qwen2.5-7b-q4_k_m.gguf q4_k_m

5.9 何时选 CPU 路线

  • 没有显卡的笔记本/台式机
  • 极小型部署(单用户聊天工具)
  • 需要在客户端本地跑(隐私应用)
  • 学习模型量化和优化原理
  • 端侧部署原型验证

六、Intel GPU(IPEX-LLM)

Intel Arc 显卡(A770 / B580)和 Xeon 处理器,通过 IPEX-LLM 框架支持开源大模型。生态最不成熟但价格便宜。

6.1 适用场景

  • 已经有 Intel Arc 显卡(A770 16GB ~¥2500)
  • 服务器有 Xeon 集成显卡 / 数据中心 GPU
  • 不要为了大模型专门买 Intel GPU——优先级低于 NVIDIA / AMD

6.2 IPEX-LLM 安装

# 创建环境
conda create -n ipex python=3.11
conda activate ipex

# 安装 IPEX-LLM
pip install --pre --upgrade ipex-llm[xpu] \
  --extra-index-url https://pytorch-extension.intel.com/release-whl/stable/xpu/cn/

# 验证
python -c "import torch; import intel_extension_for_pytorch as ipex; print(torch.xpu.is_available())"

6.3 推理示例

import torch
from ipex_llm.transformers import AutoModelForCausalLM
from transformers import AutoTokenizer

model = AutoModelForCausalLM.from_pretrained(
    "./Qwen2.5-7B-Instruct",
    load_in_4bit=True,                  # IPEX-LLM 自带 INT4 量化
    trust_remote_code=True
)
model = model.to("xpu")                  # ← Intel GPU 设备名

tokenizer = AutoTokenizer.from_pretrained("./Qwen2.5-7B-Instruct")
inputs = tokenizer("你好", return_tensors="pt").to("xpu")
outputs = model.generate(**inputs, max_new_tokens=128)

6.4 性能(A770 16GB)

  • Qwen2.5-7B Q4:~30 tok/s(比 4090 慢 60%)
  • 微调:LoRA 可用,但速度只有 NVIDIA 的 1/3

跨平台性能对比

Qwen2.5-7B-Instruct(Q4 / FP16) 推理为例:

平台配置速度(tok/s)显存/内存价格
NVIDIA H100FP16~25016 GB / 80 GB企业级
NVIDIA 4090FP16~8016 GB / 24 GB¥15000
NVIDIA 3090FP16~4016 GB / 24 GB¥6000 二手
AMD MI300XFP16~28016 GB / 192 GB企业级
AMD 7900 XTXFP16~6016 GB / 24 GB¥7000
昇腾 910BFP16~10016 GB / 64 GB企业级
Apple M3 Max 64GBQ4~304.5 GB / 64 GB¥30000 整机
Apple M2 Max 32GBQ4~254.5 GB / 32 GB¥25000 整机
Intel Arc A770Q4~304.5 GB / 16 GB¥2500
i9-14900K CPUQ4~144.5 GB RAM¥4000

结论:

  • 学习起步:i9 + 32GB 内存的 PC 就能跑(¥6000)
  • 流畅开发:RTX 3090 二手(¥6000)
  • 生产推荐:RTX 4090 / A100(¥15000+)
  • 极致性能:H100 / H200(企业)

选型决策

我应该买什么硬件?

预算 < ¥5000?
└─ 买 32GB 内存的 PC,跑 GGUF + Ollama,只能玩小模型

预算 ¥5000-10000?
├─ 二手 30906000):学习 + 微调 7B,主流配置
└─ 5800X + 64GB RAM6000):纯 CPU 路线,慢但能跑

预算 ¥10000-20000?
├─ RTX 409015000)+ 64GB RAM:几乎能做所有事
└─ M3 Max 64GB Mac30000+):便携 + 大内存,但微调弱

预算 ¥20000+?
├─ 双 409030000):多模型并行 / 张量并行
└─ A100 40G80000+):企业级

我是企业,要合规?
└─ 昇腾 910B / 800I A2(咨询华为云)

我已经有 X,该怎么办?

现有硬件推荐
笔记本 + 集成显卡Ollama + Qwen2.5-1.5B,够用
笔记本 + GTX 1660(6GB)llama.cpp + GGUF Q4,跑 7B 模型
RTX 2080 Ti(11GB)LoRA 微调 7B(QLoRA)、推理 13B 量化
RTX 3060(12GB)LoRA 微调 7B,推理 14B 量化
RTX 3090 / 4090(24GB)主力配置,什么都能做
MacBook Pro M2/M3Ollama 推理,微调用云
服务器有 V100 32GBLoRA 微调 7B,生产部署
公司有 A100 集群直接上 70B 模型 + DeepSpeed

实用脚本:硬件检测

文件名:detect_hw.py

"""检测当前硬件,推荐合适的部署方案。"""
import platform
import psutil

def detect():
    info = {}

    # CPU
    info['os'] = platform.system()
    info['cpu'] = platform.processor()
    info['cpu_cores'] = psutil.cpu_count(logical=False)
    info['ram_gb'] = round(psutil.virtual_memory().total / 1024**3, 1)

    # GPU 检测
    info['gpu'] = []

    # NVIDIA
    try:
        import torch
        if torch.cuda.is_available():
            for i in range(torch.cuda.device_count()):
                info['gpu'].append({
                    'type': 'NVIDIA',
                    'name': torch.cuda.get_device_name(i),
                    'vram_gb': round(torch.cuda.get_device_properties(i).total_memory / 1024**3, 1)
                })
    except ImportError:
        pass

    # AMD ROCm(也走 cuda 接口)
    # 略

    # Apple Silicon
    if info['os'] == 'Darwin' and 'arm' in platform.machine().lower():
        try:
            import torch
            if torch.backends.mps.is_available():
                info['gpu'].append({
                    'type': 'Apple Silicon',
                    'name': platform.machine(),
                    'vram_gb': info['ram_gb']    # 统一内存
                })
        except ImportError:
            pass

    return info


def recommend(info):
    print(f"\n操作系统: {info['os']}")
    print(f"CPU: {info['cpu']} ({info['cpu_cores']} 核)")
    print(f"内存: {info['ram_gb']} GB")

    if info['gpu']:
        for g in info['gpu']:
            print(f"GPU: {g['type']} {g['name']} ({g['vram_gb']} GB)")
    else:
        print("GPU: 未检测到")

    print("\n=== 推荐方案 ===")

    if not info['gpu']:
        if info['ram_gb'] >= 16:
            print("→ 路线:CPU + GGUF")
            print("→ 推荐模型:Qwen2.5-3B Q4 或 Qwen2.5-7B Q4")
            print("→ 工具:llama.cpp 或 Ollama")
        else:
            print("→ 内存太小,只能跑 1B 以下模型")
        return

    g = info['gpu'][0]
    vram = g['vram_gb']

    if g['type'] == 'NVIDIA':
        if vram >= 24:
            print("→ 路线:transformers + vLLM,主力配置")
            print(f"→ 可微调:Qwen2.5-7B / 14B(LoRA)")
            print(f"→ 可推理:Qwen2.5-32B(量化)、Qwen2.5-14B(FP16)")
        elif vram >= 16:
            print("→ 路线:transformers + LoRA")
            print(f"→ 可微调:Qwen2.5-7B(LoRA)")
            print(f"→ 可推理:Qwen2.5-7B(FP16)、Qwen2.5-14B(量化)")
        elif vram >= 8:
            print("→ 路线:QLoRA + 量化推理")
            print(f"→ 可微调:Qwen2.5-7B(QLoRA 4bit)")
            print(f"→ 可推理:Qwen2.5-3B(FP16)、7B(INT4)")
        else:
            print("→ 路线:GGUF / 小模型")
            print(f"→ 推荐:Qwen2.5-1.5B 或 MiniCPM-2B")

    elif g['type'] == 'Apple Silicon':
        print("→ 路线:Ollama 或 MLX")
        if info['ram_gb'] >= 64:
            print("→ 可推理:Qwen2.5-32B Q4 或 70B Q4")
        elif info['ram_gb'] >= 32:
            print("→ 可推理:Qwen2.5-14B Q4 或 7B FP16")
        else:
            print("→ 可推理:Qwen2.5-7B Q4")
        print("→ 微调能力弱,建议云端做训练")


if __name__ == "__main__":
    info = detect()
    recommend(info)

执行:

python detect_hw.py

总结

平台一句话总结
NVIDIA生态之王,什么都最快最稳
AMD性价比可观,但消费卡坑多,数据中心卡(MI300)真香
昇腾国产合规首选,生态尚可,文档不全
Apple Silicon推理友好,大内存优势,微调弱
CPU零成本起步,小模型可用,不要用于生产
Intel GPU价格便宜,生态最弱,只买现成不专门买

绝大多数人:RTX 3090(二手)或 4090(全新)→ 学完所有内容 → 再决定下一步硬件升级。