从零搭建FastTD3强化学习项目
可能还会出现torch.OutOfMemoryError: CUDA out of memory报错,表明CUDA现存不足,这个项目原本是使用A100显卡运行的,脚本默认的配置对于自己的电脑来说太高了,可以调低脚本对显存的需求,如–num_envs (并行环境数量): 从 1024 降低到 256;准备一个8G以上的空u盘,这里使用的是Ventoy2Disk来制作启动盘。将启动盘插入电脑,开机后就
从零搭建FastTD3项目
一、安装ubuntu22.04
由于电脑原系统使用Windows11系统,想要使用ubuntu,通常会有三种方法。第一个方法是使用VMware Workstation Pro或其他虚拟机在Windows系统上创建独立虚拟环境;第二种方法是Windows提供了WSL2轻量级Linux运行系统;第三种方法是使用双系统建立两个互不干扰共存的两个系统。在FastTD3强化学习项目中需要NVIDIA显卡跑训练,而前两种方法是不能调用显卡硬件的,若只使用CPU则训练效果不好,且需要改动较多配置。
1、下载ubuntu镜像
到清华大学镜像网站选择ubuntu-24.04-desktop-amd64.iso下载到本地。
2、制作Ubuntu启动盘
准备一个8G以上的空u盘,这里使用的是Ventoy2Disk来制作启动盘。将u盘插入电脑后,运行Ventoy程序,选中u盘,点击安装按钮,u盘会被格式化并安装启动环境。安装完成后,点击确定。打开u盘的目录,将下载好的Ubuntu ISO文件拖入u盘中,这样启动盘就做好了。
3、调整磁盘空间
打开磁盘管理,通过选中E盘压缩卷,输入压缩大小(建议60G以上,因为该项目较大)。关闭Windows的BitLocker加密,进入系统设置,选择“隐私和安全性”,关闭“设备加密”。进入控制面板,硬件和声音,电源选项,选择电源按钮的功能,取消勾选“启动快速启动”。
4、进入BIOS设置
重启电脑,开机后按下F2进入BIOS,找到Secure Boot选项,设置为disabled。
5、u盘引导启动
将制作好的启动盘插入电脑,重启电脑进入BIOS系统。将USB设备(UEFI)设置为启动项目第一位。保存后重启电脑,进入安装系统,选择Try or Install Ubuntu回车,下面就是进入ubuntu的安装流程以及换源,本文不再赘述。
补充:扩充ubuntu磁盘的简单方法
如果在安装系统时,给系统的内存较少,根目录/内存不够,导致后面安装不了程序,可以使用下述方法。
先进入windows系统通过调整磁盘空间,分出一个空闲分区。将启动盘插入电脑,开机后就会进入安装界面,选择Try or Install Ubuntu回车,选择try ubuntu,打开终端,输入
sudo apt-get install gparted
sudo gparted
进入GParted界面,选中需要扩充的目录分区,通过拖动条上面的方框条即可改动,点击确认等待程序完成。因为磁盘改动是只能改动相邻的磁盘,所以出现空闲分区和操作分区隔了几个时,需要依次拖动,不会影响原分区的文件。
二、安装显卡驱动和Conda工具
1、准备工作
更新软件包
sudo apt update && sudo apt upgrade -y
禁用Nouveau,其为Ubuntu自带的显卡驱动,会与NVIDIA驱动冲突
sudo nano /etc/modprobe.d/blacklist.conf
在文件末尾添加以下内容
blacklist nouveau
options nouveau modeset=0
保存后执行
sudo update-initramfs -u
sudo reboot
重启后验证是否禁用成功,无输出即成功。
lsmod | grep nouveau
补充:如果是NVIDIA驱动安装不成功,需要重新安装时,需要先卸载旧版NVIDIA驱动。
sudo apt purge nvidia-*
sudo apt autoremove
2、安装驱动
显示适合本电脑显卡的NVIDIA驱动
sudo ubuntu-drivers devices
系统检查到显卡并列出可用的驱动版本,其中标为recommended的是推荐的版本,网上的教程通常建议不选择开源open版本。安装推荐版本的命令
sudo apt install nvidia-driver-xxx
安装后可能需要重启
sudo reboot
使用下方命令检查(中间无空格)是否安装成功并加载
nvidia-smi
如果输出显卡信息(显卡型号和可支持的CUDA最新版本),则安装成功。
补充:还有一种手动安装方法,通过在NVIDIA官网,手动下载.run文件并运行,关闭图形界面,赋予执行权限并安装。其中关闭图形界面后,屏幕会黑屏,同时按下ctrl+alt+F2(或是F3~F6),进图tty界面。在安装系统时可能会出现菱形乱码,两个方法,一是使用export LANG=en_US.UTF-8临时修改为英文,二是将.run文件放到根目录下,这样tty里直接能找到并运行这个文件。
3、安装CUDA
前往CUDA官网(https://developer.nvidia.com/cuda-toolkit-archive),选择对应的CUDA Toolkit版本,依次选择Linux x86-64 Ubuntu 24.04 runfile(local),网站下面会出现对应的命令。运行下面命令,赋予执行权限并运行安装程序,cudaversionlinux需替换为下载的文件名
chmod +x cudaversionlinux.run && sudo ./cudaversionlinux.run
依次选择continue,enter,输入accept。在向导中,取消驱动选项Driver xxx.xx.xx,其他组件继续安装。安装成功后,将CUDA的路径添加到环境变量中
sudo nano ~/.bashrc
在文件末尾添加以下内容,安装的CUDA12.5版本需要调整
export PATH=/usr/local/cuda-12.5/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.5/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
保存文件后,运行以下命令使更改生效
source ~/.bashrc
验证CUDA安装
nvcc --version
如果显示CUDA的版本信息,则说明安装成功
4、安装anaconda
可以到清华镜像站下载,比如选择Anaconda3-2021.11-Linux-x86-64.sh,下载后进入安装的路径位置
bash Anaconda3-2021.11-Linux-x86-64.sh
不断回车,>>>输入yes。下面手动设置环境变量
sudo nano ~/.bashrc
在文件末尾添加以下内容
export PATH="/home/xy/anaconda3/bin:$PATH"
保存后退出,运行以下命令使更改生效
source ~/.bashrc
conda list
进行测试,输出内容则安装成功。
5、安装PyTorch
安装python和pip,下载python3.10版本是
sudo apt install python3.10
sudo apt install python3-pip
前往PyTorch官网(https://pytorch.org/get-started/locally/),按照自己电脑的配置依次选择,然后运行与下方类似的命令
pip3 install --pre torch torchvision --index-url https://download.pytorch.org/whl/nightly/cu129
补充:出现RuntimeError: CUDA error: no kernel image is available for execution on the device报错时,其表明电脑的GPU型号与当前安装的PyTorch不兼容,需要更新PyTorch安装。卸载旧的版本,torch,torchvision和torchaudio全部卸载
pip3 uninstall torch torchvision torchaudio
然后再重新下载新的版本。
三、FastTD3复现
1、环境搭建
下载系统包
sudo apt install libglfw3 libgl1-mesa-glx libosmesa6 git-lfs cmake
前往Github上FastTD3的项目网址,下载项目的资源。创建conda环境,并激活
conda create -n fasttd3_playground -y python=3.10
conda activate fasttd3_playground
终端进入项目的路径,下载其他环境的配置
pip install -r requirements/requirements_playground.txt
2、程序运行
第一段代码运行的是一个标准、默认配置的 FastTD3 算法。第二段代码运行的是一个特定的、经过高度定制的 FastTD3 变体,这个变体被命名为 SimbaV2,并且使用了一套完全不同的参数来优化训练过程。首先运行项目的两个例子,分别运行
# FastTD3
python fast_td3/train.py \
--env_name T1JoystickFlatTerrain \
--exp_name FastTD3 \
--render_interval 5000 \
--seed 1
# FastTD3 + SimbaV2
python fast_td3/train.py \
--env_name T1JoystickFlatTerrain \
--exp_name FastTD3 \
--render_interval 5000 \
--agent fasttd3_simbav2 \
--batch_size 8192 \
--critic_learning_rate_end 3e-5 \
--actor_learning_rate_end 3e-5 \
--weight_decay 0.0 \
--critic_hidden_dim 512 \
--critic_num_blocks 2 \
--actor_hidden_dim 256 \
--actor_num_blocks 1 \
--seed 1
命令行返回
wandb: (1) Create a W&B account
wandb: (2) Use an existing W&B account
wandb: (3) Don’t visualize my results
wandb: Enter your choice:
此时应该输入1,需要打开W&B网页注册并登录,这样就能查看仿真模型。在这里如果选择3,程序将进入离线模式,所有日志都只会保存在本地的wandb文件夹中,而不会发送到W&B的云端服务器,故在W&B网站上查看这个run的页面时,会报告This run didn’t log media for key “render_video”, step 5000, index 0.
除了例程T1JoystickFlatTerrain,还可以选择诸如Go1JoystickFlatTerrain、 Go1JoystickRoughTerrain、 Go1Handstand、 T1JoystickRoughTerrain、 T1LowDimJoystickFlatTerrain、 T1LowDimJoystickRoughTerrain
补充:如果出现ModuleNotFoundError: No module named 'torch’和ModuleNotFoundError: No module named 'wandb’报错,可能的原因是运行脚本的Python环境和安装包的环境不是同一个,解决方法是确保为当前激活的python环境安装库
python -m pip list | grep torch
可能还会出现torch.OutOfMemoryError: CUDA out of memory报错,表明CUDA现存不足,这个项目原本是使用A100显卡运行的,脚本默认的配置对于自己的电脑来说太高了,可以调低脚本对显存的需求,如–num_envs (并行环境数量): 从 1024 降低到 256;–batch_size (批处理大小): 从 32768 降低到 8192;–buffer_size (缓冲区大小): 从 10240 降低到 2560
python fast_td3/train.py \
--env_name T1JoystickFlatTerrain \
--exp_name FastTD3 \
--render_interval 5000 \
--seed 1 \
--num_envs 256 \
--batch_size 8192 \
--buffer_size 2560
如果出现torch._inductor.exc.InductorError: SubprocException: An exception occurred in a subprocess: … RuntimeError: PassManager::run failed报错,这个错误 PassManager::run failed 是在 Triton 编译器内部发生的。它意味着在尝试优化和编译模型到 GPU 代码的某个环节,编译器自身遇到了一个它无法处理的内部 bug。解决这个问题最直接、最有效的方法就是关闭这个不稳定的 JIT 编译功能。
python fast_td3/train.py \
--env_name T1JoystickFlatTerrain \
--exp_name FastTD3 \
--render_interval 5000 \
--seed 1 \
--num_envs 256 \
--batch_size 8192 \
--buffer_size 2560 \
--no-compile
FastTD3强化学习训练人形机器人和四足机器人
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)