File size: 3,081 Bytes
06f958f
 
 
 
 
 
 
 
 
 
 
 
 
9d334c0
06f958f
 
 
 
 
 
 
 
 
 
 
 
 
 
1c0a312
06f958f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04

# 環境変数 (オプション、ビルド設定など)
ENV DEBIAN_FRONTEND=noninteractive
ENV LLAMA_CUBLAS=1

# 必要なパッケージのインストール
RUN apt-get update && apt-get install -y \
    git \
    cmake \
    build-essential \
    curl \
    ca-certificates \
    libcurl4-gnutls-dev \
    # CUDA Toolkit (もしベースイメージに含まれていない場合。通常はNVIDIAのCUDAイメージを使う方が楽)
    # nvidia-cuda-toolkit # これは例です。適切なCUDAのインストール方法はベースイメージによります。
    # NVIDIAの公式イメージ (例: nvidia/cuda:12.1.1-devel-ubuntu22.04) を使うのが推奨
    && rm -rf /var/lib/apt/lists/*

# (オプション) もし特定のCUDAバージョンが必要で、ベースイメージにない場合
# CUDA Toolkitのインストール手順をここに追加。
# 例: NVIDIAのサイトからインストーラーをダウンロードして実行など。
# 詳細は https://developer.nvidia.com/cuda-downloads を参照。

# llama.cpp のクローンとビルド
RUN git clone https://github.com/ggerganov/llama.cpp.git /app/llama.cpp
WORKDIR /app/llama.cpp
RUN mkdir build && cd build && \
    cmake .. -DGGML_CUDA=ON && \
    cmake --build . --config Release

# (推奨) モデルダウンロード用のディレクトリ作成と権限設定
RUN mkdir /models && chmod 777 /models
VOLUME /models # Spaceのストレージにマッピングされることを期待 (永続化のため)

# 公開するポート
EXPOSE 8000 

# サーバー起動コマンド
# モデルは初回起動時にHugging Face Hubから自動ダウンロードされます
# --host 0.0.0.0 で外部からのアクセスを許可
# --port 7860 でSpaceが公開するポートに合わせる
# --model-path /models/ でモデルのダウンロード先を指定 (キャッシュのため)
#  (ただし、-hf オプションはカレントディレクトリか~/.cache/huggingface/hub/にダウンロードすることが多いので、
#   この--model-pathはGGUFファイル名を直接指定する場合に有効。-hfと併用する場合の挙動を確認ください)

ENV MODEL_ID="unsloth/Qwen3-30B-A3B-GGUF"
#  -hfを使う場合、ダウンロード先は自動で決まることが多いです。
CMD ["/app/llama.cpp/build/bin/llama-server", \
    "-hf", MODEL_ID, \
    "--cache-type-k", "q4_0", \
    "--threads", "12", \
    "--prio", "2", \
    "--n-gpu-layers", "49", \
    "--seed", "3407", \
    "--port", "7860", \
    "--host", "0.0.0.0"]
# (オプション) モデルのキャッシュ場所を指定したい場合
# "--model-alias", "default=/models/qwen3-30b.gguf" のようにし、
# CMDの -hf の代わりに -m /models/qwen3-30b.gguf のようにする手もあるが、
# -hf による自動ダウンロードの方が便利。
# GGUFファイルのダウンロード先を固定したい場合は、
# 起動スクリプトで事前にダウンロードするなどの工夫も考えられます。