Skip to content

開発

前提条件をインストールします:

  • Go
  • CMake 3.24 以降
  • C/C++ コンパイラ: macOS では Clang、Windows では Visual Studio 2022 C++ ツール、Linux では GCC/Clang
  • NinjaPATH に追加することを推奨します(特に Windows の場合)

既存のネイティブペイロードに対して純粋な Go で反復処理するには、リポジトリのルートから Ollama を実行します:

shell
go run . serve

NOTE

Ollama には CGO でコンパイルされたネイティブコードが含まれています。これらのデータ構造は時々変更されることがあり、CGO が同期されなくなり、予期しないクラッシュが発生することがあります。最初に go clean -cache を実行することで、ネイティブコードの完全なビルドを強制できます。

ネイティブビルドモデル

新しいチェックアウトの場合、またはネイティブコードを変更した後は、リポジトリのルートからビルドします。macOS arm64 では、これは Metal 推論をビルドします。その他のすべてのプラットフォームでは、CPU のみの推論をビルドします。リポジトリのルートに Go バイナリをビルドし、ネイティブランタイムペイロードを build/lib/ollama の下にインストールします。

shell
cmake -B build .
cmake --build build --parallel 8
./ollama serve

標準のプレフィックスレイアウトにインストールするには:

shell
cmake --install build --prefix /path/to/install

macOS arm64 を除くすべてのプラットフォームで、GPU バックエンドをビルドするには、バックエンドを明示的に選択します:

shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS="cuda_v13;vulkan"
cmake --build build --parallel 8

サポートされているバックエンド値は cuda_v12cuda_v13rocm_v7_1rocm_v7_2vulkancuda_jetpack5cuda_jetpack6 です。

ローカルのハードウェア向けに GPU ビルドを絞り込むには、標準の CMake アーキテクチャオーバーライドを使用します:

shell
# CUDA
cmake -B build . -DOLLAMA_LLAMA_BACKENDS=cuda_v13 -DCMAKE_CUDA_ARCHITECTURES=native

# ROCm / HIP
cmake -B build . -DOLLAMA_LLAMA_BACKENDS=rocm_v7_2 -DCMAKE_HIP_ARCHITECTURES=gfx1100

設定時に GGML_* 値を設定することで、GGML のビルドオプションを調整できます。例えば、ローカルデバッグのために CUDA フラッシュアテンションカーネルを無効にするには:

shell
cmake -B build . -DOLLAMA_LLAMA_BACKENDS=cuda_v12 -DGGML_CUDA_FA=OFF

macOS (Apple Silicon)

追加の前提条件:

MLX Metal には Metal ツールチェーンが必要です。最初に Xcode をインストールし、次に:

shell
xcodebuild -downloadComponent MetalToolchain

Windows

追加の前提条件:

  • Visual Studio 2022(ネイティブデスクトップワークロードを含む)
  • (オプション) AMD GPU サポート
  • (オプション) NVIDIA GPU サポート
  • (オプション) Vulkan GPU サポート
  • (オプション) MLX エンジンサポート

Ninja ビルドの場合、Visual Studio コンパイラが利用可能な開発者用 PowerShell/コマンドプロンプト、または他のシェルから CMake を実行します。

Vulkan 向けにビルドするには、VULKAN_SDK 環境変数が必要です:

PowerShell

powershell
$env:VULKAN_SDK="C:\VulkanSDK\<version>"

CMD

cmd
set VULKAN_SDK=C:\VulkanSDK\<version>

Windows (ARM)

現在のところ、Windows ARM は追加のアクセラレーションライブラリをサポートしていません。

Linux

追加の前提条件:

  • (オプション) AMD GPU サポート
  • (オプション) NVIDIA GPU サポート
  • (オプション) Vulkan GPU サポート
    • Vulkan SDK - AMD/Intel GPU で役立ちます
    • またはパッケージマネージャーでインストール: sudo apt install vulkan-sdk (Ubuntu/Debian) または sudo dnf install vulkan-sdk (Fedora/CentOS)
  • (オプション) MLX エンジンサポート
    • CUDA 13+ SDK
    • cuDNN 9+
    • OpenBLAS/LAPACK: sudo apt install libopenblas-dev liblapack-dev liblapacke-dev (Ubuntu/Debian)

IMPORTANT

CMake を実行する前に、前提条件が PATH に含まれていることを確認してください。

MLX エンジン (オプション)

MLX エンジンは、safetensor ベースのモデルを実行可能にします。macOS arm64 では、MLX はデフォルトで有効になっています。その他のプラットフォームでは、OLLAMA_MLX_BACKENDS で MLX バックエンドを選択します。

CUDA

CUDA 13 以上と cuDNN 9 以上が必要です。

shell
cmake -B build . -DOLLAMA_MLX_BACKENDS=cuda_v13
cmake --build build --parallel 8

ローカルの MLX ソースオーバーライド

開発に便利な、ローカルの MLX および/または MLX-C のチェックアウトに対してビルドするには、CMake を実行する前に環境変数を設定します:

shell
export OLLAMA_MLX_SOURCE=/path/to/mlx
export OLLAMA_MLX_C_SOURCE=/path/to/mlx-c

macOS arm64 の場合:

shell
OLLAMA_MLX_SOURCE=../mlx OLLAMA_MLX_C_SOURCE=../mlx-c cmake -B build .
cmake --build build --parallel 8

CUDA の場合:

powershell
$env:OLLAMA_MLX_SOURCE="../mlx"
$env:OLLAMA_MLX_C_SOURCE="../mlx-c"
cmake -B build . -DOLLAMA_MLX_BACKENDS=cuda_v13
cmake --build build --parallel 8

Docker

shell
docker build .

ROCm

shell
docker build --build-arg FLAVOR=rocm .

テストの実行

テストを実行するには、go test を使用します:

shell
go test ./...

ライブラリ検出

Ollama は、インストール済みおよびローカルの開発レイアウトでネイティブヘルパーバイナリとアクセラレーションライブラリを検索します:

  • ../lib/ollamaollamabin/ の下にある標準インストールの場合)
  • ./lib/ollama(Windows リリース形式のペイロードおよびローカルの dist 出力の場合)
  • .(ヘルパーを ollama と同じ場所に配置する macOS リリースアーティファクトの場合)
  • build/lib/ollama および dist/<platform>/lib/ollama(ローカルの開発ビルドの場合)

ライブラリが見つからない場合、Ollama はアクセラレーションライブラリなしでは実行されません。