Π环境部署(运行 且 无理论讲解)

环境需求

本实验环境

因为我是新手所以直接采用gputop

gpttop(需要付费的平台)

配置说明

我选的都是比较高配的,怕麻烦

实验架构和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
相关推荐
jushi89991 小时前
Lucas Chess R国际象棋、中国象棋、日本将棋、五子棋训练学习工具游戏软件
学习
自传.2 小时前
尚硅谷 Vibe Coding|第一章 AI 编程基础理论 学习笔记
笔记·学习·尚硅谷·vibe coding
吃好睡好便好2 小时前
改变时间轴的跨度
学习·生活
fox_lht3 小时前
15.3.改进我们之前的输入、输出项目
开发语言·后端·学习·rust
chase。3 小时前
【学习笔记】SimpleVLA-RL:通过强化学习扩展 VLA 训练
笔记·学习
C语言小火车3 小时前
什么时候用智能指针?什么时候用裸指针?
c语言·c++·学习·指针
AOwhisky4 小时前
Redis 学习笔记(第一期):概述、安装配置与核心理论
运维·数据库·redis·笔记·学习·云计算
AOwhisky4 小时前
Redis 学习笔记(第四期):高可用与集群(哨兵 + Cluster + 容器化)
linux·运维·数据库·redis·笔记·学习·缓存
skywalk81634 小时前
言知项目后续方向建议
开发语言·学习·编程