0. 简介
关于UCloud(优刻得)旗下的compshare算力共享平台
UCloud(优刻得)是中国知名的中立云计算服务商,科创板上市,中国云计算第一股。
Compshare GPU算力平台隶属于UCloud,专注于提供高性价4090算力资源,配备独立IP,支持按时、按天、按月灵活计费,支持github、huggingface访问加速。
使用下方链接注册可获得20元算力金,免费体验10小时4090云算力
https://www.compshare.cn/?ytag=GPU_lovelyyoshino_Lcsdn_csdn_display
Isaac Gym 是由 NVIDIA 提供的一个高性能仿真平台,专门用于大规模的机器人学习和强化学习(RL)任务。它结合了物理仿真、GPU加速、深度学习框架互操作性等特点,使得研究人员和开发者可以快速进行复杂的机器人仿真和训练。 Isaac Gym 的深度强化学习物理模拟环境,其可以可以导入URDF和MJCF文件,因此可以在不转换的情况下使用MuJoCo等中使用的模型。在使用MuJoCo和PyBullet等物理模拟环境的深度强化学习中,在GPU上模拟的信息被传递到CPU端,并根据CPU上接收到的信息计算观察和奖励。 重复该过程以在模拟环境中进行学习。 因此,为了加快学习速度,就存在CPU和GPU之间的瓶颈以及需要大型CPU集群等问题。而且Isaac Gym通过仅使用 GPU 执行这些过程,成功解决了上述问题并提高了速度。相关的API的使用可以参考Isaacgym使用操作指南里面的内容。
最近具身智能也是一个大热的方向。这里最近受到优刻得的使用邀请,正好解决了我在大模型和自动驾驶行业对GPU的使用需求。UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡1.88元,并附带200G的免费磁盘空间。暂时已经满足我的使用需求了,同时支持访问加速,独立IP等功能,能够更快的完成项目搭建。此外对于低性能的还有3080TI使用只需要0.88元,已经吊打市面上主流的云服务器了
1. Isaac Gym环境安装
首先我们先来安装Isaac Gym环境,对应的下载链接为:Isaac Gym - Preview Release | NVIDIA Developer。对应的环境配置需求为:
- Ubuntu 18.04 或是 20.04
- Python版本3.6, 3.7 or 3.8.
- 最低显卡驱动版本:Linux: 470
- cuda版本:11.6
相关的CUDA和CUDNN的配置这里我们就不展开了,想要详细了解的请参考《从BEVDET来学习如何生成trt以及如何去写这些C++内容》。然后我们就简略写一下安装步骤
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-510
sudo vim /etc/apt/sources.list
# 然后在最后一行添加:deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe
sudo apt-get install gcc-7 g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 1
sudo update-alternatives --display gcc //查看默认版本
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 1
sudo update-alternatives --display g++
wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_510.39.01_linux.run
sudo sh cuda_11.6.0_510.39.01_linux.run
sudo vim ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64:/usr/local/cuda-11.6/extras/CPUTI/lib64
export CUDA_HOME=/usr/local/cuda-11.6/bin
export PATH=$PATH:$LD_LIBRARY_PATH:$CUDA_HOME
source ~/.bashrc
# 然后重启,并安装cudnn
# 进入https://developer.nvidia.com/rdp/cudnn-archive下载指定版本,然后安装,这选用的是8.6的cudnn,参考:https://blog.csdn.net/shanglianlm/article/details/130219640
sudo dpkg -i cudnn-local-repo-ubuntu2004-8.6.0.163_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get install libcudnn8=8.6.0.163-1+cuda11.8
sudo apt-get install libcudnn8-dev=8.6.0.163-1+cuda11.8
sudo apt-get install libcudnn8-samples=8.6.0.163-1+cuda11.8
然后下面就对下载好的IsaacGym_Preview_4_Package.tar.gz
进行解压,格式为:
然后开始编译
tar -zxvf IsaacGym_Preview_4_Package.tar.gz
cd isaacgym
./create_conda_env_rlgpu.sh
要检查 Isaac Gym 是否正常工作,请运行 isaacgym/python/examples 目录中的 joint_monkey.py。 如果设置正确,人形模型将移动其四肢
可以通过下面的指令激活,并测试
# 激活环境
conda activate rlgpu
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt install libpython3.7
export LD_LIBRARY_PATH=$HOME/miniconda3/envs/rlgpu/lib
# 正常情况下这时候可以运行实例程序/isaacgym/python/examples/joint_monkey.py
python joint_monkey.py
# 可以通过--asset_id命令控制显示的模型
python joint_monkey.py --asset_id=6
“Isaac Gym”没有反应
运行示例代码(例如 joint_monkey.py)时,Isaac Gym 屏幕可能不会显示。 这是因为一些集成英特尔显卡(例如英特尔 UHD 显卡)的 PC 系统中并未使用 NVIDIA 的 GPU。 请输入以下命令以使用 NVIDIA GPU。
sudo prime-select nvidia
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
通过在~/.bashrc
中写入上述命令export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
,可以省去每次输入命令的麻烦。
可视化界面可以参考:《通过VNC搭建Ubuntu 18.04和20.04图形界面》
sudo vim /etc/apt/sources.list
# 添加 deb http://archive.ubuntu.com/ubuntu/ bionic universe
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
# sudo apt-get install -y vnc4server # ubuntu18
sudo apt-get install tightvncserver # ubuntu20
sudo apt update
sudo apt-get upgrade
sudo apt-get install snapd
sudo apt-get install -y x-window-system-core gdm3
sudo apt install ubuntu-desktop#如果不执行,则关机重新从sudo apt-get upgrade这一行开始执行
#sudo apt install xubuntu-desktop
sudo apt install xrdp
sudo systemctl status xrdp
sudo apt-get install -y gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal
vncserver
然后修改sudo vim ~/.vnc/xstartup
文件,这里还需要虚拟屏幕设置ubuntu18.04服务器配置VNC解决去掉显示器之后黑屏大鼠标问题:
#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 1920x1080 -ls -title "$VNCDESKTOP Desktop" &
x-window-manager &
#gnome-terminal &
sesion-manager & xfdesktop & xfce4-panel &
xfce4-menu-plugin &
xfsettingsd &
xfconfd &
xfwm4 &
metacity &
nautilus &
然后设置重启
sudo chmod +x ~/.vnc/xstartup
vncserver -kill :1
vncserver -geometry 1920x1080 :1
由于优刻得开通了端口,所以也可以通过vnc-viewer连接了
1.2 docker中通过VNC搭建Ubuntu图形界面
软件安装
更新本地软件包
apt update
安装远程图形界面&轻量化桌面
# 安装较为耗时,预计5-10min
apt install -y dbus-x11 xorg openbox xfce4 xfce4-goodies tightvncserver
语言选择
在安装中,需要选择对应语言
依赖项配置
环境变量
NOTE
后续容器会默认添加
-e USER=root
设置,此步骤可忽略
export USER=root
dbus-launch启动
NOTE
在软件安装中dbus-x11是启动dbus-launch依赖包,若出现启动失败,可重新
apt install dbus-x11
进行安装
dbus-launch
VNC配置
密码设置
NOTE
- 密码为6-8位
- 只读模式设置为n
# 1.运行
vncserver
# 2.密码设置,使用6-8位作为密码,超过会被自动截取
# 3.密码确认,输入和设置的同一个密码即可
# 4.在最后进行view-only选择时,需要选择【n】并输入回车
修改启动文件
启动文件备份
cp ~/.vnc/xstartup ~/.vnc/xstartup.bak
修改文件内容
echo "startxfce4 &" >> ~/.vnc/xstartup
chmod +x ~/.vnc/xstartup
VNC重启
# 1.关闭在密码设置中启动的VNC进程
vncserver -kill :1
# 2.重新启动vncserver
vncserver -geometry 1920x1080
# xauth: (argv):1: bad display name "b9732a281594:1" in "add" command
# New 'X' desktop is b9732a281594:1
# Starting applications specified in /root/.vnc/xstartup
# Log file is /root/.vnc/b9732a281594:1.log
VNC端口占用说明
-
默认使用端口为5900+启动编号,例如:在执行启动命令
vncserver -geometry 1920x1080
后,在log中提示New 'X' desktop is b9732a281594:1
则表示,此进程在启动编号:1下执行,则此时占用端口号为5901
。若后续需要使用VncViewer工具进行连接,防火墙必须打开5901
端口号 -
也可通过命令进行检查端口
(base) root@b9732a281594:/# ss -tuln | grep 590
tcp LISTEN 0 5 0.0.0.0:5901 0.0.0.0:*
VncViewer连接
IMPORTANT
容器内VncServer服务对应防火墙端口必须打开
官网工具下载
https://www.realvnc.com/en/connect/download/viewer/
桌面连接
- File -> New connection
- 创建连接配置如下
-
VncServer: EIP(外网访问地址):VncServer服务端口号
-
Name:自定义名称
- 双击选择刚刚创建的connection
- 输入在vncserver密码初始化时填入的密码
- 登录成功
Chrome浏览器配置
浏览器打开报错
谷歌浏览器安装
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
apt install -y ./google-chrome-stable_current_amd64.deb
VNC桌面进行浏览器替换
WARNING
此步骤须桌面的Terminal中进行操作,具体步骤如下
- 执行
xfce4-settings-manager
会出现如下弹窗选择
- 选择
Default Applications
- 在
Web Browser
中选择Other选项
-
输入:
/usr/bin/google-chrome --no-sandbox
保存即可 -
打开默认浏览器即可
使用Web浏览器连接远程桌面
TIP
针对于不想安装VncViewer用户,可以选择使用Web浏览器直接访问远程桌面
noVNC下载
项目下载
# noVnc下载
git clone https://github.com/novnc/noVNC.git /usr/lib/noVNC
chmod +x /usr/lib/noVNC/utils/*
noVNC启动
# 启动代理服务,并后台运行
/usr/lib/noVNC/utils/novnc_proxy --vnc localhost:5901 &
# 打印日志如下,端口号默认监听:6080
Using installed websockify at /root/miniconda3/bin/websockify
Starting webserver and WebSockets proxy on port 6080
WebSocket server settings:
- Listen on :6080
- Web server. Web root: /usr/lib/noVNC
- No SSL/TLS support (no cert file)
- proxying from :6080 to localhost:5901
Navigate to this URL:
http://b9732a281594:6080/vnc.html?host=b9732a281594&port=6080
Press Ctrl-C to exit
web页面连接使用
NOTE
必须保证对应的6080端口防火墙打开!!!
- 浏览器访问
http://${外网EIP地址}:6080/vnc.html
- 点击页面
连接
按钮 - 输入vncserver设置的密码
2. 对应文档
2.1 官方文档资源
-
NVIDIA Omniverse 全站文档
- 网址: https://docs.omniverse.nvidia.com/
- 内容: 包含 NVIDIA Omniverse 的全面文档资源。
-
Isaac Sim 开发者文档
- 网址: https://developer.nvidia.com/isaac/sim
- 内容: 提供了针对 Isaac Sim 的开发者文档,帮助开发者了解和使用 Isaac Sim。
-
Omniverse 开发者文档
- 网址: https://docs.omniverse.nvidia.com/dev-guide/latest/index.html
- 内容: Omniverse 的开发者文档,涵盖了最新的内容和指南。
-
Isaac Lab 文档
- 网址: https://isaac-sim.github.io/IsaacLab/
- 内容: Isaac Lab 的文档资源,可能包含与 Isaac Sim 相关的实验室信息。
-
Isaac Sim API 参考文档
- 网址: https://docs.omniverse.nvidia.com/py/isaacsim/index.html
- 内容: 提供了 Isaac Sim API 的参考文档,帮助开发者了解如何使用 Isaac Sim 的编程接口。
-
ROS/ROS2 教程
- 网址: https://docs.omniverse.nvidia.com/isaacsim/latest/ros_ros2_tutorials.html
- 内容: 包含了与 ROS/ROS2 相关的教程,帮助开发者在 Isaac Sim 中进行 ROS/ROS2 的开发和集成。
2.2 AI 仓库与视觉导航
-
Isaac ROS SLAM
- GitHub链接: https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_visual_slam
- 内容: 提供了功能强大的视觉导航工具,特别适用于工业自动化和复杂环境中的导航任务。
-
Isaac ROS 3D Scene Reconstruction
- GitHub链接: https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_realsense
- 内容: 包含了基于 GPU 加速的视觉 SLAM 算法,用于定位、地图构建和路径规划。
2.3 视频教程与资料下载
-
教程视频
- 提取链接: 百度网盘链接(提取码:kvq7)
- 内容: 提供了详细的操作步骤和功能讲解,适合初学者学习 Isaac Sim。
-
GitHub 教程与代码仓库
- Isaac Sim ROS Workspaces: https://github.com/isaac-sim/IsaacSim-ros_workspaces
- Isaac ROS GEMs: https://github.com/NVIDIA-AI-IOT/Nav2-with-Isaac-ROS-GEMs
- 内容: 包含了与 Isaac Sim 相关的代码仓库和教程资源。
2.4 深入学习与实用技巧
-
开发环境搭建
- 内容: 根据文档和 GitHub 教程,开发者可以快速搭建 Isaac Sim 与 ROS 的集成工作空间。
-
视觉导航和 SLAM 技术应用
- 内容: 开发者可以利用 NVIDIA 提供的 SLAM 和 3D 重建代码库,实现复杂环境下的导航任务。
-
Replicator 环境生成
- 内容: Replicator 是 Isaac Sim 的一部分,可用于生成各种工业环境的模拟场景,帮助开发者验证机器人系统在虚拟环境中的表现。
3. 强化学习和Isaac Gym
下面我们来试一下Isaac Gym基础训练环境安装,对应提供的提供深度强化学习示例为:
git clone https://github.com/NVIDIA-Omniverse/IsaacGymEnvs.git
conda activate rlgpu
cd IsaacGymEnvs
pip install -e .
#cuda11.6 安装pytorch1.12,更换国内源
pip install torch==1.13.0+cu116 torchvision==0.14.0+cu116 torchaudio==0.13.0 --extra-index-url https://download.pytorch.org/whl/cu116
# 尝试训练
python train.py task=Ant
# 不显示动画只训练
python train.py task=Ant headless=True
# 测试训练模型的效果,num_envs是同时进行训练的模型数量
python train.py task=Ant checkpoint=runs/Ant/nn/Ant.pth test=True num_envs=64
Isaac Gym Benchmark文件交互逻辑
项目的文件目录构成
对应含义为:
assets:放置模型文件,官方文件显示目前支持加载URDF和MJCF文件格式。
docs:说明文档
isaacgymenvs:代码主目录
cfg:参数文件
learing:训练的算法文件
pbt:Population-Based Training 说明文档
run:训练的统计文件和模型文件
tasks:不同任务对用的训练方法文件
utils:通用工具文件
4. 第三方拓展宇树机器狗
无论是人型机器人:
还是机器狗:
其基本都是基于Isaac Gym平台,并加入自己的算法和模型,来完成强化学习训练。这里我们来看一下机器狗的工程
git clone https://github.com/Improbable-AI/walk-these-ways.git
conda activate rlgpu
cd walk-these-ways
pip install -e .
# 测试
python scripts/test.py
# 训练
python scripts/train.py
本文使用的代码结构是改编自legged_gym工程,如果想要在训练结束后继续上次的训练,可以参考这篇文章,这里就不展开写了
5. 参考链接
https://blog.csdn.net/weixin_44061195/article/details/131830133
https://blog.csdn.net/weixin_44061195/article/details/132830367
https://blog.csdn.net/qq_38023194/article/details/140874763