| 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ファイルのダウンロード先を固定したい場合は、 | |
| # 起動スクリプトで事前にダウンロードするなどの工夫も考えられます。 | |