Skip to content

Commit 82b1755

Browse files
kengzclaude
andauthored
feat: Phase 5 MuJoCo Playground PPO benchmarks (54 envs)
* feat: Phase 5 MuJoCo Playground PPO benchmarks (54 envs) 54 MuJoCo Playground environments benchmarked with PPO: - Phase 5.1: DM Control Suite (25 envs) - Phase 5.2: Locomotion Robots (19 envs) - Phase 5.3: Manipulation (10 envs) Code changes: - playground.py: suppress MuJoCo stderr warnings, fix dict-obs to use only "state" key for asymmetric-obs envs - ppo_playground.yaml: add loco_precise, loco_go1, manip_aloha_peg, manip_dexterous spec variants - dstack config: add PYTHONUNBUFFERED=1 Results: 38/54 envs pass targets. All data on public SLM-Lab/benchmark. Every row has matching score + HF link + plot. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: semantic version bump hook, remove Phase 5 ops tracker .githooks/commit-msg validates conventional commits and auto-bumps pyproject.toml version. Idempotent: always bumps from master base, so repeated commits on feature branches converge to same version. Rules: feat → minor, breaking (!) → major, everything else → patch. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 6083320 commit 82b1755

63 files changed

Lines changed: 1673 additions & 40 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dstack/run-gpu-train.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@ env:
1616
- PROFILE
1717
- PROF_SKIP
1818
- PROF_ACTIVE
19+
- XLA_PYTHON_CLIENT_PREALLOCATE=false
20+
- UV_HTTP_TIMEOUT=300
1921

2022
commands:
2123
- apt-get update && apt-get install -y swig libgl1-mesa-glx libglib2.0-0 libsm6 libxext6 libxrender-dev libgomp1
22-
- cd /workflow && uv sync
24+
- cd /workflow && uv sync --group playground
25+
- cd /workflow && uv run python -c "from mujoco_playground._src.mjx_env import ensure_menagerie_exists; ensure_menagerie_exists()"
2326
- cd /workflow && uv run slm-lab run ${SPEC_VARS} ${SPEC_FILE} ${SPEC_NAME} ${LAB_MODE} --upload-hf
2427

2528
resources:
@@ -29,7 +32,7 @@ resources:
2932
memory: 32GB..
3033

3134
spot_policy: auto
32-
max_duration: 8h
35+
max_duration: 6h
3336
max_price: 0.50
3437
retry:
3538
on_events: [no-capacity]

.githooks/commit-msg

Lines changed: 72 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,78 @@
11
#!/usr/bin/env bash
2-
# Validate conventional commit format: type: message | type(scope): message
2+
set -euo pipefail
33

4-
commit_msg_file="$1"
5-
commit_msg=$(head -1 "$commit_msg_file")
4+
# Conventional Commits validation + idempotent semantic version bump.
5+
#
6+
# Bumps pyproject.toml version based on commit type, always relative
7+
# to the base branch (master) version so repeated commits on a
8+
# feature branch converge to the same result.
9+
#
10+
# Rules (semver):
11+
# breaking (!) → major (X.0.0)
12+
# feat → minor (_.X.0)
13+
# everything else → patch (_._.X)
614

7-
# Skip merge commits and fixup/squash
8-
if echo "$commit_msg" | grep -qE '^(Merge |fixup! |squash! )'; then
9-
exit 0
10-
fi
15+
readonly COMMIT_MSG_FILE="$1"
16+
readonly COMMIT_MSG="$(head -1 "$COMMIT_MSG_FILE")"
17+
readonly TYPES="feat|fix|docs|chore|refactor|test|perf|ci|style|build"
18+
readonly PYPROJECT="pyproject.toml"
19+
readonly BASE_BRANCH="master"
20+
21+
# --- Validation ---
22+
23+
# Skip non-standard commits
24+
[[ "$COMMIT_MSG" =~ ^(Merge\ |fixup!\ |squash!\ ) ]] && exit 0
25+
26+
# Enforce conventional commit format
27+
if ! [[ "$COMMIT_MSG" =~ ^($TYPES)(\(.+\))?!?:\ .+ ]]; then
28+
cat >&2 <<MSG
29+
ERROR: Invalid commit message format.
1130
12-
# Validate format
13-
if ! echo "$commit_msg" | grep -qE '^(feat|fix|docs|chore|refactor|test|perf|ci|style|build)(\(.+\))?: .+'; then
14-
echo "ERROR: Invalid commit message format."
15-
echo ""
16-
echo " Expected: type: message"
17-
echo " Example: feat: add user authentication"
18-
echo " Example: fix(parser): handle empty input"
19-
echo ""
20-
echo " Allowed types: feat fix docs chore refactor test perf ci style build"
31+
Expected: type: message
32+
Example: feat: add user authentication
33+
Example: fix(parser): handle empty input
34+
35+
Types: $TYPES
36+
MSG
2137
exit 1
2238
fi
39+
40+
# --- Version bump ---
41+
42+
[[ -f "$PYPROJECT" ]] || exit 0
43+
44+
# Read base version from merge target (idempotent across feature branch commits)
45+
read_version() {
46+
local source="$1"
47+
if [[ "$source" == "file" ]]; then
48+
grep '^version = ' "$PYPROJECT" | head -1 | sed 's/version = "//;s/"//'
49+
else
50+
git show "${source}:${PYPROJECT}" 2>/dev/null \
51+
| grep '^version = ' | head -1 | sed 's/version = "//;s/"//' || true
52+
fi
53+
}
54+
55+
base_version="$(read_version "$BASE_BRANCH")"
56+
base_version="${base_version:-$(read_version file)}"
57+
[[ -z "$base_version" ]] && exit 0
58+
59+
IFS='.' read -r major minor patch <<< "$base_version"
60+
61+
# Classify commit
62+
if [[ "$COMMIT_MSG" =~ ^($TYPES)(\(.+\))?!: ]]; then
63+
((major++)); minor=0; patch=0
64+
elif [[ "$COMMIT_MSG" =~ ^feat(\(.+\))?: ]]; then
65+
((minor++)); patch=0
66+
else
67+
((patch++))
68+
fi
69+
70+
new_version="${major}.${minor}.${patch}"
71+
current="$(read_version file)"
72+
73+
# Only touch the file if the version actually changed
74+
if [[ "$current" != "$new_version" ]]; then
75+
sed -i '' "s/^version = \"${current}\"/version = \"${new_version}\"/" "$PYPROJECT"
76+
git add "$PYPROJECT"
77+
echo "Version: ${base_version}${new_version}"
78+
fi

docs/BENCHMARKS.md

Lines changed: 136 additions & 15 deletions
78.7 KB
80.9 KB
75 KB
70.4 KB
76.7 KB
81 KB
80.3 KB

0 commit comments

Comments
 (0)