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