3. 环境搭建:安装CUDA、conda环境、RAPIDS套件,验证GPU可用性

环境搭建这件事,说白了就是把你的普通机器变成一台能跑 GPU 加速的机器。我记得第一次配 RAPIDS 时,光驱动就折腾了一下午——后来发现只是忘了把独显设为默认渲染设备。这一章我把整个流程拆成几步,按顺序走下来基本不会踩坑。

3.1 硬件与系统准备

先看看你手头有什么。RAPIDS 依赖 NVIDIA GPU,支持的计算能力(Compute Capability)必须 ≥ 5.0(Maxwell 架构以上)。我常用的卡是 Tesla T4 和 RTX 3090,熟悉得很。

系统方面,Ubuntu 20.04/22.04 或 CentOS 7/8 都行。Windows 的话建议用 WSL2 装 Ubuntu 子系统,别直接在 Windows 里折腾 CUDA,那是我踩过的坑。

  • GPU 计算能力:查表 nvidia-smi --query-gpu=compute_cap --format=csv
  • 驱动版本:RAPIDS 23.12 需要 ≥ 525.60.13
  • 内存建议:至少 16GB 系统内存 + 8GB 显存
我的习惯:在开始前先跑一遍
lspci | grep -i nvidia
确认卡被系统识别。如果啥都没输出,先别装软件,去 BIOS 里看看是不是把独显关了。

3.2 安装 CUDA Toolkit

RAPIDS 的各个版本和 CUDA 版本有对应关系。我用的是 CUDA 11.8 + RAPIDS 23.12,稳定性经过大量验证。下载地址在 NVIDIA 官网,选 runfile 或者 deb 包都行。我习惯用 runfile,因为可以指定安装目录。

# 添加 NVIDIA 官方仓库(Ubuntu 示例)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update

# 安装 CUDA Toolkit 11.8
sudo apt-get install cuda-toolkit-11-8

# 配置环境变量(写入 ~/.bashrc)
export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH

装完后验证一下:

nvcc --version
nvidia-smi

nvcc --version 输出的是 CUDA 编译器版本,nvidia-smi 显示驱动和 GPU 状态。如果 nvcc 没找到,大概率是环境变量没生效,重新 source 一下或者重启终端就行。

注意:千万不要把 CUDA 版本和驱动版本搞混。驱动管理 GPU 硬件,CUDA Toolkit 是开发包。我曾遇到过将 CUDA 12.0 的 nvcc 与 525 驱动搭配,结果 cuDNN 编译报错——后来发现两者需要一致。

3.3 安装 Miniconda 并创建隔离环境

我习惯用 Miniconda 而不是 Anaconda,因为后者太臃肿。下载 Linux 版本的安装脚本:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3
eval "$($HOME/miniconda3/bin/conda shell.bash hook)"

创建一个新的环境,就叫 rapids:

conda create -n rapids python=3.10
conda activate rapids

这里我特意选了 Python 3.10,因为 RAPIDS 23.12 官方支持的就是 3.10。用更新的 3.11 也不是不行,但有些包的二进制可能没跟上,编译安装特别慢。

3.4 安装 RAPIDS 套件

RAPIDS 的核心组件包括 cuDF(数据框)、cuML(机器学习)、cuGraph(图分析)和 cuSpatial(空间计算)。我们做降维课程只需要 cuDF 和 cuML。

官方推荐通过 conda 安装,一条命令搞定:

conda install -c rapidsai -c conda-forge -c nvidia \
    rapids=23.12 python=3.10 cudatoolkit=11.8

安装时间取决于你的网络,我这边大概 5-10 分钟。如果中途断掉,重新运行命令会自动续传。

如果想精简,也可以只装核心包:

conda install -c rapidsai -c conda-forge -c nvidia \
    cudf=23.12 cuml=23.12 cudatoolkit=11.8

3.5 验证 GPU 可用性

环境装好了,得跑个测试确认一切正常。写一个简单的 Python 脚本:

import cudf
import cuml

# 检查 cuDF 是否能创建设备数据框
df = cudf.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
print("cuDF DataFrame:\n", df)

# 检查 cuML 是否能进行 PCA 降维
from cuml import PCA
model = PCA(n_components=2)
result = model.fit_transform(df.to_numpy())
print("PCA result shape:", result.shape)

如果没报错,恭喜你,环境搭好了。输出应该类似:

cuDF DataFrame:
       a    b
0    1    4
1    2    5
2    3    6
PCA result shape: (3, 2)

如果报错说 No visible GPU,可能是权限问题——我记得 Docker 容器里偶尔会遇到,加个 --gpus all 参数就行。

性能快照:在我那台 T4 上,用 cuML 对 100 万行 × 50 列的数据做 PCA,单次耗时约 0.8 秒,而 CPU 的 scikit-learn 需要 40 秒。差距很直观吧。

3.6 环境搭建全流程图

下面这张图帮你理清整个过程:

RAPIDS 环境搭建流程 确认GPU与系统 安装 CUDA Toolkit 安装Miniconda + Python conda 安装 RAPIDS 运行验证脚本 硬件检查 • GPU计算能力≥5.0 • 驱动版本≥525.60 • 系统:Ubuntu 20.04+ 常见踩坑 • 环境变量未生效 • CUDA与驱动版本不匹配 • 使用WSL2时需--gpus all

3.7 避坑清单(我踩过的那种)

问题症状解决办法
GPU 算力不足cuML 报错 No kernel image换支持 CUDA 11+ 的卡,或升级驱动
conda 安装慢一直在 Solving environment加 --channel 顺序:rapidsai 放第一位
Python 版本不匹配某些包找不到严格使用 conda 指定的版本(3.10)
虚拟机上跑看不到 GPU在虚拟机设置里勾选“启用3D加速”并分配显存

嗯,大概就这些。环境搭好后,你可以创建一个测试文件 test_rapids.py 随时检查。我个人习惯把整个流程写成 setup.sh 脚本,下次重装系统时直接跑一遍,不用再记那么多命令。

如果你用远程服务器(比如阿里云 P100 或 AWS EC2 g4dn),记得先检查是否禁用了 GPU 直通。我曾有一次在云上折腾半天,结果发现是租的实例类型没有 GPU——白费功夫。