好的!根據你提供的服務器配置(1×RTX 4090,24GB顯存)和官方 README.md 內容,以下是完整、可直接複製粘貼執行的操作流程,涵蓋 環境搭建 → 數據集下載 → 模型推理 全流程。

⚠️ 注意:由於你的 GPU 顯存為 24GB,不能進行 Full Fine-tuning(需 ~70GB),但可以:

  • 推理(Inference)
  • 僅微調 Action Expert(Fine-tuning Only AE)
  • 使用輕量版 GO-1 Air(推薦用於推理)

一、基礎環境初始化(SSH 登錄後執行)

# 1. 更新系統 & 安裝基礎依賴
sudo apt update && sudo apt install -y git curl wget build-essential libgl1 libglib2.0-0

# 2. 安裝 Miniconda(若未安裝)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
bash miniconda.sh -b -p $HOME/miniconda3
eval "$($HOME/miniconda3/bin/conda init bash)"
source ~/.bashrc

二、創建 Conda 環境並安裝依賴

# 1. 克隆官方倉庫
git clone https://github.com/OpenDriveLab/AgiBot-World.git
cd AgiBot-World

# 2. 創建 conda 環境(Python 3.10)
conda create -n go1 python=3.10 -y
conda activate go1

# 3. 安裝項目依賴(基於 LeRobot v2.1)
pip install -e .

# 4. 安裝 flash-attn(關鍵!限制編譯線程避免 OOM)
export MAX_JOBS=4
pip install --no-build-isolation flash-attn==2.4.2

# 5. 安裝可視化依賴(可選,用於 rerun)
pip install rerun-sdk

三、下載 AgiBot World 數據集(以 Alpha 為例,約 8.5TB,但可只下 sample)

由於你只有 200GB 磁盤,不能完整下載 Alpha/Beta,建議先用 sample_dataset (~7GB) 測試!

下載 sample_dataset(推薦)

# 創建數據目錄
mkdir -p data/sample_dataset
cd data

# 從 HuggingFace 下載 sample_dataset.tar(無需 token,公開)
wget https://huggingface.co/datasets/agibot-world/AgiBotWorld-Alpha/resolve/main/sample_dataset.tar

# 解壓
tar -xvf sample_dataset.tar -C sample_dataset --strip-components=1

cd ..

轉換為 LeRobot 格式(用於推理/訓練)

# 使用任務 ID 390(示例任務:Fold Shirt)
python scripts/convert_to_lerobot.py \
  --src_path ./data/sample_dataset \
  --task_id 390 \
  --tgt_path ./data/sample_lerobot

四、下載 GO-1 模型(推薦使用 GO-1 Air,更輕量)

# 創建模型目錄
mkdir -p models

# 使用 huggingface-cli 下載 GO-1 Air(約 4–6GB)
huggingface-cli download \
  --repo-type model \
  agibot-world/GO-1-Air \
  --local-dir ./models/GO-1-Air \
  --local-dir-use-symlinks False

為什麼用 GO-1 Air?

  • 無 Latent Planner,推理顯存僅需 ~7GB
  • 完全兼容 GO-1 接口
  • 適合 RTX 4090 單卡推理

五、本地推理測試(加載模型 + sample 數據)

創建推理腳本 test_inference.py

# test_inference.py
import numpy as np
from evaluate.deploy import GO1Infer

# 模型路徑(替換為你下載的路徑)
model_path = "./models/GO-1-Air"
data_stats_path = "./data/sample_lerobot/dataset_stats.json"  # 會自動生成

# 如果 dataset_stats.json 不存在,先運行一次 visualize 生成
# python scripts/visualize_dataset.py --task-id 390 --dataset-path ./data/sample_lerobot

model = GO1Infer(
    model_path=model_path,
    data_stats_path=data_stats_path
)

# 模擬輸入(需根據實際任務調整 shape)
payload = {
    "top": np.random.randn(3, 224, 224).astype(np.float32),      # top camera
    "right": np.random.randn(3, 224, 224).astype(np.float32),   # right camera
    "left": np.random.randn(3, 224, 224).astype(np.float32),    # left camera
    "instruction": "fold the shirt",                            # 文本指令
    "state": np.random.randn(14).astype(np.float32),            # 機器人狀態(如關節角)
    "ctrl_freqs": np.array([30], dtype=np.float32)              # 控制頻率 30Hz
}

# 執行推理
actions = model.inference(payload)
print("Predicted actions shape:", actions.shape)
print("Actions:", actions)

運行推理

# 先確保 dataset_stats.json 存在(通過 visualize 腳本自動計算)
python scripts/visualize_dataset.py --task-id 390 --dataset-path ./data/sample_lerobot

# 然後運行推理
python test_inference.py

🔍 注意dataset_stats.json 會在 sample_lerobot/ 目錄下自動生成,包含動作歸一化參數。


六、(可選)遠程推理服務器部署(適合真實機器人)

啓動服務器(在服務器上運行)

python evaluate/deploy.py \
  --model_path ./models/GO-1-Air \
  --data_stats_path ./data/sample_lerobot/dataset_stats.json \
  --port 8080

客户端調用示例(在另一台機器或本地)

# client.py
import json_numpy
import numpy as np
import requests

json_numpy.patch()

payload = {
    "top": np.random.randn(3, 224, 224).astype(np.float32),
    "right": np.random.randn(3, 224, 224).astype(np.float32),
    "left": np.random.randn(3, 224, 224).astype(np.float32),
    "instruction": "fold the shirt",
    "state": np.random.randn(14).astype(np.float32),
    "ctrl_freqs": np.array([30], dtype=np.float32)
}

response = requests.post("http://<你的服務器IP>:8080/act", json=payload)
if response.status_code == 200:
    actions = np.array(response.json())
    print("Received actions:", actions)

七、常見問題處理

Q1:顯存不足?

  • 使用 GO-1-Air 而非 GO-1
  • 降低 batch_size(推理默認為 1,無問題)

Q2:dataset_stats.json 不存在?

  • 先運行 visualize_dataset.py,它會自動計算並保存統計信息

Q3:HuggingFace 下載慢?

  • 使用 hf_transfer 加速:
pip install hf_transfer
export HF_HUB_ENABLE_HF_TRANSFER=1

總結:你最終擁有的能力

✅ 在 RTX 4090 上成功運行 GO-1 Air 推理
✅ 使用官方 sample 數據集測試 pipeline
✅ 可擴展到真實機器人(通過遠程 API)
✅ 可微調 Action Expert(若需適配新任務)

如需進一步微調(Action Expert only),可參考 go1/shell/train_dev.sh,但需準備自己的 LeRobot 格式數據。

是否需要我為你生成完整的 微調腳本(適配 24GB 顯存)?