Metadata-Version: 2.4
Name: maxtext
Version: 0.2.1
Summary: MaxText is a simple, performant and scalable Jax LLM!
Project-URL: Repository, https://github.com/AI-Hypercomputer/maxtext.git
Project-URL: Bug Tracker, https://github.com/AI-Hypercomputer/maxtext/issues
License-Expression: Apache-2.0
License-File: AUTHORS
License-File: LICENSE
Keywords: deepseek,gemma,jax,llama,llm,mistral,mixtral
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: GPU :: NVIDIA CUDA :: 12
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: ML
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.12
Provides-Extra: cuda12
Requires-Dist: absl-py>=2.3.1; extra == 'cuda12'
Requires-Dist: aiofiles>=25.1.0; extra == 'cuda12'
Requires-Dist: aiohappyeyeballs>=2.6.1; extra == 'cuda12'
Requires-Dist: aiohttp>=3.13.2; extra == 'cuda12'
Requires-Dist: aiosignal>=1.4.0; extra == 'cuda12'
Requires-Dist: annotated-doc>=0.0.4; extra == 'cuda12'
Requires-Dist: annotated-types>=0.7.0; extra == 'cuda12'
Requires-Dist: antlr4-python3-runtime>=4.9.3; extra == 'cuda12'
Requires-Dist: anyio>=4.11.0; extra == 'cuda12'
Requires-Dist: aqtp>=0.9.0; extra == 'cuda12'
Requires-Dist: array-record>=0.8.3; extra == 'cuda12'
Requires-Dist: astroid>=4.0.2; extra == 'cuda12'
Requires-Dist: astunparse>=1.6.3; extra == 'cuda12'
Requires-Dist: attrs>=25.4.0; extra == 'cuda12'
Requires-Dist: auditwheel>=6.5.0; extra == 'cuda12'
Requires-Dist: black>=24.10.0; extra == 'cuda12'
Requires-Dist: blobfile>=3.1.0; extra == 'cuda12'
Requires-Dist: build>=1.3.0; extra == 'cuda12'
Requires-Dist: cachetools>=6.2.2; extra == 'cuda12'
Requires-Dist: certifi>=2025.11.12; extra == 'cuda12'
Requires-Dist: cfgv>=3.5.0; extra == 'cuda12'
Requires-Dist: charset-normalizer>=3.4.4; extra == 'cuda12'
Requires-Dist: cheroot>=11.1.2; extra == 'cuda12'
Requires-Dist: chex>=0.1.91; extra == 'cuda12'
Requires-Dist: click>=8.3.1; extra == 'cuda12'
Requires-Dist: cloud-accelerator-diagnostics>=0.1.1; extra == 'cuda12'
Requires-Dist: cloud-tpu-diagnostics>=0.1.5; extra == 'cuda12'
Requires-Dist: cloudpickle>=3.1.2; extra == 'cuda12'
Requires-Dist: clu>=0.0.12; extra == 'cuda12'
Requires-Dist: colorama>=0.4.6; extra == 'cuda12'
Requires-Dist: contourpy>=1.3.3; extra == 'cuda12'
Requires-Dist: coverage>=7.12.0; extra == 'cuda12'
Requires-Dist: cycler>=0.12.1; extra == 'cuda12'
Requires-Dist: datasets>=4.4.1; extra == 'cuda12'
Requires-Dist: decorator>=5.2.1; extra == 'cuda12'
Requires-Dist: dill>=0.4.0; extra == 'cuda12'
Requires-Dist: distlib>=0.4.0; extra == 'cuda12'
Requires-Dist: dm-tree>=0.1.9; extra == 'cuda12'
Requires-Dist: docstring-parser>=0.17.0; extra == 'cuda12'
Requires-Dist: drjax>=0.1.4; extra == 'cuda12'
Requires-Dist: editdistance>=0.8.1; extra == 'cuda12'
Requires-Dist: einops>=0.8.1; extra == 'cuda12'
Requires-Dist: einshape>=1.0; extra == 'cuda12'
Requires-Dist: etils>=1.13.0; extra == 'cuda12'
Requires-Dist: evaluate>=0.4.6; extra == 'cuda12'
Requires-Dist: execnet>=2.1.2; extra == 'cuda12'
Requires-Dist: fastapi>=0.122.0; extra == 'cuda12'
Requires-Dist: filelock>=3.20.0; extra == 'cuda12'
Requires-Dist: flatbuffers>=25.9.23; extra == 'cuda12'
Requires-Dist: flax>=0.12.1; extra == 'cuda12'
Requires-Dist: fonttools>=4.60.1; extra == 'cuda12'
Requires-Dist: frozenlist>=1.8.0; extra == 'cuda12'
Requires-Dist: fsspec>=2025.10.0; extra == 'cuda12'
Requires-Dist: gast>=0.6.0; extra == 'cuda12'
Requires-Dist: gcsfs>=2025.10.0; extra == 'cuda12'
Requires-Dist: google-api-core>=2.28.1; extra == 'cuda12'
Requires-Dist: google-api-python-client>=2.187.0; extra == 'cuda12'
Requires-Dist: google-auth-httplib2>=0.2.1; extra == 'cuda12'
Requires-Dist: google-auth-oauthlib>=1.2.2; extra == 'cuda12'
Requires-Dist: google-auth>=2.43.0; extra == 'cuda12'
Requires-Dist: google-cloud-aiplatform>=1.128.0; extra == 'cuda12'
Requires-Dist: google-cloud-appengine-logging>=1.7.0; extra == 'cuda12'
Requires-Dist: google-cloud-audit-log>=0.4.0; extra == 'cuda12'
Requires-Dist: google-cloud-bigquery>=3.38.0; extra == 'cuda12'
Requires-Dist: google-cloud-core>=2.5.0; extra == 'cuda12'
Requires-Dist: google-cloud-logging>=3.12.1; extra == 'cuda12'
Requires-Dist: google-cloud-mldiagnostics>=0.5.10; extra == 'cuda12'
Requires-Dist: google-cloud-monitoring>=2.28.0; extra == 'cuda12'
Requires-Dist: google-cloud-resource-manager>=1.15.0; extra == 'cuda12'
Requires-Dist: google-cloud-storage>=3.6.0; extra == 'cuda12'
Requires-Dist: google-crc32c>=1.7.1; extra == 'cuda12'
Requires-Dist: google-genai>=1.52.0; extra == 'cuda12'
Requires-Dist: google-pasta>=0.2.0; extra == 'cuda12'
Requires-Dist: google-resumable-media>=2.8.0; extra == 'cuda12'
Requires-Dist: googleapis-common-protos>=1.72.0; extra == 'cuda12'
Requires-Dist: grain>=0.2.15; extra == 'cuda12'
Requires-Dist: grpc-google-iam-v1>=0.14.3; extra == 'cuda12'
Requires-Dist: grpcio-status>=1.71.2; extra == 'cuda12'
Requires-Dist: grpcio>=1.76.0; extra == 'cuda12'
Requires-Dist: gviz-api>=1.10.0; extra == 'cuda12'
Requires-Dist: h11>=0.16.0; extra == 'cuda12'
Requires-Dist: h5py>=3.15.1; extra == 'cuda12'
Requires-Dist: hf-xet>=1.2.0; (platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64') and extra == 'cuda12'
Requires-Dist: httpcore>=1.0.9; extra == 'cuda12'
Requires-Dist: httplib2>=0.31.0; extra == 'cuda12'
Requires-Dist: httpx>=0.28.1; extra == 'cuda12'
Requires-Dist: huggingface-hub>=0.36.0; extra == 'cuda12'
Requires-Dist: humanize>=4.14.0; extra == 'cuda12'
Requires-Dist: hypothesis>=6.142.1; extra == 'cuda12'
Requires-Dist: identify>=2.6.15; extra == 'cuda12'
Requires-Dist: idna>=3.11; extra == 'cuda12'
Requires-Dist: immutabledict>=4.2.2; extra == 'cuda12'
Requires-Dist: importlab>=0.8.1; extra == 'cuda12'
Requires-Dist: importlib-metadata>=8.7.0; extra == 'cuda12'
Requires-Dist: importlib-resources>=6.5.2; extra == 'cuda12'
Requires-Dist: iniconfig>=2.3.0; extra == 'cuda12'
Requires-Dist: isort>=7.0.0; extra == 'cuda12'
Requires-Dist: jaraco-functools>=4.3.0; extra == 'cuda12'
Requires-Dist: jax-cuda12-pjrt>=0.8.1; (sys_platform == 'linux') and extra == 'cuda12'
Requires-Dist: jax-cuda12-plugin>=0.8.1; (sys_platform == 'linux') and extra == 'cuda12'
Requires-Dist: jax>=0.8.1; extra == 'cuda12'
Requires-Dist: jaxlib>=0.8.1; extra == 'cuda12'
Requires-Dist: jaxtyping>=0.3.3; extra == 'cuda12'
Requires-Dist: jinja2>=3.1.6; extra == 'cuda12'
Requires-Dist: joblib>=1.5.2; extra == 'cuda12'
Requires-Dist: jsonlines>=4.0.0; extra == 'cuda12'
Requires-Dist: keras>=3.12.0; extra == 'cuda12'
Requires-Dist: kiwisolver>=1.4.9; extra == 'cuda12'
Requires-Dist: libclang>=18.1.1; extra == 'cuda12'
Requires-Dist: libcst>=1.8.6; extra == 'cuda12'
Requires-Dist: lxml>=6.0.2; extra == 'cuda12'
Requires-Dist: markdown-it-py>=4.0.0; extra == 'cuda12'
Requires-Dist: markdown>=3.10; extra == 'cuda12'
Requires-Dist: markupsafe>=3.0.3; extra == 'cuda12'
Requires-Dist: matplotlib>=3.10.7; extra == 'cuda12'
Requires-Dist: mccabe>=0.7.0; extra == 'cuda12'
Requires-Dist: mdurl>=0.1.2; extra == 'cuda12'
Requires-Dist: ml-collections>=1.1.0; extra == 'cuda12'
Requires-Dist: ml-dtypes>=0.5.4; extra == 'cuda12'
Requires-Dist: ml-goodput-measurement>=0.0.15; extra == 'cuda12'
Requires-Dist: more-itertools>=10.8.0; extra == 'cuda12'
Requires-Dist: mpmath>=1.3.0; extra == 'cuda12'
Requires-Dist: msgpack>=1.1.2; extra == 'cuda12'
Requires-Dist: msgspec>=0.20.0; extra == 'cuda12'
Requires-Dist: multidict>=6.7.0; extra == 'cuda12'
Requires-Dist: multiprocess>=0.70.18; extra == 'cuda12'
Requires-Dist: mypy-extensions>=1.1.0; extra == 'cuda12'
Requires-Dist: namex>=0.1.0; extra == 'cuda12'
Requires-Dist: nest-asyncio>=1.6.0; extra == 'cuda12'
Requires-Dist: networkx>=3.6; extra == 'cuda12'
Requires-Dist: ninja>=1.13.0; extra == 'cuda12'
Requires-Dist: nltk>=3.9.2; extra == 'cuda12'
Requires-Dist: nodeenv>=1.9.1; extra == 'cuda12'
Requires-Dist: numpy-typing-compat>=20250818.2.0; extra == 'cuda12'
Requires-Dist: numpy>=2.0.2; extra == 'cuda12'
Requires-Dist: nvidia-cublas-cu12>=12.9.1.4; (sys_platform == 'linux') and extra == 'cuda12'
Requires-Dist: nvidia-cuda-cupti-cu12>=12.9.79; (sys_platform == 'linux') and extra == 'cuda12'
Requires-Dist: nvidia-cuda-nvcc-cu12>=12.9.86; (sys_platform == 'linux') and extra == 'cuda12'
Requires-Dist: nvidia-cuda-nvrtc-cu12>=12.9.86; (sys_platform == 'linux') and extra == 'cuda12'
Requires-Dist: nvidia-cuda-runtime-cu12>=12.9.79; (sys_platform == 'linux') and extra == 'cuda12'
Requires-Dist: nvidia-cudnn-cu12>=9.16.0.29; (sys_platform == 'linux') and extra == 'cuda12'
Requires-Dist: nvidia-cufft-cu12>=11.4.1.4; (sys_platform == 'linux') and extra == 'cuda12'
Requires-Dist: nvidia-cusolver-cu12>=11.7.5.82; (sys_platform == 'linux') and extra == 'cuda12'
Requires-Dist: nvidia-cusparse-cu12>=12.5.10.65; (sys_platform == 'linux') and extra == 'cuda12'
Requires-Dist: nvidia-nccl-cu12>=2.28.9; (sys_platform == 'linux') and extra == 'cuda12'
Requires-Dist: nvidia-nvjitlink-cu12>=12.9.86; (sys_platform == 'linux') and extra == 'cuda12'
Requires-Dist: nvidia-nvshmem-cu12>=3.4.5; (sys_platform == 'linux') and extra == 'cuda12'
Requires-Dist: oauthlib>=3.3.1; extra == 'cuda12'
Requires-Dist: omegaconf>=2.3.0; extra == 'cuda12'
Requires-Dist: opentelemetry-api>=1.38.0; extra == 'cuda12'
Requires-Dist: opt-einsum>=3.4.0; extra == 'cuda12'
Requires-Dist: optax>=0.2.6; extra == 'cuda12'
Requires-Dist: optree>=0.18.0; extra == 'cuda12'
Requires-Dist: optype>=0.14.0; extra == 'cuda12'
Requires-Dist: orbax-checkpoint>=0.11.33; extra == 'cuda12'
Requires-Dist: packaging>=25.0; extra == 'cuda12'
Requires-Dist: pandas>=2.3.3; extra == 'cuda12'
Requires-Dist: parameterized>=0.9.0; extra == 'cuda12'
Requires-Dist: pathspec>=0.12.1; extra == 'cuda12'
Requires-Dist: pathwaysutils>=0.1.3; extra == 'cuda12'
Requires-Dist: pillow>=12.0.0; extra == 'cuda12'
Requires-Dist: platformdirs>=4.5.0; extra == 'cuda12'
Requires-Dist: pluggy>=1.6.0; extra == 'cuda12'
Requires-Dist: portpicker>=1.6.0; extra == 'cuda12'
Requires-Dist: pre-commit>=4.5.0; extra == 'cuda12'
Requires-Dist: prometheus-client>=0.23.1; extra == 'cuda12'
Requires-Dist: promise>=2.3; extra == 'cuda12'
Requires-Dist: propcache>=0.4.1; extra == 'cuda12'
Requires-Dist: proto-plus>=1.26.1; extra == 'cuda12'
Requires-Dist: protobuf>=5.29.5; extra == 'cuda12'
Requires-Dist: psutil>=7.1.3; extra == 'cuda12'
Requires-Dist: pyarrow>=22.0.0; extra == 'cuda12'
Requires-Dist: pyasn1-modules>=0.4.2; extra == 'cuda12'
Requires-Dist: pyasn1>=0.6.1; extra == 'cuda12'
Requires-Dist: pycnite>=2024.7.31; extra == 'cuda12'
Requires-Dist: pycryptodomex>=3.23.0; extra == 'cuda12'
Requires-Dist: pydantic-core>=2.41.5; extra == 'cuda12'
Requires-Dist: pydantic>=2.12.5; extra == 'cuda12'
Requires-Dist: pydot>=4.0.1; extra == 'cuda12'
Requires-Dist: pyelftools>=0.32; extra == 'cuda12'
Requires-Dist: pyglove>=0.4.5; extra == 'cuda12'
Requires-Dist: pygments>=2.19.2; extra == 'cuda12'
Requires-Dist: pyink>=24.10.1; extra == 'cuda12'
Requires-Dist: pylint>=4.0.3; extra == 'cuda12'
Requires-Dist: pyparsing>=3.2.5; extra == 'cuda12'
Requires-Dist: pyproject-hooks>=1.2.0; extra == 'cuda12'
Requires-Dist: pytest-xdist>=3.8.0; extra == 'cuda12'
Requires-Dist: pytest>=8.4.2; extra == 'cuda12'
Requires-Dist: python-dateutil>=2.9.0.post0; extra == 'cuda12'
Requires-Dist: pytype>=2024.10.11; extra == 'cuda12'
Requires-Dist: pytz>=2025.2; extra == 'cuda12'
Requires-Dist: pyyaml>=6.0.3; extra == 'cuda12'
Requires-Dist: qwix>=0.1.4; extra == 'cuda12'
Requires-Dist: regex>=2025.11.3; extra == 'cuda12'
Requires-Dist: requests-oauthlib>=2.0.0; extra == 'cuda12'
Requires-Dist: requests>=2.32.5; extra == 'cuda12'
Requires-Dist: rich>=14.2.0; extra == 'cuda12'
Requires-Dist: rsa>=4.9.1; extra == 'cuda12'
Requires-Dist: safetensors>=0.7.0; extra == 'cuda12'
Requires-Dist: scipy-stubs>=1.16.3.0; extra == 'cuda12'
Requires-Dist: scipy>=1.16.3; extra == 'cuda12'
Requires-Dist: sentencepiece>=0.2.1; extra == 'cuda12'
Requires-Dist: seqio>=0.0.20; extra == 'cuda12'
Requires-Dist: setuptools>=80.9.0; extra == 'cuda12'
Requires-Dist: shapely>=2.1.2; extra == 'cuda12'
Requires-Dist: shortuuid>=1.0.13; extra == 'cuda12'
Requires-Dist: simple-parsing>=0.1.7; extra == 'cuda12'
Requires-Dist: simplejson>=3.20.2; extra == 'cuda12'
Requires-Dist: six>=1.17.0; extra == 'cuda12'
Requires-Dist: sniffio>=1.3.1; extra == 'cuda12'
Requires-Dist: sortedcontainers>=2.4.0; extra == 'cuda12'
Requires-Dist: starlette>=0.50.0; extra == 'cuda12'
Requires-Dist: sympy>=1.14.0; extra == 'cuda12'
Requires-Dist: tabulate>=0.9.0; extra == 'cuda12'
Requires-Dist: tenacity>=9.1.2; extra == 'cuda12'
Requires-Dist: tensorboard-data-server>=0.7.2; extra == 'cuda12'
Requires-Dist: tensorboard-plugin-profile>=2.13.0; extra == 'cuda12'
Requires-Dist: tensorboard>=2.19.0; extra == 'cuda12'
Requires-Dist: tensorboardx>=2.6.4; extra == 'cuda12'
Requires-Dist: tensorflow-datasets>=4.9.9; extra == 'cuda12'
Requires-Dist: tensorflow-metadata>=1.17.2; extra == 'cuda12'
Requires-Dist: tensorflow-text>=2.19.0; extra == 'cuda12'
Requires-Dist: tensorflow>=2.19.1; extra == 'cuda12'
Requires-Dist: tensorstore>=0.1.79; extra == 'cuda12'
Requires-Dist: termcolor>=3.2.0; extra == 'cuda12'
Requires-Dist: tiktoken>=0.12.0; extra == 'cuda12'
Requires-Dist: tokamax>=0.0.8; extra == 'cuda12'
Requires-Dist: tokenizers>=0.22.1; extra == 'cuda12'
Requires-Dist: toml>=0.10.2; extra == 'cuda12'
Requires-Dist: tomlkit>=0.13.3; extra == 'cuda12'
Requires-Dist: toolz>=1.1.0; extra == 'cuda12'
Requires-Dist: tqdm>=4.67.1; extra == 'cuda12'
Requires-Dist: transformer-engine-cu12>=2.9.0; extra == 'cuda12'
Requires-Dist: transformer-engine-jax>=2.9.0; extra == 'cuda12'
Requires-Dist: transformer-engine>=2.9.0; extra == 'cuda12'
Requires-Dist: transformers>=4.57.3; extra == 'cuda12'
Requires-Dist: treescope>=0.1.10; extra == 'cuda12'
Requires-Dist: typeguard>=2.13.3; extra == 'cuda12'
Requires-Dist: typing-extensions>=4.15.0; extra == 'cuda12'
Requires-Dist: typing-inspection>=0.4.2; extra == 'cuda12'
Requires-Dist: tzdata>=2025.2; extra == 'cuda12'
Requires-Dist: uritemplate>=4.2.0; extra == 'cuda12'
Requires-Dist: urllib3>=2.5.0; extra == 'cuda12'
Requires-Dist: uvicorn>=0.38.0; extra == 'cuda12'
Requires-Dist: uvloop>=0.19.0; extra == 'cuda12'
Requires-Dist: virtualenv>=20.35.4; extra == 'cuda12'
Requires-Dist: wadler-lindig>=0.1.7; extra == 'cuda12'
Requires-Dist: websockets>=15.0.1; extra == 'cuda12'
Requires-Dist: werkzeug>=3.1.3; extra == 'cuda12'
Requires-Dist: wheel>=0.45.1; extra == 'cuda12'
Requires-Dist: wrapt>=2.0.1; extra == 'cuda12'
Requires-Dist: xprof>=2.21.1; extra == 'cuda12'
Requires-Dist: xxhash>=3.6.0; extra == 'cuda12'
Requires-Dist: yarl>=1.22.0; extra == 'cuda12'
Requires-Dist: zipp>=3.23.0; extra == 'cuda12'
Requires-Dist: zstandard>=0.25.0; extra == 'cuda12'
Provides-Extra: docs
Requires-Dist: jax; extra == 'docs'
Requires-Dist: myst-nb; extra == 'docs'
Requires-Dist: myst-parser[linkify]; extra == 'docs'
Requires-Dist: sphinx-book-theme; extra == 'docs'
Requires-Dist: sphinx-copybutton; extra == 'docs'
Requires-Dist: sphinx-design; extra == 'docs'
Requires-Dist: sphinx<9; extra == 'docs'
Provides-Extra: runner
Requires-Dist: absl-py>=2.3.1; extra == 'runner'
Requires-Dist: annotated-types>=0.7.0; extra == 'runner'
Requires-Dist: antlr4-python3-runtime>=4.9.3; extra == 'runner'
Requires-Dist: anyio>=4.12.1; extra == 'runner'
Requires-Dist: argcomplete>=3.6.3; extra == 'runner'
Requires-Dist: astunparse>=1.6.3; extra == 'runner'
Requires-Dist: attrs>=25.4.0; extra == 'runner'
Requires-Dist: auditwheel>=6.5.0; extra == 'runner'
Requires-Dist: build>=1.3.0; extra == 'runner'
Requires-Dist: certifi>=2025.11.12; extra == 'runner'
Requires-Dist: cffi>=2.0.0; (platform_python_implementation != 'PyPy') and extra == 'runner'
Requires-Dist: charset-normalizer>=3.4.4; extra == 'runner'
Requires-Dist: cloud-accelerator-diagnostics>=0.1.1; extra == 'runner'
Requires-Dist: cloudpickle>=3.1.2; extra == 'runner'
Requires-Dist: colorama>=0.4.6; extra == 'runner'
Requires-Dist: contourpy>=1.3.3; extra == 'runner'
Requires-Dist: cryptography>=46.0.5; extra == 'runner'
Requires-Dist: cycler>=0.12.1; extra == 'runner'
Requires-Dist: distro>=1.9.0; extra == 'runner'
Requires-Dist: docker>=7.1.0; extra == 'runner'
Requires-Dist: docstring-parser>=0.17.0; extra == 'runner'
Requires-Dist: durationpy>=0.10; extra == 'runner'
Requires-Dist: etils>=1.13.0; extra == 'runner'
Requires-Dist: execnet>=2.1.2; extra == 'runner'
Requires-Dist: filelock>=3.20.0; extra == 'runner'
Requires-Dist: flatbuffers>=25.9.23; extra == 'runner'
Requires-Dist: fonttools>=4.60.1; extra == 'runner'
Requires-Dist: fsspec>=2025.10.0; extra == 'runner'
Requires-Dist: gast>=0.6.0; extra == 'runner'
Requires-Dist: google-api-core>=2.24.1; extra == 'runner'
Requires-Dist: google-auth>=2.49.1; extra == 'runner'
Requires-Dist: google-cloud-aiplatform>=1.142.0; extra == 'runner'
Requires-Dist: google-cloud-bigquery>=3.40.1; extra == 'runner'
Requires-Dist: google-cloud-common>=1.8.0; extra == 'runner'
Requires-Dist: google-cloud-core>=2.5.0; extra == 'runner'
Requires-Dist: google-cloud-filestore>=1.12.0; extra == 'runner'
Requires-Dist: google-cloud-resource-manager>=1.16.0; extra == 'runner'
Requires-Dist: google-cloud-storage>=3.4.1; extra == 'runner'
Requires-Dist: google-cloud>=0.34.0; extra == 'runner'
Requires-Dist: google-crc32c>=1.8.0; extra == 'runner'
Requires-Dist: google-genai>=1.68.0; extra == 'runner'
Requires-Dist: google-pasta>=0.2.0; extra == 'runner'
Requires-Dist: google-resumable-media>=2.8.0; extra == 'runner'
Requires-Dist: googleapis-common-protos>=1.73.0; extra == 'runner'
Requires-Dist: grpc-google-iam-v1>=0.14.3; extra == 'runner'
Requires-Dist: grpcio-status>=1.71.2; extra == 'runner'
Requires-Dist: grpcio>=1.76.0; extra == 'runner'
Requires-Dist: gviz-api>=1.10.0; extra == 'runner'
Requires-Dist: h11>=0.16.0; extra == 'runner'
Requires-Dist: h5py>=3.15.1; extra == 'runner'
Requires-Dist: httpcore>=1.0.9; extra == 'runner'
Requires-Dist: httpx>=0.28.1; extra == 'runner'
Requires-Dist: hypothesis>=6.142.1; extra == 'runner'
Requires-Dist: idna>=3.11; extra == 'runner'
Requires-Dist: importlib-resources>=6.5.2; extra == 'runner'
Requires-Dist: iniconfig>=2.3.0; extra == 'runner'
Requires-Dist: jaxlib>=0.8.1; extra == 'runner'
Requires-Dist: jinja2>=3.1.6; extra == 'runner'
Requires-Dist: keras>=3.12.0; extra == 'runner'
Requires-Dist: kiwisolver>=1.4.9; extra == 'runner'
Requires-Dist: kubernetes>=31.0.0; extra == 'runner'
Requires-Dist: libclang>=18.1.1; extra == 'runner'
Requires-Dist: libtpu>=0.0.30; (platform_machine == 'x86_64' and sys_platform == 'linux') and extra == 'runner'
Requires-Dist: markdown-it-py>=4.0.0; extra == 'runner'
Requires-Dist: markdown>=3.10; extra == 'runner'
Requires-Dist: markupsafe>=3.0.3; extra == 'runner'
Requires-Dist: matplotlib>=3.10.7; extra == 'runner'
Requires-Dist: mdurl>=0.1.2; extra == 'runner'
Requires-Dist: ml-dtypes>=0.5.4; extra == 'runner'
Requires-Dist: mpmath>=1.3.0; extra == 'runner'
Requires-Dist: namex>=0.1.0; extra == 'runner'
Requires-Dist: numpy-typing-compat>=20250818.2.0; extra == 'runner'
Requires-Dist: numpy>=2.0.2; extra == 'runner'
Requires-Dist: oauthlib>=3.3.1; extra == 'runner'
Requires-Dist: omegaconf>=2.3.0; extra == 'runner'
Requires-Dist: opt-einsum>=3.4.0; extra == 'runner'
Requires-Dist: optree>=0.18.0; extra == 'runner'
Requires-Dist: optype>=0.14.0; extra == 'runner'
Requires-Dist: packaging>=24.2; extra == 'runner'
Requires-Dist: pillow>=12.0.0; extra == 'runner'
Requires-Dist: pluggy>=1.6.0; extra == 'runner'
Requires-Dist: portpicker>=1.6.0; extra == 'runner'
Requires-Dist: proto-plus>=1.27.1; extra == 'runner'
Requires-Dist: protobuf>=5.29.6; extra == 'runner'
Requires-Dist: psutil>=7.1.3; extra == 'runner'
Requires-Dist: pyasn1-modules>=0.4.2; extra == 'runner'
Requires-Dist: pyasn1>=0.6.3; extra == 'runner'
Requires-Dist: pycparser>=3.0; (implementation_name != 'PyPy' and platform_python_implementation != 'PyPy') and extra == 'runner'
Requires-Dist: pydantic-core>=2.41.5; extra == 'runner'
Requires-Dist: pydantic>=2.12.5; extra == 'runner'
Requires-Dist: pyelftools>=0.32; extra == 'runner'
Requires-Dist: pygments>=2.19.2; extra == 'runner'
Requires-Dist: pyparsing>=3.2.5; extra == 'runner'
Requires-Dist: pyproject-hooks>=1.2.0; extra == 'runner'
Requires-Dist: pytest-xdist>=3.8.0; extra == 'runner'
Requires-Dist: pytest>=8.4.2; extra == 'runner'
Requires-Dist: python-dateutil>=2.9.0.post0; extra == 'runner'
Requires-Dist: pywin32>=311; (sys_platform == 'win32') and extra == 'runner'
Requires-Dist: pyyaml>=6.0.2; extra == 'runner'
Requires-Dist: requests-oauthlib>=2.0.0; extra == 'runner'
Requires-Dist: requests>=2.32.5; extra == 'runner'
Requires-Dist: rich>=14.2.0; extra == 'runner'
Requires-Dist: ruamel-yaml-clib>=0.2.15; (platform_python_implementation == 'CPython') and extra == 'runner'
Requires-Dist: ruamel-yaml>=0.18.10; extra == 'runner'
Requires-Dist: scipy-stubs>=1.16.3.0; extra == 'runner'
Requires-Dist: scipy>=1.16.3; extra == 'runner'
Requires-Dist: setuptools-scm>=9.2.2; extra == 'runner'
Requires-Dist: setuptools>=80.9.0; extra == 'runner'
Requires-Dist: six>=1.17.0; extra == 'runner'
Requires-Dist: sniffio>=1.3.1; extra == 'runner'
Requires-Dist: sortedcontainers>=2.4.0; extra == 'runner'
Requires-Dist: tabulate>=0.9.0; extra == 'runner'
Requires-Dist: tenacity>=9.1.4; extra == 'runner'
Requires-Dist: tensorboard-data-server>=0.7.2; extra == 'runner'
Requires-Dist: tensorboard-plugin-profile>=2.13.0; extra == 'runner'
Requires-Dist: tensorstore>=0.1.79; extra == 'runner'
Requires-Dist: termcolor>=3.2.0; extra == 'runner'
Requires-Dist: typing-extensions>=4.15.0; extra == 'runner'
Requires-Dist: typing-inspection>=0.4.2; extra == 'runner'
Requires-Dist: urllib3>=2.5.0; extra == 'runner'
Requires-Dist: websocket-client>=1.9.0; extra == 'runner'
Requires-Dist: websockets>=16.0; extra == 'runner'
Requires-Dist: werkzeug>=3.1.3; extra == 'runner'
Requires-Dist: wheel>=0.46.1; extra == 'runner'
Requires-Dist: xpk>=1.8.0; extra == 'runner'
Requires-Dist: zipp>=3.23.0; extra == 'runner'
Requires-Dist: zstandard>=0.25.0; extra == 'runner'
Provides-Extra: tpu
Requires-Dist: absl-py>=2.3.1; extra == 'tpu'
Requires-Dist: aiofiles>=25.1.0; extra == 'tpu'
Requires-Dist: aiohappyeyeballs>=2.6.1; extra == 'tpu'
Requires-Dist: aiohttp>=3.13.2; extra == 'tpu'
Requires-Dist: aiosignal>=1.4.0; extra == 'tpu'
Requires-Dist: annotated-doc>=0.0.4; extra == 'tpu'
Requires-Dist: annotated-types>=0.7.0; extra == 'tpu'
Requires-Dist: antlr4-python3-runtime>=4.9.3; extra == 'tpu'
Requires-Dist: anyio>=4.11.0; extra == 'tpu'
Requires-Dist: aqtp>=0.9.0; extra == 'tpu'
Requires-Dist: array-record>=0.8.3; extra == 'tpu'
Requires-Dist: astroid>=4.0.2; extra == 'tpu'
Requires-Dist: astunparse>=1.6.3; extra == 'tpu'
Requires-Dist: attrs>=25.4.0; extra == 'tpu'
Requires-Dist: auditwheel>=6.5.0; extra == 'tpu'
Requires-Dist: black>=24.10.0; extra == 'tpu'
Requires-Dist: blobfile>=3.1.0; extra == 'tpu'
Requires-Dist: build>=1.3.0; extra == 'tpu'
Requires-Dist: cachetools>=6.2.2; extra == 'tpu'
Requires-Dist: certifi>=2025.11.12; extra == 'tpu'
Requires-Dist: cfgv>=3.5.0; extra == 'tpu'
Requires-Dist: charset-normalizer>=3.4.4; extra == 'tpu'
Requires-Dist: cheroot>=11.1.2; extra == 'tpu'
Requires-Dist: chex>=0.1.91; extra == 'tpu'
Requires-Dist: click>=8.3.1; extra == 'tpu'
Requires-Dist: cloud-accelerator-diagnostics>=0.1.1; extra == 'tpu'
Requires-Dist: cloud-tpu-diagnostics>=0.1.5; extra == 'tpu'
Requires-Dist: cloudpickle>=3.1.2; extra == 'tpu'
Requires-Dist: clu>=0.0.12; extra == 'tpu'
Requires-Dist: colorama>=0.4.6; extra == 'tpu'
Requires-Dist: contourpy>=1.3.3; extra == 'tpu'
Requires-Dist: coverage>=7.12.0; extra == 'tpu'
Requires-Dist: cycler>=0.12.1; extra == 'tpu'
Requires-Dist: dacite>=1.9.2; extra == 'tpu'
Requires-Dist: datasets>=4.4.1; extra == 'tpu'
Requires-Dist: decorator>=5.2.1; extra == 'tpu'
Requires-Dist: dill>=0.4.0; extra == 'tpu'
Requires-Dist: distlib>=0.4.0; extra == 'tpu'
Requires-Dist: dm-tree>=0.1.9; extra == 'tpu'
Requires-Dist: docstring-parser>=0.17.0; extra == 'tpu'
Requires-Dist: drjax>=0.1.4; extra == 'tpu'
Requires-Dist: editdistance>=0.8.1; extra == 'tpu'
Requires-Dist: einops>=0.8.1; extra == 'tpu'
Requires-Dist: einshape>=1.0; extra == 'tpu'
Requires-Dist: etils>=1.13.0; extra == 'tpu'
Requires-Dist: evaluate>=0.4.6; extra == 'tpu'
Requires-Dist: execnet>=2.1.2; extra == 'tpu'
Requires-Dist: fastapi>=0.122.0; extra == 'tpu'
Requires-Dist: filelock>=3.20.0; extra == 'tpu'
Requires-Dist: flatbuffers>=25.9.23; extra == 'tpu'
Requires-Dist: flax>=0.12.6; extra == 'tpu'
Requires-Dist: fonttools>=4.60.1; extra == 'tpu'
Requires-Dist: frozenlist>=1.8.0; extra == 'tpu'
Requires-Dist: fsspec>=2025.10.0; extra == 'tpu'
Requires-Dist: gast>=0.6.0; extra == 'tpu'
Requires-Dist: gcsfs>=2025.10.0; extra == 'tpu'
Requires-Dist: google-api-core>=2.28.1; extra == 'tpu'
Requires-Dist: google-api-python-client>=2.187.0; extra == 'tpu'
Requires-Dist: google-auth-httplib2>=0.2.1; extra == 'tpu'
Requires-Dist: google-auth-oauthlib>=1.2.2; extra == 'tpu'
Requires-Dist: google-auth>=2.43.0; extra == 'tpu'
Requires-Dist: google-cloud-aiplatform>=1.128.0; extra == 'tpu'
Requires-Dist: google-cloud-appengine-logging>=1.7.0; extra == 'tpu'
Requires-Dist: google-cloud-audit-log>=0.4.0; extra == 'tpu'
Requires-Dist: google-cloud-bigquery>=3.38.0; extra == 'tpu'
Requires-Dist: google-cloud-core>=2.5.0; extra == 'tpu'
Requires-Dist: google-cloud-logging>=3.12.1; extra == 'tpu'
Requires-Dist: google-cloud-mldiagnostics>=0.5.10; extra == 'tpu'
Requires-Dist: google-cloud-monitoring>=2.28.0; extra == 'tpu'
Requires-Dist: google-cloud-resource-manager>=1.15.0; extra == 'tpu'
Requires-Dist: google-cloud-storage>=3.6.0; extra == 'tpu'
Requires-Dist: google-crc32c>=1.7.1; extra == 'tpu'
Requires-Dist: google-genai>=1.52.0; extra == 'tpu'
Requires-Dist: google-pasta>=0.2.0; extra == 'tpu'
Requires-Dist: google-resumable-media>=2.8.0; extra == 'tpu'
Requires-Dist: google-tunix>=0.1.3; extra == 'tpu'
Requires-Dist: googleapis-common-protos>=1.72.0; extra == 'tpu'
Requires-Dist: grain>=0.2.15; extra == 'tpu'
Requires-Dist: grpc-google-iam-v1>=0.14.3; extra == 'tpu'
Requires-Dist: grpcio-status>=1.71.2; extra == 'tpu'
Requires-Dist: grpcio>=1.76.0; extra == 'tpu'
Requires-Dist: gspread>=6.2.1; extra == 'tpu'
Requires-Dist: gviz-api>=1.10.0; extra == 'tpu'
Requires-Dist: h11>=0.16.0; extra == 'tpu'
Requires-Dist: h5py>=3.15.1; extra == 'tpu'
Requires-Dist: hf-transfer>=0.1.9; extra == 'tpu'
Requires-Dist: hf-xet>=1.2.0; (platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64') and extra == 'tpu'
Requires-Dist: httpcore>=1.0.9; extra == 'tpu'
Requires-Dist: httplib2>=0.31.0; extra == 'tpu'
Requires-Dist: httpx>=0.28.1; extra == 'tpu'
Requires-Dist: huggingface-hub>=0.36.0; extra == 'tpu'
Requires-Dist: humanize>=4.14.0; extra == 'tpu'
Requires-Dist: hypothesis>=6.142.1; extra == 'tpu'
Requires-Dist: identify>=2.6.15; extra == 'tpu'
Requires-Dist: idna>=3.11; extra == 'tpu'
Requires-Dist: immutabledict>=4.2.2; extra == 'tpu'
Requires-Dist: importlab>=0.8.1; extra == 'tpu'
Requires-Dist: importlib-metadata>=8.7.0; extra == 'tpu'
Requires-Dist: importlib-resources>=6.5.2; extra == 'tpu'
Requires-Dist: iniconfig>=2.3.0; extra == 'tpu'
Requires-Dist: isort>=7.0.0; extra == 'tpu'
Requires-Dist: jaraco-functools>=4.3.0; extra == 'tpu'
Requires-Dist: jax>=0.8.1; extra == 'tpu'
Requires-Dist: jaxlib>=0.8.1; extra == 'tpu'
Requires-Dist: jaxtyping>=0.3.3; extra == 'tpu'
Requires-Dist: jinja2>=3.1.6; extra == 'tpu'
Requires-Dist: joblib>=1.5.2; extra == 'tpu'
Requires-Dist: jsonlines>=4.0.0; extra == 'tpu'
Requires-Dist: kagglehub>=0.3.13; extra == 'tpu'
Requires-Dist: keras>=3.12.0; extra == 'tpu'
Requires-Dist: kiwisolver>=1.4.9; extra == 'tpu'
Requires-Dist: libclang>=18.1.1; extra == 'tpu'
Requires-Dist: libcst>=1.8.6; extra == 'tpu'
Requires-Dist: libtpu>=0.0.30; (platform_machine == 'x86_64' and sys_platform == 'linux') and extra == 'tpu'
Requires-Dist: llvmlite>=0.45.1; extra == 'tpu'
Requires-Dist: lxml>=6.0.2; extra == 'tpu'
Requires-Dist: markdown-it-py>=4.0.0; extra == 'tpu'
Requires-Dist: markdown>=3.10; extra == 'tpu'
Requires-Dist: markupsafe>=3.0.3; extra == 'tpu'
Requires-Dist: math-verify>=0.9.0; extra == 'tpu'
Requires-Dist: matplotlib>=3.10.7; extra == 'tpu'
Requires-Dist: mccabe>=0.7.0; extra == 'tpu'
Requires-Dist: mdurl>=0.1.2; extra == 'tpu'
Requires-Dist: ml-collections>=1.1.0; extra == 'tpu'
Requires-Dist: ml-dtypes>=0.5.4; extra == 'tpu'
Requires-Dist: ml-goodput-measurement>=0.0.15; extra == 'tpu'
Requires-Dist: more-itertools>=10.8.0; extra == 'tpu'
Requires-Dist: mpmath>=1.3.0; extra == 'tpu'
Requires-Dist: msgpack>=1.1.2; extra == 'tpu'
Requires-Dist: msgspec>=0.20.0; extra == 'tpu'
Requires-Dist: multidict>=6.7.0; extra == 'tpu'
Requires-Dist: multiprocess>=0.70.18; extra == 'tpu'
Requires-Dist: mypy-extensions>=1.1.0; extra == 'tpu'
Requires-Dist: namex>=0.1.0; extra == 'tpu'
Requires-Dist: nest-asyncio>=1.6.0; extra == 'tpu'
Requires-Dist: networkx>=3.6; extra == 'tpu'
Requires-Dist: ninja>=1.13.0; extra == 'tpu'
Requires-Dist: nltk>=3.9.2; extra == 'tpu'
Requires-Dist: nodeenv>=1.9.1; extra == 'tpu'
Requires-Dist: numba>=0.62.1; extra == 'tpu'
Requires-Dist: numpy-typing-compat>=20250818.2.0; extra == 'tpu'
Requires-Dist: numpy>=2.0.2; extra == 'tpu'
Requires-Dist: oauthlib>=3.3.1; extra == 'tpu'
Requires-Dist: omegaconf>=2.3.0; extra == 'tpu'
Requires-Dist: opentelemetry-api>=1.38.0; extra == 'tpu'
Requires-Dist: opt-einsum>=3.4.0; extra == 'tpu'
Requires-Dist: optax>=0.2.6; extra == 'tpu'
Requires-Dist: optree>=0.18.0; extra == 'tpu'
Requires-Dist: optype>=0.14.0; extra == 'tpu'
Requires-Dist: orbax-checkpoint>=0.11.33; extra == 'tpu'
Requires-Dist: packaging>=25.0; extra == 'tpu'
Requires-Dist: pandas>=2.3.3; extra == 'tpu'
Requires-Dist: parameterized>=0.9.0; extra == 'tpu'
Requires-Dist: pathspec>=0.12.1; extra == 'tpu'
Requires-Dist: pathwaysutils>=0.1.4; extra == 'tpu'
Requires-Dist: pillow>=12.0.0; extra == 'tpu'
Requires-Dist: platformdirs>=4.5.0; extra == 'tpu'
Requires-Dist: pluggy>=1.6.0; extra == 'tpu'
Requires-Dist: portpicker>=1.6.0; extra == 'tpu'
Requires-Dist: pre-commit>=4.5.0; extra == 'tpu'
Requires-Dist: prometheus-client>=0.23.1; extra == 'tpu'
Requires-Dist: promise>=2.3; extra == 'tpu'
Requires-Dist: propcache>=0.4.1; extra == 'tpu'
Requires-Dist: proto-plus>=1.26.1; extra == 'tpu'
Requires-Dist: protobuf>=5.29.5; extra == 'tpu'
Requires-Dist: psutil>=7.1.3; extra == 'tpu'
Requires-Dist: pyarrow>=22.0.0; extra == 'tpu'
Requires-Dist: pyasn1-modules>=0.4.2; extra == 'tpu'
Requires-Dist: pyasn1>=0.6.1; extra == 'tpu'
Requires-Dist: pycnite>=2024.7.31; extra == 'tpu'
Requires-Dist: pycryptodomex>=3.23.0; extra == 'tpu'
Requires-Dist: pydantic-core>=2.41.5; extra == 'tpu'
Requires-Dist: pydantic>=2.12.5; extra == 'tpu'
Requires-Dist: pydot>=4.0.1; extra == 'tpu'
Requires-Dist: pyelftools>=0.32; extra == 'tpu'
Requires-Dist: pyglove>=0.4.5; extra == 'tpu'
Requires-Dist: pygments>=2.19.2; extra == 'tpu'
Requires-Dist: pyink>=24.10.1; extra == 'tpu'
Requires-Dist: pylint>=4.0.3; extra == 'tpu'
Requires-Dist: pyparsing>=3.2.5; extra == 'tpu'
Requires-Dist: pyproject-hooks>=1.2.0; extra == 'tpu'
Requires-Dist: pytest-xdist>=3.8.0; extra == 'tpu'
Requires-Dist: pytest>=8.4.2; extra == 'tpu'
Requires-Dist: python-dateutil>=2.9.0.post0; extra == 'tpu'
Requires-Dist: python-dotenv>=1.2.1; extra == 'tpu'
Requires-Dist: pytype>=2024.10.11; extra == 'tpu'
Requires-Dist: pytz>=2025.2; extra == 'tpu'
Requires-Dist: pyyaml>=6.0.3; extra == 'tpu'
Requires-Dist: qwix>=0.1.4; extra == 'tpu'
Requires-Dist: regex>=2025.11.3; extra == 'tpu'
Requires-Dist: requests-oauthlib>=2.0.0; extra == 'tpu'
Requires-Dist: requests>=2.32.5; extra == 'tpu'
Requires-Dist: rich>=14.2.0; extra == 'tpu'
Requires-Dist: rsa>=4.9.1; extra == 'tpu'
Requires-Dist: safetensors>=0.7.0; extra == 'tpu'
Requires-Dist: scipy-stubs>=1.16.3.0; extra == 'tpu'
Requires-Dist: scipy>=1.16.3; extra == 'tpu'
Requires-Dist: sentencepiece>=0.2.1; extra == 'tpu'
Requires-Dist: seqio>=0.0.20; extra == 'tpu'
Requires-Dist: setuptools>=80.9.0; extra == 'tpu'
Requires-Dist: shapely>=2.1.2; extra == 'tpu'
Requires-Dist: shortuuid>=1.0.13; extra == 'tpu'
Requires-Dist: simple-parsing>=0.1.7; extra == 'tpu'
Requires-Dist: simplejson>=3.20.2; extra == 'tpu'
Requires-Dist: six>=1.17.0; extra == 'tpu'
Requires-Dist: sniffio>=1.3.1; extra == 'tpu'
Requires-Dist: sortedcontainers>=2.4.0; extra == 'tpu'
Requires-Dist: starlette>=0.50.0; extra == 'tpu'
Requires-Dist: sympy>=1.14.0; extra == 'tpu'
Requires-Dist: tabulate>=0.9.0; extra == 'tpu'
Requires-Dist: tenacity>=9.1.2; extra == 'tpu'
Requires-Dist: tensorboard-data-server>=0.7.2; extra == 'tpu'
Requires-Dist: tensorboard-plugin-profile>=2.13.0; extra == 'tpu'
Requires-Dist: tensorboard>=2.19.0; extra == 'tpu'
Requires-Dist: tensorboardx>=2.6.4; extra == 'tpu'
Requires-Dist: tensorflow-datasets>=4.9.9; extra == 'tpu'
Requires-Dist: tensorflow-metadata>=1.17.2; extra == 'tpu'
Requires-Dist: tensorflow-text>=2.19.0; extra == 'tpu'
Requires-Dist: tensorflow>=2.19.1; extra == 'tpu'
Requires-Dist: tensorstore>=0.1.79; extra == 'tpu'
Requires-Dist: termcolor>=3.2.0; extra == 'tpu'
Requires-Dist: tiktoken>=0.12.0; extra == 'tpu'
Requires-Dist: tokamax>=0.0.8; extra == 'tpu'
Requires-Dist: tokenizers>=0.22.1; extra == 'tpu'
Requires-Dist: toml>=0.10.2; extra == 'tpu'
Requires-Dist: tomlkit>=0.13.3; extra == 'tpu'
Requires-Dist: toolz>=1.1.0; extra == 'tpu'
Requires-Dist: tqdm>=4.67.1; extra == 'tpu'
Requires-Dist: transformers>=4.57.3; extra == 'tpu'
Requires-Dist: treescope>=0.1.10; extra == 'tpu'
Requires-Dist: typeguard>=2.13.3; extra == 'tpu'
Requires-Dist: typing-extensions>=4.15.0; extra == 'tpu'
Requires-Dist: typing-inspection>=0.4.2; extra == 'tpu'
Requires-Dist: tzdata>=2025.2; extra == 'tpu'
Requires-Dist: uritemplate>=4.2.0; extra == 'tpu'
Requires-Dist: urllib3>=2.5.0; extra == 'tpu'
Requires-Dist: uvicorn>=0.38.0; extra == 'tpu'
Requires-Dist: uvloop>=0.19.0; extra == 'tpu'
Requires-Dist: virtualenv>=20.35.4; extra == 'tpu'
Requires-Dist: wadler-lindig>=0.1.7; extra == 'tpu'
Requires-Dist: websockets>=15.0.1; extra == 'tpu'
Requires-Dist: werkzeug>=3.1.3; extra == 'tpu'
Requires-Dist: wheel>=0.45.1; extra == 'tpu'
Requires-Dist: wrapt>=2.0.1; extra == 'tpu'
Requires-Dist: xprof>=2.21.1; extra == 'tpu'
Requires-Dist: xxhash>=3.6.0; extra == 'tpu'
Requires-Dist: yarl>=1.22.0; extra == 'tpu'
Requires-Dist: zipp>=3.23.0; extra == 'tpu'
Requires-Dist: zstandard>=0.25.0; extra == 'tpu'
Provides-Extra: tpu-post-train
Requires-Dist: absl-py>=2.3.1; extra == 'tpu-post-train'
Requires-Dist: aiofiles>=25.1.0; extra == 'tpu-post-train'
Requires-Dist: aiohappyeyeballs>=2.6.1; extra == 'tpu-post-train'
Requires-Dist: aiohttp-cors>=0.8.1; extra == 'tpu-post-train'
Requires-Dist: aiohttp>=3.13.3; extra == 'tpu-post-train'
Requires-Dist: aiosignal>=1.4.0; extra == 'tpu-post-train'
Requires-Dist: annotated-doc>=0.0.4; extra == 'tpu-post-train'
Requires-Dist: annotated-types>=0.7.0; extra == 'tpu-post-train'
Requires-Dist: anthropic>=0.84.0; extra == 'tpu-post-train'
Requires-Dist: antlr4-python3-runtime>=4.9.3; extra == 'tpu-post-train'
Requires-Dist: anyio>=4.11.0; extra == 'tpu-post-train'
Requires-Dist: aqtp>=0.9.0; extra == 'tpu-post-train'
Requires-Dist: array-record>=0.8.3; extra == 'tpu-post-train'
Requires-Dist: astor>=0.8.1; extra == 'tpu-post-train'
Requires-Dist: astroid>=4.0.2; extra == 'tpu-post-train'
Requires-Dist: asttokens>=3.0.1; extra == 'tpu-post-train'
Requires-Dist: astunparse>=1.6.3; extra == 'tpu-post-train'
Requires-Dist: attrs>=25.4.0; extra == 'tpu-post-train'
Requires-Dist: auditwheel>=6.5.0; extra == 'tpu-post-train'
Requires-Dist: black>=24.10.0; extra == 'tpu-post-train'
Requires-Dist: blake3>=1.0.8; extra == 'tpu-post-train'
Requires-Dist: blobfile>=3.1.0; extra == 'tpu-post-train'
Requires-Dist: boto3>=1.42.56; extra == 'tpu-post-train'
Requires-Dist: botocore>=1.42.56; extra == 'tpu-post-train'
Requires-Dist: build>=1.3.0; extra == 'tpu-post-train'
Requires-Dist: cachetools>=6.2.2; extra == 'tpu-post-train'
Requires-Dist: cbor2>=5.8.0; extra == 'tpu-post-train'
Requires-Dist: certifi>=2026.2.25; extra == 'tpu-post-train'
Requires-Dist: cffi>=2.0.0; extra == 'tpu-post-train'
Requires-Dist: cfgv>=3.5.0; extra == 'tpu-post-train'
Requires-Dist: charset-normalizer>=3.4.4; extra == 'tpu-post-train'
Requires-Dist: cheroot>=11.1.2; extra == 'tpu-post-train'
Requires-Dist: chex>=0.1.91; extra == 'tpu-post-train'
Requires-Dist: click>=8.3.1; extra == 'tpu-post-train'
Requires-Dist: cloud-accelerator-diagnostics>=0.1.1; extra == 'tpu-post-train'
Requires-Dist: cloud-tpu-diagnostics>=0.1.5; extra == 'tpu-post-train'
Requires-Dist: cloudpickle>=3.1.2; extra == 'tpu-post-train'
Requires-Dist: clu>=0.0.12; extra == 'tpu-post-train'
Requires-Dist: cmake>=4.2.1; extra == 'tpu-post-train'
Requires-Dist: colorama>=0.4.6; extra == 'tpu-post-train'
Requires-Dist: colorful>=0.5.8; extra == 'tpu-post-train'
Requires-Dist: comm>=0.2.3; extra == 'tpu-post-train'
Requires-Dist: compressed-tensors>=0.13.0; extra == 'tpu-post-train'
Requires-Dist: contourpy>=1.3.3; extra == 'tpu-post-train'
Requires-Dist: coverage>=7.12.0; extra == 'tpu-post-train'
Requires-Dist: cryptography>=46.0.5; extra == 'tpu-post-train'
Requires-Dist: cycler>=0.12.1; extra == 'tpu-post-train'
Requires-Dist: dacite>=1.9.2; extra == 'tpu-post-train'
Requires-Dist: dataclasses-json>=0.6.7; extra == 'tpu-post-train'
Requires-Dist: datasets>=4.6.0; extra == 'tpu-post-train'
Requires-Dist: debugpy>=1.8.20; extra == 'tpu-post-train'
Requires-Dist: decorator>=5.2.1; extra == 'tpu-post-train'
Requires-Dist: depyf>=0.20.0; extra == 'tpu-post-train'
Requires-Dist: dill>=0.4.0; extra == 'tpu-post-train'
Requires-Dist: diskcache>=5.6.3; extra == 'tpu-post-train'
Requires-Dist: distlib>=0.4.0; extra == 'tpu-post-train'
Requires-Dist: distro>=1.9.0; extra == 'tpu-post-train'
Requires-Dist: dm-tree>=0.1.9; extra == 'tpu-post-train'
Requires-Dist: dnspython>=2.8.0; extra == 'tpu-post-train'
Requires-Dist: docstring-parser>=0.17.0; extra == 'tpu-post-train'
Requires-Dist: drjax>=0.1.4; extra == 'tpu-post-train'
Requires-Dist: editdistance>=0.8.1; extra == 'tpu-post-train'
Requires-Dist: einops>=0.8.1; extra == 'tpu-post-train'
Requires-Dist: einshape>=1.0; extra == 'tpu-post-train'
Requires-Dist: email-validator>=2.3.0; extra == 'tpu-post-train'
Requires-Dist: entrypoints>=0.4; extra == 'tpu-post-train'
Requires-Dist: etils>=1.13.0; extra == 'tpu-post-train'
Requires-Dist: evaluate>=0.4.6; extra == 'tpu-post-train'
Requires-Dist: execnet>=2.1.2; extra == 'tpu-post-train'
Requires-Dist: executing>=2.2.1; extra == 'tpu-post-train'
Requires-Dist: fastapi-cli>=0.0.24; extra == 'tpu-post-train'
Requires-Dist: fastapi-cloud-cli>=0.13.0; extra == 'tpu-post-train'
Requires-Dist: fastapi>=0.122.0; extra == 'tpu-post-train'
Requires-Dist: fastar>=0.8.0; extra == 'tpu-post-train'
Requires-Dist: fastjsonschema>=2.21.2; extra == 'tpu-post-train'
Requires-Dist: filelock>=3.20.0; extra == 'tpu-post-train'
Requires-Dist: flatbuffers>=25.9.23; extra == 'tpu-post-train'
Requires-Dist: flax>=0.12.4; extra == 'tpu-post-train'
Requires-Dist: fonttools>=4.60.1; extra == 'tpu-post-train'
Requires-Dist: frozenlist>=1.8.0; extra == 'tpu-post-train'
Requires-Dist: fsspec>=2026.1.0; extra == 'tpu-post-train'
Requires-Dist: gast>=0.6.0; extra == 'tpu-post-train'
Requires-Dist: gcsfs>=2026.1.0; extra == 'tpu-post-train'
Requires-Dist: gguf>=0.17.1; extra == 'tpu-post-train'
Requires-Dist: google-api-core>=2.28.1; extra == 'tpu-post-train'
Requires-Dist: google-api-python-client>=2.187.0; extra == 'tpu-post-train'
Requires-Dist: google-auth-httplib2>=0.2.1; extra == 'tpu-post-train'
Requires-Dist: google-auth-oauthlib>=1.2.2; extra == 'tpu-post-train'
Requires-Dist: google-auth>=2.43.0; extra == 'tpu-post-train'
Requires-Dist: google-cloud-aiplatform>=1.128.0; extra == 'tpu-post-train'
Requires-Dist: google-cloud-appengine-logging>=1.7.0; extra == 'tpu-post-train'
Requires-Dist: google-cloud-audit-log>=0.4.0; extra == 'tpu-post-train'
Requires-Dist: google-cloud-bigquery>=3.38.0; extra == 'tpu-post-train'
Requires-Dist: google-cloud-core>=2.5.0; extra == 'tpu-post-train'
Requires-Dist: google-cloud-logging>=3.12.1; extra == 'tpu-post-train'
Requires-Dist: google-cloud-mldiagnostics>=0.5.10; extra == 'tpu-post-train'
Requires-Dist: google-cloud-monitoring>=2.28.0; extra == 'tpu-post-train'
Requires-Dist: google-cloud-resource-manager>=1.15.0; extra == 'tpu-post-train'
Requires-Dist: google-cloud-storage-control>=1.10.0; extra == 'tpu-post-train'
Requires-Dist: google-cloud-storage>=3.9.0; extra == 'tpu-post-train'
Requires-Dist: google-crc32c>=1.7.1; extra == 'tpu-post-train'
Requires-Dist: google-genai>=1.52.0; extra == 'tpu-post-train'
Requires-Dist: google-metrax>=0.2.4; extra == 'tpu-post-train'
Requires-Dist: google-pasta>=0.2.0; extra == 'tpu-post-train'
Requires-Dist: google-resumable-media>=2.8.0; extra == 'tpu-post-train'
Requires-Dist: googleapis-common-protos>=1.72.0; extra == 'tpu-post-train'
Requires-Dist: grain>=0.2.15; extra == 'tpu-post-train'
Requires-Dist: grpc-google-iam-v1>=0.14.3; extra == 'tpu-post-train'
Requires-Dist: grpcio-reflection>=1.71.0; extra == 'tpu-post-train'
Requires-Dist: grpcio-status>=1.71.2; extra == 'tpu-post-train'
Requires-Dist: grpcio>=1.78.0; extra == 'tpu-post-train'
Requires-Dist: gspread>=6.2.1; extra == 'tpu-post-train'
Requires-Dist: gviz-api>=1.10.0; extra == 'tpu-post-train'
Requires-Dist: h11>=0.16.0; extra == 'tpu-post-train'
Requires-Dist: h5py>=3.15.1; extra == 'tpu-post-train'
Requires-Dist: hf-transfer>=0.1.9; extra == 'tpu-post-train'
Requires-Dist: hf-xet>=1.2.0; extra == 'tpu-post-train'
Requires-Dist: httpcore>=1.0.9; extra == 'tpu-post-train'
Requires-Dist: httplib2>=0.31.0; extra == 'tpu-post-train'
Requires-Dist: httptools>=0.7.1; extra == 'tpu-post-train'
Requires-Dist: httpx-sse>=0.4.3; extra == 'tpu-post-train'
Requires-Dist: httpx>=0.28.1; extra == 'tpu-post-train'
Requires-Dist: huggingface-hub>=0.36.0; extra == 'tpu-post-train'
Requires-Dist: humanize>=4.14.0; extra == 'tpu-post-train'
Requires-Dist: hypothesis>=6.142.1; extra == 'tpu-post-train'
Requires-Dist: identify>=2.6.15; extra == 'tpu-post-train'
Requires-Dist: idna>=3.11; extra == 'tpu-post-train'
Requires-Dist: ijson>=3.5.0; extra == 'tpu-post-train'
Requires-Dist: immutabledict>=4.2.2; extra == 'tpu-post-train'
Requires-Dist: importlab>=0.8.1; extra == 'tpu-post-train'
Requires-Dist: importlib-metadata>=8.7.0; extra == 'tpu-post-train'
Requires-Dist: importlib-resources>=6.5.2; extra == 'tpu-post-train'
Requires-Dist: iniconfig>=2.3.0; extra == 'tpu-post-train'
Requires-Dist: interegular>=0.3.3; extra == 'tpu-post-train'
Requires-Dist: ipykernel>=7.2.0; extra == 'tpu-post-train'
Requires-Dist: ipython-pygments-lexers>=1.1.1; extra == 'tpu-post-train'
Requires-Dist: ipython>=9.10.0; extra == 'tpu-post-train'
Requires-Dist: ipywidgets>=8.1.8; extra == 'tpu-post-train'
Requires-Dist: isort>=7.0.0; extra == 'tpu-post-train'
Requires-Dist: jaraco-classes>=3.4.0; extra == 'tpu-post-train'
Requires-Dist: jaraco-context>=6.1.0; extra == 'tpu-post-train'
Requires-Dist: jaraco-functools>=4.3.0; extra == 'tpu-post-train'
Requires-Dist: jax>=0.8.3; extra == 'tpu-post-train'
Requires-Dist: jaxlib>=0.8.3; extra == 'tpu-post-train'
Requires-Dist: jaxtyping>=0.3.3; extra == 'tpu-post-train'
Requires-Dist: jedi>=0.19.2; extra == 'tpu-post-train'
Requires-Dist: jeepney>=0.9.0; extra == 'tpu-post-train'
Requires-Dist: jinja2>=3.1.6; extra == 'tpu-post-train'
Requires-Dist: jiter>=0.13.0; extra == 'tpu-post-train'
Requires-Dist: jmespath>=1.1.0; extra == 'tpu-post-train'
Requires-Dist: joblib>=1.5.2; extra == 'tpu-post-train'
Requires-Dist: jsonlines>=4.0.0; extra == 'tpu-post-train'
Requires-Dist: jsonschema-specifications>=2025.9.1; extra == 'tpu-post-train'
Requires-Dist: jsonschema>=4.26.0; extra == 'tpu-post-train'
Requires-Dist: jupyter-client>=8.8.0; extra == 'tpu-post-train'
Requires-Dist: jupyter-core>=5.9.1; extra == 'tpu-post-train'
Requires-Dist: jupyterlab-widgets>=3.0.16; extra == 'tpu-post-train'
Requires-Dist: kagglehub>=0.3.13; extra == 'tpu-post-train'
Requires-Dist: keras>=3.12.0; extra == 'tpu-post-train'
Requires-Dist: keyring>=25.7.0; extra == 'tpu-post-train'
Requires-Dist: keyrings-google-artifactregistry-auth>=1.1.2; extra == 'tpu-post-train'
Requires-Dist: kiwisolver>=1.4.9; extra == 'tpu-post-train'
Requires-Dist: lark>=1.2.2; extra == 'tpu-post-train'
Requires-Dist: latex2sympy2-extended>=1.11.0; extra == 'tpu-post-train'
Requires-Dist: libclang>=18.1.1; extra == 'tpu-post-train'
Requires-Dist: libcst>=1.8.6; extra == 'tpu-post-train'
Requires-Dist: libtpu>=0.0.32; extra == 'tpu-post-train'
Requires-Dist: llguidance>=1.3.0; extra == 'tpu-post-train'
Requires-Dist: llvmlite>=0.45.1; extra == 'tpu-post-train'
Requires-Dist: lm-format-enforcer>=0.11.3; extra == 'tpu-post-train'
Requires-Dist: loguru>=0.7.3; extra == 'tpu-post-train'
Requires-Dist: lxml>=6.0.2; extra == 'tpu-post-train'
Requires-Dist: markdown-it-py>=4.0.0; extra == 'tpu-post-train'
Requires-Dist: markdown>=3.10; extra == 'tpu-post-train'
Requires-Dist: markupsafe>=3.0.3; extra == 'tpu-post-train'
Requires-Dist: marshmallow>=3.26.2; extra == 'tpu-post-train'
Requires-Dist: math-verify>=0.9.0; extra == 'tpu-post-train'
Requires-Dist: matplotlib-inline>=0.2.1; extra == 'tpu-post-train'
Requires-Dist: matplotlib>=3.10.7; extra == 'tpu-post-train'
Requires-Dist: mccabe>=0.7.0; extra == 'tpu-post-train'
Requires-Dist: mcp>=1.26.0; extra == 'tpu-post-train'
Requires-Dist: mdurl>=0.1.2; extra == 'tpu-post-train'
Requires-Dist: mistral-common>=1.9.1; extra == 'tpu-post-train'
Requires-Dist: ml-collections>=1.1.0; extra == 'tpu-post-train'
Requires-Dist: ml-dtypes>=0.5.4; extra == 'tpu-post-train'
Requires-Dist: ml-goodput-measurement>=0.0.15; extra == 'tpu-post-train'
Requires-Dist: model-hosting-container-standards>=0.1.13; extra == 'tpu-post-train'
Requires-Dist: more-itertools>=10.8.0; extra == 'tpu-post-train'
Requires-Dist: mpmath>=1.3.0; extra == 'tpu-post-train'
Requires-Dist: msgpack>=1.1.2; extra == 'tpu-post-train'
Requires-Dist: msgspec>=0.20.0; extra == 'tpu-post-train'
Requires-Dist: multidict>=6.7.0; extra == 'tpu-post-train'
Requires-Dist: multiprocess>=0.70.18; extra == 'tpu-post-train'
Requires-Dist: mypy-extensions>=1.1.0; extra == 'tpu-post-train'
Requires-Dist: namex>=0.1.0; extra == 'tpu-post-train'
Requires-Dist: nbclient>=0.10.4; extra == 'tpu-post-train'
Requires-Dist: nbformat>=5.10.4; extra == 'tpu-post-train'
Requires-Dist: nest-asyncio>=1.6.0; extra == 'tpu-post-train'
Requires-Dist: networkx>=3.6; extra == 'tpu-post-train'
Requires-Dist: ninja>=1.13.0; extra == 'tpu-post-train'
Requires-Dist: nixl>=0.3.0; extra == 'tpu-post-train'
Requires-Dist: nltk>=3.9.2; extra == 'tpu-post-train'
Requires-Dist: nodeenv>=1.9.1; extra == 'tpu-post-train'
Requires-Dist: numba>=0.62.1; extra == 'tpu-post-train'
Requires-Dist: numpy-typing-compat>=20250818.2.2; extra == 'tpu-post-train'
Requires-Dist: numpy>=2.2.6; extra == 'tpu-post-train'
Requires-Dist: nvidia-cublas-cu12>=12.8.4.1; extra == 'tpu-post-train'
Requires-Dist: nvidia-cuda-cupti-cu12>=12.8.90; extra == 'tpu-post-train'
Requires-Dist: nvidia-cuda-nvrtc-cu12>=12.8.93; extra == 'tpu-post-train'
Requires-Dist: nvidia-cuda-runtime-cu12>=12.8.90; extra == 'tpu-post-train'
Requires-Dist: nvidia-cudnn-cu12>=9.10.2.21; extra == 'tpu-post-train'
Requires-Dist: nvidia-cufft-cu12>=11.3.3.83; extra == 'tpu-post-train'
Requires-Dist: nvidia-cufile-cu12>=1.13.1.3; extra == 'tpu-post-train'
Requires-Dist: nvidia-curand-cu12>=10.3.9.90; extra == 'tpu-post-train'
Requires-Dist: nvidia-cusolver-cu12>=11.7.3.90; extra == 'tpu-post-train'
Requires-Dist: nvidia-cusparse-cu12>=12.5.8.93; extra == 'tpu-post-train'
Requires-Dist: nvidia-cusparselt-cu12>=0.7.1; extra == 'tpu-post-train'
Requires-Dist: nvidia-nccl-cu12>=2.27.5; extra == 'tpu-post-train'
Requires-Dist: nvidia-nvjitlink-cu12>=12.8.93; extra == 'tpu-post-train'
Requires-Dist: nvidia-nvshmem-cu12>=3.3.20; extra == 'tpu-post-train'
Requires-Dist: nvidia-nvtx-cu12>=12.8.90; extra == 'tpu-post-train'
Requires-Dist: oauthlib>=3.3.1; extra == 'tpu-post-train'
Requires-Dist: omegaconf>=2.3.0; extra == 'tpu-post-train'
Requires-Dist: openai-harmony>=0.0.8; extra == 'tpu-post-train'
Requires-Dist: openai>=2.24.0; extra == 'tpu-post-train'
Requires-Dist: opencensus-context>=0.1.3; extra == 'tpu-post-train'
Requires-Dist: opencensus>=0.11.4; extra == 'tpu-post-train'
Requires-Dist: opencv-python-headless>=4.13.0.92; extra == 'tpu-post-train'
Requires-Dist: opentelemetry-api>=1.39.1; extra == 'tpu-post-train'
Requires-Dist: opentelemetry-exporter-otlp-proto-common>=1.39.1; extra == 'tpu-post-train'
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.39.1; extra == 'tpu-post-train'
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.39.1; extra == 'tpu-post-train'
Requires-Dist: opentelemetry-exporter-otlp>=1.39.1; extra == 'tpu-post-train'
Requires-Dist: opentelemetry-exporter-prometheus>=0.60b1; extra == 'tpu-post-train'
Requires-Dist: opentelemetry-proto>=1.39.1; extra == 'tpu-post-train'
Requires-Dist: opentelemetry-sdk>=1.39.1; extra == 'tpu-post-train'
Requires-Dist: opentelemetry-semantic-conventions-ai>=0.4.15; extra == 'tpu-post-train'
Requires-Dist: opentelemetry-semantic-conventions>=0.60b1; extra == 'tpu-post-train'
Requires-Dist: opt-einsum>=3.4.0; extra == 'tpu-post-train'
Requires-Dist: optax>=0.2.6; extra == 'tpu-post-train'
Requires-Dist: optree>=0.18.0; extra == 'tpu-post-train'
Requires-Dist: optype>=0.14.0; extra == 'tpu-post-train'
Requires-Dist: orbax-checkpoint>=0.11.28; extra == 'tpu-post-train'
Requires-Dist: orbax-export>=0.0.8; extra == 'tpu-post-train'
Requires-Dist: outlines-core>=0.2.11; extra == 'tpu-post-train'
Requires-Dist: packaging>=26.0; extra == 'tpu-post-train'
Requires-Dist: pandas>=2.3.3; extra == 'tpu-post-train'
Requires-Dist: papermill>=2.7.0; extra == 'tpu-post-train'
Requires-Dist: parameterized>=0.9.0; extra == 'tpu-post-train'
Requires-Dist: parso>=0.8.6; extra == 'tpu-post-train'
Requires-Dist: partial-json-parser>=0.2.1.1.post7; extra == 'tpu-post-train'
Requires-Dist: pathspec>=0.12.1; extra == 'tpu-post-train'
Requires-Dist: pathwaysutils>=0.1.4; extra == 'tpu-post-train'
Requires-Dist: perfetto>=0.16.0; extra == 'tpu-post-train'
Requires-Dist: pexpect>=4.9.0; extra == 'tpu-post-train'
Requires-Dist: pillow>=12.0.0; extra == 'tpu-post-train'
Requires-Dist: platformdirs>=4.9.2; extra == 'tpu-post-train'
Requires-Dist: pluggy>=1.6.0; extra == 'tpu-post-train'
Requires-Dist: portpicker>=1.6.0; extra == 'tpu-post-train'
Requires-Dist: pre-commit>=4.5.0; extra == 'tpu-post-train'
Requires-Dist: prometheus-client>=0.23.1; extra == 'tpu-post-train'
Requires-Dist: prometheus-fastapi-instrumentator>=7.1.0; extra == 'tpu-post-train'
Requires-Dist: promise>=2.3; extra == 'tpu-post-train'
Requires-Dist: prompt-toolkit>=3.0.52; extra == 'tpu-post-train'
Requires-Dist: propcache>=0.4.1; extra == 'tpu-post-train'
Requires-Dist: proto-plus>=1.26.1; extra == 'tpu-post-train'
Requires-Dist: protobuf>=5.29.6; extra == 'tpu-post-train'
Requires-Dist: psutil>=7.2.2; extra == 'tpu-post-train'
Requires-Dist: ptyprocess>=0.7.0; extra == 'tpu-post-train'
Requires-Dist: pure-eval>=0.2.3; extra == 'tpu-post-train'
Requires-Dist: py-cpuinfo>=9.0.0; extra == 'tpu-post-train'
Requires-Dist: py-spy>=0.4.1; extra == 'tpu-post-train'
Requires-Dist: pyarrow>=22.0.0; extra == 'tpu-post-train'
Requires-Dist: pyasn1-modules>=0.4.2; extra == 'tpu-post-train'
Requires-Dist: pyasn1>=0.6.1; extra == 'tpu-post-train'
Requires-Dist: pybase64>=1.4.3; extra == 'tpu-post-train'
Requires-Dist: pycnite>=2024.7.31; extra == 'tpu-post-train'
Requires-Dist: pycountry>=26.2.16; extra == 'tpu-post-train'
Requires-Dist: pycparser>=3.0; extra == 'tpu-post-train'
Requires-Dist: pycryptodomex>=3.23.0; extra == 'tpu-post-train'
Requires-Dist: pydantic-core>=2.41.5; extra == 'tpu-post-train'
Requires-Dist: pydantic-extra-types>=2.11.0; extra == 'tpu-post-train'
Requires-Dist: pydantic-settings>=2.13.1; extra == 'tpu-post-train'
Requires-Dist: pydantic>=2.12.5; extra == 'tpu-post-train'
Requires-Dist: pydot>=4.0.1; extra == 'tpu-post-train'
Requires-Dist: pyelftools>=0.32; extra == 'tpu-post-train'
Requires-Dist: pyglove>=0.4.5; extra == 'tpu-post-train'
Requires-Dist: pygments>=2.19.2; extra == 'tpu-post-train'
Requires-Dist: pyink>=24.10.1; extra == 'tpu-post-train'
Requires-Dist: pyjwt>=2.11.0; extra == 'tpu-post-train'
Requires-Dist: pylatexenc>=2.10; extra == 'tpu-post-train'
Requires-Dist: pylint>=4.0.3; extra == 'tpu-post-train'
Requires-Dist: pyparsing>=3.2.5; extra == 'tpu-post-train'
Requires-Dist: pyproject-hooks>=1.2.0; extra == 'tpu-post-train'
Requires-Dist: pytest-mock>=3.15.1; extra == 'tpu-post-train'
Requires-Dist: pytest-xdist>=3.8.0; extra == 'tpu-post-train'
Requires-Dist: pytest>=8.4.2; extra == 'tpu-post-train'
Requires-Dist: python-dateutil>=2.9.0.post0; extra == 'tpu-post-train'
Requires-Dist: python-dotenv>=1.2.1; extra == 'tpu-post-train'
Requires-Dist: python-json-logger>=4.0.0; extra == 'tpu-post-train'
Requires-Dist: python-multipart>=0.0.22; extra == 'tpu-post-train'
Requires-Dist: pytype>=2024.10.11; extra == 'tpu-post-train'
Requires-Dist: pytz>=2025.2; extra == 'tpu-post-train'
Requires-Dist: pyyaml>=6.0.3; extra == 'tpu-post-train'
Requires-Dist: pyzmq>=27.1.0; extra == 'tpu-post-train'
Requires-Dist: qwix>=0.1.4; extra == 'tpu-post-train'
Requires-Dist: ray>=2.54.0; extra == 'tpu-post-train'
Requires-Dist: referencing>=0.37.0; extra == 'tpu-post-train'
Requires-Dist: regex>=2025.11.3; extra == 'tpu-post-train'
Requires-Dist: requests-oauthlib>=2.0.0; extra == 'tpu-post-train'
Requires-Dist: requests>=2.32.5; extra == 'tpu-post-train'
Requires-Dist: rich-toolkit>=0.19.7; extra == 'tpu-post-train'
Requires-Dist: rich>=14.2.0; extra == 'tpu-post-train'
Requires-Dist: rignore>=0.7.6; extra == 'tpu-post-train'
Requires-Dist: rpds-py>=0.30.0; extra == 'tpu-post-train'
Requires-Dist: rsa>=4.9.1; extra == 'tpu-post-train'
Requires-Dist: runai-model-streamer-gcs>=0.15.4; extra == 'tpu-post-train'
Requires-Dist: runai-model-streamer-s3>=0.15.4; extra == 'tpu-post-train'
Requires-Dist: runai-model-streamer>=0.15.4; extra == 'tpu-post-train'
Requires-Dist: s3transfer>=0.16.0; extra == 'tpu-post-train'
Requires-Dist: safetensors>=0.7.0; extra == 'tpu-post-train'
Requires-Dist: scipy-stubs>=1.16.3.0; extra == 'tpu-post-train'
Requires-Dist: scipy>=1.16.3; extra == 'tpu-post-train'
Requires-Dist: secretstorage>=3.5.0; extra == 'tpu-post-train'
Requires-Dist: sentencepiece>=0.2.1; extra == 'tpu-post-train'
Requires-Dist: sentry-sdk>=2.53.0; extra == 'tpu-post-train'
Requires-Dist: seqio>=0.0.20; extra == 'tpu-post-train'
Requires-Dist: setproctitle>=1.3.7; extra == 'tpu-post-train'
Requires-Dist: setuptools-scm>=9.2.2; extra == 'tpu-post-train'
Requires-Dist: setuptools>=78.1.0; extra == 'tpu-post-train'
Requires-Dist: shapely>=2.1.2; extra == 'tpu-post-train'
Requires-Dist: shellingham>=1.5.4; extra == 'tpu-post-train'
Requires-Dist: shortuuid>=1.0.13; extra == 'tpu-post-train'
Requires-Dist: simple-parsing>=0.1.7; extra == 'tpu-post-train'
Requires-Dist: simplejson>=3.20.2; extra == 'tpu-post-train'
Requires-Dist: six>=1.17.0; extra == 'tpu-post-train'
Requires-Dist: smart-open>=7.5.1; extra == 'tpu-post-train'
Requires-Dist: sniffio>=1.3.1; extra == 'tpu-post-train'
Requires-Dist: sortedcontainers>=2.4.0; extra == 'tpu-post-train'
Requires-Dist: sse-starlette>=3.2.0; extra == 'tpu-post-train'
Requires-Dist: stack-data>=0.6.3; extra == 'tpu-post-train'
Requires-Dist: starlette>=0.50.0; extra == 'tpu-post-train'
Requires-Dist: supervisor>=4.3.0; extra == 'tpu-post-train'
Requires-Dist: sympy>=1.14.0; extra == 'tpu-post-train'
Requires-Dist: tabulate>=0.9.0; extra == 'tpu-post-train'
Requires-Dist: tenacity>=9.1.4; extra == 'tpu-post-train'
Requires-Dist: tensorboard-data-server>=0.7.2; extra == 'tpu-post-train'
Requires-Dist: tensorboard-plugin-profile>=2.13.0; extra == 'tpu-post-train'
Requires-Dist: tensorboard>=2.20.0; extra == 'tpu-post-train'
Requires-Dist: tensorboardx>=2.6.4; extra == 'tpu-post-train'
Requires-Dist: tensorflow-datasets>=4.9.9; extra == 'tpu-post-train'
Requires-Dist: tensorflow-metadata>=1.17.2; extra == 'tpu-post-train'
Requires-Dist: tensorflow-text>=2.20.0; extra == 'tpu-post-train'
Requires-Dist: tensorflow>=2.20.0; extra == 'tpu-post-train'
Requires-Dist: tensorstore>=0.1.79; extra == 'tpu-post-train'
Requires-Dist: termcolor>=3.2.0; extra == 'tpu-post-train'
Requires-Dist: tiktoken>=0.12.0; extra == 'tpu-post-train'
Requires-Dist: tokamax>=0.0.8; extra == 'tpu-post-train'
Requires-Dist: tokenizers>=0.22.1; extra == 'tpu-post-train'
Requires-Dist: toml>=0.10.2; extra == 'tpu-post-train'
Requires-Dist: tomlkit>=0.13.3; extra == 'tpu-post-train'
Requires-Dist: toolz>=1.1.0; extra == 'tpu-post-train'
Requires-Dist: torch>=2.9.0; extra == 'tpu-post-train'
Requires-Dist: torchax>=0.0.11; extra == 'tpu-post-train'
Requires-Dist: torchvision>=0.24.0; extra == 'tpu-post-train'
Requires-Dist: tornado>=6.5.4; extra == 'tpu-post-train'
Requires-Dist: tpu-info>=0.7.1; extra == 'tpu-post-train'
Requires-Dist: tqdm>=4.67.3; extra == 'tpu-post-train'
Requires-Dist: traitlets>=5.14.3; extra == 'tpu-post-train'
Requires-Dist: transformers>=4.57.1; extra == 'tpu-post-train'
Requires-Dist: treescope>=0.1.10; extra == 'tpu-post-train'
Requires-Dist: triton>=3.5.0; extra == 'tpu-post-train'
Requires-Dist: typeguard>=2.13.3; extra == 'tpu-post-train'
Requires-Dist: typer>=0.24.1; extra == 'tpu-post-train'
Requires-Dist: typing-extensions>=4.15.0; extra == 'tpu-post-train'
Requires-Dist: typing-inspect>=0.9.0; extra == 'tpu-post-train'
Requires-Dist: typing-inspection>=0.4.2; extra == 'tpu-post-train'
Requires-Dist: tzdata>=2025.2; extra == 'tpu-post-train'
Requires-Dist: uritemplate>=4.2.0; extra == 'tpu-post-train'
Requires-Dist: urllib3>=2.5.0; extra == 'tpu-post-train'
Requires-Dist: uv>=0.10.6; extra == 'tpu-post-train'
Requires-Dist: uvicorn>=0.38.0; extra == 'tpu-post-train'
Requires-Dist: uvloop>=0.22.1; extra == 'tpu-post-train'
Requires-Dist: virtualenv>=20.35.4; extra == 'tpu-post-train'
Requires-Dist: wadler-lindig>=0.1.7; extra == 'tpu-post-train'
Requires-Dist: watchfiles>=1.1.1; extra == 'tpu-post-train'
Requires-Dist: wcwidth>=0.6.0; extra == 'tpu-post-train'
Requires-Dist: websockets>=15.0.1; extra == 'tpu-post-train'
Requires-Dist: werkzeug>=3.1.3; extra == 'tpu-post-train'
Requires-Dist: wheel>=0.46.3; extra == 'tpu-post-train'
Requires-Dist: widgetsnbextension>=4.0.15; extra == 'tpu-post-train'
Requires-Dist: wrapt>=2.0.1; extra == 'tpu-post-train'
Requires-Dist: xgrammar>=0.1.29; extra == 'tpu-post-train'
Requires-Dist: xprof>=2.21.1; extra == 'tpu-post-train'
Requires-Dist: xxhash>=3.6.0; extra == 'tpu-post-train'
Requires-Dist: yapf>=0.43.0; extra == 'tpu-post-train'
Requires-Dist: yarl>=1.22.0; extra == 'tpu-post-train'
Requires-Dist: zipp>=3.23.0; extra == 'tpu-post-train'
Requires-Dist: zstandard>=0.25.0; extra == 'tpu-post-train'
Description-Content-Type: text/markdown

<!--
 # Copyright 2023–2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
 -->

# MaxText

[![MaxText Tests](https://github.com/AI-Hypercomputer/maxtext/actions/workflows/build_and_test_maxtext.yml/badge.svg)](https://github.com/AI-Hypercomputer/maxtext/actions/workflows/build_and_test_maxtext.yml)

> **_NOTE:_** We recommend running MaxText with Python 3.12, as it is our primary supported version. Other Python versions may encounter compatibility issues.

MaxText is a high performance, highly scalable, open-source LLM library and reference implementation written in pure Python/[JAX](https://docs.jax.dev/en/latest/jax-101.html) and targeting Google Cloud TPUs and GPUs for training.

MaxText provides a library of high performance models to choose from, including Gemma, Llama, DeepSeek, Qwen, and Mistral. For each of these models, MaxText supports pre-training (up to tens of thousands of chips) and scalable post-training, with popular techniques like Supervised Fine-Tuning (SFT) and Group Relative Policy Optimization (GRPO, a type of Reinforcement Learning) and Group Sequence Policy Optimization (GSPO, a type of Reinforcement Learning).

MaxText achieves high Model FLOPs Utilization (MFU) and tokens/second from single host to very large clusters while staying simple and largely "optimization-free" thanks to the power of JAX and the XLA compiler.

MaxText is the launching point for ambitious LLM projects both in research and production. We encourage you to start by experimenting with MaxText out of the box and then fork and modify MaxText to meet your needs.

Check out our [Read The Docs site](https://maxtext.readthedocs.io/en/latest/) or directly [Get Started](https://maxtext.readthedocs.io/en/latest/tutorials/first_run.html) with your first MaxText run. If you’re interested in Diffusion models (Wan 2.1, Flux, etc), see the [MaxDiffusion](https://github.com/AI-Hypercomputer/maxdiffusion) repository in our AI Hypercomputer GitHub organization.

## Installation

See our installation guide to [install MaxText with pip from PyPI](https://maxtext.readthedocs.io/en/latest/install_maxtext.html#from-pypi-recommended).

## Decoupled mode
See our guide on running MaxText in decoupled mode, without any GCP dependencies in [Decoupled Mode Guide](https://maxtext.readthedocs.io/en/latest/run_maxtext/decoupled_mode.html).

<!-- NEWS START -->

## 🔥 Latest news 🔥

* \[March 6, 2026\] New features from DeepSeek-AI are now supported: Conditional Memory via Scalable Lookup ([Engram](https://arxiv.org/abs/2601.07372)) and Manifold-Constrained Hyper-Connections ([mHC](https://arxiv.org/abs/2512.24880)). Try them out with our [deepseek-custom](https://github.com/AI-Hypercomputer/maxtext/blob/main/src/maxtext/configs/models/deepseek-custom.yml) starter config.
* \[March 5, 2026\] New `tpu-post-train` [target in PyPI](https://pypi.org/project/maxtext). Please also use this installation option for running vllm_decode. See the [MaxText installation instructions](https://maxtext.readthedocs.io/en/latest/install_maxtext.html) for more info.
* \[March 5, 2026\] [Qwen3-Next](https://github.com/AI-Hypercomputer/maxtext/blob/7656eb8d1c9eb0dd91e617a6fdf6ad805221221a/tests/end_to_end/tpu/qwen/next/run_qwen3_next.md) is now supported.
* \[February 27, 2026\] New MaxText structure! MaxText has been restructured according to [RESTRUCTURE.md](https://github.com/AI-Hypercomputer/maxtext/blob/1b9e38aa0a19b6018feb3aed757406126b6953a1/RESTRUCTURE.md). Please feel free to share your thoughts and feedback. 
* \[December 22, 2025\] [Muon optimizer](https://kellerjordan.github.io/posts/muon) is now supported.
* \[December 10, 2025\] DeepSeek V3.1 is now supported. Use existing configs for [DeepSeek V3 671B](https://github.com/AI-Hypercomputer/maxtext/blob/7656eb8d1c9eb0dd91e617a6fdf6ad805221221a/src/maxtext/configs/models/deepseek3-671b.yml) and load in V3.1 checkpoint to use model.
* \[December 9, 2025\] [New RL and SFT Notebook tutorials](https://github.com/AI-Hypercomputer/maxtext/tree/7656eb8d1c9eb0dd91e617a6fdf6ad805221221a/src/maxtext/examples) are available.
* \[December 4, 2025\] The [ReadTheDocs documentation site](https://maxtext.readthedocs.io/en/latest/index.html) has been reorganized.
* \[December 3, 2025\] Multi-host support for GSPO and GRPO is now available via [new RL tutorials](https://maxtext.readthedocs.io/en/latest/tutorials/posttraining/rl_on_multi_host.html).
* \[November 20, 2025\] A new guide, [What is Post Training in MaxText?](https://maxtext.readthedocs.io/en/latest/tutorials/post_training_index.html), is now available.
* \[November 6, 2025\] Ironwood TPU co-designed AI stack announced. Read the [blog post on its co-design with MaxText](https://cloud.google.com/blog/products/compute/inside-the-ironwood-tpu-codesigned-ai-stack?e=48754805).
* \[October 29, 2025\] [Optimized models tiering documentation](https://maxtext.readthedocs.io/en/latest/reference/models/tiering.html) has been refreshed.
* \[October 12, 2025\] Added Versioning. Check out our [first set of release notes](https://maxtext.readthedocs.io/en/latest/release_notes.html)!
* \[October 10, 2025\] Post-Training (SFT, RL) via [Tunix](https://github.com/google/tunix) is now available.
* \[September 26, 2025\] Vocabulary tiling ([PR](https://github.com/AI-Hypercomputer/maxtext/pull/2242)) is now supported in MaxText! Adjust config `num_vocab_tiling` to unlock more efficient memory usage.
* \[September 24, 2025\] The GPT-OSS family of models (20B, 120B) is now supported.
* \[September 15, 2025\] MaxText is now available as a [PyPI package](https://pypi.org/project/maxtext). Users can now [install maxtext through pip](https://maxtext.readthedocs.io/en/latest/guides/install_maxtext.html).
* \[September 5, 2025\] MaxText has moved to an `src` layout as part of [RESTRUCTURE.md](https://github.com/AI-Hypercomputer/maxtext/blob/aca5b24931ebcbadb55a82e56ebffe8024874028/RESTRUCTURE.md). For existing environments, please run `pip install -e .` from MaxText root.
* \[August 13, 2025\] The Qwen3 2507 MoE family of models is now supported: MoEs: 235B Thinking & 480B Coder as well as existing dense models: 0.6B, 4B, 8B, 14B, and 32B.
* \[July 27, 2025\] Updated TFLOPS/s calculation ([PR](https://github.com/AI-Hypercomputer/maxtext/pull/1988)) to account for causal attention, dividing the attention flops in half. Accounted for sliding window and chunked attention reduced attention flops in [PR](https://github.com/AI-Hypercomputer/maxtext/pull/2009) and [PR](https://github.com/AI-Hypercomputer/maxtext/pull/2030). Changes impact large sequence configs, as explained in this [doc](https://maxtext.readthedocs.io/en/latest/reference/performance_metrics.html)
* \[July 16, 2025\] We will be restructuring the MaxText repository for improved organization and clarity. Please review the [proposed structure](https://github.com/AI-Hypercomputer/maxtext/blob/aca5b24931ebcbadb55a82e56ebffe8024874028/RESTRUCTURE.md) and provide feedback.
* \[July 11, 2025\] Multi-Token Prediction (MTP) training support\! Adds an auxiliary loss based on predicting multiple future tokens, inspired by [DeepSeek-V3 paper](https://arxiv.org/html/2412.19437v1), to enhance training efficiency.
* \[June 25, 2025\] DeepSeek R1-0528 variant is now supported.
* \[April 24, 2025\] Llama 4 Maverick models are now supported.
<!-- NEWS END -->

## Use cases

MaxText provides a library of models and demonstrates how to perform pre-training or post-training with high performance and scale.

MaxText leverages [JAX AI libraries](https://docs.jaxstack.ai/en/latest/getting_started.html) and presents a cohesive and comprehensive demonstration of training at scale by using [Flax](https://flax.readthedocs.io/en/latest/) (neural networks), [Tunix](https://github.com/google/tunix) (post-training), [Orbax](https://orbax.readthedocs.io/en/latest/) (checkpointing), [Optax](https://optax.readthedocs.io/en/latest/) (optimization), and [Grain](https://google-grain.readthedocs.io/en/latest/) (dataloading).

In addition to pure text-based LLMs, we also support multi-modal training with Gemma 3 and Llama 4 VLMs.

### Pre-training

If you’re building models from scratch, MaxText can serve as a reference implementation for experimentation, ideation, and inspiration \- just fork and modify MaxText to train your model, whether it’s a small dense model like Llama 8B, or a large MoE like DeepSeek-V3. Experiment with configs and model design to build the most efficient model on TPU or GPU.

MaxText provides opinionated implementations for how to achieve optimal performance across a wide variety of dimensions like sharding, quantization, and checkpointing.

### Post-training

If you are post-training a model, whether it is proprietary or open source, MaxText provides a scalable framework using Tunix. For RL (like GRPO), we leverage vLLM for sampling and Pathways (soon) for multi-host.

Our goal is to provide a variety of models (dimension “a”) and techniques (dimension “b”), so you can easily explore (a) \* (b) combinations and efficiently train the perfect model for your use case.

Check out these getting started guides:

* Supervised Fine Tuning (SFT)
  * [SFT on Single-Host TPUs](https://maxtext.readthedocs.io/en/latest/tutorials/posttraining/sft.html)
  * [SFT on Multi-Host TPUs](https://maxtext.readthedocs.io/en/latest/tutorials/posttraining/sft_on_multi_host.html)
* Reinforcement Learning (RL)
  * [RL on Single-Host TPUs](https://maxtext.readthedocs.io/en/latest/tutorials/posttraining/rl.html)
  * [RL on Multi-Host TPUs](https://maxtext.readthedocs.io/en/latest/tutorials/posttraining/rl_on_multi_host.html)

### Model library

MaxText aims to provide you with the best OSS models, whether as a reference implementation, or to post-train and then serve with vLLM.

**Supported JAX models in MaxText**

* Google
  * Gemma 3 (4B, 12B, 27B)
  * Gemma 2 (2B, 9B, 27B)
  * Gemma 1 (2B, 7B)
* Alibaba
  * Qwen 2.5 (7B, 14B)
  * Qwen 3 MoE 2507 (235B, 480B)
  * Qwen 3 MoE (30B, 235B)
  * Qwen 3 Dense (0.6B, 1.7B, 4B, 8B, 14B, 32B)
* DeepSeek
  * DeepSeek V3.1 (671B)
  * DeepSeek V3 0324 (671B) & DeepSeek R1 0528 (671B)
  * DeepSeek V2 (16B, 236B)
* Meta
  * Llama 4 Scout (109B) & Maverick (400B)
  * Llama 3.3 70B, 3.1 (8B, 70B, 405B), 3.0 (8B, 70B, 405B)
  * Llama 2 (7B, 13B, 70B)
* Open AI
  * GPT-OSS (20B, 120B)
  * GPT3 (52K, 6B, 22B, 175B)
* Mistral
  * Mixtral (8x7B, 8x22B)
  * Mistral (7B)
* Diffusion Models
  * See [MaxDiffusion](https://github.com/AI-Hypercomputer/maxdiffusion) (LTXV, Wan 2.1, Flux, SDXL, etc)

## Get involved

Please join our [Discord Channel](https://discord.com/invite/2H9PhvTcDU) and if you have feedback, you can file a feature request, documentation request, or bug report [here](https://github.com/AI-Hypercomputer/maxtext/issues/new/choose).

## License

[Apache License 2.0](LICENSE)
