From 529d913f9a50e3e8eaffe366d0dbb8dbcc95a0c2 Mon Sep 17 00:00:00 2001 From: Kai Fricke Date: Fri, 14 Jul 2023 13:50:16 -0700 Subject: [PATCH] [requirements] Install with compiled requirements as constraints [build_base] (#36983) Following up from #36808, this PR now uses the compiled constraints file in the installation of the dependencies in CI and in the ray-ml docker images. In result, both environments will share the same versions of (sub)dependencies. Signed-off-by: Kai Fricke --- ci/build/build-docker-images.py | 1 + ci/ci.sh | 4 + ci/docker/base.ml.Dockerfile | 11 - ci/docker/base.test.Dockerfile | 1 - ci/env/install-dependencies.sh | 10 + doc/requirements-doc.txt | 2 +- docker/ray-ml/Dockerfile | 1 + .../ray-ml/install-ml-docker-requirements.sh | 15 +- python/build-wheel-manylinux2014.sh | 7 +- .../requirements/ml/dl-gpu-requirements.txt | 9 +- python/requirements_compiled.txt | 549 ++++++++++++++++++ 11 files changed, 589 insertions(+), 21 deletions(-) create mode 100644 python/requirements_compiled.txt diff --git a/ci/build/build-docker-images.py b/ci/build/build-docker-images.py index 556bd78ae9bc..f7f5a6ee2813 100644 --- a/ci/build/build-docker-images.py +++ b/ci/build/build-docker-images.py @@ -424,6 +424,7 @@ def prep_ray_ml(): requirements_files = [ "python/requirements.txt", + "python/requirements_compiled.txt", ] ml_requirements_files = [ "python/requirements/docker/ray-docker-requirements.txt", diff --git a/ci/ci.sh b/ci/ci.sh index db26d774b6e6..948ec8880cac 100755 --- a/ci/ci.sh +++ b/ci/ci.sh @@ -158,6 +158,10 @@ compile_pip_dependencies() { "${WORKSPACE_DIR}/python/requirements/ml/tune-test-requirements.txt" fi + # Remove some pins from upstream dependencies: + # ray, xgboost-ray, lightgbm-ray, tune-sklearn + sed -i "/^ray==/d;/^xgboost-ray==/d;/^lightgbm-ray==/d;/^tune-sklearn==/d" "${WORKSPACE_DIR}/python/requirements_compiled.txt" + cat "${WORKSPACE_DIR}/python/requirements_compiled.txt" if [ "$HAS_TORCH" -eq 0 ]; then diff --git a/ci/docker/base.ml.Dockerfile b/ci/docker/base.ml.Dockerfile index 405ec1df0ca4..8448e1b25725 100644 --- a/ci/docker/base.ml.Dockerfile +++ b/ci/docker/base.ml.Dockerfile @@ -1,15 +1,4 @@ ARG DOCKER_IMAGE_BASE_TEST FROM $DOCKER_IMAGE_BASE_TEST -# Move out of working dir /ray -# Delete stale data -WORKDIR / -RUN rm -rf /ray - -RUN mkdir /ray -WORKDIR /ray - -# Copy new ray files -COPY . . - RUN RLLIB_TESTING=1 TRAIN_TESTING=1 TUNE_TESTING=1 ./ci/env/install-dependencies.sh diff --git a/ci/docker/base.test.Dockerfile b/ci/docker/base.test.Dockerfile index 26a9b0628ea4..012ceb6ccc54 100644 --- a/ci/docker/base.test.Dockerfile +++ b/ci/docker/base.test.Dockerfile @@ -65,4 +65,3 @@ WORKDIR /ray COPY . . RUN ./ci/env/install-dependencies.sh init -RUN bash --login -i ./ci/ci.sh compile_pip_dependencies diff --git a/ci/env/install-dependencies.sh b/ci/env/install-dependencies.sh index d6986c07280f..8bbca5b86b27 100755 --- a/ci/env/install-dependencies.sh +++ b/ci/env/install-dependencies.sh @@ -457,6 +457,16 @@ install_pip_packages() { # Generate the pip command with collected requirements files pip_cmd="pip install -U -c ${WORKSPACE_DIR}/python/requirements.txt" + + if [[ -f "${WORKSPACE_DIR}/python/requirements_compiled.txt" && "${PYTHON-}" != "3.7" && "${OSTYPE}" != msys ]]; then + # On Python 3.7, we don't, as the dependencies are compiled for 3.8+ + # and we don't build ray-ml images. This means we don't have to keep + # consistency between CI and docker images. + # On Windows, some pinned dependencies are not built for win, so we + # skip this until we have a good wy to resolve cross-platform dependencies. + pip_cmd+=" -c ${WORKSPACE_DIR}/python/requirements_compiled.txt" + fi + for file in "${requirements_files[@]}"; do pip_cmd+=" -r ${file}" done diff --git a/doc/requirements-doc.txt b/doc/requirements-doc.txt index a5c1d1d6b61b..e6f1514e0e0d 100644 --- a/doc/requirements-doc.txt +++ b/doc/requirements-doc.txt @@ -27,7 +27,7 @@ pytorch-lightning==1.6.5 scikit-optimize redis starlette -uvicorn==0.16.0 +uvicorn==0.22.0 werkzeug wandb tensorflow; sys_platform != 'darwin' or platform_machine != 'arm64' diff --git a/docker/ray-ml/Dockerfile b/docker/ray-ml/Dockerfile index c93bd09f92c2..44ce0a61e14f 100644 --- a/docker/ray-ml/Dockerfile +++ b/docker/ray-ml/Dockerfile @@ -3,6 +3,7 @@ FROM rayproject/ray:nightly"$BASE_IMAGE" # We have to uninstall wrapt this way for Tensorflow compatibility COPY requirements.txt ./ +COPY requirements_compiled.txt ./ COPY dl-cpu-requirements.txt ./ COPY dl-gpu-requirements.txt ./ COPY ray-docker-requirements.txt ./ diff --git a/docker/ray-ml/install-ml-docker-requirements.sh b/docker/ray-ml/install-ml-docker-requirements.sh index 6da9ae18d1fc..53db300e8e82 100755 --- a/docker/ray-ml/install-ml-docker-requirements.sh +++ b/docker/ray-ml/install-ml-docker-requirements.sh @@ -1,5 +1,7 @@ #!/bin/bash +set -e + # shellcheck disable=SC2139 alias pip="$HOME/anaconda3/bin/pip" @@ -17,10 +19,10 @@ pip --no-cache-dir install -U pip pip-tools # Install requirements pip --no-cache-dir install -U -r requirements.txt - # Install other requirements. Keep pinned requirements bounds as constraints pip --no-cache-dir install -U \ -c requirements.txt \ + -c requirements_compiled.txt \ -r core-requirements.txt \ -r data-requirements.txt \ -r rllib-requirements.txt \ @@ -31,11 +33,18 @@ pip --no-cache-dir install -U \ -r tune-test-requirements.txt \ -r ray-docker-requirements.txt + +# Remove any device-specific constraints from requirements_compiled.txt. +# E.g.: torch-scatter==2.1.1+pt20cpu or torchvision==0.15.2+cpu +# These are replaced with gpu-specific requirements in dl-gpu-requirements.txt. +sed "/[0-9]\+cpu/d;/[0-9]\+pt/d" "requirements_compiled.txt" > requirements_compiled_gpu.txt + # explicitly install (overwrite) pytorch with CUDA support -pip --no-cache-dir install -U \ +pip --no-cache-dir install \ -c requirements.txt \ + -c requirements_compiled_gpu.txt \ -r dl-gpu-requirements.txt sudo apt-get clean -sudo rm requirements*.txt +sudo rm ./*requirements*.txt diff --git a/python/build-wheel-manylinux2014.sh b/python/build-wheel-manylinux2014.sh index e07ac26405ed..6b70c2d8c961 100755 --- a/python/build-wheel-manylinux2014.sh +++ b/python/build-wheel-manylinux2014.sh @@ -81,8 +81,9 @@ for PYTHON_NUMPY in "${PYTHON_NUMPYS[@]}" ; do # The -f flag is passed twice to also run git clean in the arrow subdirectory. # The -d flag removes directories. The -x flag ignores the .gitignore file, # and the -e flag ensures that we don't remove the .whl directory, the - # dashboard directory and jars directory. - git clean -f -f -x -d -e .whl -e python/ray/dashboard/client -e dashboard/client -e python/ray/jars + # dashboard directory and jars directory, as well as the compiled + # dependency constraints. + git clean -f -f -x -d -e .whl -e python/ray/dashboard/client -e dashboard/client -e python/ray/jars -e python/requirements_compiled.txt ( cd python @@ -122,7 +123,7 @@ for path in .whl/*.whl; do done # Clean the build output so later operations is on a clean directory. -git clean -f -f -x -d -e .whl -e python/ray/dashboard/client +git clean -f -f -x -d -e .whl -e python/ray/dashboard/client -e python/requirements_compiled.txt echo "--- Build JAR" if [ "${BUILD_JAR-}" == "1" ]; then diff --git a/python/requirements/ml/dl-gpu-requirements.txt b/python/requirements/ml/dl-gpu-requirements.txt index d989c2ac5bf8..a941fde9ccaa 100644 --- a/python/requirements/ml/dl-gpu-requirements.txt +++ b/python/requirements/ml/dl-gpu-requirements.txt @@ -1,7 +1,12 @@ # If you make changes below this line, please also make the corresponding changes to `dl-cpu-requirements.txt`! ---extra-index-url https://download.pytorch.org/whl/cu116 # for GPU versions of torch, torchvision ---find-links https://data.pyg.org/whl/torch-1.13.0+cu116.html # for GPU versions of torch-scatter, torch-sparse, torch-cluster, torch-spline-conv +tensorflow==2.11.0; sys_platform != 'darwin' or platform_machine != 'arm64' +tensorflow-macos==2.11.0; sys_platform == 'darwin' and platform_machine == 'arm64' +tensorflow-probability==0.19.0 +tensorflow-datasets + +--extra-index-url https://download.pytorch.org/whl/cu118 # for GPU versions of torch, torchvision +--find-links https://data.pyg.org/whl/torch-2.0.1+cu118.html # for GPU versions of torch-scatter, torch-sparse, torch-cluster, torch-spline-conv # specifying explicit plus-notation below so pip overwrites the existing cpu verisons torch==1.13.0+cu116 torchvision==0.14.0+cu116 diff --git a/python/requirements_compiled.txt b/python/requirements_compiled.txt new file mode 100644 index 000000000000..bd2db12da3a7 --- /dev/null +++ b/python/requirements_compiled.txt @@ -0,0 +1,549 @@ +# ./ci.sh compile_pip_dependencies +about-time==4.2.1 +absl-py==1.4.0 +accelerate==0.20.3 +adal==1.2.7 +aim==3.17.5 +aim-ui==3.17.5 +aimrecords==0.0.7 +aimrocks==0.4.0 +aioboto3==11.2.0 ; python_version >= "3.8" +aiobotocore==2.5.0 +aiofiles==22.1.0 +aiohttp==3.8.4 +aiohttp-cors==0.7.0 +aioitertools==0.11.0 +aiorwlock==1.3.0 +aiosignal==1.3.1 +aiosqlite==0.19.0 +alabaster==0.7.13 +ale-py==0.8.1 +alembic==1.11.1 +alive-progress==3.1.4 +anyio==3.7.1 +applicationinsights==0.11.10 +argcomplete==1.12.3 +argon2-cffi==21.3.0 +argon2-cffi-bindings==21.2.0 +array-record==0.4.0 +arrow==1.2.3 +asttokens==2.2.1 +astunparse==1.6.3 +async-exit-stack==1.0.1 +async-generator==1.10 +async-timeout==4.0.2 +asyncmock==0.4.2 +attrs==21.4.0 +autograd==1.6.2 +autorom==0.6.1 ; platform_machine != "arm64" +autorom-accept-rom-license==0.6.1 +aws-sam-translator==1.71.0 +aws-xray-sdk==2.12.0 +ax-platform==0.3.2 ; python_version >= "3.8" +azure-cli-core==2.40.0 +azure-cli-telemetry==1.0.8 +azure-common==1.1.28 +azure-core==1.27.1 +azure-identity==1.10.0 +azure-mgmt-compute==23.1.0 +azure-mgmt-core==1.4.0 +azure-mgmt-network==19.0.0 +azure-mgmt-resource==20.0.0 +babel==2.12.1 +backcall==0.2.0 +backoff==1.10.0 +base58==2.0.1 +bayesian-optimization==1.4.3 +bcrypt==4.0.1 +beautifulsoup4==4.11.1 +black==22.10.0 +bleach==6.0.0 +blessed==1.20.0 +bokeh==2.4.3 +boto==2.49.0 +boto3==1.26.76 ; python_version >= "3.8" +botocore==1.29.76 +botorch==0.8.5 +cached-property==1.5.2 +cachetools==5.3.1 +catboost==1.2 +certifi==2023.5.7 +cffi==1.15.1 +cfn-lint==0.77.10 +charset-normalizer==3.2.0 +chess==1.7.0 +chex==0.1.7 +click==8.1.4 +cloudpickle==2.2.0 +cma==3.2.2 +cmaes==0.9.1 +colorama==0.4.6 +coloredlogs==15.0.1 +colorful==0.5.5 +colorlog==6.7.0 +comet-ml==3.31.9 +comm==0.1.3 +commonmark==0.9.1 +configobj==5.0.8 +configspace==0.7.1 +contextlib2==21.6.0 +contourpy==1.1.0 +crc32c==2.3 +crcmod==1.7 +cryptography==38.0.1 +cycler==0.11.0 +cython==0.29.32 +dask==2022.10.1 ; python_version >= "3.8" +databricks-cli==0.17.7 +datasets==2.0.0 +debugpy==1.6.7 +decorator==5.1.1 +deepspeed==0.8.3 +defusedxml==0.7.1 +deprecated==1.2.14 +dill==0.3.6 +distlib==0.3.6 +distributed==2022.10.1 +dm-tree==0.1.8 +dnspython==2.3.0 +docker==6.1.3 +docker-pycreds==0.4.0 +docutils==0.17.1 +dopamine-rl==4.0.5 +dragonfly-opt==0.1.7 +dulwich==0.21.5 +ecdsa==0.18.0 +entrypoints==0.4 +et-xmlfile==1.1.0 +etils==1.3.0 +evaluate==0.4.0 +everett==3.2.0 +exceptiongroup==1.1.2 +execnet==2.0.0 +executing==1.2.0 +fairscale==0.4.6 +fastapi==0.99.1 +fasteners==0.18 +fastjsonschema==2.17.1 +feather-format==0.4.1 +ffmpy==0.3.0 +filelock==3.12.2 +flake8==3.9.1 +flake8-bugbear==21.9.2 +flake8-comprehensions==3.10.1 +flake8-quotes==2.0.0 +flaml==1.1.1 +flask==2.1.3 +flask-cors==4.0.0 +flatbuffers==2.0.7 +flax==0.6.11 +fonttools==4.40.0 +fqdn==1.5.1 +freezegun==1.1.0 +frozenlist==1.3.3 +fsspec==2023.5.0 +future==0.18.3 +gast==0.4.0 +gcs-oauth2-boto-plugin==3.0 +gin-config==0.5.0 +gitdb==4.0.10 +gitpython==3.1.31 +glfw==2.6.2 +google-api-core==2.11.1 +google-api-python-client==2.65.0 +google-apitools==0.5.32 +google-auth==2.21.0 +google-auth-httplib2==0.1.0 +google-auth-oauthlib==0.4.6 +google-cloud-core==2.3.3 +google-cloud-storage==2.5.0 +google-crc32c==1.5.0 +google-pasta==0.2.0 +google-reauth==0.1.1 +google-resumable-media==2.5.0 +googleapis-common-protos==1.59.1 +gpustat==1.1 +gpy==1.10.0 +gpytorch==1.10 +gradio==3.11.0 ; platform_system != "Windows" +grapheme==0.6.0 +graphql-core==3.2.3 +graphviz==0.20.1 +greenlet==2.0.2 +grpcio==1.54.2 +gsutil==5.25 +gunicorn==20.1.0 +gym==0.26.2 +gym-notices==0.0.8 +gymnasium==0.26.3 +gymnasium-notices==0.0.1 +h11==0.12.0 +h5py==3.7.0 +hebo @ git+https://github.com/huawei-noah/HEBO@9a2a674c22518eed35a8b98e5134576741a95410#subdirectory=HEBO +higher==0.2.1 +hjson==3.1.0 +hpbandster==0.7.4 +httpcore==0.15.0 +httplib2==0.20.4 +httpx==0.24.1 +huggingface-hub==0.16.4 +humanfriendly==10.0 +hyperopt==0.2.7 +idna==3.4 +imageio==2.31.1 +imageio-ffmpeg==0.4.5 +imagesize==1.4.1 +importlib-metadata==4.10.0 +importlib-resources==5.13.0 +iniconfig==2.0.0 +ipykernel==6.24.0 +ipython==8.12.2 +ipython-genutils==0.2.0 +ipywidgets==7.7.5 +isodate==0.6.1 +isoduration==20.11.0 +isort==5.10.1 +itsdangerous==2.1.2 +jax==0.4.13 +jaxlib==0.4.13 +jedi==0.18.2 +jinja2==3.0.3 +jmespath==1.0.1 +joblib==1.2.0 +jschema-to-python==1.2.3 +json5==0.9.14 +jsondiff==2.0.0 +jsonpatch==1.32 +jsonpickle==3.0.1 +jsonpointer==2.4 +jsonschema==4.17.3 +jsonschema-spec==0.1.6 +junit-xml==1.9 +jupyter-cache==0.4.3 +jupyter-client==7.3.4 +jupyter-core==5.3.1 +jupyter-events==0.6.3 +jupyter-server==1.24.0 +jupyter-server-fileid==0.9.0 +jupyter-server-mathjax==0.2.6 +jupyter-server-ydoc==0.6.1 +jupyter-sphinx==0.3.2 +jupyter-ydoc==0.2.4 +jupyterlab==3.6.1 +jupyterlab-pygments==0.2.2 +jupyterlab-server==2.23.0 +jupyterlab-widgets==1.1.4 +jupytext==1.13.6 +kaggle-environments==1.7.11 +keras==2.11.0 +kiwisolver==1.4.4 +knack==0.10.1 +kubernetes==24.2.0 +lazy-object-proxy==1.9.0 +libclang==16.0.0 +lightgbm==3.3.5 +linear-operator==0.4.0 +linkify-it-py==1.0.3 +llvmlite==0.39.1 ; python_version < "3.11" +locket==1.0.0 +lxml==4.9.1 +lz4==4.3.2 +mako==1.2.4 +markdown==3.4.3 +markdown-it-py==1.1.0 +markupsafe==2.1.3 +matplotlib==3.7.2 +matplotlib-inline==0.1.6 +mccabe==0.6.1 +mdit-py-plugins==0.2.8 +memray==1.8.1 ; platform_system != "Windows" and sys_platform != "darwin" +minigrid==2.1.1 +mistune==0.8.4 +ml-dtypes==0.2.0 +mlagents-envs==0.28.0 +mlflow==2.4.1 ; python_version > "3.7" +mock==5.0.2 +modin==0.22.2 ; python_version >= "3.8" +monotonic==1.6 +more-itertools==9.1.0 +moto==4.0.7 +mpmath==1.3.0 +msal==1.18.0b1 +msal-extensions==1.0.0 +msgpack==1.0.5 +msgpack-numpy==0.4.8 +msrest==0.7.1 +msrestazure==0.6.4 +mujoco==2.2.0 +mujoco-py==2.1.2.14 +multidict==6.0.4 +multipledispatch==1.0.0 +multiprocess==0.70.14 +mypy==0.982 +mypy-extensions==1.0.0 +myst-nb==0.13.1 +myst-parser==0.15.2 +nbclassic==1.0.0 +nbclient==0.5.13 +nbconvert==6.5.4 +nbdime==3.2.1 +nbformat==5.9.0 +nest-asyncio==1.5.6 +netifaces==0.11.0 +networkx==2.6.3 +nevergrad==0.4.3.post7 +ninja==1.11.1 +notebook==6.5.4 +notebook-shim==0.2.3 +numba==0.56.4 +numexpr==2.8.4 +numpy==1.23.5 ; python_version < "3.9" +nvidia-ml-py==12.535.77 +oauth2client==4.1.3 +oauthlib==3.2.2 +onnx==1.12.0 ; sys_platform != "darwin" or platform_machine != "arm64" +onnxruntime==1.14.1 ; sys_platform != "darwin" or platform_machine != "arm64" +open-spiel==1.2 +openapi-schema-validator==0.4.4 +openapi-spec-validator==0.5.7 +opencensus==0.11.2 +opencensus-context==0.1.3 +opencensus-proto==0.1.0 +opencv-python==4.8.0.74 +openpyxl==3.0.10 +opentelemetry-api==1.1.0 +opentelemetry-exporter-opencensus==0.20b0 +opentelemetry-exporter-otlp==1.1.0 +opentelemetry-exporter-otlp-proto-grpc==1.1.0 +opentelemetry-proto==1.1.0 +opentelemetry-sdk==1.1.0 +opentelemetry-semantic-conventions==0.20b0 +opt-einsum==3.3.0 +optax==0.1.5 +optuna==3.2.0 +orbax-checkpoint==0.2.3 +orjson==3.9.2 +packaging==21.3 +pandas==1.5.3 +pandocfilters==1.5.0 +paramiko==2.12.0 +paramz==0.9.5 +parso==0.8.3 +partd==1.4.0 +path==16.7.1 +path-py==12.5.0 +pathable==0.4.3 +pathspec==0.11.1 +pathtools==0.1.2 +patsy==0.5.3 +pbr==5.11.1 +pettingzoo==1.22.1 ; python_version >= "3.7" +pexpect==4.8.0 +pickleshare==0.7.5 +pillow==9.2.0 ; platform_system != "Windows" +pkginfo==1.9.6 +pkgutil-resolve-name==1.3.10 +platformdirs==3.8.1 +plotly==5.15.0 +pluggy==1.2.0 +polars==0.14.21 +portalocker==2.7.0 +prometheus-client==0.17.0 +promise==2.3 +prompt-toolkit==3.0.39 +protobuf==3.19.6 +proxy-py==2.4.3 +psutil==5.9.5 +ptyprocess==0.7.0 +pure-eval==0.2.2 +py==1.11.0 +py-cpuinfo==9.0.0 +py-spy==0.3.14 +py3nvml==0.2.7 +py4j==0.10.9.5 +pyaml==23.7.0 +pyarrow==6.0.1 ; python_version < "3.11" +pyasn1==0.5.0 +pyasn1-modules==0.3.0 +pycodestyle==2.7.0 +pycparser==2.21 +pycryptodome==3.18.0 +pydantic==1.9.2 ; python_version < "3.11" +pydeprecate==0.3.2 +pydub==0.25.1 +pyflakes==2.3.1 +pygame==2.1.2 ; python_version < "3.11" +pyglet==1.5.15 +pygments==2.13.0 +pyjwt==2.7.0 +pymars==0.10.0 +pymongo==4.3.2 +pymoo==0.6.0.1 +pymunk==6.2.1 +pynacl==1.5.0 +pyopengl==3.1.7 +pyopenssl==22.1.0 +pyparsing==3.0.9 +pypng==0.20220715.0 +pyro-api==0.1.2 +pyro-ppl==1.8.5 +pyro4==4.82 +pyrsistent==0.19.3 +pysocks==1.7.1 +pyspark==3.3.1 +pytest==7.0.1 +pytest-asyncio==0.16.0 +pytest-docker-tools==3.1.3 +pytest-fixture-config==1.7.0 +pytest-forked==1.4.0 +pytest-httpserver==1.0.6 +pytest-lazy-fixture==0.6.3 +pytest-remotedata==0.3.2 +pytest-repeat==0.9.1 +pytest-rerunfailures==11.1.2 +pytest-shutil==1.7.0 +pytest-sphinx @ git+https://github.com/ray-project/pytest-sphinx +pytest-sugar==0.9.5 +pytest-timeout==2.1.0 +pytest-virtualenv==1.7.0 +python-dateutil==2.8.2 +python-jose==3.3.0 +python-json-logger==2.0.7 +python-multipart==0.0.6 +python-snappy==0.6.1 +pytorch-lightning==1.6.5 +pytz==2022.7.1 +pyu2f==0.1.5 +pywavelets==1.4.1 +pyyaml==6.0 +pyzmq==25.1.0 +querystring-parser==1.2.4 +raydp==1.6.0b20230707.dev0 +recsim==0.2.4 ; sys_platform != "darwin" or platform_machine != "arm64" +redis==4.4.2 +regex==2023.6.3 +requests==2.31.0 +requests-oauthlib==1.3.1 +requests-toolbelt==1.0.0 +responses==0.13.4 +restrictedpython==6.0 +retry-decorator==1.1.1 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rich==12.0.1 +rsa==4.7.2 +s3fs==2023.5.0 ; python_version >= "3.8" +s3transfer==0.6.1 +safetensors==0.3.1 +sarif-om==1.0.4 +scikit-image==0.19.3 +scikit-learn==1.0.2 ; python_version < "3.11" +scikit-optimize==0.9.0 +scipy==1.10.1 +segment-analytics-python==2.2.0 +semantic-version==2.10.0 +send2trash==1.8.2 +sentencepiece==0.1.96 +sentry-sdk==1.27.1 +serpent==1.41 +setproctitle==1.3.2 +shortuuid==1.0.1 +sigopt==7.5.0 +six==1.16.0 +smart-open==6.2.0 +smmap==5.0.0 +sniffio==1.3.0 +snowballstemmer==2.2.0 +sortedcontainers==2.4.0 +soupsieve==2.4.1 +sphinx==4.3.2 +sphinx-togglebutton==0.2.3 +sphinxcontrib-applehelp==1.0.4 +sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-htmlhelp==2.0.1 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-serializinghtml==1.1.5 +sqlalchemy==1.4.17 +sqlparse==0.4.4 +sshpubkeys==3.3.1 +stack-data==0.6.2 +starlette==0.27.0 +statsmodels==0.14.0 +supersuit==3.7.0 ; python_version >= "3.7" +sympy==1.12 +tabulate==0.9.0 +tblib==2.0.0 +tenacity==8.2.2 +tensorboard==2.11.2 +tensorboard-data-server==0.6.1 +tensorboard-plugin-wit==1.8.1 +tensorboardx==2.6 +tensorflow==2.11.0 ; sys_platform != "darwin" or platform_machine != "arm64" +tensorflow-datasets==4.9.0 +tensorflow-estimator==2.11.0 +tensorflow-io-gcs-filesystem==0.32.0 +tensorflow-metadata==1.13.0 +tensorflow-probability==0.19.0 +tensorstore==0.1.40 +termcolor==2.3.0 +terminado==0.17.1 +testfixtures==7.0.0 +tf-slim==1.1.0 +tf2onnx==1.13.0 ; sys_platform != "darwin" or platform_machine != "arm64" +threadpoolctl==3.1.0 +tifffile==2023.7.4 +timm==0.9.2 +tinycss2==1.2.1 +tinyscaler==1.2.6 +tokenizers==0.12.1 +toml==0.10.2 +tomli==2.0.1 +toolz==0.12.0 +torch==2.0.1 ; python_version > "3.7" +torch-cluster==1.6.1 +torch-geometric==2.3.1 +torch-scatter==2.1.1 +torch-sparse==0.6.17 +torch-spline-conv==1.2.2 +torchdata==0.6.1 +torchmetrics==0.10.3 ; python_version > "3.7" +torchtext==0.15.2 ; python_version > "3.7" +torchvision==0.15.2 ; python_version > "3.7" +tornado==6.1 +tqdm==4.64.1 +traitlets==5.9.0 +transformers==4.19.1 +trustme==0.9.0 +typeguard==2.13.3 +typer==0.9.0 +types-pyyaml==6.0.12.2 +typing-extensions==4.5.0 +uc-micro-py==1.0.2 +uri-template==1.3.0 +uritemplate==4.1.1 +urllib3==1.26.16 +uvicorn==0.22.0 +uvloop==0.17.0 +virtualenv==20.21.0 +wandb==0.13.4 +wcwidth==0.2.6 +webcolors==1.13 +webencodings==0.5.1 +websocket-client==1.6.1 +websockets==11.0.3 +werkzeug==2.1.2 +wheel==0.40.0 +widgetsnbextension==3.6.4 +wrapt==1.15.0 +wurlitzer==3.0.3 +xgboost==1.7.6 ; python_version > "3.7" +xlrd==2.0.1 +xmltodict==0.13.0 +xxhash==3.2.0 +y-py==0.5.9 +yarl==1.9.2 +ypy-websocket==0.8.2 +zict==3.0.0 +zipp==3.15.0 +zoopt==0.4.1