环境搭建:Python虚拟环境配置、PyTorch/TensorFlow安装、CUDA与cuDNN版本匹配、Docker镜像构建

说实话,环境搭建这件事,看着简单,但坑是真不少。我见过太多同学花了两天装环境,最后发现CUDA版本对不上,或者PyTorch和TensorFlow打架。嗯,这一章我们就来把这些事理清楚。

核心原则:环境隔离 + 版本匹配 = 省心省力。别想着一个环境跑所有模型,那是在给自己挖坑。

1. Python虚拟环境配置

我个人习惯,每个项目都开一个独立的虚拟环境。为什么?你想想看,项目A要PyTorch 1.13,项目B要2.0,混在一起迟早出问题。

1.1 使用conda创建虚拟环境

conda是我最推荐的方式,尤其当你需要管理不同Python版本时。我在项目中遇到过好几次,某个老模型只支持Python 3.8,新模型又要3.10,conda一键切换,真香。

# 创建环境,指定Python版本
conda create -n vla_env python=3.10

# 激活环境
conda activate vla_env

# 退出环境
conda deactivate

# 查看所有环境
conda env list

# 删除环境
conda env remove -n vla_env

小技巧:环境名最好带上项目名或版本号,比如 vla_torch2.1,这样一眼就能看出来是干什么的。

1.2 使用venv(轻量级方案)

如果你不想装Anaconda,Python自带的venv也够用。不过要注意,venv不管理Python版本,你得自己装好对应版本的Python。

# 创建虚拟环境
python -m venv vla_env

# 激活(Windows)
vla_env\Scripts\activate

# 激活(Linux/Mac)
source vla_env/bin/activate

# 退出
deactivate

1.3 依赖管理

环境搭好后,记得把依赖导出。我曾经有一次重装系统,忘了导出依赖列表,结果花了整整一天回忆装过哪些包……

# 导出当前环境的依赖
pip freeze > requirements.txt

# 从文件安装依赖
pip install -r requirements.txt

2. PyTorch / TensorFlow 安装

这两个框架的安装,说白了就是一句话:去官网找对应的命令,别自己瞎猜版本号

2.1 PyTorch 安装

PyTorch的安装命令会根据你的CUDA版本自动生成。我个人更推荐PyTorch,因为它的调试体验更好,尤其适合做研究。

# CPU版本
pip install torch torchvision torchaudio

# 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

注意:不要用 pip install torch 默认安装,它会装CPU版本。一定要指定CUDA版本!

2.2 TensorFlow 安装

TensorFlow 2.x 的安装相对简单,但要注意它和CUDA版本的对应关系比PyTorch更严格。

# TensorFlow 2.13(支持CUDA 11.8)
pip install tensorflow==2.13.0

# TensorFlow 2.15(支持CUDA 12.2)
pip install tensorflow==2.15.0

# 验证安装
python -c "import tensorflow as tf; print(tf.__version__)"

2.3 验证安装是否成功

装完之后,一定要验证GPU是否可用。我见过有人装了半天,结果一直在用CPU跑……

# PyTorch验证
python -c "import torch; print(torch.cuda.is_available()); print(torch.version.cuda)"

# TensorFlow验证
python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

3. CUDA 与 cuDNN 版本匹配

这是环境搭建里最容易出问题的地方。说白了,CUDA是NVIDIA的并行计算平台,cuDNN是深度学习加速库。PyTorch和TensorFlow都依赖它们。

3.1 版本对应关系

我整理了一份常用的版本对应表,建议收藏:

PyTorch版本 CUDA版本 cuDNN版本 TensorFlow版本
2.1.x 12.1 8.9 2.15.x
2.0.x 11.8 8.7 2.13.x
1.13.x 11.7 8.5 2.11.x
1.12.x 11.6 8.3 2.10.x

3.2 查看当前CUDA版本

# 查看CUDA版本
nvidia-smi

# 或者
nvcc --version

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

避坑指南:我曾经在服务器上同时装了CUDA 11.7和12.1,结果PyTorch死活找不到GPU。后来发现是环境变量 LD_LIBRARY_PATH 指向了错误的CUDA路径。解决办法:用 conda install cudatoolkit 来管理CUDA,别手动装。

3.3 使用conda管理CUDA

conda可以帮你自动匹配CUDA和cuDNN版本,省心很多:

# 安装指定CUDA版本的PyTorch
conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch

# 或者直接安装cudatoolkit
conda install cudatoolkit=11.8 cudnn=8.7

4. Docker镜像构建

如果你要在多台机器上部署,或者想让环境完全可复现,Docker是最好的选择。我个人习惯把环境打包成Docker镜像,这样换机器时直接拉镜像就行,不用重新装。

4.1 基础Dockerfile

下面是一个VLA模型训练环境的Dockerfile示例:

# 使用NVIDIA官方PyTorch镜像作为基础
FROM nvcr.io/nvidia/pytorch:23.10-py3

# 设置工作目录
WORKDIR /workspace

# 安装系统依赖
RUN apt-get update && apt-get install -y \
    git \
    vim \
    wget \
    && rm -rf /var/lib/apt/lists/*

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

# 复制项目代码
COPY . .

# 设置环境变量
ENV CUDA_VISIBLE_DEVICES=0

# 默认命令
CMD ["python", "train.py"]

4.2 构建和运行

# 构建镜像
docker build -t vla_env:latest .

# 运行容器(挂载GPU)
docker run --gpus all -it --rm \
    -v /path/to/data:/workspace/data \
    vla_env:latest

# 查看GPU是否可用
docker run --gpus all --rm nvidia/cuda:12.1.0-base nvidia-smi

注意:运行Docker容器时,一定要加 --gpus all 参数,否则容器内看不到GPU。我刚开始用Docker时就踩过这个坑,折腾了半天才发现是忘了加这个参数。

4.3 使用Docker Compose管理多容器

如果你的项目需要多个服务(比如训练服务 + 推理服务),可以用Docker Compose来管理:

version: '3.8'
services:
  train:
    build: .
    image: vla_env:latest
    runtime: nvidia
    environment:
      - CUDA_VISIBLE_DEVICES=0
    volumes:
      - ./data:/workspace/data
    command: python train.py

  inference:
    build: .
    image: vla_env:latest
    runtime: nvidia
    ports:
      - "8000:8000"
    environment:
      - CUDA_VISIBLE_DEVICES=1
    command: python serve.py

5. 知识体系总览

下面这张图帮你理清整个环境搭建的脉络:

VLA环境搭建知识体系 环境隔离 方案一:conda/venv 方案二:Docker 创建虚拟环境 安装PyTorch/TF 编写Dockerfile 构建镜像 验证GPU可用 CUDA版本匹配 挂载GPU设备 依赖完整性 可复现、可迁移的VLA训练环境

6. 常见问题与避坑指南

  • 问题1:安装PyTorch后,torch.cuda.is_available() 返回False。解决办法:检查CUDA版本是否匹配,或者用 conda install 重装。
  • 问题2:Docker容器内看不到GPU。解决办法:确保加了 --gpus all 参数,并且安装了NVIDIA Container Toolkit。
  • 问题3:多个项目依赖冲突。解决办法:每个项目用独立的虚拟环境或Docker容器。

我的建议:如果你是新手,先用conda搭环境,等熟悉了再上Docker。别一上来就搞Docker,容易把自己绕晕。

好了,环境搭建这部分就讲到这里。记住一句话:环境搭得好,训练没烦恼。下一章我们会正式开始VLA模型的数据准备,到时候见。


专注资料整理