feat(mia): one-shot Make-It-Animatable v2 auto-rigger on fv-ml1 GPU 3 (scripts/mia-run)
Image local/mia:0.1.0 built from stacks/mia: MIA v2 @ bbd8b158 (MIT) with its pinned submodules, dread-dev's proven Python lock with the torch family swapped to cu129, and a driver adapted from dread-dev's run_mia.py that seeds every mesh (fix_random + trimesh's module RNG) and writes weights_effective into the npz. Weights stay in fv-ml1's shared HF cache at pinned revisions, mounted read-only. scripts/mia-run mirrors blender-run: --job DIR is shipped to fv-ml1:/tank/mia/jobs, one docker run --rm rigs every mesh, out/ comes back. Acceptance on the four Dread Naught characters: 3.9-4.7 s a mesh (median of 3) plus 12.7 s model load, peak 3,394 MiB; seeded runs bit-identical across rotated mesh order; GPU-vs-CPU distances the same size as sampling noise, with an unseeded GPU run as the positive control.
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
# Make-It-Animatable (MIA) v2: one-shot ML auto-rigger for humanoid meshes (GLB in, 52-bone
|
||||
# Mixamo-style skeleton + skin weights out). Run by scripts/mia-run on fv-ml1 GPU 3, for dread-dev
|
||||
# (Dread Naught), Prime's request 2026-10-01. NOT a seat: each run is a `docker run --rm` that
|
||||
# rigs, writes the job's out/, exits and hands the GPU back.
|
||||
#
|
||||
# Code: github.com/jasongzy/Make-It-Animatable, branch v2 @ MIA_COMMIT (MIT), cloned with the
|
||||
# submodules that commit pins (util/Hunyuan3D_21 @ b691197, util/auto_rig_pro, util/3dgs-render-
|
||||
# blender-addon). Python: requirements.lock (dread-dev's proven CPU venv, torch family swapped to
|
||||
# cu129). Upstream app_v2.py is UNPATCHED: dread-dev's CPU patch only upcasts on CPU.
|
||||
#
|
||||
# Weights are NOT baked in. /tank/aimodels/huggingface is bind-mounted read-only at /hf, and the two
|
||||
# pinned snapshots are reached through the symlinks made below:
|
||||
# repo/output -> jasongzy/Make-It-Animatable @ MIA_WEIGHTS_REV (output/best/v2/*.pth, Apache-2.0)
|
||||
# repo/data/Standard Run.fbx, repo/data/examples -> the same snapshot (init_blocks() reads
|
||||
# data/examples/log.csv even headless; without it the driver dies before the first mesh)
|
||||
# /opt/mia/hy3dgen/tencent/Hunyuan3D-2.1 -> tencent/Hunyuan3D-2.1 @ HY3D_REV (hunyuan3d-vae-v2-1)
|
||||
# repo/data/Mixamo/bones.fbx -> "Standard Run.fbx": the official template sits in the GATED HF
|
||||
# dataset jasongzy/Mixamo, whose terms were not accepted on Prime's account. It sets bone roll
|
||||
# only, never joints or weights (dread-dev, 2026-10-01). Accepting those terms is Prime's call.
|
||||
FROM python:3.11-slim-bookworm
|
||||
|
||||
ARG MIA_COMMIT=bbd8b158d88879c310ad130f9b25056935d221e9
|
||||
ARG MIA_WEIGHTS_REV=ca0daf6cb164f939e77bf32667513fc7558d5f98
|
||||
ARG HY3D_REV=0b94677654c57bb9a6b6845cd7b704ccf551d327
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive \
|
||||
PIP_DISABLE_PIP_VERSION_CHECK=1 \
|
||||
PYTHONUNBUFFERED=1 \
|
||||
PYTHONDONTWRITEBYTECODE=1 \
|
||||
HF_HOME=/hf \
|
||||
HF_HUB_OFFLINE=1 \
|
||||
GRADIO_ANALYTICS_ENABLED=False \
|
||||
MPLCONFIGDIR=/tmp/mpl \
|
||||
HY3DGEN_MODELS=/opt/mia/hy3dgen \
|
||||
HOME=/tmp
|
||||
|
||||
# git for the clone; the X11/GL libs are what the bpy 4.3 wheel links against (import fails without).
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
git ca-certificates libgl1 libegl1 libglib2.0-0 libx11-6 libxrender1 libxxf86vm1 libxfixes3 \
|
||||
libxi6 libxkbcommon0 libsm6 libice6 libgomp1 \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# UV_LINK_MODE=copy: uv's default clone (reflink) fails on the build's overlay fs, "os error 22".
|
||||
COPY requirements.lock /opt/mia/requirements.lock
|
||||
RUN pip install -q uv \
|
||||
&& UV_LINK_MODE=copy uv pip install --system --no-cache --index-strategy unsafe-best-match \
|
||||
--extra-index-url https://download.pytorch.org/whl/cu129 \
|
||||
--extra-index-url https://download.blender.org/pypi/ \
|
||||
--extra-index-url https://miropsota.github.io/torch_packages_builder \
|
||||
--find-links https://data.pyg.org/whl/torch-2.8.0+cu129.html \
|
||||
-r /opt/mia/requirements.lock \
|
||||
&& uv pip freeze --system > /opt/mia/freeze.txt
|
||||
|
||||
RUN git clone --single-branch --branch v2 https://github.com/jasongzy/Make-It-Animatable /opt/mia/repo \
|
||||
&& cd /opt/mia/repo && git checkout -q "$MIA_COMMIT" && git submodule update --init --recursive -q \
|
||||
&& git -C util/Hunyuan3D_21 rev-parse HEAD > /opt/mia/hunyuan3d_21.commit \
|
||||
&& rm -rf .git util/*/.git output \
|
||||
&& W=/hf/hub/models--jasongzy--Make-It-Animatable/snapshots/$MIA_WEIGHTS_REV \
|
||||
&& ln -s "$W/output" output \
|
||||
&& ln -s "$W/data/Standard Run.fbx" "data/Standard Run.fbx" \
|
||||
&& ln -s "$W/data/examples" data/examples \
|
||||
&& mkdir -p data/Mixamo && ln -s "../Standard Run.fbx" data/Mixamo/bones.fbx \
|
||||
&& mkdir -p /opt/mia/hy3dgen/tencent \
|
||||
&& ln -s /hf/hub/models--tencent--Hunyuan3D-2.1/snapshots/$HY3D_REV /opt/mia/hy3dgen/tencent/Hunyuan3D-2.1 \
|
||||
&& printf 'MIA_COMMIT=%s\nMIA_WEIGHTS_REV=%s\nHY3D_REV=%s\n' "$MIA_COMMIT" "$MIA_WEIGHTS_REV" "$HY3D_REV" > /opt/mia/provenance
|
||||
|
||||
COPY mia_driver.py /opt/mia/mia_driver.py
|
||||
WORKDIR /job
|
||||
ENTRYPOINT ["python", "/opt/mia/mia_driver.py"]
|
||||
Reference in New Issue
Block a user