第二章:环境搭建——先把地基打牢

说实话,做ACT模型训练和嵌入式部署,最让人头疼的往往不是算法本身,而是环境配置。我见过太多同学卡在第一步——装个PyTorch装了一整天,最后发现CUDA版本不对。嗯,咱们今天就把这事一次性说清楚。

核心要点:环境配置就像盖房子打地基,地基歪了,后面全白搭。我个人的习惯是,每做一个新项目,先花半天时间把环境理清楚。

2.1 Python环境配置——别用系统自带的Python

你可能会问:「我电脑里已经有Python了,为啥还要折腾?」

原因很简单:系统自带的Python通常版本老旧,而且你装一堆包进去,万一搞崩了,系统工具也会跟着遭殃。我当年就干过这种蠢事——把系统Python的site-packages搞得一团糟,最后重装了系统。

我的建议:用Miniconda或者Anaconda来管理Python环境。我个人偏爱Miniconda,轻量、干净。

# 下载Miniconda(Linux为例)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

# 创建独立环境
conda create -n act_env python=3.9
conda activate act_env

# 验证
python --version
# 输出:Python 3.9.x

小技巧:我习惯把环境名取得有辨识度,比如act_env、ros_env,这样切换时不会搞混。你想想看,要是同时维护五六个项目,环境名全是test1、test2,那不乱套了?

2.2 PyTorch安装——版本匹配是门学问

PyTorch的安装其实很简单,但坑都在版本匹配上。说白了,你要搞清楚三件事:你的显卡型号、CUDA版本、PyTorch版本,这三者必须对齐。

我记得有一次,帮一个师弟配环境,他拿着RTX 4090,却装了PyTorch 1.8,结果死活跑不起来。后来一看,PyTorch 1.8根本不支持Ada Lovelace架构。

# 查看显卡驱动支持的CUDA版本
nvidia-smi
# 输出中会显示 CUDA Version: 12.x

# 安装匹配的PyTorch(以CUDA 12.1为例)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

# 验证安装
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
# 输出应为:2.x.x 和 True

注意:千万不要用pip install torch这种不带索引的安装方式!它会下载CPU版本的PyTorch,你装完发现cuda.is_available()返回False,那才叫欲哭无泪。

2.3 CUDA与cuDNN配置——别被版本号吓到

CUDA和cuDNN的配置,其实没那么玄乎。我刚开始接触时也被那一堆版本号搞晕了——CUDA 11.8、12.1、12.4,cuDNN 8.9、9.0……到底该用哪个?

我的经验:先看PyTorch官方支持的CUDA版本,然后选最新的稳定版。比如PyTorch 2.3推荐CUDA 12.1,那就用这个。

# 下载CUDA 12.1(以Ubuntu 22.04为例)
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
sudo sh cuda_12.1.0_530.30.02_linux.run

# 配置环境变量
echo 'export PATH=/usr/local/cuda-12.1/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

# 验证CUDA
nvcc --version

# 下载cuDNN(需要注册NVIDIA账号)
# 解压后复制到CUDA目录
sudo cp cudnn-linux-x86_64-8.9.7.29_cuda12-archive/include/cudnn*.h /usr/local/cuda-12.1/include/
sudo cp cudnn-linux-x86_64-8.9.7.29_cuda12-archive/lib/libcudnn* /usr/local/cuda-12.1/lib64/
sudo chmod a+r /usr/local/cuda-12.1/include/cudnn*.h /usr/local/cuda-12.1/lib64/libcudnn*

避坑指南:我曾经遇到过cuDNN版本和CUDA不匹配,导致训练时出现「CUDNN_STATUS_NOT_INITIALIZED」错误。排查了整整一天,最后发现是cuDNN 9.0和CUDA 12.1不兼容。所以,一定要去NVIDIA官网查兼容性矩阵!

2.4 ROS基础安装——机器人开发者的必备工具

ROS(Robot Operating System)说白了,就是一套让机器人各个部件能「说话」的框架。咱们做ACT模型部署到机器人上,ROS是绕不开的坎。

ROS有两个主流版本:ROS 1(Noetic)和ROS 2(Humble/Foxy)。我个人建议直接上ROS 2,因为它是未来趋势,而且对嵌入式部署更友好。

# 安装ROS 2 Humble(Ubuntu 22.04)
sudo apt update
sudo apt install ros-humble-desktop

# 设置环境
echo 'source /opt/ros/humble/setup.bash' >> ~/.bashrc
source ~/.bashrc

# 验证安装
ros2 --version

小提示:ROS 2的节点通信机制比ROS 1强太多了。我记得以前用ROS 1做多机器人协同,经常出现节点掉线的情况。换了ROS 2之后,稳如老狗。

2.5 本章知识体系总览

下面这张图,是我自己梳理的环境搭建逻辑。你跟着这个流程走,基本不会出大问题。

环境搭建知识体系 ACT模型训练与嵌入式部署 Python环境 PyTorch安装 CUDA/cuDNN ROS基础 Miniconda/Anaconda 创建独立环境 Python 3.9 包管理 版本匹配 GPU/CPU版本 pip安装 验证cuda可用 驱动→CUDA→cuDNN nvidia-smi检查 版本兼容性 环境变量配置 ROS 2 Humble apt安装 环境配置 节点通信 ✅ 环境验证:跑通一个简单的PyTorch + ROS示例

2.6 环境验证——跑通第一个示例

环境搭好了,怎么知道对不对?我的做法是写一个极简的测试脚本,同时验证PyTorch和ROS能不能协同工作。

# test_env.py
import torch
import rclpy
from rclpy.node import Node

print(f"PyTorch版本: {torch.__version__}")
print(f"CUDA可用: {torch.cuda.is_available()}")
if torch.cuda.is_available():
    print(f"GPU型号: {torch.cuda.get_device_name(0)}")

# 测试Tensor计算
x = torch.randn(3, 3).cuda()
y = torch.randn(3, 3).cuda()
z = x @ y
print(f"GPU计算测试通过: {z.shape}")

# 测试ROS 2
rclpy.init()
node = Node("test_node")
print(f"ROS 2节点创建成功: {node.get_name()}")
node.destroy_node()
rclpy.shutdown()

print("🎉 所有环境配置正确!")

总结一下:环境配置这事,急不得。我每次换新机器,都会按照这个流程走一遍,大概半小时搞定。你只要记住三点——版本匹配、环境隔离、验证测试,基本不会翻车。

专注资料整理