# ================================================================================== # Project Metadata # Defines core information about the package. # ================================================================================== [project] name = "robometer" version = "0.0.1" # You can update this as you release new versions description = "Robometer: scalable reward modeling with progress and preference" readme = "README.md" requires-python = "==3.10.*" # Based on your GitHub repo's setup authors = [ { name = "Anthony Liang", email = "aliang80@usc.edu" } ] # ================================================================================== # Dependencies # This section lists the direct dependencies of your project. # It is best practice to list only the packages your code directly imports, # not every package from your environment. Tools like 'uv' or 'pip' will # resolve and install the dependencies of these packages automatically. # ================================================================================== dependencies = [ "accelerate>=1.9.0", "datasets==4.1.1", "einops>=0.8.0", "evaluate>=0.4.3", "h5py>=3.10.0", "huggingface-hub[hf-xet]>0.35", "numpy>=1.21.0", # Compatible with modern PyTorch "matplotlib>=3.5.0", "peft", "pyrallis>=0.3.0", "safetensors>=0.6.0rc0", "sentence-transformers>=2.0.0", "tqdm>=4.67.1", "wandb>=0.20.1", "pyyaml>=6.0.0", "rich>=14.0.0", "soundfile>=0.13.1", "ipdb>=0.13.13", "hf_transfer>=0.1.0", "gradio>=4.0.0", "pillow>=9.0.0", "ffmpeg", "termcolor>=3.1.0", "qwen-vl-utils[decord]==0.0.14", "fastapi>=0.116.1", "uvicorn>=0.35.0", "requests>=2.32.4", "google-generativeai", # For RL-VLM-F baseline (Gemini API) "scipy>=1.15.3", "codetiming>=1.4.0", "robosuite==1.4.0", "imageio>=2.37.0", "omegaconf>=2.3.0", "opencv-python-headless>=4.8.0", "opencv-contrib-python-headless>=4.8.0", # Additional OpenCV modules "einops>=0.8.0", "num2words", "seaborn", "bitsandbytes", "torch==2.8.0", # Required for Qwen models, xformers, and modern transformers. Use CUDA build on Linux via tool.uv.sources "torchvision", "moviepy", "wandb[media]", "torchcodec", "decord>=0.6.0", "unsloth>=2025.10", "gymnasium>=1.2.2", "metaworld>=3.0.0", "loguru>=0.7.3", "xformers==0.0.32.post2", "tensorboard", "requests", "hydra-core", "omegaconf", "tensorflow-datasets==4.9.2", # just for oxe and other tfds dataset uploading "tensorflow==2.19", # just for oxe and other tfds dataset uploading "tf-keras>=2.19.0", # just for oxe and other tfds dataset uploading "protobuf<3.21", # just for oxe and other tfds dataset uploading ] [project.urls] Repository = "https://github.com/aliang8/robometer" # ================================================================================== # Optional Dependencies # These are groups of dependencies for specific purposes, like development or # running optional features. Install with `uv pip install .[dev]` # ================================================================================== [project.optional-dependencies] dev = [ "pytest>=8.0.0", "ruff>=0.8.0", "pre-commit>=4.0.0", "ipykernel", "ipywidgets", ] quantization = [ "bitsandbytes>=0.46.1", # Linux/Windows only - for model quantization ] # Standard Robometer/training installation (includes transformers and trl) robometer = [ "transformers>=4.57", "trl==0.20.0", ] # VLAC baseline installation (conflicts with robometer versions - use separate environment) vlac = [ "transformers<4.52", # Required by evo-vlac "trl>=0.13,<0.17", # Required by evo-vlac "evo-vlac @ git+https://github.com/InternRobotics/VLAC.git", ] # ================================================================================== # Build System # Specifies how your project should be packaged. Hatchling is a modern, # fast, and recommended build backend. # ================================================================================== [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["robometer"] [tool.hatch.metadata] allow-direct-references = true # ================================================================================== # Tool Configuration # Settings for various development tools like 'uv', 'ruff' (linter), etc. # ================================================================================== # Configuration for the 'uv' package manager [tool.uv] # Declare that robometer and vlac optional dependencies are incompatible # They have conflicting trl and transformers version requirements conflicts = [ [ { extra = "robometer" }, { extra = "vlac" }, ], ] # This section could be used for advanced features like overriding dependencies # from your environment if needed, similar to the 'openpi' example. #override-dependencies = ["av<16.0.0"] # Ensure flash-attn builds against the same Torch that's in your env [tool.uv.extra-build-dependencies] flash-attn = [{ requirement = "torch", match-runtime = true }] # Tell flash-attn to use a prebuilt wheel instead of compiling CUDA kernels [tool.uv.extra-build-variables] flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" } # Specify PyTorch CUDA index for Linux/Windows (CUDA 12.8 builds) [tool.uv.sources] torch = { index = "pytorch-cu128", marker = "sys_platform == 'linux' or sys_platform == 'win32'" } torchvision = { index = "pytorch-cu128", marker = "sys_platform == 'linux' or sys_platform == 'win32'" } [[tool.uv.index]] name = "pytorch-cu128" url = "https://download.pytorch.org/whl/cu128" explicit = true # Tool configuration for the 'ruff' linter and formatter [tool.ruff] line-length = 120 target-version = "py310" fix = true unsafe-fixes = true # <- allow deletions that might have side effects; optional, use with care [tool.ruff.lint] select = ["E", "W", "F", "I", "B", "C4", "UP", "RUF"] ignore = ["T201"] [tool.ruff.lint.isort] combine-as-imports = true split-on-trailing-comma = true [tool.ruff.format] preview = true