File size: 4,129 Bytes
1eb0a6e 551c222 1eb0a6e 551c222 3a5ed88 551c222 1eb0a6e 551c222 af023a0 551c222 1eb0a6e 551c222 af023a0 551c222 1eb0a6e 551c222 3f52be4 af023a0 3f52be4 551c222 1eb0a6e 551c222 3a5ed88 551c222 3a5ed88 02f78cf 3a5ed88 03bf791 3a5ed88 02f78cf 9f91b0f 02f78cf 3a5ed88 | 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 | FROM python:3.11-slim
# ------------------------------------------------
# 1. システムパッケージ & jemalloc の導入
# ------------------------------------------------
RUN apt-get update && \
apt-get install -y --no-install-recommends \
git \
wget \
gcc \
g++ \
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
# ------------------------------------------------
# 2. 基本環境変数 & メモリアロケータ最適化
# ------------------------------------------------
ENV TRANSFORMERS_CACHE=/tmp/hf_cache
ENV HF_HOME=/tmp/hf_cache
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1
ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2
ENV MALLOC_CONF="background_thread:true,metadata_thp:auto,dirty_decay_ms:20000,muzzy_decay_ms:20000"
# 💡 チューニング:全力でCPUを回すため WAIT_POLICY をデフォルト(ACTIVE側)に戻します
ENV KMP_BLOCKTIME=1
ENV DNNL_DEFAULT_FPMATH_MODE=BF16
ENV ONEDNN_PRIMITIVE_CACHE_CAPACITY=512
WORKDIR /home/hf
USER hf
# ------------------------------------------------
# 3. ComfyUI の展開と、デグレードを起こさない pip インストール
# ------------------------------------------------
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"
# 💡 修正:最初にCPU専用リポジトリから torch 関連をピンポイントで導入。
# その後、通常のPyPIインデックスから残りの依存関係(requirements.txt)を安全に解決します。
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu && \
pip install --no-cache-dir -r requirements.txt
# ------------------------------------------------
# 4. モデルのダウンロード
# ------------------------------------------------
RUN wget -nv -c https://huggingface.co/circlestone-labs/Anima/resolve/main/split_files/diffusion_models/anima-base-v1.0.safetensors -P ./models/diffusion_models/ && \
wget -nv -c https://huggingface.co/circlestone-labs/Anima/resolve/main/split_files/text_encoders/qwen_3_06b_base.safetensors -P ./models/text_encoders/ && \
wget -nv -c https://huggingface.co/circlestone-labs/Anima/resolve/main/split_files/vae/qwen_image_vae.safetensors -P ./models/vae/
RUN mkdir temp && chmod 777 temp
# ------------------------------------------------
# 5. 起動コマンド(スレッド緊縛・CPU全力駆動版)
# ------------------------------------------------
CMD quota_v2="/sys/fs/cgroup/cpu.max"; \
quota_v1="/sys/fs/cgroup/cpu/cpu.cfs_quota_us"; \
period_v1="/sys/fs/cgroup/cpu/cpu.cfs_period_us"; \
COMPUTE_CORES=""; \
if [ -f "$quota_v2" ]; then \
read -r q p < "$quota_v2"; \
if [ "$q" != "max" ] && [ "$p" -gt 0 ]; then \
COMPUTE_CORES=$(( (q + p - 1) / p )); \
fi; \
elif [ -f "$quota_v1" ] && [ -f "$period_v1" ]; then \
q=$(cat "$quota_v1"); p=$(cat "$period_v1"); \
if [ "$q" -gt 0 ] && [ "$p" -gt 0 ]; then \
COMPUTE_CORES=$(( (q + p - 1) / p )); \
fi; \
fi; \
if [ -z "$COMPUTE_CORES" ] || [ "$COMPUTE_CORES" -le 0 ]; then \
COMPUTE_CORES=$(nproc); \
fi; \
export OMP_NUM_THREADS=$COMPUTE_CORES && \
export MKL_NUM_THREADS=$COMPUTE_CORES && \
export TORCH_NUM_THREADS=$COMPUTE_CORES && \
export OMP_PROC_BIND=CLOSE && \
export OMP_PLACES=CORES && \
export OMP_SCHEDULE=STATIC && \
export KMP_AFFINITY=granularity=fine,compact,1,0 && \
echo "=== 🚀 Max Dynamic CPU Threading Engaged: $COMPUTE_CORES ===" && \
python main.py \
--cpu \
--listen 0.0.0.0 \
--port 7860 \
--output-directory ./temp \
--bf16-unet \
--bf16-vae \
--bf16-text-enc \
--use-pytorch-cross-attention \
--preview-method none |