Skip to content

Commit ea427ee

Browse files
committed
Merge branch 'main' into env-pr-action
2 parents e4db712 + 30e7046 commit ea427ee

File tree

15 files changed

+1443
-65
lines changed

15 files changed

+1443
-65
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: Update HF Collection
2+
3+
on:
4+
# Run nightly at midnight UTC
5+
schedule:
6+
- cron: '0 0 * * *'
7+
8+
# Trigger when the management script is updated
9+
push:
10+
branches:
11+
- main
12+
paths:
13+
- 'scripts/manage_hf_collection.py'
14+
- '.github/workflows/manage-hf-collection.yml'
15+
16+
# Allow manual triggering
17+
workflow_dispatch:
18+
19+
jobs:
20+
update-collection:
21+
runs-on: ubuntu-latest
22+
permissions:
23+
contents: read
24+
25+
steps:
26+
- name: Checkout repository
27+
uses: actions/checkout@v4
28+
29+
- name: Set up Python
30+
uses: actions/setup-python@v4
31+
with:
32+
python-version: '3.12'
33+
34+
- name: Install dependencies
35+
run: |
36+
pip install huggingface-hub>=0.20.0
37+
38+
- name: Run collection manager
39+
env:
40+
HF_TOKEN: ${{ secrets.HF_TOKEN }}
41+
run: |
42+
python scripts/manage_hf_collection.py
43+
44+
- name: Summary
45+
if: success()
46+
run: |
47+
echo "## Collection Updated ✅" >> $GITHUB_STEP_SUMMARY
48+
echo "" >> $GITHUB_STEP_SUMMARY
49+
echo "Successfully ran the collection manager." >> $GITHUB_STEP_SUMMARY
50+
echo "" >> $GITHUB_STEP_SUMMARY
51+
echo "**Details:**" >> $GITHUB_STEP_SUMMARY
52+
echo "- Scheduled to run daily at midnight UTC" >> $GITHUB_STEP_SUMMARY
53+
echo "- Task: Discover and add openenv-tagged Docker Spaces" >> $GITHUB_STEP_SUMMARY
54+
echo "- Collection: [openenv/environment-hub](https://huggingface.co/collections/openenv/environment-hub-68f16377abea1ea114fa0743)" >> $GITHUB_STEP_SUMMARY

examples/OpenEnv_Tutorial.ipynb

Lines changed: 10 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
"cells": [
33
{
44
"cell_type": "markdown",
5-
"id": "cell-0",
65
"metadata": {},
76
"source": [
87
"<div align=\"center\">\n",
@@ -50,13 +49,13 @@
5049
"\n",
5150
"What do you do beyond Cartpole?\n",
5251
"\n",
53-
"Fast forward to 2025, GRPO is awesome and this time it's not JUST in theory, it works well in practise and is really here! \n",
52+
"Fast-forward to 2025, GRPO is awesome and this time it's not JUST in theory, it works well in practise and is really here!\n",
5453
"\n",
5554
"The problem still remains, how do you take these RL algorithms and take them beyond Cartpole?\n",
5655
"\n",
5756
"A huge part of RL is giving your algorithms environment access to learn. \n",
5857
"\n",
59-
"We are excited to introduce an Environement Spec for adding Open Environments for RL Training. This will allow you to focus on your experiments and allow everyone to bring their environments. \n",
58+
"We are excited to introduce an Environment Spec for adding Open Environments for RL Training. This will allow you to focus on your experiments and allow everyone to bring their environments.\n",
6059
"\n",
6160
"Focus on experiments, use OpenEnvironments, and build agents that go beyond Cartpole on a single spec.\n",
6261
"\n",
@@ -65,7 +64,6 @@
6564
},
6665
{
6766
"cell_type": "markdown",
68-
"id": "cell-1",
6967
"metadata": {},
7068
"source": [
7169
"## 📋 What You'll Learn\n",
@@ -116,7 +114,6 @@
116114
},
117115
{
118116
"cell_type": "markdown",
119-
"id": "cell-2",
120117
"metadata": {},
121118
"source": [
122119
"---\n",
@@ -156,7 +153,6 @@
156153
},
157154
{
158155
"cell_type": "markdown",
159-
"id": "cell-3",
160156
"metadata": {},
161157
"source": [
162158
"---\n",
@@ -187,7 +183,6 @@
187183
{
188184
"cell_type": "code",
189185
"execution_count": 3,
190-
"id": "cell-4",
191186
"metadata": {},
192187
"outputs": [
193188
{
@@ -253,7 +248,6 @@
253248
},
254249
{
255250
"cell_type": "markdown",
256-
"id": "cell-5",
257251
"metadata": {},
258252
"source": [
259253
"---\n",
@@ -327,7 +321,6 @@
327321
},
328322
{
329323
"cell_type": "markdown",
330-
"id": "cell-6",
331324
"metadata": {},
332325
"source": [
333326
"### The Architecture\n",
@@ -375,7 +368,6 @@
375368
},
376369
{
377370
"cell_type": "markdown",
378-
"id": "cell-7",
379371
"metadata": {},
380372
"source": [
381373
"---\n",
@@ -394,7 +386,6 @@
394386
{
395387
"cell_type": "code",
396388
"execution_count": 4,
397-
"id": "cell-8",
398389
"metadata": {},
399390
"outputs": [
400391
{
@@ -443,7 +434,6 @@
443434
},
444435
{
445436
"cell_type": "markdown",
446-
"id": "cell-9",
447437
"metadata": {},
448438
"source": [
449439
"---\n",
@@ -477,7 +467,6 @@
477467
{
478468
"cell_type": "code",
479469
"execution_count": 5,
480-
"id": "cell-10",
481470
"metadata": {},
482471
"outputs": [
483472
{
@@ -576,7 +565,6 @@
576565
},
577566
{
578567
"cell_type": "markdown",
579-
"id": "cell-11",
580568
"metadata": {},
581569
"source": [
582570
"---\n",
@@ -622,7 +610,6 @@
622610
{
623611
"cell_type": "code",
624612
"execution_count": 6,
625-
"id": "cell-12",
626613
"metadata": {},
627614
"outputs": [
628615
{
@@ -722,7 +709,6 @@
722709
{
723710
"cell_type": "code",
724711
"execution_count": 7,
725-
"id": "cell-13",
726712
"metadata": {},
727713
"outputs": [
728714
{
@@ -810,7 +796,6 @@
810796
},
811797
{
812798
"cell_type": "markdown",
813-
"id": "cell-14",
814799
"metadata": {},
815800
"source": [
816801
"### How the Client Works\n",
@@ -830,7 +815,6 @@
830815
},
831816
{
832817
"cell_type": "markdown",
833-
"id": "cell-15",
834818
"metadata": {},
835819
"source": [
836820
"---\n",
@@ -857,7 +841,6 @@
857841
},
858842
{
859843
"cell_type": "markdown",
860-
"id": "cell-16",
861844
"metadata": {},
862845
"source": [
863846
"## The Game: Catch 🔴🏓\n",
@@ -918,7 +901,6 @@
918901
{
919902
"cell_type": "code",
920903
"execution_count": 8,
921-
"id": "cell-17",
922904
"metadata": {},
923905
"outputs": [
924906
{
@@ -990,7 +972,6 @@
990972
{
991973
"cell_type": "code",
992974
"execution_count": 9,
993-
"id": "cell-18",
994975
"metadata": {},
995976
"outputs": [
996977
{
@@ -1009,15 +990,15 @@
1009990
"evalue": "Command '['d:\\\\ANACONDA\\\\envs\\\\openenv\\\\python.exe', '-m', 'pip', 'install', '-q', 'open_spiel']' returned non-zero exit status 1.",
1010991
"output_type": "error",
1011992
"traceback": [
1012-
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
1013-
"\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
1014-
"Cell \u001b[1;32mIn[9], line 12\u001b[0m\n\u001b[0;32m 11\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 12\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpyspiel\u001b[39;00m\n\u001b[0;32m 13\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m✅ OpenSpiel is installed!\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n",
1015-
"\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'pyspiel'",
993+
"\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
994+
"\u001B[1;31mModuleNotFoundError\u001B[0m Traceback (most recent call last)",
995+
"Cell \u001B[1;32mIn[9], line 12\u001B[0m\n\u001B[0;32m 11\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[1;32m---> 12\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[38;5;21;01mpyspiel\u001B[39;00m\n\u001B[0;32m 13\u001B[0m \u001B[38;5;28mprint\u001B[39m(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m✅ OpenSpiel is installed!\u001B[39m\u001B[38;5;130;01m\\n\u001B[39;00m\u001B[38;5;124m\"\u001B[39m)\n",
996+
"\u001B[1;31mModuleNotFoundError\u001B[0m: No module named 'pyspiel'",
1016997
"\nDuring handling of the above exception, another exception occurred:\n",
1017-
"\u001b[1;31mCalledProcessError\u001b[0m Traceback (most recent call last)",
1018-
"Cell \u001b[1;32mIn[9], line 17\u001b[0m\n\u001b[0;32m 15\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m⚠️ OpenSpiel not found. Installing...\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 16\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01msubprocess\u001b[39;00m\n\u001b[1;32m---> 17\u001b[0m \u001b[43msubprocess\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcheck_call\u001b[49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[43msys\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexecutable\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m-m\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mpip\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43minstall\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m-q\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mopen_spiel\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 18\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m✅ OpenSpiel installed!\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 20\u001b[0m \u001b[38;5;66;03m# Start the OpenSpiel server in background\u001b[39;00m\n",
1019-
"File \u001b[1;32md:\\ANACONDA\\envs\\openenv\\Lib\\subprocess.py:413\u001b[0m, in \u001b[0;36mcheck_call\u001b[1;34m(*popenargs, **kwargs)\u001b[0m\n\u001b[0;32m 411\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cmd \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 412\u001b[0m cmd \u001b[38;5;241m=\u001b[39m popenargs[\u001b[38;5;241m0\u001b[39m]\n\u001b[1;32m--> 413\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CalledProcessError(retcode, cmd)\n\u001b[0;32m 414\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;241m0\u001b[39m\n",
1020-
"\u001b[1;31mCalledProcessError\u001b[0m: Command '['d:\\\\ANACONDA\\\\envs\\\\openenv\\\\python.exe', '-m', 'pip', 'install', '-q', 'open_spiel']' returned non-zero exit status 1."
998+
"\u001B[1;31mCalledProcessError\u001B[0m Traceback (most recent call last)",
999+
"Cell \u001B[1;32mIn[9], line 17\u001B[0m\n\u001B[0;32m 15\u001B[0m \u001B[38;5;28mprint\u001B[39m(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m⚠️ OpenSpiel not found. Installing...\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m 16\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[38;5;21;01msubprocess\u001B[39;00m\n\u001B[1;32m---> 17\u001B[0m \u001B[43msubprocess\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcheck_call\u001B[49m\u001B[43m(\u001B[49m\u001B[43m[\u001B[49m\u001B[43msys\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mexecutable\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43m-m\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mpip\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43minstall\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43m-q\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mopen_spiel\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 18\u001B[0m \u001B[38;5;28mprint\u001B[39m(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m✅ OpenSpiel installed!\u001B[39m\u001B[38;5;130;01m\\n\u001B[39;00m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m 20\u001B[0m \u001B[38;5;66;03m# Start the OpenSpiel server in background\u001B[39;00m\n",
1000+
"File \u001B[1;32md:\\ANACONDA\\envs\\openenv\\Lib\\subprocess.py:413\u001B[0m, in \u001B[0;36mcheck_call\u001B[1;34m(*popenargs, **kwargs)\u001B[0m\n\u001B[0;32m 411\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m cmd \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[0;32m 412\u001B[0m cmd \u001B[38;5;241m=\u001B[39m popenargs[\u001B[38;5;241m0\u001B[39m]\n\u001B[1;32m--> 413\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m CalledProcessError(retcode, cmd)\n\u001B[0;32m 414\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;241m0\u001B[39m\n",
1001+
"\u001B[1;31mCalledProcessError\u001B[0m: Command '['d:\\\\ANACONDA\\\\envs\\\\openenv\\\\python.exe', '-m', 'pip', 'install', '-q', 'open_spiel']' returned non-zero exit status 1."
10211002
]
10221003
}
10231004
],
@@ -1102,7 +1083,6 @@
11021083
{
11031084
"cell_type": "code",
11041085
"execution_count": null,
1105-
"id": "cell-19",
11061086
"metadata": {},
11071087
"outputs": [],
11081088
"source": [
@@ -1124,7 +1104,6 @@
11241104
{
11251105
"cell_type": "code",
11261106
"execution_count": null,
1127-
"id": "cell-20",
11281107
"metadata": {},
11291108
"outputs": [],
11301109
"source": [
@@ -1173,7 +1152,6 @@
11731152
},
11741153
{
11751154
"cell_type": "markdown",
1176-
"id": "cell-21",
11771155
"metadata": {},
11781156
"source": [
11791157
"---\n",
@@ -1220,7 +1198,6 @@
12201198
{
12211199
"cell_type": "code",
12221200
"execution_count": null,
1223-
"id": "cell-22",
12241201
"metadata": {},
12251202
"outputs": [],
12261203
"source": [
@@ -1319,7 +1296,6 @@
13191296
},
13201297
{
13211298
"cell_type": "markdown",
1322-
"id": "cell-23",
13231299
"metadata": {},
13241300
"source": [
13251301
"### Watch a Policy Play!"
@@ -1328,7 +1304,6 @@
13281304
{
13291305
"cell_type": "code",
13301306
"execution_count": null,
1331-
"id": "cell-24",
13321307
"metadata": {},
13331308
"outputs": [],
13341309
"source": [
@@ -1397,7 +1372,6 @@
13971372
},
13981373
{
13991374
"cell_type": "markdown",
1400-
"id": "cell-25",
14011375
"metadata": {},
14021376
"source": [
14031377
"---\n",
@@ -1416,7 +1390,6 @@
14161390
{
14171391
"cell_type": "code",
14181392
"execution_count": null,
1419-
"id": "cell-26",
14201393
"metadata": {},
14211394
"outputs": [],
14221395
"source": [
@@ -1477,7 +1450,6 @@
14771450
},
14781451
{
14791452
"cell_type": "markdown",
1480-
"id": "cell-27",
14811453
"metadata": {},
14821454
"source": [
14831455
"---\n",
@@ -1576,7 +1548,6 @@
15761548
},
15771549
{
15781550
"cell_type": "markdown",
1579-
"id": "cell-28",
15801551
"metadata": {},
15811552
"source": [
15821553
"---\n",
@@ -1711,7 +1682,6 @@
17111682
},
17121683
{
17131684
"cell_type": "markdown",
1714-
"id": "cell-29",
17151685
"metadata": {},
17161686
"source": [
17171687
"---\n",
@@ -1725,7 +1695,6 @@
17251695
},
17261696
{
17271697
"cell_type": "markdown",
1728-
"id": "cell-30",
17291698
"metadata": {},
17301699
"source": [
17311700
"## What You Learned\n",
@@ -1778,7 +1747,6 @@
17781747
},
17791748
{
17801749
"cell_type": "markdown",
1781-
"id": "cell-31",
17821750
"metadata": {},
17831751
"source": [
17841752
"## OpenEnv vs Traditional RL\n",
@@ -1845,7 +1813,6 @@
18451813
},
18461814
{
18471815
"cell_type": "markdown",
1848-
"id": "cell-32",
18491816
"metadata": {},
18501817
"source": [
18511818
"<a id=\"resources\"></a>\n",

0 commit comments

Comments
 (0)