Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[gym/rllib] Migrate from ray[rllib]==2.5.0 to 2.9.*. #739

Merged
merged 7 commits into from
Mar 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 33 additions & 35 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,32 +66,33 @@ jobs:
sudo apt install -y gdb gnupg curl wget build-essential cmake doxygen graphviz texlive-latex-base

"${PYTHON_EXECUTABLE}" -m pip install setuptools wheel "pip>=20.3"
"${PYTHON_EXECUTABLE}" -m pip install "numpy>=1.21,<2.0"
"${PYTHON_EXECUTABLE}" -m pip install "numpy>=1.23,<2.0"

git config --global advice.detachedHead false
- name: Build jiminy dependencies
run: |
BUILD_TYPE="${{ matrix.BUILD_TYPE }}" ./build_tools/build_install_deps_unix.sh
- name: Install pre-compiled binaries for additional gym-jiminy dependencies
if: matrix.PYTHON_VERSION != '3.12'
if: matrix.PYTHON_VERSION != '3.13'
run: |
"${PYTHON_EXECUTABLE}" -m pip install "torch" -f https://download.pytorch.org/whl/torch
"${PYTHON_EXECUTABLE}" -m pip install "gymnasium>=0.26,<0.29" "importlib-metadata>=3.3.0"
"${PYTHON_EXECUTABLE}" -m pip install "gymnasium>=0.28,<1.0" "stable_baselines3>=2.0"

#####################################################################################

- name: Build and install Jiminy
run: |
unset Boost_ROOT

mkdir "$RootDir/build"
cd "$RootDir/build"
cmake "$RootDir" -DCMAKE_INSTALL_PREFIX="$InstallDir" -DCMAKE_PREFIX_PATH="$InstallDir" \
mkdir "${RootDir}/build"
cd "${RootDir}/build"
cmake "${RootDir}" -Wdev \
-DCMAKE_INSTALL_PREFIX="$InstallDir" -DCMAKE_PREFIX_PATH="$InstallDir" \
-DBOOST_ROOT="$InstallDir" -DBoost_INCLUDE_DIR="$InstallDir/include" \
-DBoost_NO_SYSTEM_PATHS=TRUE -DBoost_NO_BOOST_CMAKE=TRUE -DBoost_USE_STATIC_LIBS=ON \
-DPYTHON_EXECUTABLE="${PYTHON_EXECUTABLE}" \
-DBUILD_TESTING=ON -DBUILD_EXAMPLES=ON -DBUILD_PYTHON_INTERFACE=ON \
-DINSTALL_GYM_JIMINY=${{ (matrix.PYTHON_VERSION == '3.12' && 'OFF') || 'ON' }} \
-DINSTALL_GYM_JIMINY=${{ (matrix.PYTHON_VERSION == '3.13' && 'OFF') || 'ON' }} \
-DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS}" -DCMAKE_BUILD_TYPE="${{ matrix.BUILD_TYPE }}"
make install -j2

Expand All @@ -103,9 +104,9 @@ jobs:
run: |
"$InstallDir/bin/jiminy_double_pendulum"

mkdir -p "$RootDir/core/examples/external_project/build"
cd "$RootDir/core/examples/external_project/build"
cmake "$RootDir/core/examples/external_project/" -DCMAKE_INSTALL_PREFIX="$InstallDir" \
mkdir -p "${RootDir}/core/examples/external_project/build"
cd "${RootDir}/core/examples/external_project/build"
cmake "${RootDir}/core/examples/external_project/" -DCMAKE_INSTALL_PREFIX="$InstallDir" \
-DCMAKE_PREFIX_PATH="$InstallDir" -DPYTHON_EXECUTABLE="${PYTHON_EXECUTABLE}" \
-DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS}" -DCMAKE_BUILD_TYPE="${BUILD_TYPE}"
make install
Expand All @@ -118,46 +119,43 @@ jobs:
run: |
ctest --output-on-failure --test-dir "${RootDir}/build/core/unit"

"${PYTHON_EXECUTABLE}" -m unittest discover -s "$RootDir/python/jiminy_py/unit_py" -v
"${PYTHON_EXECUTABLE}" -m unittest discover -s "${RootDir}/python/jiminy_py/unit_py" -v

- name: Run unit tests for gym_jiminy
if: matrix.BUILD_TYPE == 'Release' && matrix.PYTHON_VERSION != '3.12'
- name: Run unit tests for gym jiminy base module
run: |
cd "$RootDir/python/gym_jiminy/examples/reinforcement_learning/rllib"
gdb -batch -ex "run" -ex "bt" --args "${PYTHON_EXECUTABLE}" acrobot_ppo.py 2>&1 | \
grep -v ^"No stack."$ && exit 1
if [[ "${{ matrix.BUILD_TYPE }}" == 'Debug' ]] ; then
export JIMINY_BUILD_DEBUG=
fi
"${PYTHON_EXECUTABLE}" -m unittest discover -s "${RootDir}/python/gym_jiminy/unit_py" -v

# FIXME: Must install stable_baselines3 after running rllib test
# because they require a different version of `gymnasium`.
"${PYTHON_EXECUTABLE}" -m pip install "stable_baselines3>=2.0"

"${PYTHON_EXECUTABLE}" -m unittest discover -s "$RootDir/python/gym_jiminy/unit_py" -v
- name: Run examples for gym jiminy add-on modules
if: matrix.BUILD_TYPE != 'Debug' && matrix.PYTHON_VERSION != '3.12'
run: |
cd "${RootDir}/python/gym_jiminy/examples/rllib"
"${PYTHON_EXECUTABLE}" acrobot_ppo.py

- name: Python static type checker
if: matrix.PYTHON_VERSION == '3.8' && matrix.BUILD_TYPE == 'Release'
if: matrix.PYTHON_VERSION == '3.8' && matrix.BUILD_TYPE != 'Debug'
run: |
# Generate stubs
stubgen -p jiminy_py -o $RootDir/build/pypi/jiminy_py/src
"${PYTHON_EXECUTABLE}" "$RootDir/build_tools/stub_gen.py" \
-o $RootDir/build/stubs --ignore-invalid=all jiminy_py
cp $RootDir/build/stubs/jiminy_py-stubs/core/__init__.pyi \
$RootDir/build/pypi/jiminy_py/src/jiminy_py/core/core.pyi
stubgen -p jiminy_py -o ${RootDir}/build/pypi/jiminy_py/src
"${PYTHON_EXECUTABLE}" "${RootDir}/build_tools/stub_gen.py" \
-o ${RootDir}/build/stubs --ignore-invalid=all jiminy_py
cp ${RootDir}/build/stubs/jiminy_py-stubs/core/__init__.pyi \
${RootDir}/build/pypi/jiminy_py/src/jiminy_py/core/core.pyi

# Re-install jiminy with stubs
cd "$RootDir/build"
cd "${RootDir}/build"
make install

# FIXME: Force re-installing the right version of gymnasium
"${PYTHON_EXECUTABLE}" -m pip install "gymnasium>=0.28,<0.29"

# mypy is not able to follow `.pth` when checking directories or files.
# This bug may be fixed in the future. The only workaround is to set `MYPYPATH` manually.
# Anyway, the stubs generated for eigenpy, hppfcl and pinocchio they are incomplete and
# even partially wrong, so it is better to ignore them for now.
# See: https://github.com/python/mypy/issues/14848.
cd "$RootDir/python/jiminy_py/"
mypy --config-file="$RootDir/.mypy.ini" -p src
cd "${RootDir}/python/jiminy_py/"
mypy --config-file="${RootDir}/.mypy.ini" -p src
for name in "common" "envs" "toolbox" "rllib"; do
cd "$RootDir/python/gym_jiminy/$name"
mypy --config-file="$RootDir/.mypy.ini" -p gym_jiminy
cd "${RootDir}/python/gym_jiminy/$name"
mypy --config-file="${RootDir}/.mypy.ini" -p gym_jiminy
done
40 changes: 19 additions & 21 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,17 +68,17 @@ jobs:
echo "InstallDir=${GITHUB_WORKSPACE}/install" >> $GITHUB_ENV

"${PYTHON_EXECUTABLE}" -m pip install setuptools wheel "pip>=20.3"
"${PYTHON_EXECUTABLE}" -m pip install "numpy>=1.21,<2.0"
"${PYTHON_EXECUTABLE}" -m pip install "numpy>=1.23,<2.0"
"${PYTHON_EXECUTABLE}" -m pip install delocate twine
- name: Build jiminy dependencies
run: |
OSX_DEPLOYMENT_TARGET=${OSX_DEPLOYMENT_TARGET} OSX_ARCHITECTURES=${OSX_ARCHITECTURES} \
BUILD_TYPE="${{ matrix.BUILD_TYPE }}" ./build_tools/build_install_deps_unix.sh
- name: Install pre-compiled binaries for additional gym-jiminy dependencies
if: matrix.PYTHON_VERSION != '3.12'
if: matrix.PYTHON_VERSION != '3.13'
run: |
"${PYTHON_EXECUTABLE}" -m pip install "torch" -f https://download.pytorch.org/whl/torch
"${PYTHON_EXECUTABLE}" -m pip install "gymnasium>=0.26,<0.29" "importlib-metadata>=3.3.0"
"${PYTHON_EXECUTABLE}" -m pip install "gymnasium>=0.28,<1.0" "stable_baselines3>=2.0"

#####################################################################################

Expand All @@ -90,7 +90,8 @@ jobs:
mkdir "${RootDir}/build"
cd "${RootDir}/build"
export LD_LIBRARY_PATH="${InstallDir}/lib/:/usr/local/lib"
cmake "${RootDir}" -DCMAKE_INSTALL_PREFIX="${InstallDir}" -DCMAKE_PREFIX_PATH="${InstallDir}" \
cmake "${RootDir}" -Wdev \
-DCMAKE_INSTALL_PREFIX="${InstallDir}" -DCMAKE_PREFIX_PATH="${InstallDir}" \
-DCMAKE_C_COMPILER="${CMAKE_C_COMPILER}" -DCMAKE_CXX_COMPILER="${CMAKE_CXX_COMPILER}" \
-DCMAKE_OSX_ARCHITECTURES="${OSX_ARCHITECTURES}" \
-DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}" \
Expand All @@ -99,7 +100,7 @@ jobs:
-DBoost_NO_SYSTEM_PATHS=TRUE -DBoost_NO_BOOST_CMAKE=TRUE \
-DBoost_USE_STATIC_LIBS=ON -DPYTHON_EXECUTABLE="${PYTHON_EXECUTABLE}" \
-DBUILD_TESTING=ON -DBUILD_EXAMPLES=ON -DBUILD_PYTHON_INTERFACE=ON \
-DINSTALL_GYM_JIMINY=${{ (matrix.PYTHON_VERSION == '3.12' && 'OFF') || 'ON' }} \
-DINSTALL_GYM_JIMINY=${{ (matrix.PYTHON_VERSION == '3.13' && 'OFF') || 'ON' }} \
-DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS}" -DCMAKE_BUILD_TYPE="${{ matrix.BUILD_TYPE }}"
make -j2

Expand Down Expand Up @@ -140,7 +141,7 @@ jobs:
-p "macosx_${OSX_DEPLOYMENT_TARGET//./_}_${WHEEL_ARCH}" "${RootDir}/build/wheelhouse/"*.whl
"${PYTHON_EXECUTABLE}" -m pip install --force-reinstall --no-deps "${RootDir}/build/wheelhouse/"*.whl
- name: Upload the wheel for Linux of jiminy_py
if: matrix.BUILD_TYPE == 'Release'
if: matrix.BUILD_TYPE != 'Debug'
uses: actions/upload-artifact@v4
with:
name: wheelhouse-${{ matrix.PYTHON_VERSION }}
Expand Down Expand Up @@ -175,28 +176,25 @@ jobs:
cd "${RootDir}/python/jiminy_py/unit_py"
"${PYTHON_EXECUTABLE}" -m unittest discover -v

- name: Run unit tests for gym_jiminy
if: matrix.BUILD_TYPE != 'Release'
- name: Run unit tests for gym jiminy base module
run: |
# Disabling `test_pipeline_control.py` on MacOS because `test_pid_standing` is failing
# for 'panda3d-sync' backend due to meshes still loading at screenshot time.
cd "${RootDir}/python/gym_jiminy/unit_py"
"${PYTHON_EXECUTABLE}" -m unittest test_pipeline_design.py -v
export LD_LIBRARY_PATH="${InstallDir}/lib/:/usr/local/lib"

# FIXME: Disabling `test_pipeline_control.py` on MacOS because `test_pid_standing` is
# failing for 'panda3d-sync' backend due to meshes still loading at screenshot time.
if [[ "${{ matrix.BUILD_TYPE }}" == 'Debug' ]] ; then
export JIMINY_BUILD_DEBUG=
fi
"${PYTHON_EXECUTABLE}" -m unittest discover -s "${RootDir}/python/gym_jiminy/unit_py" -v

- name: Run unit tests for gym jiminy
if: matrix.BUILD_TYPE == 'Release' && matrix.PYTHON_VERSION != '3.12'
- name: Run examples for gym jiminy add-on modules
if: matrix.BUILD_TYPE != 'Debug' && matrix.PYTHON_VERSION != '3.12'
run: |
export LD_LIBRARY_PATH="${InstallDir}/lib/:/usr/local/lib"

cd "${RootDir}/python/gym_jiminy/examples/reinforcement_learning/rllib"
cd "${RootDir}/python/gym_jiminy/examples/rllib"
"${PYTHON_EXECUTABLE}" acrobot_ppo.py

# FIXME: Must install stable_baselines3 after running rllib test
# because they require a different version of `gymnasium`.
"${PYTHON_EXECUTABLE}" -m pip install "stable_baselines3>=2.0"

"${PYTHON_EXECUTABLE}" -m unittest discover -s "${RootDir}/python/gym_jiminy/unit_py" -v

#########################################################################################

publish-pypi-macos:
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/manylinux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ jobs:
echo "InstallDir=${GITHUB_WORKSPACE}/install" >> $GITHUB_ENV

"${PYTHON_EXECUTABLE}" -m pip install setuptools wheel "pip>=20.3"
"${PYTHON_EXECUTABLE}" -m pip install "numpy>=1.21,<2.0"
"${PYTHON_EXECUTABLE}" -m pip install "numpy>=1.23,<2.0"
"${PYTHON_EXECUTABLE}" -m pip install twine cmake
- name: Build project dependencies
run: |
Expand All @@ -78,7 +78,8 @@ jobs:
mkdir "$RootDir/build"
cd "$RootDir/build"
export LD_LIBRARY_PATH="$InstallDir/lib:$InstallDir/lib64:/usr/local/lib"
cmake "$RootDir" -DCMAKE_INSTALL_PREFIX="$InstallDir" -DCMAKE_PREFIX_PATH="$InstallDir" \
cmake "$RootDir" -Wdev \
-DCMAKE_INSTALL_PREFIX="$InstallDir" -DCMAKE_PREFIX_PATH="$InstallDir" \
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DCMAKE_VERBOSE_MAKEFILE=ON \
-DBOOST_ROOT="$InstallDir" -DBoost_INCLUDE_DIR="$InstallDir/include" \
-DBoost_NO_SYSTEM_PATHS=TRUE -DBoost_NO_BOOST_CMAKE=TRUE \
Expand Down
33 changes: 17 additions & 16 deletions .github/workflows/ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,12 +76,12 @@ jobs:
sudo apt install ninja-build
fi
"${PYTHON_EXECUTABLE}" -m pip install "torch" -f https://download.pytorch.org/whl/torch
"${PYTHON_EXECUTABLE}" -m pip install "gymnasium>=0.26,<0.29" "importlib-metadata>=3.3.0"
"${PYTHON_EXECUTABLE}" -m pip install "gymnasium>=0.28,<1.0" "stable_baselines3>=2.0"

#####################################################################################

- name: PEP8 Code Style Check
if: matrix.OS == 'ubuntu-20.04' && matrix.BUILD_TYPE == 'Release' && matrix.COMPILER == 'gcc'
if: matrix.OS == 'ubuntu-20.04' && matrix.BUILD_TYPE != 'Debug' && matrix.COMPILER == 'gcc'
run: |
"${PYTHON_EXECUTABLE}" -m pip install flake8
flake8 --ignore=E121,E126,E123,E226,E241,E266,E402,E741,F405,W504 \
Expand All @@ -94,7 +94,9 @@ jobs:
mkdir "${RootDir}/build" "${InstallDir}"
cd "${RootDir}/build"

cmake "${RootDir}" -G "${{ matrix.GENERATOR }}" -DCMAKE_EXE_LINKER_FLAGS="${{ matrix.LINKER_FLAGS }}" \
cmake "${RootDir}" -Wdev -G "${{ matrix.GENERATOR }}" \
-DCMAKE_EXE_LINKER_FLAGS="${{ matrix.LINKER_FLAGS }}" \
-DCMAKE_SHARED_LINKER_FLAGS="${{ matrix.LINKER_FLAGS }}" \
-DCMAKE_C_COMPILER="${CMAKE_C_COMPILER}" -DCMAKE_CXX_COMPILER="${CMAKE_CXX_COMPILER}" \
-DCMAKE_PREFIX_PATH="/opt/openrobots/" -DCMAKE_INSTALL_PREFIX="${InstallDir}" \
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DBoost_NO_SYSTEM_PATHS=OFF \
Expand All @@ -120,7 +122,9 @@ jobs:
RootDir="${RootDir}/core/examples/external_project/"
mkdir -p "${RootDir}/build"
cd "${RootDir}/build"
cmake "${RootDir}" -G "${{ matrix.GENERATOR }}" -DCMAKE_EXE_LINKER_FLAGS="${{ matrix.LINKER_FLAGS }}" \
cmake "${RootDir}" -G "${{ matrix.GENERATOR }}" \
-DCMAKE_EXE_LINKER_FLAGS="${{ matrix.LINKER_FLAGS }}" \
-DCMAKE_SHARED_LINKER_FLAGS="${{ matrix.LINKER_FLAGS }}" \
-DCMAKE_C_COMPILER="${CMAKE_C_COMPILER}" -DCMAKE_CXX_COMPILER="${CMAKE_CXX_COMPILER}" \
-DCMAKE_PREFIX_PATH="/opt/openrobots/" -DCMAKE_INSTALL_PREFIX="${InstallDir}" \
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DPYTHON_EXECUTABLE="${PYTHON_EXECUTABLE}" \
Expand All @@ -139,26 +143,23 @@ jobs:

"${PYTHON_EXECUTABLE}" -m unittest discover -s "${RootDir}/python/jiminy_py/unit_py" -v

- name: Run unit tests for gym_jiminy
if: matrix.BUILD_TYPE != 'Release'
- name: Run unit tests for gym jiminy base module
run: |
cd "${RootDir}/python/gym_jiminy/unit_py"
"${PYTHON_EXECUTABLE}" -m unittest test_pipeline_control.py test_pipeline_design.py -v
if [[ "${{ matrix.BUILD_TYPE }}" == 'Debug' ]] ; then
export JIMINY_BUILD_DEBUG=
fi
"${PYTHON_EXECUTABLE}" -m unittest discover -s "${RootDir}/python/gym_jiminy/unit_py" -v

- name: Run unit tests for gym_jiminy
if: matrix.BUILD_TYPE == 'Release'
- name: Run examples for gym jiminy add-on modules
if: matrix.BUILD_TYPE != 'Debug'
run: |
cd "${RootDir}/python/gym_jiminy/examples/reinforcement_learning/rllib"
cd "${RootDir}/python/gym_jiminy/examples/rllib"
"${PYTHON_EXECUTABLE}" acrobot_ppo.py

"${PYTHON_EXECUTABLE}" -m pip install "stable_baselines3>=2.0"

"${PYTHON_EXECUTABLE}" -m unittest discover -s "${RootDir}/python/gym_jiminy/unit_py" -v

#####################################################################################

- name: Python linter
if: matrix.OS == 'ubuntu-20.04' && matrix.BUILD_TYPE == 'Release' && matrix.COMPILER == 'gcc'
if: matrix.OS == 'ubuntu-20.04' && matrix.BUILD_TYPE != 'Debug' && matrix.COMPILER == 'gcc'
run: |
cd "${RootDir}/python/jiminy_py/"
pylint --rcfile="${RootDir}/.pylintrc" "src/"
Expand Down
Loading
Loading