Spaces:
Running
Running
| FROM pytorch/pytorch:2.10.0-cuda13.0-cudnn9-runtime | |
| # ------------------------------------------------ | |
| # System packages | |
| # ------------------------------------------------ | |
| # [修正1] python3-distutils は Ubuntu 24.04 / Python 3.12 で廃止済み。 | |
| # python3-setuptools で代替。 | |
| # [最適化] libjemalloc2: 大テンソルの確保/解放時の断片化を抑制。 | |
| RUN apt-get update && \ | |
| apt-get install -y --no-install-recommends \ | |
| git \ | |
| wget \ | |
| python3-venv \ | |
| python3-setuptools \ | |
| libjemalloc2 && \ | |
| apt-get clean && \ | |
| rm -rf /var/lib/apt/lists/* | |
| RUN useradd -rm -d /home/hf -s /bin/bash -g root -G sudo -u 1001 hf | |
| # ------------------------------------------------ | |
| # Global performance / memory optimization | |
| # ------------------------------------------------ | |
| # [修正2] PYTORCH_ENABLE_MPS_FALLBACK は Apple Silicon 専用。Linux では削除。 | |
| # [修正3] HF_HOME/TRANSFORMERS_CACHE を /tmp 直下 → /tmp/hf_cache に変更。 | |
| ENV TRANSFORMERS_CACHE=/tmp/hf_cache | |
| ENV HF_HOME=/tmp/hf_cache | |
| ENV PYTHONUNBUFFERED=1 | |
| ENV PYTHONDONTWRITEBYTECODE=1 | |
| ENV TOKENIZERS_PARALLELISM=false | |
| # ------------------------------------------------ | |
| # CPU 最適化環境変数 (静的に設定できるもの) | |
| # ------------------------------------------------ | |
| # KMP_BLOCKTIME=0: アイドルスレッドが即スリープ → 推論ループ間のウェイクアップ遅延ゼロ | |
| ENV KMP_BLOCKTIME=0 | |
| # KMP_AFFINITY: スレッドを物理コアに密集配置し HT を活用 (スレッド数固定なし) | |
| ENV KMP_AFFINITY=granularity=fine,compact,1,0 | |
| # OMP_WAIT_POLICY=ACTIVE: OpenMP スレッドをビジーウェイト → 短タスク間の再起動コスト削減 | |
| ENV OMP_WAIT_POLICY=ACTIVE | |
| # oneDNN プリミティブキャッシュ拡大 → 同一 shape 演算の再コンパイルを削減 | |
| ENV ONEDNN_PRIMITIVE_CACHE_CAPACITY=1024 | |
| # jemalloc をアロケータとして使用 → 断片化抑制 | |
| ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2 | |
| # [修正6] Python 内部アロケータ (pymalloc) をバイパスし、小オブジェクトも | |
| # jemalloc に直結する。pymalloc はメモリを自身のヒープに溜め込み | |
| # LD_PRELOAD 経由の jemalloc に戻さないため、RSS が肥大化する。 | |
| ENV PYTHONMALLOC=malloc | |
| # ------------------------------------------------ | |
| # スレッド数は entrypoint.sh で nproc を使って動的設定。 | |
| # ENV に静的に書くと Docker ビルド時の値に固定されてしまい、 | |
| # 実行環境の CPU 数と一致しない場合に 50% 止まりになる。 | |
| # ------------------------------------------------ | |
| WORKDIR /home/hf | |
| # ------------------------------------------------ | |
| # entrypoint.sh を配置 | |
| # ------------------------------------------------ | |
| COPY --chown=root:root entrypoint.sh /usr/local/bin/entrypoint.sh | |
| RUN chmod +x /usr/local/bin/entrypoint.sh | |
| USER hf | |
| # ------------------------------------------------ | |
| # ComfyUI | |
| # ------------------------------------------------ | |
| RUN git clone https://github.com/comfyanonymous/ComfyUI | |
| WORKDIR /home/hf/ComfyUI | |
| ENV VIRTUAL_ENV=/home/hf/ComfyUI/venv | |
| RUN python3 -m venv $VIRTUAL_ENV | |
| ENV PATH="$VIRTUAL_ENV/bin:$PATH" | |
| RUN pip install --upgrade pip | |
| RUN pip install --no-cache-dir --prefer-binary -r requirements.txt | |
| # ------------------------------------------------ | |
| # models | |
| # ------------------------------------------------ | |
| RUN wget -nv -c \ | |
| https://huggingface.co/circlestone-labs/Anima/resolve/main/split_files/diffusion_models/anima-preview2.safetensors \ | |
| -P ./models/diffusion_models/ | |
| RUN wget -nv -c \ | |
| https://huggingface.co/circlestone-labs/Anima/resolve/main/split_files/text_encoders/qwen_3_06b_base.safetensors \ | |
| -P ./models/text_encoders/ | |
| RUN wget -nv -c \ | |
| https://huggingface.co/circlestone-labs/Anima/resolve/main/split_files/vae/qwen_image_vae.safetensors \ | |
| -P ./models/vae/ | |
| RUN wget -nv -c \ | |
| https://huggingface.co/Einhorn/Anima-Preview2-Turbo-LoRA/resolve/main/anima_turbo_distill_preview2_14step.safetensors \ | |
| -P ./models/loras/ | |
| RUN mkdir temp && chmod 777 temp | |
| # ------------------------------------------------ | |
| # AMP (自動混合精度) 設定 | |
| # ------------------------------------------------ | |
| # torch.amp.autocast("cpu") は CPU AMP API であり、 | |
| # コードレベルの context manager のため Dockerfile から直接制御できない。 | |
| # CPU AMP でサポートされる低精度型は BF16 のみ (FP16 は CPU では非対応)。 | |
| # ComfyUI の --bf16-* フラグは内部で torch.amp.autocast("cpu", dtype=bfloat16) | |
| # 相当の処理を有効化する。これが Dockerfile レベルで設定できる唯一の手段。 | |
| # | |
| # --force-fp32 はアキュムレーション (累積演算) を FP32 に固定し、 | |
| # BF16 演算の精度劣化を最小限に抑える (AMP の標準パターン)。 | |
| # ------------------------------------------------ | |
| # Launch ComfyUI (CPU optimized) | |
| # ------------------------------------------------ | |
| # [修正4] --lowvram: GPU VRAM 管理フラグ。CPU モードで削除。 | |
| # [修正5] --use-split-cross-attention: GPU 専用。 | |
| # --use-pytorch-cross-attention (CPU 対応) に置換。 | |
| # [最適化] --preview-method none: CPU での VAE デコードを省いて本推論に集中。 | |
| ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] | |
| CMD ["python", "main.py", \ | |
| "--cpu", \ | |
| "--listen", "0.0.0.0", \ | |
| "--port", "7860", \ | |
| "--output-directory", "./temp", \ | |
| "--bf16-unet", \ | |
| "--bf16-vae", \ | |
| "--bf16-text-enc", \ | |
| "--cache-none", \ | |
| "--use-pytorch-cross-attention"] |