File size: 6,224 Bytes
857c2e9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 | # ==================================================================================
# 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 |