File size: 2,684 Bytes
2ebb96f df9eea0 2ebb96f df9eea0 2ebb96f df9eea0 2ebb96f df9eea0 2ebb96f df9eea0 ae37639 df9eea0 2ebb96f df9eea0 2ebb96f df9eea0 2ebb96f df9eea0 2ebb96f df9eea0 2ebb96f df9eea0 2ebb96f df9eea0 2ebb96f df9eea0 2ebb96f df9eea0 2ebb96f df9eea0 ae37639 df9eea0 8065594 df9eea0 2ebb96f df9eea0 | 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 | # syntax=docker/dockerfile:1
# ---------------------------------------------------------
# Stage 1: モデルダウンロード専用ステージ
# huggingface_hub / pip / venv 等のビルド専用ツールを
# 最終イメージに残さないための分離(ComfyUI側のbuilderステージに相当)
# ---------------------------------------------------------
FROM python:3.11-slim-bookworm AS downloader
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /models
RUN pip install --no-cache-dir -U huggingface_hub
# モデルとmmprojをダウンロード
RUN python3 -c 'from huggingface_hub import hf_hub_download; \
model_repo="empero-ai/Qwythos-9B-Claude-Mythos-5-1M-GGUF"; \
mmproj_repo="unsloth/Qwen3.5-9B-GGUF"; \
hf_hub_download(repo_id=model_repo, filename="Qwythos-9B-Claude-Mythos-5-1M-Q4_K_M.gguf", local_dir="/models"); \
hf_hub_download(repo_id=mmproj_repo, filename="mmproj-BF16.gguf", local_dir="/models")'
# ---------------------------------------------------------
# Stage 2: ランタイム
# ---------------------------------------------------------
FROM ghcr.io/ggml-org/llama.cpp:full
# メモリアロケータ:jemalloc(CPU推論時の断片化対策・ComfyUI側と同じ狙い)
RUN apt-get update && apt-get install -y --no-install-recommends \
libjemalloc2 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# 非rootユーザーで実行(ComfyUI側と同じ方針)
# 注: UID 1001 は通常ユーザー領域のため -r(システムアカウント)は付けない
# (-r と SYS_UID_MAX(通常999)を超えるUIDの組み合わせはbuild時にwarningが出るだけで
# fatalではないが、意味的に矛盾するため削除)
RUN useradd -m -d /home/llama -s /bin/bash -g root -G sudo -u 1001 llama
WORKDIR /app
# ビルド成果物(モデルファイル)のみをコピー
COPY --from=downloader --chown=llama:root /models /app
USER llama
# jemalloc 有効化
ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2
ENV MALLOC_CONF="background_thread:true,metadata_thp:auto,dirty_decay_ms:0,muzzy_decay_ms:0"
#
ENV OMP_NUM_THREADS=2
ENV KMP_AFFINITY=granularity=fine,compact
ENV OMP_WAIT_POLICY=ACTIVE
ENV KMP_BLOCKTIME=infinite
CMD ["--server", \
"-m", "/app/Qwythos-9B-Claude-Mythos-5-1M-Q4_K_M.gguf", \
"--mmproj", "/app/mmproj-BF16.gguf", \
"--tools", "all", \
"--host", "0.0.0.0", \
"--port", "7860", \
"-t", "2", \
"--cache-type-k", "q8_0", \
"--cache-type-v", "q8_0", \
"-c", "32000", \
"-n", "24000"]
|