环境需求

本实验环境
因为我是新手所以直接采用gputop
gpttop(需要付费的平台)
-
gpulab平台 是国内唯一支持可视化仿真的带显卡 Ubuntu 服务器,连接体验类似远程桌面,适合新手。云电脑充值指引(付款后若没复制到配额key 可联系群主后台获取) - 飞书云文档
-
在https://youlika.gpublab.top/ 上本教程docker 叫"Ubuntu22.04-pi0.5-libero-v1",
-
如果想重新手动部署一次,选"ubuntu22.04-desktop"即可。具体看:n0.5 n0 容器镜像环境使用指引(自己购买)
配置说明
我选的都是比较高配的,怕麻烦


实验架构和SSH连接

本实验室中,我们采用 CS 架构,C 表示 client(客户端,可以是你的本地电脑),S 表示 Service(服务端,可以是你租的云服务器)。两端采用 http协议通信,通信过程类似人打开浏览器,所以我们在服务端上会打开 web api。
客户端是机器人。机器人身上的传感器,如视觉传感器、力觉传感器、麦克风会接收外部的信息,这些信息通过 http 协议上传到服务端(Service)。
服务端部署了Π系列模型,并以 web 接口的方式接收客户端的请求。服务端会将请求输入给n系列模型以获得客户端(机器人)的动作序列输出。客户端(机器人)执行服务端返回的动作序列时,客户端上的传感器会继续捕捉到新的多模态信息,并持续上传,以预测新的动作序列。
ssh 连接
直接让ai提示你就行,左侧看到文件夹

简便方法

服务端安装UV管理工具
其实 如果 用gputop他直接会配置好
下载代码
bash
git clone --recurse-submodules git@github.com:Physical-Intelligence/openpi.git
# 制作本教程时的index可以用下面这个命令切换(一般不需要)
# git reset --hard 2b1f3779ec2e3ddb56fd1425944e5b3d084c28ea
可能存在的问题

然后他提的问题直接点enter回车就可以。

文件内容
bash
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIQoP8o9zUUEaV854HBAckFkAZwzgLwiPkoUMQ8oXQZL 13945395838@163.com




重新执行你的指令
安装环境
python
conda create -n uv_envs python=3.10
conda activate uv_envs
pip install uv
安装项目依赖包
python
cd openpi/ # 需要该目录下的: pyproject.toml
GIT_LFS_SKIP_SMUDGE=1 uv sync # 根据pyproject.toml下载依赖包
启动模型服务(Server 端)
在项目目录下执行下面这个命令去激活虚拟环境。
bash
source ./.venv/bin/activate # 激活uv的 Python 环境
上面的命令的效果是将 Python 环境替换为 venv 中的。如下图所示:在激活环境变量后,python的路径变了。

下载并启动模型服务(参数"--env"会决定使用哪个模型!)
bash
uv run scripts/serve_policy.py --env LIBERO # 启动服务端监听
参数含义说明
- --env:用于指定要下载的权重文件。
- 可选值:"ALOHA"、"ALOHA_SIM"、"DROID"、"LIBERO"。
- 示例逻辑:文档中提到一个特殊的对应关系------如果要使用 pi0_aloha_sim 这个模型,需要使用参数 --env DROID(这看起来可能是一个文档中的特殊映射或笔误,建议实际运行时核对代码)。
- 代码参考:具体定义可查看 serve_policy.py 的 EnvMode 类。 权重文件路径说明 默认下载路径:~/.cache/openpi/openpi-assets/checkpoints/。 路径示例:当 env 的参数为 ALOHA 时,实际加载的模型路径是:~/.cache/openpi/openpi-assets/checkpoints/pi05_base/。
python
DEFAULT_CHECKPOINT: dict[EnvMode, Checkpoint] = {
# ALOHA 实机环境默认检查点
EnvMode.ALOHA: Checkpoint(
config="pi05_aloha",
dir="gs://openpi-assets/checkpoints/pi05_base",
),
# ALOHA 仿真环境默认检查点
EnvMode.ALOHA_SIM: Checkpoint(
config="pi0_aloha_sim",
dir="gs://openpi-assets/checkpoints/pi0_aloha_sim",
),
# DROID 环境默认检查点
EnvMode.DROID: Checkpoint(
config="pi05_droid",
dir="gs://openpi-assets/checkpoints/pi05_droid",
),
# LIBERO 环境默认检查点
EnvMode.LIBERO: Checkpoint(
config="pi05_libero",
dir="gs://openpi-assets/checkpoints/pi05_libero",
),
}
运行成功截图


客户端 部署环境
前置说明
如果你的服务端和客户端不在同一个服务器上,那么在客户端上需要重复做一遍源码下载和uv环境安装的动作,具体如下:
下载Π的源码
bash
git clone --recurse-submodules git@github.com:Physical-Intelligence/openpi.git
# 制作本教程时的index可以用下面这个命令切换(一般不需要)
# git reset --hard 2b1f3779ec2e3ddb56fd1425944e5b3d084c28ea
安装uv工具:
创建一个临时的境uv_envs来安装包管理工具uv
代码块内容:
bash
conda create -n uv_envs python=3.10
conda activate uv_envs
pip install uv

创建虚拟环境
新建一个终端,然后用 uv 创建一个新的虚拟环境用于安装客户端。
bash
cd openpi
uv venv --python 3.8 examples/libero/.venv

该命令使用了 uv 工具来创建一个 Python 虚拟环境 (venv),并指定了 Python 版本和虚拟环境的路径。具体解释如下:
venv:这是uv工具的一个子命令,表示要创建一个虚拟环境。--python 3.8:这个选项指定了要使用的 Python 版本为 3.8。虚拟环境将使用 Python 3.8 解释器。examples/libero/.venv:这是虚拟环境的创建路径。
激活uv虚拟环境
bash
source examples/libero/.venv/bin/activate

- 用户输入命令后,命令行提示符前出现了
(uv_envs)或类似的环境标识(图中显示为.venv)。 - 使用
which python命令验证路径,输出显示 Python 解释器指向了虚拟环境目录:/mnt/home/youzeshun/code/github/openpi/examples/libero/.venv/bin/python,说明激活成功。

安装项目依赖包
bash
uv pip sync examples/libero/requirements.txt third_party/libero/requirements.txt --extra-index-url https://download.pytorch.org/whl/cu113 --index-strategy=unsafe-best-match
注意:
- 这个步骤必须开dai ' li,如果不会请参考回 卡哥配置视频
- 选择和你的系统匹配的cuda版本,替换上面的cu113.
参数说明:
- uv:命令的主程序,相当于 pip 的替代品。
- pip sync:作用是将当前虚拟环境中的依赖同步为与你提供的 requirements 文件完全一致,多余的包会被卸载,缺少的包会被安装(类似 pip-sync 的行为,而不是简单地 install)。
- uv pip sync 支持一次传入多个 requirements 文件。它会将这两个文件中的依赖合并后统一解析和安装,目标是让当前环境和这两个文件描述的依赖严格对齐。
- --extra-index-url https://download.pytorch.org/whl/cu113 这个参数指定了 额外的 PyPI 源地址:https://download.pytorch.org/whl/cu113 是 PyTorch 官方提供的 CUDA 11.3 版本的预编译轮子(whl 文件)源。

记住是以太网而不是WIFI,检测方法如下图

安装成功

配置访问 libero 的环境变量,注意,执行下面的命令时,要确保当前目录下有文件 "third_party/libero"。因为命令 " $ PWD" 表示的是当前路径。如果这里配置错误,会导致后面执行 python 程序的时候出现找不到库 "libero"。
bash
export PYTHONPATH=$PYTHONPATH:$PWD/third_party/libero
启动客户端(推理)
(同一)
bash
python examples/libero/main.py
(不同一)
客户端
如果你采用 CS架构,且服务端和客户端不在同一个服务器上,应该使用以下命令:
bash
python examples/libero/main.py --host {你的服务器IP地址} --port 8000
bash
python examples/libero/main.py --host 117.50.213.227 --port 8000
服务端
上面的8000是服务端开放的默认端口号,这个端口在部分云厂商的服务器中并不默认对外开放,例如阿里云。如果你的客户端连接不上,需要先用端口扫描工具检测能否从客户端连接服务端的8000端口。对于gpshare,采用的方案则是端口转发,你实际运行的命令可能长这样:
bash
uv run scripts/serve_policy.py --env LIBERO --port 8000 # 该服务器开放8000端口
bash
# --args.host {外部域名}
# --args.port {外部端口},这里的端口参数可能不是上面的 8000,因为10000以下的端口为常用端口,会被云服务器官方预留用于其他用途。注意:是否是下面的"59298"得看云服务器官网。
python examples/libero/main.py --args.host i-2.gpushare.com --args.port 59298

使用方法2可能存在的问题
EGL 渲染上下文初始化失败!这是因为服务器没有图形界面(无头服务器),需要设置特殊的环境变量。
解决方法:客户端
bash
# 在你的电脑上执行(设置环境变量后运行)
export MUJOCO_GL=egl
export EGL_DEVICE_ID=0
python examples/libero/main.py --args.host 117.50.213.227 --args.port 8000
如果还不行
bash
# 设置 MuJoCo 使用 osmesa 软件渲染(不需要 GPU)
export MUJOCO_GL=osmesa
# 运行客户端
python examples/libero/main.py --args.host 117.50.213.227 --args.port 8000
如果还不行,交给ai老师
运行截图


切换套件
套件 = 一组特定的机器人任务集合
不同套件包含不同类型的任务,用于测试模型在不同场景下的性能。简单说,切换套件就是换一批不同类型的任务来测试模型。

如何切换套件
bash
# 使用 libero_goal 套件
python examples/libero/main.py --args.task_suite_name libero_goal
# 使用 libero_90 套件
python examples/libero/main.py --args.task_suite_name libero_90
