# UniMate unified environment — one env for everything: data processing, # rendering, training, inference and evaluation (Python 3.10, CUDA 12.4). # # conda create -n unimate python=3.10 -y # conda activate unimate # pip install "setuptools<81" # pip install -r requirements.txt --no-build-isolation # # The Motion git dependency has a legacy setup.py that imports pkg_resources, # which setuptools >= 81 no longer ships. Isolated builds always use the # newest setuptools, so the install must run with --no-build-isolation # against an env setuptools < 81 — installed by the step above (fresh conda # envs ship setuptools >= 81 too); the pin below keeps it from upgrading. # # Only direct dependencies are listed; everything else (CUDA runtime libs, # tokenizers, HTTP stack, ...) is resolved transitively by pip. Versions are # pinned to the combination this project is developed and tested against; # `mathutils` / `bmesh` need no line of their own (they ship inside the bpy # wheel), nor does `mpl_toolkits` (inside matplotlib). # PyTorch cu124 wheels (torch / torchvision "+cu124" pins below) --extra-index-url https://download.pytorch.org/whl/cu124 # Blender official wheel index — PyPI no longer hosts cp310 bpy wheels --extra-index-url https://download.blender.org/pypi/ setuptools<81 # keeps pkg_resources available (Motion build) # ── Core / training ────────────────────────────────────────────────────────── numpy==2.2.6 torch==2.5.1+cu124 # Pulled in by the CLIP text encoder (clip/clip.py imports torchvision.transforms # at module load). Pinned to the matching +cu124 build so pip cannot resolve a # torchvision compiled against a different torch/CUDA and drag torch with it. torchvision==0.20.1+cu124 torch-geometric==2.7.0 # GCN graph embedding (use_graph_emb) torchdiffeq==0.2.5 # ODE/SDE integrators for flow matching einops==0.8.2 accelerate==1.14.0 # multi-GPU + mixed-precision training; transformers 5.x needs >=1.1 tensorboard==2.20.0 # training logs (SummaryWriter) # ── Text conditioning (T5 / CLIP / BERT) & VLM captioning ──────────────────── transformers==5.16.1 # T5/BERT text encoders; local Qwen3-VL captioner needs >=4.57, Qwen3.5 (qwen3_5 arch) needs 5.x sentencepiece==0.2.1 # T5 tokenizer backend clip @ git+https://github.com/openai/CLIP.git # CLIP text encoder # spaCy must stay on the 3.8 line: the model wheel below is built for it and a # 3.9/4.x resolution would install a spaCy that cannot load it. spacy>=3.8,<3.9 # T5 conditioner text normalization # spaCy language model. Listing it here keeps offline compute nodes working: # the code's spacy.cli.download fallback needs internet access. en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl num2words==0.5.14 # number → word expansion in text normalization openai==3.3.1 # OpenAI-compatible backends (captioning; DeepSeek/GPT joint annotation) google-genai==2.19.0 # Gemini caption backend ("from google import genai") # OPTIONAL — fused attention for the local Qwen3-VL captioner. The loader # falls back to SDPA when absent, and the prebuilt wheels only exist for a # few exact torch/CUDA/Python combinations (a source build takes an hour+), # so it is not installed by default: # pip install flash-attn==2.7.4.post1 --no-build-isolation # ── Hugging Face Hub ───────────────────────────────────────────────────────── # Also a transformers dependency, but listed on its own because the download # stage shells out to the `hf` CLI this package installs # (data_process/scripts/run_download.sh). The standalone installer at # https://hf.co/cli/install.sh works too if you prefer it outside the env. huggingface_hub==1.29.0 # ── Motion / animation library (Holden-style Animation / Quaternions / # InverseKinematics; used across data_process/) ─────────────────────────── Motion @ git+https://github.com/inbar-2344/Motion.git # ── Blender as a Python module (motion_export/, motion_rendering/, # mesh_animation/). The EEVEE render stage requires the pip module; # export/animate can alternatively run via `blender -b -P`. Pinned to the # last cp310 release, served from download.blender.org (see index above); # 4.1+ drops Python 3.10 and 4.2+ changes the EEVEE API. ────────────────── bpy==4.0.0 # ── Visualization / imaging ────────────────────────────────────────────────── matplotlib==3.10.8 imageio==2.37.3 imageio-ffmpeg==0.6.0 # mp4 encoding backend for imageio pillow==12.2.0 # ── CLI / logging ──────────────────────────────────────────────────────────── tyro==1.0.12 # config + CLI overrides rich==14.3.3 loguru==0.7.3 tqdm==4.67.3