Skip to content

Commit cb51271

Browse files
committed
[CI] Fix SOTA runs
ghstack-source-id: 29be2b7 Pull-Request: #3252
1 parent 69459ac commit cb51271

File tree

7 files changed

+41
-74
lines changed

7 files changed

+41
-74
lines changed

.github/unittest/linux/scripts/environment.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,9 @@ dependencies:
2626
- tensorboard
2727
- imageio==2.26.0
2828
- wandb
29-
- mujoco<3.3.6
3029
- mlflow
3130
- av
3231
- coverage
33-
- ray
3432
- transformers
3533
- ninja
3634
- timm

.github/unittest/linux/scripts/run_all.sh

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,23 @@ if [[ "$PYTHON_VERSION" != "3.13" && "$PYTHON_VERSION" != "3.14" ]]; then
119119
pip3 install dm_control
120120
fi
121121

122+
# Install ray for Python < 3.14 (ray doesn't support Python 3.14 yet)
123+
if [[ "$PYTHON_VERSION" != "3.14" ]]; then
124+
echo "installing ray"
125+
pip3 install ray
126+
fi
127+
128+
# Install mujoco for Python < 3.14 (mujoco doesn't have Python 3.14 wheels yet)
129+
if [[ "$PYTHON_VERSION" != "3.14" ]]; then
130+
echo "installing mujoco"
131+
pip3 install "mujoco<3.3.6"
132+
fi
133+
122134
echo "installing gymnasium"
123-
if [[ "$PYTHON_VERSION" == "3.12" ]]; then
135+
if [[ "$PYTHON_VERSION" == "3.14" ]]; then
136+
# Python 3.14: no mujoco wheels available
137+
pip3 install "gymnasium[atari]>=1.1"
138+
elif [[ "$PYTHON_VERSION" == "3.12" ]]; then
124139
pip3 install ale-py
125140
pip3 install sympy
126141
pip3 install "gymnasium[mujoco]>=1.1" mo-gymnasium[mujoco]

.github/unittest/linux_sota/scripts/environment.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
channels:
2-
- pytorch
32
- defaults
3+
- pytorch
44
dependencies:
55
- pip
66
- protobuf

.github/unittest/linux_sota/scripts/run_all.sh

Lines changed: 16 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ dpkg-reconfigure -f noninteractive tzdata || true
1919
apt-get upgrade -y
2020
apt-get install -y vim git wget cmake
2121

22-
apt-get install -y libglfw3 libgl1-mesa-glx libosmesa6 libglew-dev libosmesa6-dev
23-
apt-get install -y libglvnd0 libgl1 libglx0 libegl1 libgles2
22+
apt-get install -y libglfw3 libosmesa6 libglew-dev libosmesa6-dev
23+
apt-get install -y libglvnd0 libgl1 libglx0 libglx-mesa0 libegl1 libgles2
2424
apt-get install -y g++ gcc patchelf
2525

2626
this_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
@@ -36,7 +36,6 @@ git config --global --add safe.directory '*'
3636
root_dir="$(git rev-parse --show-toplevel)"
3737
conda_dir="${root_dir}/conda"
3838
env_dir="${root_dir}/env"
39-
lib_dir="${env_dir}/lib"
4039

4140
cd "${root_dir}"
4241

@@ -57,29 +56,15 @@ eval "$(${conda_dir}/bin/conda shell.bash hook)"
5756
printf "python: ${PYTHON_VERSION}\n"
5857
if [ ! -d "${env_dir}" ]; then
5958
printf "* Creating a test environment\n"
60-
conda create --prefix "${env_dir}" -y python="$PYTHON_VERSION"
59+
# Force CPython from the main conda channels (avoid GraalPy).
60+
conda create --override-channels -c defaults -c pytorch --prefix "${env_dir}" -y python="$PYTHON_VERSION"
6161
fi
6262
conda activate "${env_dir}"
6363

64-
# Verify we have CPython, not PyPy
65-
python_impl=$(python -c "import platform; print(platform.python_implementation())")
66-
if [ "$python_impl" != "CPython" ]; then
67-
echo "ERROR: Expected CPython but got $python_impl"
68-
echo "Python executable: $(which python)"
69-
echo "Python version: $(python --version)"
70-
exit 1
71-
fi
72-
printf "* Verified Python implementation: %s\n" "$python_impl"
64+
# Verify we're running CPython (wheels won't work on GraalPy)
65+
python -c "import sys; assert sys.implementation.name == 'cpython', f'Expected CPython, got {sys.implementation.name}'"
7366

7467
# 3. Install mujoco
75-
printf "* Installing mujoco and related\n"
76-
mkdir -p $root_dir/.mujoco
77-
cd $root_dir/.mujoco/
78-
#wget https://github.com/deepmind/mujoco/releases/download/2.1.1/mujoco-2.1.1-linux-x86_64.tar.gz
79-
#tar -xf mujoco-2.1.1-linux-x86_64.tar.gz
80-
wget https://mujoco.org/download/mujoco210-linux-x86_64.tar.gz
81-
tar -xf mujoco210-linux-x86_64.tar.gz
82-
cd "${root_dir}"
8368

8469
# 4. Install Conda dependencies
8570
printf "* Installing dependencies (except PyTorch)\n"
@@ -89,9 +74,6 @@ if ! grep -q "python=${PYTHON_VERSION}" "${this_dir}/environment.yml"; then
8974
fi
9075
cat "${this_dir}/environment.yml"
9176

92-
export MUJOCO_PY_MUJOCO_PATH=$root_dir/.mujoco/mujoco210
93-
#export MJLIB_PATH=$root_dir/.mujoco/mujoco-2.1.1/lib/libmujoco.so.2.1.1
94-
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$root_dir/.mujoco/mujoco210/bin
9577
export SDL_VIDEODRIVER=dummy
9678
export MUJOCO_GL=egl
9779
export PYOPENGL_PLATFORM=egl
@@ -100,26 +82,21 @@ export COMPOSITE_LP_AGGREGATE=0
10082

10183
conda env config vars set \
10284
MAX_IDLE_COUNT=1000 \
103-
MUJOCO_PY_MUJOCO_PATH=$root_dir/.mujoco/mujoco210 \
10485
DISPLAY=:99 \
105-
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$root_dir/.mujoco/mujoco210/bin \
10686
SDL_VIDEODRIVER=dummy \
10787
MUJOCO_GL=egl \
10888
PYOPENGL_PLATFORM=egl \
10989
BATCHED_PIPE_TIMEOUT=60 \
11090
TOKENIZERS_PARALLELISM=true
11191

112-
pip install pip --upgrade
92+
# Use python -m pip to ensure we use conda's Python, not system GraalPy
93+
python -m pip install pip --upgrade
11394

11495
conda env update --file "${this_dir}/environment.yml" --prune
11596

11697
conda deactivate
11798
conda activate "${env_dir}"
11899

119-
# install d4rl
120-
pip install free-mujoco-py
121-
pip install git+https://github.com/Farama-Foundation/d4rl@master#egg=d4rl
122-
123100
# TODO: move this down -- will break torchrl installation
124101
conda install -y -c conda-forge libstdcxx-ng=12
125102
## find libstdc - search in the env's lib directory first, then fall back to conda packages
@@ -144,12 +121,6 @@ fi
144121
conda deactivate
145122
conda activate "${env_dir}"
146123

147-
# compile mujoco-py (bc it's done at runtime for whatever reason someone thought it was a good idea)
148-
python -c """import gym;import d4rl"""
149-
150-
# install ale-py: manylinux names are broken for CentOS so we need to manually download and
151-
# rename them
152-
153124
# ============================================================================================ #
154125
# ================================ PyTorch & TorchRL ========================================= #
155126

@@ -160,26 +131,24 @@ elif [[ ${#CU_VERSION} -eq 5 ]]; then
160131
CUDA_VERSION="${CU_VERSION:2:2}.${CU_VERSION:4:1}"
161132
fi
162133
echo "Using CUDA $CUDA_VERSION as determined by CU_VERSION ($CU_VERSION)"
163-
version="$(python -c "print('.'.join(\"${CUDA_VERSION}\".split('.')[:2]))")"
164-
165134
# submodules
166135
git submodule sync && git submodule update --init --recursive
167136

168-
pip3 install ale-py -U
169-
pip3 install "gym[atari,accept-rom-license]" "gymnasium>=1.1.0" -U
137+
# Gymnasium Atari support pulls ale-py (+ ROMs) as needed.
138+
python -m pip install -U "gymnasium[atari,accept-rom-license,mujoco]>=1.1.0"
170139

171140
printf "Installing PyTorch with %s\n" "${CU_VERSION}"
172141
if [[ "$TORCH_VERSION" == "nightly" ]]; then
173142
if [ "${CU_VERSION:-}" == cpu ] ; then
174-
pip3 install --pre torch torchvision numpy==1.26.4 --index-url https://download.pytorch.org/whl/nightly/cpu -U
143+
python -m pip install --pre torch torchvision numpy==1.26.4 --index-url https://download.pytorch.org/whl/nightly/cpu -U
175144
else
176-
pip3 install --pre torch torchvision numpy==1.26.4 --index-url https://download.pytorch.org/whl/nightly/$CU_VERSION
145+
python -m pip install --pre torch torchvision numpy==1.26.4 --index-url https://download.pytorch.org/whl/nightly/$CU_VERSION
177146
fi
178147
elif [[ "$TORCH_VERSION" == "stable" ]]; then
179148
if [ "${CU_VERSION:-}" == cpu ] ; then
180-
pip3 install torch torchvision numpy==1.26.4 --index-url https://download.pytorch.org/whl/cpu
149+
python -m pip install torch torchvision numpy==1.26.4 --index-url https://download.pytorch.org/whl/cpu
181150
else
182-
pip3 install torch torchvision numpy==1.26.4 --index-url https://download.pytorch.org/whl/$CU_VERSION
151+
python -m pip install torch torchvision numpy==1.26.4 --index-url https://download.pytorch.org/whl/$CU_VERSION
183152
fi
184153
else
185154
printf "Failed to install pytorch"
@@ -194,9 +163,9 @@ python -c "import functorch"
194163

195164
# install tensordict
196165
if [[ "$RELEASE" == 0 ]]; then
197-
pip3 install git+https://github.com/pytorch/tensordict.git
166+
python -m pip install git+https://github.com/pytorch/tensordict.git
198167
else
199-
pip3 install tensordict
168+
python -m pip install tensordict
200169
fi
201170

202171
printf "* Installing torchrl\n"

.github/unittest/linux_sota/scripts/test_sota.py

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,6 @@
1515
), "Composite LP must be set to False. Run this test with COMPOSITE_LP_AGGREGATE=0"
1616

1717
commands = {
18-
"dt": """python sota-implementations/decision_transformer/dt.py \
19-
optim.pretrain_gradient_steps=55 \
20-
optim.updates_per_episode=3 \
21-
optim.warmup_steps=10 \
22-
logger.backend= \
23-
env.backend=gymnasium \
24-
env.name=HalfCheetah-v4
25-
""",
26-
"online_dt": """python sota-implementations/decision_transformer/online_dt.py \
27-
optim.pretrain_gradient_steps=55 \
28-
optim.updates_per_episode=3 \
29-
optim.warmup_steps=10 \
30-
env.backend=gymnasium \
31-
logger.backend=
32-
""",
3318
"td3_bc": """python sota-implementations/td3_bc/td3_bc.py \
3419
optim.gradient_steps=55 \
3520
logger.backend=
@@ -39,7 +24,7 @@
3924
collector.frames_per_batch=20 \
4025
collector.num_workers=1 \
4126
logger.backend= \
42-
env.backend=gym \
27+
env.backend=gymnasium \
4328
logger.test_interval=10
4429
""",
4530
"ppo_mujoco": """python sota-implementations/ppo/ppo_mujoco.py \
@@ -57,7 +42,7 @@
5742
loss.mini_batch_size=20 \
5843
loss.ppo_epochs=2 \
5944
logger.backend= \
60-
env.backend=gym \
45+
env.backend=gymnasium \
6146
logger.test_interval=10
6247
""",
6348
"ddpg": """python sota-implementations/ddpg/ddpg.py \
@@ -84,7 +69,7 @@
8469
collector.frames_per_batch=20 \
8570
loss.mini_batch_size=20 \
8671
logger.backend= \
87-
env.backend=gym \
72+
env.backend=gymnasium \
8873
logger.test_interval=40
8974
""",
9075
"dqn_atari": """python sota-implementations/dqn/dqn_atari.py \
@@ -94,7 +79,7 @@
9479
buffer.batch_size=10 \
9580
loss.num_updates=1 \
9681
logger.backend= \
97-
env.backend=gym \
82+
env.backend=gymnasium \
9883
buffer.buffer_size=120
9984
""",
10085
"discrete_cql_online": """python sota-implementations/cql/discrete_cql_online.py \

.github/workflows/test-linux-sota.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@ jobs:
2626
tests:
2727
strategy:
2828
matrix:
29-
python_version: ["3.9"]
30-
cuda_arch_version: ["12.8"]
29+
python_version: ["3.10"]
30+
cuda_arch_version: ["13.0"]
3131
fail-fast: false
3232
uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@main
3333
with:
3434
runner: linux.g5.4xlarge.nvidia.gpu
3535
repository: pytorch/rl
36-
docker-image: "nvidia/cuda:12.2.0-devel-ubuntu22.04"
36+
docker-image: "nvidia/cuda:13.0.2-cudnn-devel-ubuntu24.04"
3737
gpu-arch-type: cuda
3838
gpu-arch-version: ${{ matrix.cuda_arch_version }}
3939
timeout: 90

.github/workflows/test-linux.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ jobs:
173173
docker-image: "nvidia/cuda:13.0.2-cudnn-devel-ubuntu24.04"
174174
gpu-arch-type: cuda
175175
gpu-arch-version: ${{ matrix.cuda_arch_version }}
176-
timeout: 90
176+
timeout: 120
177177
script: |
178178
# Set env vars from matrix
179179
export PYTHON_VERSION=${{ matrix.python_version }}

0 commit comments

Comments
 (0)