Skip to content

Commit 0eb40fe

Browse files
committed
Trim MyoSuite oracle test cross-products
1 parent 103b63c commit 0eb40fe

17 files changed

Lines changed: 332 additions & 115 deletions

.github/workflows/test.yml

Lines changed: 40 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,13 @@ jobs:
1414
test-linux-x64:
1515
name: Test (linux-x64)
1616
runs-on: ubuntu-24.04
17-
timeout-minutes: 240
17+
timeout-minutes: 180
1818
env:
1919
CACHE_BRANCH: ${{ github.head_ref || github.ref_name }}
2020
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
21+
# Bound Bazel's local disk cache on hosted Linux runners; unbounded cache
22+
# growth can make the runner lose communication during the full MuJoCo
23+
# coverage/test build.
2124
BAZEL_CI_RESOURCE_OPTS: --jobs=HOST_CPUS-1 --local_cpu_resources=HOST_CPUS-1 --local_ram_resources=HOST_RAM*.5 --experimental_disk_cache_gc_max_size=2G --experimental_disk_cache_gc_idle_delay=0s
2225
MUJOCO_GL: egl
2326
EGL_PLATFORM: surfaceless
@@ -54,10 +57,10 @@ jobs:
5457
~/.cache/bazelisk
5558
~/.cache/envpool-bazel-repo
5659
~/.cache/envpool-bazel-disk
57-
key: bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.CACHE_BRANCH }}
60+
key: bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.CACHE_BRANCH }}
5861
restore-keys: |
59-
bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.DEFAULT_BRANCH }}-
60-
bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-
62+
bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.DEFAULT_BRANCH }}-
63+
bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-
6164
- name: Install bazelisk
6265
run: |
6366
go install github.com/bazelbuild/bazelisk@latest
@@ -101,33 +104,36 @@ jobs:
101104
path: coverage/site
102105
- name: Save Bazel caches
103106
id: save-bazel-caches
104-
if: ${{ success() }}
107+
if: ${{ always() && !cancelled() }}
105108
uses: actions/cache/save@v4
106109
with:
107110
path: |
108111
~/.cache/bazelisk
109112
~/.cache/envpool-bazel-repo
110113
~/.cache/envpool-bazel-disk
111-
key: bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.CACHE_BRANCH }}-${{ github.run_id }}
114+
key: bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.CACHE_BRANCH }}-${{ github.run_id }}
112115
- name: Prune older Bazel caches
113-
if: ${{ success() && !cancelled() && (steps.save-bazel-caches.outcome == 'success' || steps.save-bazel-caches.outcome == 'skipped') }}
116+
if: ${{ always() && !cancelled() && (steps.save-bazel-caches.outcome == 'success' || steps.save-bazel-caches.outcome == 'skipped') }}
114117
continue-on-error: true
115118
env:
116119
GH_TOKEN: ${{ github.token }}
117120
run: >-
118121
python scripts/prune_actions_caches.py
119122
--repo "${{ github.repository }}"
120-
--prefix "bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-"
123+
--prefix "bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-"
121124
--group-by-branch
122125
--delete-missing-branches
123126
--keep 1
124127
test-linux-arm64:
125128
name: Test (linux-arm64)
126129
runs-on: ubuntu-24.04-arm
127-
timeout-minutes: 240
130+
timeout-minutes: 180
128131
env:
129132
CACHE_BRANCH: ${{ github.head_ref || github.ref_name }}
130133
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
134+
# Bound Bazel's local disk cache on hosted Linux runners; unbounded cache
135+
# growth can make the runner lose communication during the full MuJoCo
136+
# coverage/test build.
131137
BAZEL_CI_RESOURCE_OPTS: --jobs=HOST_CPUS-1 --local_cpu_resources=HOST_CPUS-1 --local_ram_resources=HOST_RAM*.5 --experimental_disk_cache_gc_max_size=2G --experimental_disk_cache_gc_idle_delay=0s
132138
MUJOCO_GL: egl
133139
EGL_PLATFORM: surfaceless
@@ -164,10 +170,10 @@ jobs:
164170
~/.cache/bazelisk
165171
~/.cache/envpool-bazel-repo
166172
~/.cache/envpool-bazel-disk
167-
key: bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.CACHE_BRANCH }}
173+
key: bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.CACHE_BRANCH }}
168174
restore-keys: |
169-
bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.DEFAULT_BRANCH }}-
170-
bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-
175+
bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.DEFAULT_BRANCH }}-
176+
bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-
171177
- name: Install bazelisk
172178
run: |
173179
go install github.com/bazelbuild/bazelisk@latest
@@ -178,34 +184,34 @@ jobs:
178184
BAZEL_TEST_TARGETS="//..." bazel-test
179185
- name: Save Bazel caches
180186
id: save-bazel-caches
181-
if: ${{ success() }}
187+
if: ${{ always() && !cancelled() }}
182188
uses: actions/cache/save@v4
183189
with:
184190
path: |
185191
~/.cache/bazelisk
186192
~/.cache/envpool-bazel-repo
187193
~/.cache/envpool-bazel-disk
188-
key: bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.CACHE_BRANCH }}-${{ github.run_id }}
194+
key: bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.CACHE_BRANCH }}-${{ github.run_id }}
189195
- name: Prune older Bazel caches
190-
if: ${{ success() && !cancelled() && (steps.save-bazel-caches.outcome == 'success' || steps.save-bazel-caches.outcome == 'skipped') }}
196+
if: ${{ always() && !cancelled() && (steps.save-bazel-caches.outcome == 'success' || steps.save-bazel-caches.outcome == 'skipped') }}
191197
continue-on-error: true
192198
env:
193199
GH_TOKEN: ${{ github.token }}
194200
run: >-
195201
python scripts/prune_actions_caches.py
196202
--repo "${{ github.repository }}"
197-
--prefix "bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-"
203+
--prefix "bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-"
198204
--group-by-branch
199205
--delete-missing-branches
200206
--keep 1
201207
test-macos:
202208
name: Test (macos)
203209
runs-on: macos-14
204-
timeout-minutes: 240
210+
timeout-minutes: 180
205211
env:
206212
CACHE_BRANCH: ${{ github.head_ref || github.ref_name }}
207213
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
208-
BAZEL_CI_RESOURCE_OPTS: --jobs=HOST_CPUS-1 --local_cpu_resources=HOST_CPUS-1 --local_ram_resources=HOST_RAM*.5 --experimental_disk_cache_gc_max_size=2G --experimental_disk_cache_gc_idle_delay=0s
214+
BAZEL_CI_RESOURCE_OPTS: --jobs=HOST_CPUS-1 --local_cpu_resources=HOST_CPUS-1 --local_ram_resources=HOST_RAM*.5
209215
HOMEBREW_NO_AUTO_UPDATE: "1"
210216
steps:
211217
- name: Cancel previous run
@@ -244,10 +250,10 @@ jobs:
244250
~/.cache/bazelisk
245251
~/.cache/envpool-bazel-repo
246252
~/.cache/envpool-bazel-disk
247-
key: bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.CACHE_BRANCH }}
253+
key: bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.CACHE_BRANCH }}
248254
restore-keys: |
249-
bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.DEFAULT_BRANCH }}-
250-
bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-
255+
bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.DEFAULT_BRANCH }}-
256+
bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-
251257
- name: Install bazelisk
252258
run: |
253259
go install github.com/bazelbuild/bazelisk@latest
@@ -257,35 +263,35 @@ jobs:
257263
make BAZELOPT="--repository_cache=$HOME/.cache/envpool-bazel-repo --disk_cache=$HOME/.cache/envpool-bazel-disk $BAZEL_CI_RESOURCE_OPTS" bazel-test
258264
- name: Save Bazel caches
259265
id: save-bazel-caches
260-
if: ${{ success() }}
266+
if: ${{ always() && !cancelled() }}
261267
uses: actions/cache/save@v4
262268
with:
263269
path: |
264270
~/.cache/bazelisk
265271
~/.cache/envpool-bazel-repo
266272
~/.cache/envpool-bazel-disk
267-
key: bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.CACHE_BRANCH }}-${{ github.run_id }}
273+
key: bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.CACHE_BRANCH }}-${{ github.run_id }}
268274
- name: Prune older Bazel caches
269-
if: ${{ success() && !cancelled() && (steps.save-bazel-caches.outcome == 'success' || steps.save-bazel-caches.outcome == 'skipped') }}
275+
if: ${{ always() && !cancelled() && (steps.save-bazel-caches.outcome == 'success' || steps.save-bazel-caches.outcome == 'skipped') }}
270276
continue-on-error: true
271277
env:
272278
GH_TOKEN: ${{ github.token }}
273279
run: >-
274280
python scripts/prune_actions_caches.py
275281
--repo "${{ github.repository }}"
276-
--prefix "bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-"
282+
--prefix "bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-"
277283
--group-by-branch
278284
--delete-missing-branches
279285
--keep 1
280286
test-windows:
281287
name: Test (windows)
282288
runs-on: windows-2022
283-
timeout-minutes: 240
289+
timeout-minutes: 180
284290
env:
285291
BAZEL_SH: C:/Program Files/Git/usr/bin/bash.exe
286292
CACHE_BRANCH: ${{ github.head_ref || github.ref_name }}
287293
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
288-
BAZEL_CI_RESOURCE_OPTS: --jobs=HOST_CPUS-1 --local_cpu_resources=HOST_CPUS-1 --local_ram_resources=HOST_RAM*.5 --experimental_disk_cache_gc_max_size=2G --experimental_disk_cache_gc_idle_delay=0s
294+
BAZEL_CI_RESOURCE_OPTS: --jobs=HOST_CPUS-1 --local_cpu_resources=HOST_CPUS-1 --local_ram_resources=HOST_RAM*.5
289295
MESA_GL_VERSION_OVERRIDE: 4.5COMPAT
290296
MSYS2_ARG_CONV_EXCL: "*"
291297
MSYS_NO_PATHCONV: "1"
@@ -349,10 +355,10 @@ jobs:
349355
~/.cache/bazelisk
350356
~/.cache/envpool-bazel-repo
351357
~/.cache/envpool-bazel-disk
352-
key: bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.CACHE_BRANCH }}
358+
key: bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.CACHE_BRANCH }}
353359
restore-keys: |
354-
bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.DEFAULT_BRANCH }}-
355-
bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-
360+
bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.DEFAULT_BRANCH }}-
361+
bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-
356362
- name: Install bazelisk
357363
shell: pwsh
358364
run: |
@@ -377,23 +383,23 @@ jobs:
377383
make BAZELOPT="--repository_cache=$repo_cache --disk_cache=$disk_cache $BAZEL_CI_RESOURCE_OPTS" bazel-test
378384
- name: Save Bazel caches
379385
id: save-bazel-caches
380-
if: ${{ success() }}
386+
if: ${{ always() && !cancelled() }}
381387
uses: actions/cache/save@v4
382388
with:
383389
path: |
384390
~/.cache/bazelisk
385391
~/.cache/envpool-bazel-repo
386392
~/.cache/envpool-bazel-disk
387-
key: bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.CACHE_BRANCH }}-${{ github.run_id }}
393+
key: bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-${{ env.CACHE_BRANCH }}-${{ github.run_id }}
388394
- name: Prune older Bazel caches
389-
if: ${{ success() && !cancelled() && (steps.save-bazel-caches.outcome == 'success' || steps.save-bazel-caches.outcome == 'skipped') }}
395+
if: ${{ always() && !cancelled() && (steps.save-bazel-caches.outcome == 'success' || steps.save-bazel-caches.outcome == 'skipped') }}
390396
continue-on-error: true
391397
env:
392398
GH_TOKEN: ${{ github.token }}
393399
run: >-
394400
python scripts/prune_actions_caches.py
395401
--repo "${{ github.repository }}"
396-
--prefix "bazel-test-v4-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-"
402+
--prefix "bazel-test-v3-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.bazelversion') }}-"
397403
--group-by-branch
398404
--delete-missing-branches
399405
--keep 1

BUILD

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ config_setting(
1818
],
1919
)
2020

21+
config_setting(
22+
name = "linux_arm64",
23+
constraint_values = [
24+
"@platforms//cpu:arm64",
25+
"@platforms//os:linux",
26+
],
27+
)
28+
2129
config_setting(
2230
name = "windows",
2331
constraint_values = ["@platforms//os:windows"],

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
- [x] [Atari games](https://envpool.readthedocs.io/en/latest/env/atari.html)
1212
- [x] [MuJoCo (Gymnasium)](https://envpool.readthedocs.io/en/latest/env/mujoco_gym.html)
13-
- [x] [MyoSuite](https://envpool.readthedocs.io/en/latest/env/myosuite.html)
1413
- [x] [Classic control RL envs](https://envpool.readthedocs.io/en/latest/env/classic_control.html): CartPole, MountainCar, Pendulum, Acrobot
1514
- [x] [Toy text RL envs](https://envpool.readthedocs.io/en/latest/env/toy_text.html): Catch, FrozenLake, Taxi, NChain, CliffWalking, Blackjack
1615
- [x] [ViZDoom single player](https://envpool.readthedocs.io/en/latest/env/vizdoom.html)
@@ -21,6 +20,7 @@
2120
- [x] [Minigrid](https://envpool.readthedocs.io/en/latest/env/minigrid.html)
2221
- [x] [Highway](https://envpool.readthedocs.io/en/latest/env/highway.html)
2322
- [x] [MetaWorld](https://envpool.readthedocs.io/en/latest/env/metaworld.html)
23+
- [x] [MyoSuite](https://envpool.readthedocs.io/en/latest/env/myosuite.html)
2424

2525
Here are EnvPool's several highlights:
2626

3.16 MB
Loading
1.07 MB
Loading
1.39 MB
Loading

envpool/entry.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
# limitations under the License.
1414
"""Entry point for all envs' registration."""
1515

16-
import importlib
17-
1816
import envpool.atari.registration # noqa: F401
1917
import envpool.box2d.registration # noqa: F401
2018
import envpool.classic_control.registration # noqa: F401
@@ -24,9 +22,8 @@
2422
import envpool.mujoco.dmc.registration # noqa: F401
2523
import envpool.mujoco.gym.registration # noqa: F401
2624
import envpool.mujoco.metaworld.registration # noqa: F401
25+
import envpool.mujoco.myosuite.registration # noqa: F401
2726
import envpool.mujoco.robotics.registration # noqa: F401
2827
import envpool.procgen.registration # noqa: F401
2928
import envpool.toy_text.registration # noqa: F401
3029
import envpool.vizdoom.registration # noqa: F401
31-
32-
importlib.import_module("envpool.mujoco.myosuite.registration")

envpool/mujoco/BUILD

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,11 +341,14 @@ cc_library(
341341
"//:linux_x86_64": [
342342
# CI fastbuild otherwise compiles the header-only MyoSuite runtime
343343
# at -O0 while the pinned official oracle wheel is release-built.
344+
# This is x86_64-only because the official Linux x86_64 MuJoCo
345+
# wheel enables platform SIMD; linux_arm64 only needs coverage
346+
# disabled for stable long oracle rollouts.
344347
"-O3",
345348
"-fno-profile-arcs",
346349
"-fno-test-coverage",
347350
],
348-
"//:linux": [
351+
"//:linux_arm64": [
349352
"-fno-profile-arcs",
350353
"-fno-test-coverage",
351354
],
@@ -539,8 +542,13 @@ py_test(
539542
size = "enormous",
540543
srcs = ["myosuite/myosuite_oracle_align_test.py"],
541544
data = [":myosuite_oracle_probe"],
545+
# This test is an oracle correctness gate, not a Python coverage target.
546+
# rules_python coverage tries to import native object dirs from the
547+
# transitive MyoSuite deps as Python modules and can fail after the unittest
548+
# body already passed with module-not-imported warnings.
549+
features = ["-coverage"],
542550
imports = ["../.."],
543-
shard_count = 4,
551+
shard_count = 8,
544552
deps = [
545553
":myosuite",
546554
":myosuite_registration",

0 commit comments

Comments
 (0)