环境准备:从零搭建你的推理引擎开发环境
说实话,每次带新人入坑大模型推理,我最怕看到的就是环境配置卡壳。明明代码逻辑都写好了,结果跑起来报错说 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 |
安装步骤其实不复杂:
- 去 NVIDIA 官网下载 CUDA Toolkit,选对应版本
- 安装时注意,别勾选显卡驱动(除非你确定要覆盖)
- 下载 cuDNN,解压后把文件复制到 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 都装好了,开箱即用。我平时做原型验证时经常用它,省去装环境的麻烦。
知识体系总览
下面这张图把整个环境准备的核心逻辑串起来了。你可以把它当作一个检查清单:
嗯,到这里环境准备就差不多了。你可能会觉得步骤有点多,但相信我——把这些一次性搞定,后面写推理代码时会顺畅很多。我每次搭新机器都按这个流程走,从来没出过岔子。