环境准备:从零搭建你的推理引擎开发环境

说实话,每次带新人入坑大模型推理,我最怕看到的就是环境配置卡壳。明明代码逻辑都写好了,结果跑起来报错说 CUDA 版本不对,或者 Python 包冲突——这种问题我遇到过太多次了。今天咱们就把这套环境彻底捋清楚,保证你后面写代码时不再被这些琐事绊住脚。

Python 虚拟环境:隔离是美德

我个人习惯,每个项目都开独立的虚拟环境。为什么?你想想看,一个项目要 PyTorch 1.13,另一个要 2.0,混在一起迟早出问题。我曾经因为没隔离环境,调试了整整两天才发现是 torchvision 版本不兼容——那叫一个憋屈。

创建虚拟环境其实就三步:

# 创建环境,指定 Python 3.10
python3.10 -m venv llm_infer_env

# 激活环境(Linux/Mac)
source llm_infer_env/bin/activate

# 激活环境(Windows)
llm_infer_env\Scripts\activate
小技巧:我习惯在项目根目录下建一个 .venv 文件夹,这样 IDE 能自动识别。另外,记得把虚拟环境路径加到 .gitignore 里,别把一堆二进制文件推到仓库去。

激活后,你的终端前面会出现 (llm_infer_env) 字样。嗯,看到这个就说明环境生效了。

CUDA 与 cuDNN:GPU 加速的基石

大模型推理,说白了就是跟 GPU 打交道。CUDA 是 NVIDIA 的并行计算平台,cuDNN 是专门为深度学习优化的底层库。这两者装不对,你的模型就跑不起来——或者跑得特别慢。

怎么选版本?我建议直接看 PyTorch 官方支持的 CUDA 版本。比如 PyTorch 2.1 官方推荐 CUDA 11.8 或 12.1。别自己瞎猜,去官网查一下最稳。

PyTorch 版本 推荐 CUDA 版本 对应 cuDNN 版本
2.1.x 11.8 / 12.1 8.9.x
2.0.x 11.7 / 11.8 8.8.x
1.13.x 11.6 / 11.7 8.6.x

安装步骤其实不复杂:

  1. 去 NVIDIA 官网下载 CUDA Toolkit,选对应版本
  2. 安装时注意,别勾选显卡驱动(除非你确定要覆盖)
  3. 下载 cuDNN,解压后把文件复制到 CUDA 安装目录
避坑指南:我曾经在服务器上装 CUDA 12.0,结果发现 PyTorch 还没支持,白白浪费半天。记住:先确认 PyTorch 支持什么版本,再装 CUDA,顺序别搞反了。

装完后验证一下:

# 检查 CUDA 版本
nvcc --version

# 检查 cuDNN 版本
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

看到版本号输出,就说明装好了。

PyTorch 与 HuggingFace Transformers:核心依赖

这两个库是咱们推理引擎的主力。PyTorch 负责张量计算和模型加载,Transformers 提供模型结构和分词器。

安装 PyTorch 我推荐用官方命令生成器,它会根据你的 CUDA 版本自动匹配:

# CUDA 11.8 版本
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# CUDA 12.1 版本
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

然后装 Transformers:

pip install transformers datasets accelerate

这里多说一句,accelerate 这个库很有用。它帮你自动处理设备分配、混合精度这些事。我在做推理优化时经常用它,省了不少代码量。

验证一下安装是否成功:

import torch
import transformers

print(f"PyTorch 版本: {torch.__version__}")
print(f"CUDA 可用: {torch.cuda.is_available()}")
print(f"Transformers 版本: {transformers.__version__}")

如果输出 CUDA 可用: True,恭喜你,环境基本就绪了。

Docker 环境配置:一次构建,到处运行

说实话,Docker 是我最推荐的部署方式。为什么?因为环境一致性。你在本地跑得好好的,到服务器上就报错——这种问题我见得太多了。Docker 把整个环境打包成镜像,到哪都一样。

一个典型的 Dockerfile 长这样:

FROM nvidia/cuda:12.1.0-runtime-ubuntu22.04

# 安装 Python 和 pip
RUN apt-get update && apt-get install -y python3.10 python3-pip

# 设置工作目录
WORKDIR /app

# 安装 Python 依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制代码
COPY . .

# 暴露端口
EXPOSE 8000

CMD ["python", "infer_server.py"]

构建和运行:

# 构建镜像
docker build -t llm-infer-engine .

# 运行容器,挂载 GPU
docker run --gpus all -p 8000:8000 llm-infer-engine
重点:别忘了加 --gpus all 参数,否则容器里看不到 GPU。我第一次用 Docker 跑推理时就忘了这个,查了半天才发现是 GPU 没挂载进去。

如果你需要快速验证,也可以用 NVIDIA 官方的 PyTorch 镜像:

docker pull nvcr.io/nvidia/pytorch:23.10-py3

这个镜像里 CUDA、cuDNN、PyTorch 都装好了,开箱即用。我平时做原型验证时经常用它,省去装环境的麻烦。

知识体系总览

下面这张图把整个环境准备的核心逻辑串起来了。你可以把它当作一个检查清单:

推理引擎环境准备 · 知识体系 推理引擎环境 Python 虚拟环境 CUDA + cuDNN PyTorch + Transformers Docker venv 创建 依赖隔离 版本匹配 GPU 加速 模型加载 分词器 环境一致性 安装顺序:Python 环境 → CUDA → cuDNN → PyTorch → Transformers → Docker 按此顺序,避免版本冲突

嗯,到这里环境准备就差不多了。你可能会觉得步骤有点多,但相信我——把这些一次性搞定,后面写推理代码时会顺畅很多。我每次搭新机器都按这个流程走,从来没出过岔子。

最后提醒一句:装完所有东西后,最好跑一个简单的推理脚本验证一下。比如加载一个 GPT-2 模型,生成一句话。如果这一步能跑通,那你的环境就彻底稳了。

专注资料整理