rikunarita-2 commited on
Commit
3a5ed88
·
verified ·
1 Parent(s): af023a0

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +54 -53
Dockerfile CHANGED
@@ -1,14 +1,14 @@
1
- FROM pytorch/pytorch:2.11.0-cuda13.0-cudnn9-runtime
2
 
3
  # ------------------------------------------------
4
- # System packages
5
  # ------------------------------------------------
6
  RUN apt-get update && \
7
  apt-get install -y --no-install-recommends \
8
  git \
9
  wget \
10
- python3-venv \
11
- python3-setuptools \
12
  libjemalloc2 && \
13
  apt-get clean && \
14
  rm -rf /var/lib/apt/lists/*
@@ -23,43 +23,27 @@ ENV HF_HOME=/tmp/hf_cache
23
  ENV PYTHONUNBUFFERED=1
24
  ENV PYTHONDONTWRITEBYTECODE=1
25
 
26
- # ------------------------------------------------
27
- # メモリアロケータ設定の強化
28
- # ------------------------------------------------
29
  ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2
30
- # 💡 jemallocのバックグラウンドスレッドを有効化し、断片化とメモリ肥大化を徹底抑制
31
  ENV MALLOC_CONF="background_thread:true,metadata_thp:auto,dirty_decay_ms:20000,muzzy_decay_ms:20000"
32
 
33
  # ------------------------------------------------
34
- # スレッド数 (🔥 物理2アに合わせて「2」に削減)
35
  # ------------------------------------------------
36
- # ディープラーニCPU推論は、HT(論理コア)を使うとAVX-512ユニットを奪い合って逆遅くなります
37
- ENV OMP_NUM_THREADS=2
38
- ENV MKL_NUM_THREADS=2
39
- ENV TORCH_NUM_INTEROP_THREADS=1
40
 
41
- # ------------------------------------------------
42
- # Intel OpenMP チューニング (🔥 常時100%全力スピンモード)
43
- # ------------------------------------------------
44
- # 物理2コアに綺麗にバインド
45
- ENV KMP_AFFINITY=granularity=fine,compact
46
-
47
- # 💡 スレッドを絶対に休ませないための2つの魔法
48
- ENV OMP_WAIT_POLICY=ACTIVE
49
- ENV KMP_BLOCKTIME=infinite
50
-
51
- # ------------------------------------------------
52
- # oneDNN チューニング
53
- # ------------------------------------------------
54
  ENV DNNL_DEFAULT_FPMATH_MODE=BF16
55
  ENV ONEDNN_PRIMITIVE_CACHE_CAPACITY=512
56
 
57
  WORKDIR /home/hf
58
-
59
  USER hf
60
 
61
  # ------------------------------------------------
62
- # ComfyUI
63
  # ------------------------------------------------
64
  RUN git clone https://github.com/comfyanonymous/ComfyUI
65
  WORKDIR /home/hf/ComfyUI
@@ -68,36 +52,53 @@ ENV VIRTUAL_ENV=/home/hf/ComfyUI/venv
68
  RUN python3 -m venv $VIRTUAL_ENV
69
  ENV PATH="$VIRTUAL_ENV/bin:$PATH"
70
 
71
- # 💡 キャッシュを生成せず、IPEX(Intel Extension for PyTorch)追加インストール
 
72
  RUN pip install --no-cache-dir --upgrade pip && \
73
- pip install --no-cache-dir --prefer-binary -r requirements.txt && \
 
74
  pip install --no-cache-dir intel-extension-for-pytorch
75
 
76
  # ------------------------------------------------
77
- # models
78
  # ------------------------------------------------
79
-
80
- RUN wget -nv -c \
81
- https://huggingface.co/circlestone-labs/Anima/resolve/main/split_files/diffusion_models/anima-base-v1.0.safetensors \
82
- -P ./models/diffusion_models/
83
-
84
- RUN wget -nv -c \
85
- https://huggingface.co/circlestone-labs/Anima/resolve/main/split_files/text_encoders/qwen_3_06b_base.safetensors \
86
- -P ./models/text_encoders/
87
-
88
- RUN wget -nv -c \
89
- https://huggingface.co/circlestone-labs/Anima/resolve/main/split_files/vae/qwen_image_vae.safetensors \
90
- -P ./models/vae/
91
 
92
  RUN mkdir temp && chmod 777 temp
93
 
94
- CMD ["python", "main.py", \
95
- "--cpu", \
96
- "--listen", "0.0.0.0", \
97
- "--port", "7860", \
98
- "--output-directory", "./temp", \
99
- "--bf16-unet", \
100
- "--bf16-vae", \
101
- "--bf16-text-enc", \
102
- "--use-pytorch-cross-attention", \
103
- "--preview-method", "none"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.10-slim
2
 
3
  # ------------------------------------------------
4
+ # システムパッケージ & jemalloc の導入
5
  # ------------------------------------------------
6
  RUN apt-get update && \
7
  apt-get install -y --no-install-recommends \
8
  git \
9
  wget \
10
+ gcc \
11
+ g++ \
12
  libjemalloc2 && \
13
  apt-get clean && \
14
  rm -rf /var/lib/apt/lists/*
 
23
  ENV PYTHONUNBUFFERED=1
24
  ENV PYTHONDONTWRITEBYTECODE=1
25
 
26
+ # 💡 バグ修正:構文エラーを直し、jemallocによるメモリ断片化抑制を確実に有効化
 
 
27
  ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2
 
28
  ENV MALLOC_CONF="background_thread:true,metadata_thp:auto,dirty_decay_ms:20000,muzzy_decay_ms:20000"
29
 
30
  # ------------------------------------------------
31
+ # OpenMP / スレッドチューニング(ンテナ環境向け最適化)
32
  # ------------------------------------------------
33
+ # 💡 仮想化(vCPU)コテナ環境鉄則ある「PASSIVE」変更。
34
+ # 無駄なスレッドのスピン(CPUの奪い合い)を排除し、処理効率を劇的に向上させます。
35
+ ENV OMP_WAIT_POLICY=PASSIVE
36
+ ENV KMP_BLOCKTIME=0
37
 
38
+ # oneDNN チューニング(BF16高速化を有効化)
 
 
 
 
 
 
 
 
 
 
 
 
39
  ENV DNNL_DEFAULT_FPMATH_MODE=BF16
40
  ENV ONEDNN_PRIMITIVE_CACHE_CAPACITY=512
41
 
42
  WORKDIR /home/hf
 
43
  USER hf
44
 
45
  # ------------------------------------------------
46
+ # ComfyUI のセットアップ
47
  # ------------------------------------------------
48
  RUN git clone https://github.com/comfyanonymous/ComfyUI
49
  WORKDIR /home/hf/ComfyUI
 
52
  RUN python3 -m venv $VIRTUAL_ENV
53
  ENV PATH="$VIRTUAL_ENV/bin:$PATH"
54
 
55
+ # 💡 変更:CPU専用版のPyTorchを明示的にインストール
56
+ # これにより、Intel CPUのoneDNN(高速化命令)を直接叩ける最適なバイナリが導入されます。
57
  RUN pip install --no-cache-dir --upgrade pip && \
58
+ pip install --no-cache-dir torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu && \
59
+ pip install --no-cache-dir -r requirements.txt && \
60
  pip install --no-cache-dir intel-extension-for-pytorch
61
 
62
  # ------------------------------------------------
63
+ # モデルのダウンロード(高速化のためレイヤーを統合)
64
  # ------------------------------------------------
65
+ 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/ && \
66
+ wget -nv -c https://huggingface.co/circlestone-labs/Anima/resolve/main/split_files/text_encoders/qwen_3_06b_base.safetensors -P ./models/text_encoders/ && \
67
+ wget -nv -c https://huggingface.co/circlestone-labs/Anima/resolve/main/split_files/vae/qwen_image_vae.safetensors -P ./models/vae/
 
 
 
 
 
 
 
 
 
68
 
69
  RUN mkdir temp && chmod 777 temp
70
 
71
+ # ------------------------------------------------
72
+ # 5. 起動コマンド(cgroupsによる割り当てコア数の厳密な自動検知)
73
+ # ------------------------------------------------
74
+ # 💡 誤検知防止: ホストの物理コア数ではなく、cgroups (v1/v2) のリソース制限から
75
+ # コンテナに真に割り当てられている実効コア数(Quota / Period)を動的に算出します。
76
+ CMD export COMPUTE_CORES=$(python3 -c " \
77
+ import os, math; \
78
+ q_v2='/sys/fs/cgroup/cpu.max'; \
79
+ q_v1='/sys/fs/cgroup/cpu/cpu.cfs_quota_us'; \
80
+ p_v1='/sys/fs/cgroup/cpu/cpu.cfs_period_us'; \
81
+ limit=0; \
82
+ if os.path.exists(q_v2): \
83
+ v=open(q_v2).read().split(); \
84
+ if len(v)==2 and v[0]!='max': limit=math.ceil(float(v[0])/float(v[1])); \
85
+ elif os.path.exists(q_v1) and os.path.exists(p_v1): \
86
+ q=float(open(q_v1).read()); p=float(open(p_v1).read()); \
87
+ if q>0 and p>0: limit=math.ceil(q/p); \
88
+ if limit<=0: \
89
+ try: limit=len(os.sched_getaffinity(0)) \
90
+ except: limit=os.cpu_count() or 1; \
91
+ print(max(1, limit))") && \
92
+ export OMP_NUM_THREADS=$COMPUTE_CORES && \
93
+ export MKL_NUM_THREADS=$COMPUTE_CORES && \
94
+ echo "=== Detected Allocated CPU Cores: $COMPUTE_CORES ===" && \
95
+ python main.py \
96
+ --cpu \
97
+ --listen 0.0.0.0 \
98
+ --port 7860 \
99
+ --output-directory ./temp \
100
+ --bf16-unet \
101
+ --bf16-vae \
102
+ --bf16-text-enc \
103
+ --use-pytorch-cross-attention \
104
+ --preview-method none