ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

国产GPU跑大模型:从环境配置到多卡部署的完整实操指南

国产GPU跑大模型:从环境配置到多卡部署的完整实操指南 前段时间看到壁仞科技公布的财务数据上半年收入 12.36 亿元同比增长 1997.6%。这个数字在国产 GPU 赛道里相当亮眼但比起单纯的营收增长我更关注的是它背后反映出的一整条产业信号——国产 GPU 正在从“可展示、可测试”走向“可采购、可上线”。不少读者私信问我国产 GPU 到底能不能跑大模型和 NVIDIA 的卡相比差在哪普通开发者的 PyTorch 代码改一改能不能直接跑本文不打算只复述一遍财报而是结合日常开发中高频出现的 GPU 问题从技术角度拆解国产 GPU 生态的真实落地情况并给出从环境配置、推理部署到多卡调试的一整套实操思路。1. 背景梳理壁仞科技的收入增长说明了什么1.1 壁仞科技是做什么的壁仞科技Biren Technology是国内专注于通用智能 GPU 计算的芯片公司产品线覆盖训练、推理和通用计算场景。与 NVIDIA 的 A100/H100 思路类似壁仞的通用 GPU 芯片面向 AI 训练、科学计算、数据中心加速等场景典型产品包括 BR100 系列和 BR104 系列。这里需要先区分一个概念壁仞做的是GPGPU通用图形处理器而不是单纯的游戏显卡。和消费级 GPU 不同GPGPU 的定位是数据中心场景下的高并行计算大量用于深度学习训练、大模型推理、HPC 高性能计算。它的核心指标不只是帧率而是算力、显存带宽、互联能力和软件生态兼容度。1.2 1997.6% 这个数字背后是什么上半年收入 12.36 亿元同比增长 1997.6%。这个增速意味着出货量开始形成规模不是小批量送测而是真实交付到客户机房。软件栈逐渐成熟客户愿意从测试环境迁移到生产环境。供应链和量产能力逐步稳定。对开发者来说这传递出一个明确信号国产 GPU 不再是“PPT 芯片”而是需要认真对待的技术选型方向。当然也要客观看待1997.6% 的同比增速与去年同期基数低有直接关系不代表长期会保持这个斜率。但至少从生态发展角度看国产 GPU 已经到了“从测试走向适配”的关键阶段。1.3 AI 时代对芯片的特殊需求大模型兴起之后算力需求发生了结构性变化训练阶段需要大显存、高带宽、高算力每张卡要能装下模型参数、梯度和优化器状态。推理阶段需要低延迟、高吞吐特别是在服务端并发场景下对显存带宽和算子优化要求极高。多卡互联越来越重要单卡放不下模型就需要通过高速互联把多张卡组成一个计算集群。这些需求是 CPU 无法满足的。CPU 擅长复杂逻辑控制和串行计算但深度学习本质上是大规模矩阵运算需要大量并行计算单元这正是 GPU 的强项。1.4 概念辨析CPU、GPU、TPU、NPU很多新手容易混淆这几个名词CPU中央处理器核心少但单核能力强擅长复杂逻辑控制。GPU图形处理器/通用图形处理器核心多擅长大规模并行计算深度学习的核心加速硬件。TPUTensor Processing Unit谷歌推出的张量处理单元为 TensorFlow 等框架深度定制。NPUNeural Processing Unit神经网络处理单元通常集成在手机 SoC 或边缘设备中算力功耗比高但灵活性不如 GPU。国产 GPU 的目标是在 GPU 这条赛道上通过自研芯片加软件适配逐步替代进口产品在训练和推理场景的使用。2. 软件生态是国产 GPU 最大的战场2.1 硬件只是第一关软件生态决定生死对开发者来说硬件规格固然重要但真正决定“能不能用”的是软件栈。NVIDIA 之所以在 AI 时代占据主导地位除了硬件性能领先外CUDA 生态功不可没。经过十几年积累CUDA 拥有完整的算子库cuBLAS、cuDNN、深度学习框架适配PyTorch、TensorFlow、调试工具Nsight、容器镜像NGC和庞大开发者社区。国产 GPU 厂商很清楚这一点。壁仞科技发布的 BIRENSUPA 软件栈就是围绕类 CUDA 生态打造的一整套基础软件平台主要包括设备驱动负责 GPU 硬件和操作系统的通信。运行时库提供设备管理、内存管理、流管理、事件管理等基础 API。数学库BLAS、FFT、稀疏矩阵等高性能计算库。编译器将 Kernel 代码编译为 GPU 可执行指令。框架适配层对接 PyTorch、TensorFlow 等主流深度学习框架。2.2 从 CUDA 代码到国产 GPU 的迁移难度如果之前用 CUDA 写过算子迁移到国产 GPU 时的体验取决于厂商的兼容策略部分厂商采用 CUDA 兼容层尽量让已有 CUDA 代码无需修改或少量修改即可运行。部分厂商提供自定义编程模型需要按厂商文档重写 Kernel迁移成本较高。对大多数不直接写 CUDA 的算法工程师来说更现实的路径是依赖 PyTorch 的适配。只要 PyTorch 能在国产 GPU 上正常跑模型训练和推理的迁移成本就会大幅降低。2.3 国产 GPU 上跑大模型的实际挑战在实际使用中国产 GPU 跑大模型会遇到几个高频问题框架适配不完整某些 PyTorch 算子没有在国产卡上完整实现导致模型跑到一半报“算子不支持”。显存管理差异不同厂商的显存分配策略不同可能出现显存利用率低或内存碎片问题。多卡通信效率训练大模型需要多卡通信如果厂商的 NCCL 替代实现不成熟多卡扩展效率会明显下降。推理引擎支持vLLM、TensorRT-LLM 等主流推理引擎是否适配直接影响大模型推理性能。这些问题的解决速度决定了国产 GPU 能否真正走进生产环境。3. 在国产 GPU 上运行大模型从零开始的实操路径下面进入实战环节。无论你手里是壁仞 GPU还是其他国产 GPU下面这套流程适用于大多数“类 CUDA”加速卡。核心思路是先搞定驱动和软件栈再验证 PyTorch 环境最后让推理框架跑起来。3.1 环境准备与版本说明本文示例以 Linux 环境为主建议使用 Ubuntu 20.04/22.04 LTS。国产 GPU 的驱动通常支持常见 Linux 发行版Windows 下的支持度相对有限。版本需要根据你的实际设备调整这里给出通用流程操作系统Ubuntu 20.04/22.04 LTS驱动GPU 厂商官方驱动深度学习框架PyTorch适配版本需要参考厂商官方文档推理框架Ollama / vLLM / llama.cpp3.2 安装驱动与软件栈安装驱动的过程与 NVIDIA 类似。需要注意安装前先确认设备是否被系统正确识别。# 查看 PCIe 设备列表中是否有 GPU 厂商 ID lspci | grep -i processing lspci | grep -i biren如果厂商提供了 SDK 安装包一般包含驱动、运行时和编译工具链# 以常见国产 GPU SDK 安装为例 # 具体包名以厂商官方文档为准 sudo ./install.sh安装完成后可以用设备管理命令查看 GPU 状态。# 显示 GPU 设备列表、使用率、显存信息 # 不同厂商的命令不同常见的有 biren-smi / mxsmi 等 biren-smi预期输出类似于----------------------------------------------------------------------- | BIREN GPU 0 | ----------------------------------------------------------------------- | Name : BR104 | | PCIe : 0000:3D:00.0 | | Memory : 32768 MiB | | Util : 0% | -----------------------------------------------------------------------需要注意的是biren-smi 是壁仞科技 GPU 状态查看工具如果你使用的是其他厂商的卡命令名称会不同但功能类似都是查看显卡利用率、显存温度和进程信息。3.3 让 Ollama 使用 GPU 运行大模型Ollama 是目前本地运行大模型最方便的工具之一很多同学在 NVIDIA GPU 上已经跑通。在国产 GPU 上使用 Ollama 的逻辑是相似的只要 Ollama 能够识别底层 GPU 加速设备模型推理就会自动走 GPU。常规步骤如下# 1. 安装 Ollama curl -fsSL https://ollama.com/install.sh | sh # 2. 启动 Ollama 服务 systemctl start ollama # 3. 拉取模型并运行 ollama run qwen2.5:7b如果 Ollama 默认无法识别国产 GPU需要确认两件事显卡驱动是否正确安装biren-smi能否看到设备。Ollama 程序是否运行在正确的环境变量下。有些国产 GPU 需要通过LD_LIBRARY_PATH指定厂商运行库路径。# 将厂商运行库路径加入环境变量 export LD_LIBRARY_PATH/opt/biren/lib:$LD_LIBRARY_PATH验证 GPU 是否真正参与推理# 查看进程和显存占用确认模型是否加载到 GPU biren-smi如果显存占用为 0说明模型仍在 CPU 上运行需要检查兼容层和软链接配置。3.4 如何切换 Ollama 的 GPU 模式一些国产 GPU 在 Ollama 中的使用需要显式启用 GPU 后端支持。核心是确认两点Ollama 的版本是否包含对应 GPU 的运行时系统环境变量是否指向正确的加速库路径。常见做法# 设置 GPU 相关库路径 export PATH/usr/local/biren/bin:$PATH export LD_LIBRARY_PATH/usr/local/biren/lib:$LD_LIBRARY_PATH # 启动 Ollama ollama serve检查 Ollama 日志确认加速后端是否加载成功journalctl -u ollama -n 50日志中出现类似 “inference compute” 或厂商运行时的字段说明 GPU 后端已启用。3.5 PyTorch GPU 环境搭建PyTorch 对国产 GPU 的支持通常通过厂商定制的 PyTorch 版本来实现。不要直接安装官方 PyTorch 的 CUDA 版本因为那只能识别 NVIDIA GPU。安装流程# 创建虚拟环境 python3 -m venv gpuenv source gpuenv/bin/activate # 安装厂商适配的 PyTorch # 具体安装命令以厂商官方为准 pip install torch torchvision torchaudio --index-url 厂商PyPI镜像安装完成后用一段简单代码验证 GPU 是否可用import torch # 检查设备数 print(设备数量:, torch.cuda.device_count() if hasattr(torch, cuda) else 无CUDA接口) # 尝试在 GPU 上创建张量 try: device torch.device(cuda:0) x torch.rand(3, 3).to(device) print(GPU 可用计算结果:) print(x x) except Exception as e: print(GPU 不可用:, e)如果 PyTorch 的torch.cuda接口在厂商适配版中仍然存在说明厂商在软件层兼容了 CUDA 接口规范这种设计对开发者迁移非常友好。3.6 WSL 中常见报错failed to initialize NVML很多开发者在 Windows 的 WSL 环境里调试 GPU 时遇到过类似报错failed to initialize NVML: GPU access blocked by the operating system这个报错虽然在 NVIDIA 卡上更常见但在国产 GPU 的 WSL 适配中也可能出现类似问题因为国产 GPU 厂商对 WSL 的支持普遍比 NVIDIA 晚。根本原因通常是WSL 内核没有加载对应 GPU 的驱动模块。Windows 侧没有安装厂商提供 WSL 专用驱动。驱动版本与 WSL 版本不匹配。排查思路# 在 WSL 中查看是否有 GPU 设备 lspci | grep -i vga\|3d\|display如果看不到设备说明 WSL 没有把 GPU 透传给虚拟机。此时需要在 Windows 侧安装厂商提供的 WSL 驱动。在 WSL 内安装对应的 Linux 用户态运行库。重启 WSLwsl --shutdown wsl如果 WSL 的 GPU 透传始终有问题建议直接使用原生 Linux 系统或者使用 Docker 容器方式管理环境减少 WSL 带来的额外变量。4. 单机多卡 GPU 的使用与测试思路大模型训练和推理对显存的需求很大单卡往往不够用多卡并行是常态。热词中提到的“Linux 三个 GPU 同时测试”“单服务器多 GPU 卡怎么连”是这个环节的真实痛点。4.1 多卡环境检查多卡环境下第一步是确认系统识别了所有 GPU。# 查看所有 GPU 设备 lspci | grep -i processing # 查看各卡状态 biren-smi预期能看到多个 GPU 设备记录每个设备的编号和显存容量。4.2 多卡 PyTorch 训练思路PyTorch 多卡训练有两种常见模式模式一DataParallel简单但慢适合快速测试和显存小于单卡容量的场景import torch import torch.nn as nn model nn.Linear(1024, 1024) # 单进程多卡并行 model nn.DataParallel(model) model model.to(cuda)模式二DistributedDataParallel生产推荐适合真正的大模型分布式训练import torch import torch.distributed as dist import torch.multiprocessing as mp from torch.nn.parallel import DistributedDataParallel as DDP def train(rank, world_size): # 初始化进程组 dist.init_process_group( backendnccl, init_methodtcp://localhost:23456, rankrank, world_sizeworld_size ) model nn.Linear(1024, 1024).to(rank) ddp_model DDP(model, device_ids[rank]) # 训练逻辑... dist.destroy_process_group() if __name__ __main__: mp.spawn(train, args(3,), nprocs3)需要注意的是backendnccl在 NVIDIA 上是标准选择但国产 GPU 厂商可能提供自己的通信库。迁移到国产卡多卡训练时需要把 backend 换成厂商支持的通信后端否则会报通信初始化失败。4.3 多卡推理服务部署如果是用 vLLM 或类似推理框架部署多卡服务通常只需指定可见 GPU# 指定使用第 0、1、2 号 GPU CUDA_VISIBLE_DEVICES0,1,2 python -m vllm.entrypoints.openai.api_server \ --model /path/to/model \ --tensor-parallel-size 3在国产 GPU 上需要确认推理框架是否适配了该硬件的后端。如果没有现成适配可以先通过llama.cpp配合厂商自定义后端跑通单卡再逐步扩展到多卡。5. 常见问题排查清单问题现象常见原因解决思路biren-smi 显示无设备驱动未安装或加载失败重新安装驱动检查内核模块是否加载PyTorch 报 CUDA error: no kernel image算子未适配当前设备安装厂商适配版 PyTorch 或更新软件栈模型推理时显存占用为 0未配置 GPU 运行库环境变量检查 LD_LIBRARY_PATH 是否指向厂商库路径Ollama 运行不报错但性能很低实际运行在 CPU确认 Ollama 后端是否加载 GPU 运行时WSL 下 GPU 设备不可见WSL 驱动未安装安装厂商 WSL 专用驱动并重启 WSL多卡训练通信失败NCCL backend 与硬件不匹配改用厂商提供的通信库作为 backend显存不足 OOM模型太大或显存碎片化开启梯度检查点、减小 batch size、使用多卡切分5.1 详细排查驱动安装后无法正常调用一个非常典型的情况是驱动安装成功biren-smi可以看到卡但运行 PyTorch 程序时依然报错。排查顺序# 1. 确认驱动模块加载 lsmod | grep 厂商驱动模块名 # 2. 确认运行库路径 echo $LD_LIBRARY_PATH # 3. 确认 PyTorch 是否为厂商适配版 python -c import torch; print(torch.__version__)如果 PyTorch 是从官方源安装的标准版本大概率无法直接调用国产 GPU。必须安装厂商发布的定制版。5.2 详细排查多卡利用率不均衡多卡训练时常见现象是某张卡利用率 100%其他卡利用率只有 20%。原因通常是模型被 DataParallel 默认分配到单卡输入数据加载成为瓶颈。网络通信开销过大同步等待时间超过计算时间。数据加载方式是串行的GPU 在等待数据。解决思路用 DistributedDataParallel 替代 DataParallel。增加 DataLoader 的num_workers。使用DistributedSampler让每张卡加载不同的数据分片。from torch.utils.data.distributed import DistributedSampler sampler DistributedSampler(dataset) loader DataLoader(dataset, batch_size32, samplersampler, num_workers8)6. 工程建议如何为国产 GPU 做好技术准备6.1 迁移前先做算子层走查如果打算把现有项目迁移到国产 GPU建议先跑一遍算子级测试而不是直接跑整个模型。用一个小模型遍历常见算子卷积、矩阵乘法、归一化、激活函数、注意力机制、Embedding 查询。这一步能快速暴露软件栈的缺口避免在训练中途才报错。6.2 建立分层验证机制推荐分层验证第一层硬件层确认驱动和xxx-smi状态。第二层SDK 层跑通厂商提供的基础示例程序验证编译器和运行时。第三层框架层跑通 PyTorch 的 GPU 张量运算和卷积示例。第四层模型层从一个小模型开始逐步迁移到大模型。每一层都有明确的可执行验证标准出现问题时能快速定位到层。6.3 关注多卡互联能力大模型训练对多卡互联带宽非常敏感。如果互联带宽不足计算效率会严重下降。在选型时要关注厂商提供的互联协议和实际带宽测试数据并通过 NCCL/厂商通信库的 all-reduce 测试来评估多卡扩展性。6.4 推理场景优先验证目前国产 GPU 在推理场景的成熟度普遍高于训练场景。如果你的业务主要做模型推理服务建议优先验证以下链路模型导出PyTorch → ONNX / TorchScript推理引擎Ollama / vLLM / llama.cpp服务化OpenAI 兼容 API / Triton 推理服务器推理链路如果能跑通生产落地价值已经非常高。6.5 注意版本兼容与锁定国产 GPU 软件栈迭代速度较快经常出现“驱动升级后 PyTorch 版本不兼容”的情况。在项目初始化时建议用 Docker 镜像锁定完整的软件栈版本并由团队统一维护避免不同成员环境不一致导致的诡异问题。# 示例 Dockerfile FROM 国产GPU厂商基础镜像 RUN pip install torch torchvision --index-url 厂商PyPI镜像 ENV LD_LIBRARY_PATH/opt/biren/lib:$LD_LIBRARY_PATH CMD [python, train.py]6.6 生产环境的最小权限与备份原则在 GPU 服务器上做驱动或软件栈变更前务必遵守以下原则测试环境先行不要在 GPU 算力机直接升级生产环境驱动。变更前备份当前驱动版本和软件栈配置。使用专用服务账号运行训练和推理任务避免 root 权限滥用。对xxx-smi中涉及重置、时钟修改等高权限操作做好操作记录和授权审批。7. 采购与选型层面的客观建议从技术选型角度国产 GPU 已经不再是“能不能用”的问题而是“够不够用”和“好不好迁移”的问题。选择国产 GPU 时建议关注以下指标框架适配完整度PyTorch、TensorFlow、PaddlePaddle 等主流框架是否官方适配。推理引擎支持度Ollama、vLLM、llama.cpp 是否可直接使用。多卡通信能力有没有类似 NCCL 的替代通信库通信带宽是多少。开发文档质量算子迁移指南、常见问题、示例代码是否完整。厂商技术响应出现框架层 bug 时厂商能否在合理时间内修复。从壁仞科技上半年的收入增速来看国产 GPU 的商业化已经走出了关键一步。但能否持续获得开发者和企业客户的信任关键还是看软件生态和工具链能否不断提升。作为开发者与其观望不如尽早把手上的模型在国产 GPU 上跑一遍。尤其是推理场景很多模型只需要解决驱动适配和推理框架支持两个环节就能真正落地部署。实际体验一次国产 GPU 的部署流程比看再多的新闻和数据都更有判断力。
返回列表