File size: 4,493 Bytes
9bca14a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | ARG COSMOS_RL_BUILD_MODE=efa
ARG COSMOS_RL_EXTRAS=""
ARG CUDA_VERSION=12.8.1
FROM nvcr.io/nvidia/cuda:${CUDA_VERSION}-devel-ubuntu22.04 AS no-efa-base
# System dependencies for eval
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
python3.10-dev python3-dev python3-distutils \
libgl1 libglib2.0-0 libglu1-mesa \
curl git ca-certificates \
tmux zip unzip vim \
&& rm -rf /var/lib/apt/lists/*
# Install uv package manager
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.local/bin:$PATH"
# Install Miniconda
RUN curl -fsSL -o /tmp/miniconda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
&& bash /tmp/miniconda.sh -b -p /opt/miniconda3 \
&& rm /tmp/miniconda.sh
ENV PATH="/opt/miniconda3/bin:$PATH"
ENV EVAL_ROOT=/opt/eval
# Clone b1k-eval-utils
RUN mkdir -p ${EVAL_ROOT} \
&& git clone https://github.com/littlespray/b1k-eval-utils.git ${EVAL_ROOT}/b1k-eval-utils
# Clone and setup openpi-comet
SHELL ["/bin/bash", "-c"]
RUN cd ${EVAL_ROOT} \
&& git clone https://github.com/mli0603/openpi-comet.git --depth=1 \
&& cd openpi-comet \
&& cp ${EVAL_ROOT}/b1k-eval-utils/eval_openpi.sh ${EVAL_ROOT}/openpi-comet/eval_openpi.sh \
&& cp ${EVAL_ROOT}/b1k-eval-utils/patch_comet_safetensors.sh ${EVAL_ROOT}/openpi-comet/patch_comet_safetensors.sh \
&& GIT_LFS_SKIP_SMUDGE=1 uv sync \
&& GIT_LFS_SKIP_SMUDGE=1 uv pip install -e . \
&& uv pip install transformers==4.53.2 \
&& cp -r ./src/openpi/models_pytorch/transformers_replace/* .venv/lib/python3.11/site-packages/transformers/ \
&& bash patch_comet_safetensors.sh
# Clone BEHAVIOR-1K and install bddl/OmniGibson into openpi-comet venv
RUN git clone -b v3.7.2 --single-branch --depth=1 \
https://github.com/StanfordVL/BEHAVIOR-1K.git ${EVAL_ROOT}/BEHAVIOR-1K
RUN cd ${EVAL_ROOT}/BEHAVIOR-1K \
&& source ${EVAL_ROOT}/openpi-comet/.venv/bin/activate \
&& uv pip install -e bddl3 \
&& uv pip install -e "OmniGibson[eval]" \
&& deactivate
# Prepare b1k environment
# RUN cd ${EVAL_ROOT}/BEHAVIOR-1K \
# && cp ${EVAL_ROOT}/b1k-eval-utils/patch_setup.sh patch_setup.sh \
# && bash patch_setup.sh \
WORKDIR ${EVAL_ROOT}/BEHAVIOR-1K
# Run b1k setup.sh (separate layer — most likely to fail, easy to retry)
ENV TORCH_CUDA_ARCH_LIST="8.0 9.0+PTX"
RUN cd ${EVAL_ROOT}/BEHAVIOR-1K \
&& source /opt/miniconda3/etc/profile.d/conda.sh \
&& conda deactivate \
&& ./setup.sh --new-env --omnigibson --bddl --joylo --eval --primitives \
--accept-conda-tos --accept-nvidia-eula
RUN source /opt/miniconda3/etc/profile.d/conda.sh \
&& conda activate behavior \
&& pip install scipy==1.11.4 \
&& pip uninstall -y numpy \
&& pip uninstall -y numpy \
&& pip install numpy==1.26.4 opencv-contrib-python==4.10.0.84
# RUN cd ${EVAL_ROOT}/BEHAVIOR-1K \
# && source /opt/miniconda3/etc/profile.d/conda.sh \
# && conda activate behavior \
# && python -c "from omnigibson.utils.asset_utils import download_omnigibson_robot_assets; download_omnigibson_robot_assets()"
# && python -c "from omnigibson.utils.asset_utils import download_behavior_1k_assets; download_behavior_1k_assets(accept_license=True)"
# && python -c "from omnigibson.utils.asset_utils import download_2025_challenge_task_instances; download_2025_challenge_task_instances()"
# Copy eval script
RUN cp ${EVAL_ROOT}/b1k-eval-utils/eval_b1k.sh ${EVAL_ROOT}/BEHAVIOR-1K/eval_b1k.sh
# Download HF models into the image for offline eval.
# Append new model repos here, separated by spaces.
# ENV HF_MODEL_REPOS="shangkuns/pt12-3w-comet2-20260204022222 shangkuns/pt12-2w-comet2-20260205151209 shangkuns/cosmos-pi05-sft-pt12-20260203145532 shangkuns/pt12-3w-20260204011934"
# RUN pip install --no-cache-dir "huggingface_hub[cli]" \
# && mkdir -p /opt/eval/models \
# && for repo in $HF_MODEL_REPOS; do \
# name="${repo#*/}"; \
# hf download "$repo" --repo-type model --local-dir "/opt/eval/models/$name"; \
# done
RUN cd ${EVAL_ROOT} \
&& cp -r openpi-comet/src/behavior/learning/* BEHAVIOR-1K/OmniGibson/omnigibson/learning/
#
ENV OPENPI_DATA_HOME=/opt/openpi-cache
RUN mkdir -p /opt/openpi-cache/big_vision \
&& cp ${EVAL_ROOT}/b1k-eval-utils/tokenizer.model /opt/openpi-cache/big_vision/paligemma_tokenizer.model
# Install huggingface-hub in the default Python environment
RUN python -m pip install huggingface-hub wandb
|