人工知能の世界は絶え間ないペースで進化しており、大規模言語モデル(LLM)はますます強力でアクセスしやすくなっています。多くの人がクラウドベースのサービスを通じてこれらのモデルを利用していますが、個人のマシンで直接実行することに焦点を当てる動きが広がっています。ここで登場するのがOllamaです。Ollamaは、Llama 3、Mistral、Gemma、Phiなどの最先端LLMをローカルでダウンロード、設定、実行するプロセスを劇的に簡素化するために設計された、強力かつユーザーフレンドリーなツールです。
この包括的なガイドでは、インストールと基本的な使用法から、高度なカスタマイズ、APIの使用、重要なトラブルシューティングまで、Ollamaを使い始めるために知っておくべきすべてを解説します。ローカルLLMをアプリケーションに統合したい開発者、さまざまなアーキテクチャを実験したい研究者、あるいは単にオフラインでAIを実行することに興味がある愛好家であっても、Ollamaは合理化された効率的なプラットフォームを提供します。
なぜローカルLLM実行にOllamaを選ぶのか?
技術的な詳細に入る前に、クラウドベースの代替手段ではなく、OllamaとローカルLLMを選ぶ理由を考えてみましょう。
- Ollamaによる比類なきプライバシーとセキュリティ: マシン上でOllamaを使用してLLMを実行すると、プロンプト、提供するドキュメント、モデルによって生成されたテキストなど、すべてのデータがローカルシステム内に完全に留まります。ハードウェアから離れることはありません。これにより、機密性の高い個人情報、企業の機密データ、または独自の調査を扱う際に重要な要素である、最高レベルのプライバシーとデータ管理が保証されます。
- Ollamaを通じた大幅なコスト削減: クラウドベースのLLM APIは、多くの場合、従量課金モデルで運用されるか、継続的なサブスクリプション料金が必要です。これらのコストは、特に頻繁に使用する場合、急速に積み重なる可能性があります。Ollamaはこれらの経常費用を排除します。適切なハードウェアへの初期投資(既にお持ちかもしれません)を除けば、ローカルでのモデル実行は実質的に無料であり、APIの請求を気にすることなく、無制限の実験と生成が可能です。
- Ollamaによる真のオフライン機能: Ollamaモデルをローカルストレージにダウンロードすれば、いつでもどこでも、インターネット接続なしで完全に独立して使用できます。このオフラインアクセスは、接続が制限された環境で作業する開発者、現場の研究者、または外出先で信頼性の高いAIアクセスが必要な人にとって非常に貴重です。
- Ollama Modelfileによる詳細なカスタマイズと実験: Ollamaは、強力な
Modelfile
システムによって際立っています。これにより、ユーザーはパラメータ(創造性のレベルや出力長など)を調整したり、カスタムシステムプロンプトを定義してAIのペルソナを形成したり、特殊なファインチューニングアダプタ(LoRA)を統合したりすることで、モデルの動作を簡単に変更できます。GGUFやSafetensorsなどの標準フォーマットからモデルの重みを直接インポートすることもできます。このきめ細かな制御と柔軟性のレベルは、クローズドソースのクラウドAPIプロバイダーではめったに提供されません。 - Ollamaによる潜在的なパフォーマンス上の利点: ローカルハードウェア構成、特に高性能なグラフィックプロセッシングユニット(GPU)の存在によっては、Ollamaはクラウドサービスと比較して大幅に高速な応答時間(推論速度)を提供できます。クラウドサービスは、ネットワーク遅延、レート制限、または共有リソースの可変負荷の影響を受ける可能性があります。専用ハードウェアを活用することで、はるかにスムーズでインタラクティブな体験が得られる可能性があります。
- 活気あるOllamaオープンソースエコシステムへの参加: Ollama自体がオープンソースプロジェクトであり、透明性とコミュニティへの貢献を促進しています。さらに、それは主に、急速に拡大しているオープンアクセス可能なLLMの広範なライブラリへのゲートウェイとして機能します。Ollamaを使用することで、このダイナミックなエコシステムの一部となり、共有された知識、コミュニティサポート、オープンな協力によって推進される継続的なイノベーションの恩恵を受けることができます。
Ollamaの主要な功績は、これらの洗練されたAIモデルを実行するために必要なソフトウェア環境の設定、依存関係の管理、構成の複雑さを隠蔽することにあります。有名な**llama.cpp
**ライブラリをはじめとする、高度に最適化されたバックエンド推論エンジンを巧みに利用して、標準的なコンシューマーハードウェアでの効率的な実行を保証し、CPUとGPUの両方のアクセラレーションをサポートします。
Ollama vs. Llama.cppの理解
Ollamaとllama.cpp
は密接に関連していますが、異なる目的を果たしているため、その関係を明確にすることは有益です。
llama.cpp
: これは、LLM推論のコアタスクを担当する基盤となる高性能なC/C++ライブラリです。モデルの重みの読み込み、入力トークンの処理、出力トークンの効率的な生成を処理し、さまざまなハードウェアアーキテクチャ(AVXなどのCPU命令セット、CUDA、Metal、ROCmによるGPUアクセラレーション)向けに最適化されています。計算の重労働を行う強力なエンジンです。- Ollama: これは、
llama.cpp
(および将来の他のバックエンド)を中心に構築された包括的なアプリケーションです。Ollamaは、その上にユーザーフレンドリーなレイヤーを提供し、以下を実現します。 - 簡単な対話のためのシンプルなコマンドラインインターフェース(CLI)(
ollama run
,ollama pull
など)。 - プログラムによる統合のための組み込みREST APIサーバー。
- 合理化されたモデル管理(ライブラリからのダウンロード、ローカルストレージ、更新)。
- カスタマイズとモデルバリアント作成のための
Modelfile
システム。 - クロスプラットフォームインストーラー(macOS、Windows、Linux)とDockerイメージ。
- 自動ハードウェア検出と構成(CPU/GPU)。
要するに、技術的にはllama.cpp
を直接コンパイルしてコマンドラインツールを実行することで使用できますが、セットアップ、モデル変換、パラメータ管理に関して大幅に多くの技術的労力が必要です。Ollamaはこのパワーをアクセスしやすく使いやすいアプリケーションにパッケージ化し、特に初心者にとって、ローカルLLMをはるかに幅広いユーザーにとって実用的なものにします。llama.cpp
を高性能なエンジンコンポーネント、Ollamaを運転準備ができた完全に組み立てられたユーザーフレンドリーな車両と考えてください。
Ollamaをシステムにインストールする
Ollamaはアクセシビリティを重視して設計されており、macOS、Windows、Linux、およびDocker環境向けに簡単なインストール手順を提供しています。
Ollamaの一般的なシステム要件:
- RAM(メモリ): これは多くの場合、最も重要な要素です。
- 最小8 GB: 小規模モデル(例:1B、3B、7Bパラメータ)には十分ですが、パフォーマンスは遅くなる可能性があります。
- 推奨16 GB: 7Bおよび13Bモデルを快適に実行するための良い出発点です。
- 理想32 GB以上: 大規模モデル(30B、40B、70B以上)に必要であり、より大きなコンテキストウィンドウを可能にします。一般的に、RAMが多いほどパフォーマンスが向上し、より大規模で高性能なモデルを実行できます。
- ディスク容量: Ollamaアプリケーション自体は比較的小さい(数百MB)です。ただし、ダウンロードするLLMはかなりの容量を必要とします。モデルサイズは大きく異なります。
- 小規模量子化モデル(例:約3B Q4): 約2 GB
- 中規模量子化モデル(例:7B/8B Q4): 4〜5 GB
- 大規模量子化モデル(例:70B Q4): 約40 GB
- 超大規模モデル(例:405B): 200 GB以上!
Ollamaがモデルを保存するドライブに十分な空き容量があることを確認してください(以下のセクションを参照)。 - オペレーティングシステム:
- macOS: バージョン11 Big Sur以降。GPUアクセラレーションにはApple Silicon(M1/M2/M3/M4)が推奨されます。
- Windows: Windows 10バージョン22H2以降、またはWindows 11。HomeおよびProエディションの両方がサポートされています。
- Linux: 最新のディストリビューション(例:Ubuntu 20.04+、Fedora 38+、Debian 11+)。特にAMD GPUサポートにはカーネル要件が適用される場合があります。
OllamaをmacOSにインストールする
- ダウンロード: Ollamaの公式ウェブサイトからOllama macOSアプリケーションのDMGファイルを直接入手します。
- マウント: ダウンロードした
.dmg
ファイルをダブルクリックして開きます。 - インストール:
Ollama.app
アイコンをアプリケーション
フォルダにドラッグします。 - 起動: アプリケーションフォルダからOllamaアプリケーションを起動します。初回実行時に実行許可を求められる場合があります。
- バックグラウンドサービス: Ollamaはバックグラウンドサービスとして実行を開始し、メニューバーにアイコンが表示されます。このアイコンをクリックすると、アプリケーションの終了やログの表示などのオプションが表示されます。
アプリケーションを起動すると、Ollamaサーバープロセスが自動的に開始され、ollama
コマンドラインツールがシステムのPATHに追加されるため、ターミナルアプリケーション(Terminal.app
、iTerm2など)ですぐに利用できるようになります。Apple Silicon(M1、M2、M3、M4チップ)を搭載したMacでは、Ollamaは手動設定なしでAppleのMetalグラフィックスAPIを介して組み込みGPUをシームレスに利用します。
OllamaをWindowsにインストールする
- ダウンロード: Ollamaウェブサイトから
OllamaSetup.exe
インストーラーファイルを入手します。 - インストーラーの実行: ダウンロードした
.exe
ファイルをダブルクリックしてセットアップウィザードを起動します。最小Windowsバージョン要件(10 22H2+または11)を満たしていることを確認してください。 - プロンプトに従う: インストール手順を進め、ライセンス契約に同意し、必要に応じてインストール場所を選択します(通常はデフォルトで問題ありません)。
インストーラーは、システム起動時にOllamaがバックグラウンドサービスとして自動的に実行されるように設定します。また、ollama.exe
実行可能ファイルをシステムのPATHに追加し、コマンドプロンプト(cmd.exe
)、PowerShell、または新しいWindowsターミナルなどの標準的なWindowsターミナルでollama
コマンドを使用できるようにします。Ollama APIサーバーは自動的に起動し、http://localhost:11434
でリッスンします。
OllamaのためのWindows GPUアクセラレーション:
- NVIDIA: NVIDIAウェブサイトから最新のGeForce Game ReadyまたはNVIDIA Studioドライバーをインストールします。ドライバーバージョン452.39以降が必要です。Ollamaは互換性のあるGPUを自動的に検出して利用するはずです。
- AMD: AMDサポートウェブサイトから最新のAMD Software: Adrenalin Editionドライバーをインストールします。互換性のあるRadeon GPU(通常はRX 6000シリーズ以降)が自動的に使用されます。
OllamaをLinuxにインストールする
ほとんどのLinuxディストリビューションにとって最も便利な方法は、公式インストールスクリプトを使用することです。
curl -fsSL https://ollama.com/install.sh | sh
このコマンドはスクリプトをダウンロードし、sh
を使用して実行します。スクリプトは次のアクションを実行します。
- システムアーキテクチャ(x86_64、ARM64)を検出します。
- 適切なOllamaバイナリをダウンロードします。
- バイナリを
/usr/local/bin/ollama
にインストールします。 - 必要なGPUドライバー(NVIDIA CUDA、AMD ROCm)をチェックし、可能であれば依存関係をインストールします(この部分はディストリビューションによって異なる場合があります)。
- 専用の
ollama
システムユーザーとグループを作成します。 - Ollamaサーバープロセスを管理するためのsystemdサービスファイル(
/etc/systemd/system/ollama.service
)を設定します。 ollama
サービスを有効にして起動し、起動時およびバックグラウンドで自動的に実行されるようにします。
Ollamaのための手動LinuxインストールとSystemd設定:
スクリプトが失敗した場合、または手動制御を希望する場合(例:異なる場所へのインストール、ユーザーの異なる管理、特定のROCmバージョンの確保)、Ollama GitHubリポジトリの詳細なLinuxインストールガイドを参照してください。一般的な手順は次のとおりです。
- アーキテクチャに適したバイナリをダウンロードします。
- バイナリを実行可能にし(
chmod +x ollama
)、PATH内の場所(例:/usr/local/bin
)に移動します。 - (推奨)システムユーザー/グループを作成します:
sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama
およびsudo groupadd ollama
、次にsudo usermod -a -G ollama ollama
。自分のユーザーをグループに追加します:sudo usermod -a -G ollama $USER
。 - 適切な設定(ユーザー、グループ、実行可能ファイルのパス、必要に応じて環境変数)でsystemdサービスファイル(
/etc/systemd/system/ollama.service
)を作成します。通常、ドキュメントにサンプルスニペットが提供されています。 - systemdデーモンをリロードします:
sudo systemctl daemon-reload
。 - 起動時にサービスを開始するように有効にします:
sudo systemctl enable ollama
。 - サービスをすぐに開始します:
sudo systemctl start ollama
。sudo systemctl status ollama
でステータスを確認できます。
Ollamaのための必須Linux GPUドライバー:
最適なパフォーマンスを得るには、GPUドライバーのインストールを強くお勧めします。
- NVIDIA: ディストリビューション用の公式プロプライエタリNVIDIAドライバーをインストールします(例:
apt
やdnf
などのパッケージマネージャー経由、またはNVIDIAのウェブサイトからダウンロード)。nvidia-smi
コマンドを使用してインストールを確認します。 - AMD (ROCm): ROCmツールキットをインストールします。AMDは、サポートされているディストリビューション(Ubuntu、RHEL/CentOS、SLESなど)向けの公式リポジトリとインストールガイドを提供しています。カーネルバージョンが互換性があることを確認してください。Ollamaインストールスクリプトは一部のROCm依存関係を処理する場合がありますが、手動インストールにより正しいセットアップが保証されます。
rocminfo
で確認します。
公式Ollama Dockerイメージの使用
Dockerは、プラットフォームに依存しない方法でOllamaを隔離されたコンテナで実行する方法を提供し、特に複雑なGPUセットアップの場合に依存関係管理を簡素化します。
CPUのみのOllamaコンテナ:
docker run -d \
-v ollama_data:/root/.ollama \
-p 127.0.0.1:11434:11434 \
--name my_ollama \
ollama/ollama
-d
: コンテナをデタッチモード(バックグラウンド)で実行します。-v ollama_data:/root/.ollama
: ホストシステム上にollama_data
という名前のDocker名前付きボリュームを作成し、コンテナ内の/root/.ollama
ディレクトリにマッピングします。**これはダウンロードしたモデルを永続化するために重要です。**これを省略すると、コンテナが削除されるとモデルは失われます。ボリュームには任意の名前を選択できます。-p 127.0.0.1:11434:11434
: ホストマシンのループバックインターフェース(127.0.0.1
)のポート11434をコンテナ内のポート11434にマッピングします。ネットワーク上の他のマシンからOllamaコンテナにアクセスする必要がある場合は、0.0.0.0:11434:11434
を使用します。--name my_ollama
: 実行中のコンテナにカスタムの覚えやすい名前を割り当てます。ollama/ollama
: Docker Hubの公式Ollamaイメージを指定します。
NVIDIA GPU Ollamaコンテナ:
- まず、NVIDIA Container Toolkitがホストマシンに正しくインストールされ、DockerがNVIDIAランタイムを使用するように構成されていることを確認します。
--gpus=all
フラグを追加してコンテナを実行します。
docker run -d \
--gpus=all \
-v ollama_data:/root/.ollama \
-p 127.0.0.1:11434:11434 \
--name my_ollama_gpu \
ollama/ollama
このフラグは、ツールキットによって検出されたすべての互換性のあるNVIDIA GPUへのアクセスをコンテナに許可します。必要に応じて特定のGPUを指定できます(例:--gpus '"device=0,1"'
)。
AMD GPU (ROCm) Ollamaコンテナ:
- ROCm固有のイメージタグを使用します:
ollama/ollama:rocm
。 - 必要なROCmデバイスノードをホストからコンテナにマッピングします。
docker run -d \
--device /dev/kfd \
--device /dev/dri \
-v ollama_data:/root/.ollama \
-p 127.0.0.1:11434:11434 \
--name my_ollama_rocm \
ollama/ollama:rocm
/dev/kfd
: カーネルフュージョンドライバーインターフェース。/dev/dri
: Direct Rendering Infrastructureデバイス(多くの場合、/dev/dri/renderD128
などのレンダーノードを含む)。- ホスト上で
docker
コマンドを実行するユーザーが、これらのデバイスファイルにアクセスするための適切な権限を持っていることを確認します(render
やvideo
などのグループのメンバーシップが必要な場合があります)。
Ollamaコンテナが実行されたら、docker exec
コマンドを使用してコンテナ内でollama
CLIコマンドを実行することで対話できます。
docker exec -it my_ollama ollama list
docker exec -it my_ollama ollama pull llama3.2
docker exec -it my_ollama ollama run llama3.2
または、ポートをマッピングした場合(-p
)、ホストマシンまたはhttp://localhost:11434
(またはマッピングしたIP/ポート)を指す他のアプリケーションから直接Ollama APIと対話できます。
Ollamaはモデルをどこに保存するか?Ollamaストレージ場所の理解
Ollamaがダウンロードしたモデルをどこに保持するかを知ることは、ディスク容量の管理とバックアップにとって不可欠です。デフォルトの場所は、オペレーティングシステムとインストール方法によって異なります。
- macOS上のOllama: モデルはユーザーのホームディレクトリ内の
~/.ollama/models
にあります。~
は/Users/<ユーザー名>
を表します。 - Windows上のOllama: モデルはユーザープロファイルディレクトリの
C:\Users\<ユーザー名>\.ollama\models
に保存されます。 - Linux上のOllama(ユーザーインストール/手動): macOSと同様に、モデルは通常
~/.ollama/models
に保存されます。 - Linux上のOllama(Systemdサービスインストール): スクリプト経由でインストールされた場合、または
ollama
ユーザーとして実行されるシステム全体のサービスとして構成された場合、モデルは多くの場合/usr/share/ollama/.ollama/models
に保存されます。非標準のセットアップを使用した場合は、サービスの構成またはドキュメントを確認してください。 - Docker経由のOllama: コンテナ内では、パスは
/root/.ollama/models
です。ただし、Dockerボリュームをマウントするために-v
フラグを正しく使用した場合(例:-v ollama_data:/root/.ollama
)、実際のモデルファイルはホストマシン上のDocker管理ボリューム領域内に保存されます。Dockerボリュームの正確な場所はDockerのセットアップによって異なりますが、コンテナとは独立して永続するように設計されています。
モデルの保存場所は、構成セクションで説明するように、OLLAMA_MODELS
環境変数を使用してリダイレクトできます。これは、プライマリドライブの空き容量が少なく、大規模なモデルをセカンダリドライブに保存したい場合に便利です。
Ollamaの第一歩:LLMを実行する
Ollamaがインストールされ、サーバーがアクティブになった(デスクトップアプリ、systemdサービス、またはDockerコンテナ経由で実行中)ので、ターミナルで簡単なollama
コマンドを使用してLLMとの対話を開始できます。
Ollamaモデルのダウンロード:pull
コマンド
特定のLLMを実行する前に、まずその重みと構成ファイルをダウンロードする必要があります。Ollamaは、人気のオープンモデルのキュレーションされたライブラリを提供しており、ollama pull
コマンドで簡単にアクセスできます。利用可能なモデルはOllamaウェブサイトのライブラリページで閲覧できます。
# 例1: 最新のLlama 3.2 8B Instructモデルをプルする
# これはしばしば 'latest' または単にベース名でタグ付けされる
ollama pull llama3.2
# 例2: Mistralの特定バージョン(70億パラメータ、ベースモデル)をプルする
ollama pull mistral:7b
# 例3: GoogleのGemma 3 4Bモデルをプルする
ollama pull gemma3
# 例4: Microsoftのより小さいPhi-4 Miniモデル(効率的)をプルする
ollama pull phi4-mini
# 例5: Visionモデル(画像を処理できる)をプルする
ollama pull llava
Ollamaモデルタグの理解:
Ollamaライブラリのモデルは、モデルファミリー名:タグ
という命名規則を使用します。タグは次のようなバリエーションを指定します。
- サイズ:
1b
,3b
,7b
,8b
,13b
,34b
,70b
,405b
(十億パラメータを示す)。通常、大きいモデルほど知識が豊富ですが、より多くのリソースが必要です。 - 量子化:
q2_K
,q3_K_S
,q4_0
,q4_K_M
,q5_1
,q5_K_M
,q6_K
,q8_0
,f16
(float16),f32
(float32)。量子化はモデルサイズと計算要件を削減し、多くの場合、精度にわずかなトレードオフがあります。小さい数字(例:q4
)はより多くの圧縮を意味します。K
バリアント(_K_S
,_K_M
,_K_L
)は、一般的にサイズと品質のバランスが良いと考えられています。f16
/f32
は非量子化または最小限に圧縮されており、最高の忠実度を提供しますが、最も多くのリソースが必要です。 - バリアント:
instruct
(指示に従うように調整)、chat
(会話用に調整)、code
(プログラミングタスク用に最適化)、vision
(マルチモーダル、画像を扱う)、uncensored
(安全フィルターが少ない、責任を持って使用)。 latest
: タグを省略した場合(例:ollama pull llama3.2
)、Ollamaは通常latest
タグをデフォルトとします。これは通常、一般的に使用される、バランスの取れたバージョン(多くの場合、中程度のサイズ、量子化済み、指示調整済みモデル)を指します。
pull
コマンドは、必要なファイル(数ギガバイトになる可能性がある)を指定されたOllamaモデルディレクトリにダウンロードします。特定のモデル:タグ
の組み合わせをプルする必要があるのは一度だけです。Ollamaはモデルを更新することもできます。既存のモデルで再度pull
を実行すると、変更されたレイヤー(差分)のみがダウンロードされるため、更新が効率的になります。
Ollamaモデルとの対話型チャット:run
コマンド
ダウンロードしたモデルと対話する最も直接的な方法は、ollama run
コマンドを使用することです。
ollama run llama3.2
指定されたモデル(この場合はllama3.2:latest
)がまだプルされていない場合、ollama run
は便利に最初にollama pull
をトリガーします。モデルの準備ができてメモリにロードされると(特に大きなモデルの場合、数秒かかることがあります)、対話型プロンプトが表示されます。
>>> Send a message (/? for help)
これで、質問や指示を入力してEnterキーを押し、AIが応答を生成するのを待つだけです。出力は通常、トークンごとにストリーミングされ、応答性の高い感覚を提供します。
>>> 量子もつれを簡単な言葉で説明して。
はい、魔法のような方法で互いにリンクされた2つの特別なコインがあると想像してみてください。コインAとコインBと呼びましょう。見る前は、どちらのコインも表か裏か決まっていません。両方の可能性が曖昧に混ざり合った状態です。
さて、あなたはコインAを友人に渡し、コインBを持って何光年も離れた場所に旅立ちます。あなたが自分のコインBを見て、それが例えば表だと分かった瞬間、あなたは友人のコインAが裏であることを*確実に*知ります。そして、もしあなたが裏を見たら、彼らのが表だと分かるでしょう。
これが量子もつれのようなものです!2つの粒子(私たちのコインのようなもの)がリンクされ、それらの特性(表/裏のようなもの)は、どれだけ離れていても相関関係を保ちます。一方を測定すると、他方の特性に即座に影響を与え、光がそれらの間を移動するよりも速く伝わります。これは量子物理学の最も奇妙でクールな部分の1つです!
>>> Send a message (/? for help)
Ollama対話モード内の便利なコマンド:ollama run
を介してモデルと対話している間、/
で始まる特別なコマンドを使用できます。
/?
: 利用可能なすべてのスラッシュコマンドを一覧表示するヘルプメニューを表示します。/set parameter <パラメータ名> <値>
: 現在のチャットセッションに対してモデルのランタイムパラメータを一時的に変更します。例えば、/set parameter temperature 0.9
は創造性を高め、/set parameter num_ctx 8192
はこのセッションのコンテキストウィンドウを増やします。/show info
: 現在ロードされているモデルに関する詳細情報(パラメータ、テンプレート構造、ライセンスなど)を表示します。/show modelfile
: 現在実行中のモデルの作成に使用されたModelfile
の内容を表示します。これは、そのベースモデル、パラメータ、プロンプトテンプレートを理解するのに役立ちます。/save <セッション名>
: 現在のチャット履歴を名前付きセッションファイルに保存します。/load <セッション名>
: 以前に保存したチャットセッションをロードし、会話履歴を復元します。/bye
または/exit
: 対話型チャットセッションを正常に終了し、モデルをメモリからアンロードします(他のセッションが使用していない場合)。通常、Ctrl+Dでも終了できます。
ローカルOllamaモデルの管理
モデルをダウンロードして作成するにつれて、それらを管理する方法が必要になります。
ダウンロード済みOllamaモデルの一覧表示: ローカルに現在保存されているすべてのモデルを表示するには、次を使用します。
ollama list
このコマンドは、モデル名(NAME)、一意のID、ディスク上のサイズ(SIZE)、および変更時刻(MODIFIED)を示すテーブルを出力します。
詳細なOllamaモデル情報の表示: 特定のモデルの詳細(パラメータ、システムプロンプト、テンプレートなど)を検査するには、次を使用します。
ollama show llama3.2:8b-instruct-q5_K_M
これにより、その特定のモデルタグに関連付けられたModelfileの内容、パラメータ設定、テンプレートの詳細、その他のメタデータが出力されます。
Ollamaモデルの削除: モデルが不要になり、ディスク容量を解放したい場合は、次を使用します。
ollama rm mistral:7b
これにより、指定されたモデル:タグ
の組み合わせがストレージから完全に削除されます。注意して使用してください!
Ollamaモデルのコピー/名前変更: 既存のモデルの複製を作成する場合、おそらくカスタマイズの開始点として、または単に異なる名前を付けるために、次を使用します。
ollama cp llama3.2 my-custom-llama3.2-setup
これにより、元のllama3.2
に基づいてmy-custom-llama3.2-setup
という名前の新しいモデルエントリが作成されます。
現在ロードされているOllamaモデルの確認: RAMまたはVRAMに現在ロードされ、即時推論の準備ができているモデルを確認するには、次を使用します。
ollama ps
このコマンドは、モデル名、ID、サイズ、使用されているプロセッサ(CPU/GPU)、および最後にアクセスされてからの経過時間を表示します。モデルは通常、使用後しばらく(例:5分)ロードされたままになり、後続のリクエストを高速化しますが、その後リソースを解放するために自動的にアンロードされます。
最適なOllamaモデルは何か?適切なLLMの選択
これは頻繁かつ重要な質問ですが、答えは微妙です。すべての人やすべてのタスクにとって単一の「最適な」Ollamaモデルはありません。最適な選択は、いくつかの要因に大きく依存します。
- 特定のタスク: AIに主に何をさせたいですか?
- 一般的なチャット/アシスタンス:
llama3.2
,llama3.1
,mistral
,gemma3
,qwq
が有力な候補です。 - コーディング/プログラミング:
codellama
,phi4
,phi4-mini
,starcoder2
,deepseek-coder
は、コード生成、説明、デバッグ用に特別に調整されています。 - クリエイティブライティング: デフォルト温度が高いモデルやパラメータ数が多いモデル(70Bモデルなど)は、より想像力豊かな結果を生み出す可能性があります。実験が鍵です。
- 要約/分析: 指示調整済みモデル(
:instruct
タグ)は、ここでしばしば優れています。 - マルチモーダル(画像入力):
llava
,moondream
,llama3.2-vision
。 - ハードウェアリソース(RAMとVRAM): これは大きな制約です。
- 低リソース(8GB RAM、GPUなし/弱い): 小さいモデル(1B〜3Bパラメータ)または7Bモデルの高度に量子化されたバージョン(例:
q2_K
,q3_K_S
)に固執します。パフォーマンスは遅くなります。例:gemma3:1b
,llama3.2:1b
,phi4-mini:q4_0
。 - ミッドレンジリソース(16GB RAM、基本的なGPU): 7B/8Bモデル(例:
llama3.2
,mistral
,gemma3
)を良好な量子化(q4_K_M
,q5_K_M
)で快適に実行できます。13Bモデル(q4_0
)をゆっくり実行できるかもしれません。 - ハイエンドリソース(32GB以上のRAM、12GB以上のVRAMを持つ強力なGPU): 13B、30B、さらには70B(
q4_K_M
またはq5_K_M
,q6_K
などのより良い量子化)のような大きなモデルを実行できます。これらは、大幅に優れた推論と知識を提供します。例:llama3.3
,llama3.1:405b
(膨大なリソースが必要)、gemma3:27b
,deepseek-r1:671b
(極端な要件)。 - 望ましい品質と速度のトレードオフ:
- 高品質: パラメータ数が多い、または攻撃性の低い量子化(例:
q6_K
,q8_0
,f16
)は、一般的に優れた結果を提供しますが、遅く、より多くのリソースが必要です。 - 高速/低リソース使用: パラメータ数が少ない、または攻撃性の高い量子化(例:
q4_0
,q4_K_M
,q3_K_M
)は高速で軽量ですが、一貫性や精度がわずかに低下する可能性があります。K
量子(_K_M
,_K_S
)は、多くの場合、最高のバランスを提供します。 - モデルのチューニングとアライメント: 一部のモデルはベースモデルですが、他のモデルは指示調整済み(
instruct
)またはチャット調整済み(chat
)です。Instruct/chatモデルは、一般的に指示に従い、会話に参加するのが得意です。Uncensoredモデルは安全ガードレールが少ないです。
初心者向け推奨(2024年後半):
- 優れたオールラウンダー(ミッドレンジハードウェア):
llama3.2:8b-instruct-q5_K_M
またはmistral:7b-instruct-v0.2-q5_K_M
。これらは、能力、速度、リソース使用量の優れたバランスを提供します。 - 効率的なオプション(ローエンドハードウェア):
phi4-mini:q4_K_M
またはgemma3:1b
。サイズに対して驚くほど有能です。 - コーディングフォーカス:
codellama:7b-instruct-q5_K_M
。 - Visionニーズ:
llava:13b
(リソースが許せば)またはmoondream
。
最良のアプローチは経験的です: Ollamaライブラリでモデルの説明を読み、ハードウェアを考慮し、ollama pull
を使用していくつかの可能性のある候補をダウンロードし、ollama run
を使用して典型的なプロンプトでテストし、あなたにとって最適なパフォーマンスを発揮するものを見つけます。スペースを節約するために、ニーズを満たさないモデルをollama rm
することを躊躇しないでください。
Ollamaモデルコンセプトの解明
Ollamaを効果的に使用およびカスタマイズするには、いくつかのコアLLMコンセプトを理解することが役立ちます。
Ollamaモデルパラメータの説明
LLMには、出力に影響を与えるために調整できるさまざまな内部設定、つまりパラメータがあります。Ollamaを使用すると、これらの多くを制御できます。
temperature
: (デフォルト:約0.7〜0.8)出力のランダム性または「創造性」を制御します。- 低い値(例:0.2): 出力をより決定論的、集中的、予測可能にします。事実に基づいた回答やコード生成に適しています。
- 高い値(例:1.0、1.2): ランダム性を高め、出力をより多様で創造的にしますが、一貫性が低下する可能性があります。ブレーンストーミングやストーリーライティングに適しています。
top_p
(Nucleus Sampling): (デフォルト:約0.9)確率のしきい値を設定します。モデルは、累積確率質量がtop_p
を超える最も可能性の高い次のトークンのみを考慮します。top_p
を低くする(例:0.5)と、選択肢がより可能性の高い単語に制限され、一貫性が向上しますが、新規性が低下する可能性があります。高い値はより多様な選択肢を可能にします。top_k
: (デフォルト:約40)モデルの選択肢を、最も可能性の高いk
個の次のトークンに制限します。低いtop_k
(例:10)は出力をより集中的にし、高いtop_k
はより多様性を可能にします。top_p
はしばしばtop_k
よりも効果的であると考えられています。通常、両方を低く設定するのではなく、どちらか一方を設定します。num_predict
: (デフォルト:約128、-1で無限)モデルが単一の応答で生成するトークン(大まかに単語/サブワード)の最大数。停止条件が満たされるまで無制限に生成するには-1
に設定します。stop
: 特定のテキストシーケンスのリスト。モデルがこれらのシーケンスのいずれかを生成すると、それ以上の出力の生成を直ちに停止します。実行文を防いだり、モデルが回答後に停止するようにしたりするのに役立ちます。例:["\n", "User:", "<|eot_id|>"]
。num_ctx
: モデルのコンテキストウィンドウサイズを定義します。以下の詳細な説明を参照してください。- その他のパラメータ: Ollamaは、
llama.cpp
から継承された他の多くのパラメータ(repeat_penalty
,seed
,mirostat
, GPUレイヤーnum_gpu
など)を公開しており、きめ細かな制御が可能です。詳細については、Ollamaおよびllama.cppのドキュメントを参照してください。
これらは、ollama run
で/set parameter
を使用して一時的に、Modelfile
でPARAMETER
命令を使用して永続的に、またはOllama APIのoptions
オブジェクトを介してリクエストごとに設定できます。
Ollamaコンテキスト長:num_ctx
パラメータ
コンテキスト長は、しばしばコンテキストウィンドウまたはOllamaおよびllama.cpp
設定のnum_ctx
と呼ばれ、LLMの最も重要なアーキテクチャ上の制限の1つです。
- それが表すもの:
num_ctx
は、モデルが一度に「見る」または処理できるトークンの最大数を定義します。これにはすべてが含まれます:初期システムプロンプト、現在のチャット履歴内のすべての以前のユーザーメッセージとアシスタント応答、およびユーザーの最新の入力プロンプト。 - なぜ重要か: モデルが関連性があり、一貫性があり、文脈的に適切な応答を生成する能力は、そのコンテキストウィンドウに大きく依存します。
- 長い会話: より大きなコンテキストウィンドウにより、モデルは会話の早い段階からの情報を「記憶」でき、追跡不能になったり、繰り返したりするのを防ぎます。
- ドキュメント分析: 大きなドキュメントを処理する場合(例:要約や質疑応答)、コンテキストウィンドウは、モデルが一度に考慮できるドキュメントの量を決定します。
- 複雑な指示: プロンプトのずっと前に提供された詳細に依存する指示は、正しく理解されるために十分なコンテキストウィンドウが必要です。
- 固有のモデル制限: すべてのLLMは、特定の最大コンテキスト長(例:2048、4096、8192、32k、128k、または最先端の研究モデルではさらに数百万)で事前トレーニングされています。Ollamaで
num_ctx
を設定できますが、モデルの元のトレーニング制限よりも高く設定すると、予測不能な動作、パフォーマンスの低下(モデルがトレーニングされたウィンドウ外のものを「忘れる」可能性がある)、またはエラーが発生する可能性があります。低く設定することは常に安全ですが、モデルの能力を制限します。 - リソース消費: より大きなコンテキストウィンドウを処理するには、大幅に多くのRAMとVRAM(GPUメモリ)が必要であり、計算に時間がかかります。望ましいコンテキスト能力とハードウェアの制限のバランスを取る必要があります。
- Ollamaモデルのデフォルト
num_ctx
の確認:ollama show <モデル名:タグ>
コマンドを使用し、表示されるModelfileセクションのPARAMETER num_ctx
行を探します。Ollamaモデルは通常、妥当なデフォルト(例:4096または8192)で出荷されます。 - Ollamaの
num_ctx
の変更: - 一時的(
ollama run
中): スラッシュコマンドを使用します:/set parameter num_ctx 8192
- APIリクエストごと:
options
JSONオブジェクトに含めます:curl ... -d '{ "model": "...", "prompt": "...", "options": { "num_ctx": 8192 } }'
- 永続的(カスタムOllamaモデル):
Modelfile
を作成または変更し、PARAMETER num_ctx <値>
行を追加または変更してから、ollama create
を使用してモデルをビルドします。これにより、そのカスタムモデルのデフォルトのコンテキストサイズが設定されます。
典型的なタスクに適したnum_ctx
値を選択してください。単純なQ&Aの場合、より小さいウィンドウ(例:4096)で十分かもしれません。長いチャットや大きなドキュメントの要約の場合、ハードウェアとモデルが合理的にサポートできる最大のコンテキストウィンドウ(例:8192、16384、または利用可能な場合はそれ以上)から恩恵を受けるでしょう。
高度なOllama:APIとカスタマイズの解放
ollama
CLIは簡単な直接対話を提供しますが、Ollamaをワークフローやアプリケーションに統合するための真の可能性は、組み込みのREST APIとModelfile
カスタマイズシステムにあります。
Ollama APIとのプログラムによる対話
デフォルトでは、Ollamaサーバープロセス(デスクトップアプリ、systemd、またはDocker経由で実行されているかどうかに関わらず)は、ローカルマシンのポート11434
(http://localhost:11434
またはhttp://127.0.0.1:11434
)で着信HTTPリクエストをリッスンします。このAPIにより、同じマシン上(または構成されている場合はネットワーク上の他のマシン)で実行されている他のプログラム、スクリプト、またはWebインターフェースが、Ollamaモデルとプログラムで通信できます。
主要なOllama APIエンドポイント:
POST /api/generate
: 単一の非会話型プロンプトに基づいてテキスト補完を生成するために使用されます。テキスト拡張、簡単な翻訳、または簡単なコードスニペットなどのタスクに適しています。model
とprompt
を含むJSONボディが必要です。POST /api/chat
: 会話型の対話用に設計されています。それぞれがrole
(system
、user
、またはassistant
)とcontent
を持つメッセージのリストを受け入れます。これにより、モデルは複数のターンにわたってコンテキストを維持できます。model
とmessages
を含むJSONボディが必要です。POST /api/embeddings
: 入力テキストの数値ベクトル表現(埋め込み)を生成します。これらのベクトルは意味的な意味を捉え、Retrieval-Augmented Generation(RAG)、セマンティック検索、テキスト分類、クラスタリングなどのタスクの基本です。model
とprompt
を含むJSONボディが必要です。GET /api/tags
: ローカルOllamaストレージで現在利用可能なすべてのモデルのリストを取得します(ollama list
と同等)。モデルオブジェクトのJSON配列を返します。POST /api/show
: 特定のローカルモデルに関する詳細情報(パラメータ、テンプレート、ライセンスなど)を取得します(ollama show
と同等)。name
(モデル:タグ)を含むJSONボディが必要です。DELETE /api/delete
: 指定されたモデルをローカルストレージから削除します(ollama rm
と同等)。name
(モデル:タグ)を含むJSONボディが必要です。POST /api/pull
: Ollamaライブラリからモデルのダウンロードを開始します(ollama pull
と同等)。name
(モデル:タグ)を含むJSONボディが必要です。進行状況情報をストリーミングすることもできます。POST /api/create
: 提供されたModelfileコンテンツに基づいて新しいカスタムモデルを作成します(ollama create -f
と同等)。name
(新しいモデル名)とmodelfile
(Modelfileのコンテンツを文字列として)を含むJSONボディが必要です。POST /api/copy
: 既存のローカルモデルを新しい名前で複製します(ollama cp
と同等)。source
とdestination
の名前を含むJSONボディが必要です。POST /api/push
: カスタムローカルモデルをOllama.comアカウントにアップロードします(事前のログイン/設定が必要)。name
(名前空間付きモデル名)を含むJSONボディが必要です。
APIリクエスト/レスポンス形式:
ほとんどのPOST
およびDELETE
リクエストは、リクエストボディにJSONペイロードを期待します。応答は通常、JSONオブジェクトとして返されます。generate
およびchat
エンドポイントでは、応答形式を制御できます。
"stream": false
(デフォルト): APIは応答全体が生成されるまで待機し、完全なテキスト、補完の詳細、およびパフォーマンス統計を含む単一のJSONオブジェクトとして返します。"stream": true
: APIは、生成されたトークン(またはトークンの小さなチャンク)ごとに1つずつ、JSONオブジェクトのストリームを返します。これにより、アプリケーションは応答を段階的に表示でき、よりインタラクティブなユーザーエクスペリエンスを提供します。ストリーム内の最後のJSONオブジェクトには、全体的な統計が含まれます。
curl
を使用したAPI対話の例:
1. 簡単な生成リクエスト(非ストリーミング):
curl http://localhost:11434/api/generate -d '{
"model": "phi4-mini",
"prompt": "階乗を計算する短いPython関数を書いてください:",
"stream": false,
"options": {
"temperature": 0.3,
"num_predict": 80
}
}'
2. 会話型チャットリクエスト(ストリーミング):
# 注:ストリーミング出力は複数のJSON行として表示されます
curl http://localhost:11434/api/chat -d '{
"model": "llama3.2:8b-instruct-q5_K_M",
"messages": [
{ "role": "system", "content": "あなたは知識豊富な歴史家です。" },
{ "role": "user", "content": "第一次世界大戦の主な原因は何でしたか?" }
],
"stream": true,
"options": {
"num_ctx": 4096
}
}'
3. 埋め込み生成リクエスト:
curl http://localhost:11434/api/embeddings -d '{
"model": "mxbai-embed-large", # または別の適切な埋め込みモデル
"prompt": "OllamaはローカルでLLMを簡単に実行できるようにします。"
}'
この汎用性の高いAPIは、Web UI、開発ツール、バックエンドサービス、自動化スクリプトなど、ローカルのOllamaインスタンスを活用する無数のコミュニティ統合のバックボーンを形成します。
Ollama OpenAI互換性APIの活用
OpenAIのAPI標準が広く採用されていることを認識し、Ollamaは思慮深く実験的な互換性レイヤーを含んでいます。これにより、OpenAIのサービス用に設計された多くのツール、ライブラリ、アプリケーションが、最小限の、しばしば些細な変更でローカルのOllamaインスタンスと連携できるようになります。
仕組み:
Ollamaサーバーは、/v1/
パス(例:http://localhost:11434/v1/
)の下にエンドポイントを公開します。これらは、主要なOpenAI APIエンドポイントの構造と期待されるリクエスト/レスポンス形式をミラーリングします。
主要な互換性のあるエンドポイント:
/v1/chat/completions
: OpenAIのチャット補完エンドポイントをミラーリングします。/v1/embeddings
: OpenAIの埋め込みエンドポイントをミラーリングします。/v1/models
: OpenAIのモデル一覧表示エンドポイントをミラーリングします(ローカルのOllamaモデルを返します)。
OllamaでOpenAIクライアントライブラリを使用する:
主な利点は、クライアントを初期化する際に2つの構成パラメータを変更するだけで、標準のOpenAIクライアントライブラリ(openai-python
、openai-node
など)を使用できることです。
base_url
(またはapi_base
): これをローカルのOllama v1エンドポイントに設定します:http://localhost:11434/v1/
。api_key
: 任意の空でない文字列を提供します。Ollamaの/v1/
エンドポイントは実際には認証を実行せず、キーの値を無視しますが、ほとんどのOpenAIクライアントライブラリではパラメータが存在する必要があります。一般的な慣行は、文字列"ollama"
または"nokey"
を使用することです。
openai-python
を使用したPythonの例:
# openaiライブラリがインストールされていることを確認してください:pip install openai
from openai import OpenAI
import os
# OllamaエンドポイントとダミーAPIキーを定義
OLLAMA_BASE_URL = "http://localhost:11434/v1"
OLLAMA_API_KEY = "ollama" # プレースホルダー、Ollamaによって値は無視される
# 使用したいローカルOllamaモデルを指定
OLLAMA_MODEL = "llama3.2"
try:
# OpenAIクライアントを初期化し、Ollamaサーバーを指すようにする
client = OpenAI(
base_url=OLLAMA_BASE_URL,
api_key=OLLAMA_API_KEY,
)
print(f"Ollamaモデルへのリクエスト送信中:{OLLAMA_MODEL}(OpenAI互換レイヤー経由)...")
# 標準的なチャット補完リクエストを作成
chat_completion = client.chat.completions.create(
model=OLLAMA_MODEL, # ローカルOllamaモデルの名前を使用
messages=[
{"role": "system", "content": "あなたは役立つアシスタントです。"},
{"role": "user", "content": "Ollamaとllama.cppの違いを説明してください。"}
],
temperature=0.7,
max_tokens=250, # 注:'max_tokens'はOllamaの'num_predict'にほぼ対応
stream=False # ストリーミング応答の場合はTrueに設定
)
# 応答を処理
if chat_completion.choices:
response_content = chat_completion.choices[0].message.content
print("\nOllama応答:")
print(response_content)
print("\n使用統計:")
print(f" プロンプトトークン: {chat_completion.usage.prompt_tokens}")
print(f" 補完トークン: {chat_completion.usage.completion_tokens}")
print(f" 合計トークン: {chat_completion.usage.total_tokens}")
else:
print("Ollamaから応答の選択肢が受信されませんでした。")
except Exception as e:
print(f"\nエラーが発生しました:")
print(f" エラータイプ: {type(e).__name__}")
print(f" エラー詳細: {e}")
print(f"\nOllamaサーバーが実行中で、{OLLAMA_BASE_URL}でアクセス可能であることを確認してください。")
print(f"また、モデル'{OLLAMA_MODEL}'がローカルで利用可能であること('ollama list')を確認してください。")
この互換性により、既存のOpenAIベースのプロジェクトをOllama経由でローカルモデルを使用するように移行したり、クラウドとローカルのバックエンドを柔軟に切り替えられる新しいアプリケーションを構築したりすることが大幅に簡素化されます。すべての難解なOpenAI機能が完全にミラーリングされているわけではないかもしれませんが、コアとなるチャット、埋め込み、モデル一覧表示機能は十分にサポートされています。
Modelfileによる詳細なOllamaカスタマイズ
Modelfile
はOllamaのカスタマイズ機能の基礎です。それは、Ollamaモデルがどのように構築または変更されるべきかを正確に定義する設計図またはレシピとして機能します。これらの単純なテキストファイルを作成および編集することにより、モデルの動作、パラメータ、および構造をきめ細かく制御できます。
コアOllama Modelfile命令:
FROM <ベースモデル参照>
: (必須の最初の命令) 新しいモデルが構築される基盤を指定します。参照は以下を指すことができます。- ローカルOllamaライブラリまたは公式レジストリ内の既存モデル(例:
FROM llama3.2:8b-instruct-q5_K_M
)。 - Safetensors形式の非圧縮モデル重みと必要な構成ファイル(
config.json
,tokenizer.json
など)を含むローカルディレクトリへの相対パスまたは絶対パス。例:FROM /mnt/models/my_downloaded_llama/
。Ollamaはサポートされているアーキテクチャ(Llama、Mistral、Phi、Gemmaなど)のロードを試みます。 - 一般的なGGUF形式(重みとメタデータをパッケージ化)の単一モデルファイルへの相対パスまたは絶対パス。例:
FROM ./models/mistral-7b-instruct-v0.2.Q5_K_M.gguf
。 PARAMETER <パラメータ名> <値>
: 作成されるモデルのデフォルトのランタイムパラメータ値を設定します。これらのデフォルトは、ollama run
中(/set parameter
経由)、APIコールオプション、または同じModelfile内の後続のPARAMETER
命令によって上書きされない限り使用されます。PARAMETER temperature 0.6
PARAMETER num_ctx 8192
(デフォルトのコンテキストウィンドウを設定)PARAMETER stop "<|user|>"
PARAMETER stop "<|end_of_turn|>"
(複数の停止パラメータを持つことができます)PARAMETER repeat_penalty 1.15
TEMPLATE "<プロンプトテンプレート文字列>"
: Ollamaが基盤となるLLMにフィードする前に入力プロンプトを構造化するために使用すべき特定の形式を定義します。これは、チャットおよび指示追従モデルにとって非常に重要です。なぜなら、それらはシステムメッセージ、ユーザーターン、アシスタントターンを区切る特別なトークンまたはマーカーを期待するようにトレーニングされているからです。テンプレートはGoのtext/template構文を使用します。テンプレート文字列内で利用可能な主要な変数には以下が含まれます。{{ .System }}
: システムメッセージのプレースホルダー。{{ .Prompt }}
: ユーザーの現在の入力のプレースホルダー(/api/generate
で使用)。{{ .Response }}
: モデルの生成された出力が追加される場所のプレースホルダー(多くの場合、内部的に、または特定のテンプレート構造で使用されます)。{{ range .Messages }}
...{{ .Role }}
...{{ .Content }}
...{{ end }}
: チャットテンプレート(/api/chat
)で使用され、メッセージ履歴全体(システム、ユーザー、アシスタントターン)を反復処理し、正しくフォーマットします。{{ .First }}
: 現在のメッセージが最初のメッセージであるかどうかを示すブール値(特別なシーケンス開始トークンを追加するのに役立ちます)。
例(簡略化されたChatMLテンプレート):
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>{{ end }}{{ range .Messages }}
<|im_start|>{{ .Role }}
{{ .Content }}<|im_end|>{{ end }}
<|im_start|>assistant
"""
テンプレートを正しく設定することは、モデルに指示に従わせたり、自然に会話させたりするために不可欠です。モデルのデフォルトテンプレートはollama show --modelfile <モデル名>
を使用して表示できます。
SYSTEM "<デフォルトシステムメッセージ>"
: APIまたはCLI経由で他のシステムメッセージが提供されない場合に使用されるデフォルトのシステムプロンプトを提供します。これは、モデルに一貫したペルソナまたは指示セットを設定するのに役立ちます。SYSTEM "あなたは簡潔な回答を提供することに焦点を当てた役立つAIアシスタントです。"
ADAPTER </パス/アダプター重みへ>
:FROM
命令で指定されたベースモデルにLoRA(Low-Rank Adaptation)またはQLoRAアダプターを適用します。アダプターは、事前トレーニングされたLLMを特定のタスク、スタイル、または知識ドメインに合わせて変更または特化するためにトレーニングされた小さな重みセットであり、巨大なモデル全体を再トレーニングする必要はありません。パスは以下を指すことができます。- アダプターを含む単一の
.gguf
ファイル。 - Safetensors形式のアダプター重み(
adapter_model.safetensors
,adapter_config.json
)を含むディレクトリ。
重要: アダプターが正しく機能するためには、ベースモデル(FROM
)がアダプターが元々トレーニングされたものと同一である必要があります。 LICENSE "<ライセンス詳細>"
: モデルのメタデータ内にライセンス情報を埋め込みます。短い識別子("MIT"など)または長いテキストブロックにすることができます。MESSAGE user "<例文ユーザーメッセージ>"
/MESSAGE assistant "<例文アシスタント応答>"
: 例の会話ターンを定義します。これらは、特に少数ショットプロンプティングシナリオにおいて、モデルのトーン、スタイル、または期待される出力形式をガイドするのに役立つ場合がありますが、その効果はモデルによって異なります。
ModelfileからOllamaモデルをビルドする:Modelfile
を作成したら(例:MyCustomModel.modelfile
として保存)、ollama create
コマンドを使用して対応するOllamaモデルをビルドします。
ollama create my-new-model-name -f MyCustomModel.modelfile
Ollamaは命令を処理し、必要に応じてレイヤーを組み合わせ、アダプターを適用し、パラメータを設定し、新しいモデル(my-new-model-name
)をローカルライブラリに登録します。その後、他のモデルと同様に実行できます:ollama run my-new-model-name
。
外部モデルをOllamaにインポートする(GGUF、Safetensors)
OllamaのModelfile
システムは、他のソース(Hugging Face、独立した研究者など)から入手した、標準フォーマットで配布されているモデルをシームレスに使用する方法を提供します。
GGUFモデルをOllamaにインポートする: GGUFは、llama.cpp
および同様の推論エンジンのために特別に設計された人気のフォーマットです。モデルの重み(しばしば事前に量子化されている)、トークナイザー情報、およびメタデータを単一のファイルにパッケージ化します。これは多くの場合、インポートするのが最も簡単なフォーマットです。
.gguf
ファイルをダウンロードします(例:zephyr-7b-beta.Q5_K_M.gguf
)。- 最小限の
Modelfile
を作成します(例:ZephyrImport.modelfile
):
# ZephyrImport.modelfile
FROM ./zephyr-7b-beta.Q5_K_M.gguf
# 重要:このモデルに必要な正しいプロンプトテンプレートを追加してください!
# (モデルに必要なテンプレート形式を調べてください)
TEMPLATE """<|system|>
{{ .System }}</s>
<|user|>
{{ .Prompt }}</s>
<|assistant|>
{{ .Response }}</s>
"""
PARAMETER num_ctx 4096 # 妥当なデフォルトコンテキストを設定
SYSTEM "あなたはフレンドリーなチャットボットです。" # オプションのデフォルトシステムプロンプト
- Ollamaモデルをビルドします:
ollama create my-zephyr-gguf -f ZephyrImport.modelfile
。
Safetensorsモデル(フルウェイト)をOllamaにインポートする: Safetensorsは、モデルテンソルを保存するための安全で高速なフォーマットです。このフォーマットでモデルの完全な重みと構成ファイルのセットがある場合:
- 必要なすべてのファイル(
*.safetensors
重みファイル、config.json
,tokenizer.json
,special_tokens_map.json
,tokenizer_config.json
など)が単一のディレクトリ内にあることを確認します(例:/data/models/Mistral-7B-v0.1-full/
)。 - このディレクトリを参照する
Modelfile
を作成します。
# MistralImport.modelfile
FROM /data/models/Mistral-7B-v0.1-full/
# 必要なTEMPLATE、PARAMETER、SYSTEM命令を追加
TEMPLATE """[INST] {{ if .System }}{{ .System }} \n{{ end }}{{ .Prompt }} [/INST]
{{ .Response }}"""
PARAMETER num_ctx 4096
PARAMETER temperature 0.7
- モデルをビルドします:
ollama create my-mistral-safetensors -f MistralImport.modelfile
。Ollamaは互換性のあるアーキテクチャのロードを試みます。モデルが非量子化(例:FP16)の場合、オプションで作成中に量子化できます(下記参照)。
Ollama Modelfile経由でSafetensors LoRAアダプターを適用する:
- まず、LoRAアダプターがトレーニングされた正確なベースOllamaモデルがあることを確認します。必要であればプルします(例:
ollama pull llama3.2:8b
)。 - LoRAアダプターファイル(例:
adapter_model.safetensors
,adapter_config.json
)を独自のディレクトリに配置します(例:/data/adapters/my_llama3_lora/
)。 - ベースとアダプターの両方を指定する
Modelfile
を作成します。
# ApplyLora.modelfile
FROM llama3.2:8b # アダプターのベースと一致する必要があります!
ADAPTER /data/adapters/my_llama3_lora/
# LoRAが必要とする場合はパラメータまたはテンプレートを調整
PARAMETER temperature 0.5
SYSTEM "あなたは今、LoRAによって教えられたスタイルで応答します。"
- 適応されたモデルをビルドします:
ollama create llama3-with-my-lora -f ApplyLora.modelfile
。
Ollamaでモデルを量子化する
量子化は、モデルの重みの数値精度を下げる(例えば、16ビット浮動小数点数を4ビット整数に変換する)プロセスです。これにより、モデルのファイルサイズとメモリフットプリント(RAM/VRAM使用量)が大幅に縮小され、推論が高速化され、より大きく、より高性能なモデルをコンシューマーハードウェアで実行できるようになります。トレードオフは通常、わずかで、しばしば知覚できない程度の出力品質の低下です。
Ollamaは、ModelfileのFROM
命令が非量子化または高精度のモデル重み(通常はFP16またはFP32 Safetensors)を指している場合、モデル作成プロセス中に量子化を実行できます。
ollama create
を使用して量子化する方法:
- 非量子化モデル重みを含むディレクトリを指す
Modelfile
を作成します。
# QuantizeMe.modelfile
FROM /path/to/my/unquantized_fp16_model/
# 必要に応じてTEMPLATE、PARAMETER、SYSTEMを追加
-q
(または--quantize
)フラグに続けて目的の量子化レベル識別子を付けてollama create
コマンドを実行します。
# Q4_K_Mに量子化(サイズ/品質の人気のバランス)
ollama create my-quantized-model-q4km -f QuantizeMe.modelfile -q q4_K_M
# Q5_K_Mに量子化(わずかに大きく、潜在的により良い品質)
ollama create my-quantized-model-q5km -f QuantizeMe.modelfile -q q5_K_M
# Q8_0に量子化(量子化の中で最大の共通サイズ、最高の品質)
ollama create my-quantized-model-q8 -f QuantizeMe.modelfile -q q8_0
# Q3_K_Sに量子化(非常に小さい、より多くの品質損失)
ollama create my-quantized-model-q3ks -f QuantizeMe.modelfile -q q3_K_S
Ollamaはllama.cpp
の量子化ルーチンを使用して変換を実行し、新しく量子化されたモデルを指定された名前で保存します。
一般的な量子化レベル:
q4_0
,q4_1
: 基本的な4ビット量子化。q5_0
,q5_1
: 基本的な5ビット量子化。q8_0
: 8ビット量子化(ファイルサイズが大きい、元の品質に近い)。q3_K_S
,q3_K_M
,q3_K_L
: より高度な3ビット「K-Quant」メソッド(Small/Medium/Largeの内部バリエーション)。非常に小さい、顕著な品質トレードオフ。q4_K_S
,q4_K_M
: 高度な4ビットK-Quant。q4_K_M
はしばしば推奨されるスイートスポットです。q5_K_S
,q5_K_M
: 高度な5ビットK-Quant。良いバランス、Q4_Kよりわずかに大きい。q6_K
: 高度な6ビットK-Quant。サイズが大きい、Q8品質に近づく。
適切な量子化レベルの選択は、ハードウェアの制約と潜在的な品質低下に対する許容度によって異なります。多くの場合、最初にq4_K_M
またはq5_K_M
を試す価値があります。
カスタムOllamaモデルの共有
Modelfileを使用して独自のモデルバリアントを作成した場合 – 例えば、特定のLoRAを適用したり、クリエイティブなシステムプロンプトとテンプレートを設定したり、パラメータを微調整したりした場合 – その作成物を公式のOllamaモデルレジストリウェブサイトでより広範なOllamaコミュニティと共有できます。
Ollamaモデルを共有する手順:
- Ollamaアカウントの作成: Ollamaウェブサイト(ollama.com)で無料アカウントにサインアップします。選択したユーザー名が、共有モデルの名前空間になります。
- ローカルOllamaのリンク: ローカルOllamaインストールをオンラインアカウントに関連付ける必要があります。これには、ローカルマシンのOllama公開キーをウェブサイトのアカウント設定に追加することが含まれます。ウェブサイトでは、オペレーティングシステムに基づいてローカル公開キーファイル(
id_ed25519.pub
)を見つける方法に関する具体的な手順が提供されています。 - モデルの正しい命名: 共有モデルは、
あなたのユーザー名/あなたのモデル名
の形式で、Ollamaユーザー名で名前空間を付ける必要があります。ローカルカスタムモデルの名前が異なる場合(例:mario
)、まずollama cp
を使用して正しい名前空間付きの名前にコピーする必要があります。
# ユーザー名が 'luigi' でローカルモデルが 'mario' であると仮定
ollama cp mario luigi/mario
- レジストリへのモデルのプッシュ: モデルがローカルで正しく命名され、キーがリンクされたら、
ollama push
コマンドを使用します。
ollama push luigi/mario
Ollamaは、必要なモデルレイヤーとメタデータをレジストリにアップロードします。
プッシュが完了すると、世界中の他のOllamaユーザーは、その名前空間付きの名前を使用するだけで、共有モデルを簡単にダウンロードして実行できます。
ollama run luigi/mario
この共有メカニズムは協力を促進し、コミュニティが特化された、または創造的にカスタマイズされたモデルから利益を得ることを可能にします。
OllamaパフォーマンスのGPUアクセラレーションによる最適化
OllamaはモデルをコンピュータのCPUのみで実行できますが、互換性のあるグラフィックプロセッシングユニット(GPU)を活用することで、モデルがテキストを生成する速度(推論速度)が劇的に向上します。Ollamaは、可能な限りサポートされているGPUを自動的に検出して利用するように設計されています。
NVIDIA GPUを使用したOllama: OllamaはNVIDIA GPUに対して優れたサポートを提供しており、以下が必要です。
- CUDA Compute Capability 5.0以上を搭載したGPU(ほとんどのGeForce GTX 900シリーズ/Quadro Mシリーズ以降のカード)。互換性についてはNVIDIAのCUDA GPUリストを確認してください。
- ホストシステム(LinuxまたはWindows)に正しくインストールされた公式のプロプライエタリNVIDIAドライバー。
- Dockerを使用したLinuxでは、NVIDIA Container Toolkitがインストールされ、構成されている必要があります。
Ollamaは互換性のあるハードウェアとドライバーを自動的に検出し、計算をGPUにオフロードするはずです。
AMD Radeon GPUを使用したOllama: 最新のAMD GPUのサポートは、WindowsとLinuxの両方で利用可能です。
- Windowsでは最新のAMD Radeon Software(Adrenalin Edition)ドライバーが必要です。
- LinuxではROCm(Radeon Open Compute platform)ソフトウェアスタックがインストールされている必要があります(バージョン5または6+推奨)。Ollama Linuxインストーラーまたは
:rocm
Dockerイメージは依存関係の解決に役立つことが多いですが、特定のディストリビューションでは完全な互換性のために手動でのROCmインストールが必要になる場合があります。 - サポートされているGPUには、一般的にRX 6000シリーズ、RX 7000シリーズ、PRO W6000/W7000シリーズ、および一部のInstinctアクセラレータが含まれます。詳細なリストについては、公式のOllama GPUドキュメントを確認してください。
Apple Siliconを使用したOllama(macOS): M1、M2、M3、またはM4シリーズチップを搭載したMacでは、OllamaはAppleのMetalグラフィックスAPIを介して組み込みGPU機能を自動的に利用します。通常、追加のドライバーのインストールや構成は必要ありません。GPUアクセラレーションはすぐに機能します。
Ollama GPU使用状況の確認:
Ollamaが実際にGPUを使用しているかどうかを確認する最も簡単な方法は、モデルがロードされている間にollama ps
コマンドを実行することです(例:別のターミナルでollama run <モデル>
を開始した直後、またはAPIリクエストが処理されている間)。出力のPROCESSOR
列を確認します。
gpu
: モデルのレイヤーが主にGPUにロードされていることを示します。cpu
: モデルがCPUのみで実行されていることを示します。これは、互換性のあるGPUが検出されなかった、ドライバーが見つからないか正しくない、またはGPUサポートの初期化中に問題が発生したことを意味する可能性があります。エラーについてはOllamaサーバーログを確認してください。
マルチGPU Ollamaセットアップでの特定GPUの選択:
システムに複数の互換性のあるGPUが含まれている場合、Ollamaサーバープロセスを起動する前に環境変数を設定することで、Ollama(および基盤となるllama.cpp
)にどの特定のデバイスを使用するかを指示できます。
- NVIDIA (
CUDA_VISIBLE_DEVICES
): この変数を、GPUインデックス(0から始まる)または、できればGPU UUIDのコンマ区切りリストに設定します。 export CUDA_VISIBLE_DEVICES=0
(NVIDIAによって検出された最初のGPUのみを使用)。export CUDA_VISIBLE_DEVICES=1
(2番目のGPUのみを使用)。export CUDA_VISIBLE_DEVICES=GPU-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,GPU-yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
(nvidia-smi -L
を使用して見つけることができる特定のUUIDで識別されるGPUを使用)。- AMD (
ROCR_VISIBLE_DEVICES
): この変数を、rocminfo
コマンドによって報告されるGPUインデックス(通常は0から始まる)のコンマ区切りリストに設定します。 export ROCR_VISIBLE_DEVICES=0
(検出された最初のAMD GPUを使用)。export ROCR_VISIBLE_DEVICES=1,2
(検出された2番目と3番目のAMD GPUを使用)。
無効なデバイスID(例:export CUDA_VISIBLE_DEVICES=-1
)を設定することは、意図的にOllamaにCPUのみを使用させる方法としてしばしば使用され、デバッグに役立ちます。これらの環境変数を設定した後、変更を有効にするためにOllamaサーバー/アプリを再起動することを忘れないでください。
Ollama環境の設定
デフォルト設定を超えて、Ollamaの動作はさまざまな環境変数を使用して微調整できます。これらにより、ネットワーク設定、ストレージ場所、ログレベルなどをカスタマイズできます。
設定用の主要なOllama環境変数
OLLAMA_HOST
: Ollama APIサーバーがリッスンするネットワークインターフェースとポートを制御します。- デフォルト:
127.0.0.1:11434
(ループバックインターフェースでのみリッスンし、同じマシンからのみアクセス可能)。 - 例:
0.0.0.0:11434
(利用可能なすべてのネットワークインターフェースでリッスンし、ローカルネットワーク上の他のデバイスからOllamaにアクセス可能にします。警告: Ollamaを外部に公開する場合は、適切なファイアウォールルールが設定されていることを確認してください)。 - 例:
192.168.1.100:11500
(特定のローカルIPアドレスとカスタムポートでのみリッスン)。 OLLAMA_MODELS
: **重要なことに、この変数は、Ollamaがダウンロードしたモデルを保存し、検索するカスタムディレクトリパスを指定できるようにします。**これは、デフォルトドライブ(~/.ollama
またはC:\Users\<User>\.ollama
がある場所)の空き容量が少ない場合や、モデルを専用のSSDまたはより大きなドライブに整理したい場合に非常に便利です。- 例(Linux/macOS):
export OLLAMA_MODELS=/mnt/large_drive/my_ollama_models
- 例(Windows): システムプロパティ経由で
OLLAMA_MODELS
をD:\ollama_data
に設定します。 - 重要: ディレクトリが存在し、Ollamaサーバープロセスを実行しているユーザーアカウントがこのカスタムパスに対する完全な読み取りおよび書き込み権限を持っていることを確認してください。
OLLAMA_ORIGINS
: Ollama APIのクロスオリジンリソース共有(CORS)を管理します。デフォルトでは、Webブラウザは、ページが提供されたドメイン(オリジン)とは異なるドメインへのAPIリクエストをWebページから行うことを制限します。別のオリジン(例:http://localhost:3000
)から提供される別のWeb UI(Open WebUI、Lobe Chatなど)を実行していて、それがOllama API(http://localhost:11434
)を呼び出す必要がある場合は、UIのオリジンをこの変数に追加する必要があります。- 例:
export OLLAMA_ORIGINS=http://localhost:3000,http://192.168.1.50:8080
(これら2つの特定のオリジンからのリクエストを許可)。 - 例:
export OLLAMA_ORIGINS='*'
(任意のオリジンからのリクエストを許可。注意して使用してください。特にOLLAMA_HOST
が127.0.0.1
でない場合は、APIが広く公開される可能性があるため)。chrome-extension://*
のようなプロトコルを含めることができます。 OLLAMA_DEBUG
: 詳細なデバッグロギングを有効にするには1
に設定します。これにより、GPU検出ステップ、モデルロードの詳細、潜在的なエラーなど、Ollamaの内部操作に関するはるかに詳細な情報が提供され、トラブルシューティングに非常に役立ちます。- 例:
export OLLAMA_DEBUG=1
OLLAMA_KEEP_ALIVE
: Ollamaが最後の要求後にモデルをメモリにロードし続ける時間を制御します。デフォルトでは、約5分(5m
)かもしれません。0
に設定すると、使用後すぐにモデルがアンロードされます(RAM/VRAMを節約しますが、次の要求のロード時間が増加します)。より長い期間(例:30m
)または-1
(サーバーが停止するまで無期限にロード)に設定すると、同じモデルへの頻繁な要求を高速化できますが、常にリソースを消費します。- 例:
export OLLAMA_KEEP_ALIVE=15m
HTTPS_PROXY
/HTTP_PROXY
/NO_PROXY
: Ollamaが(ollama.comからモデルをダウンロードするためにollama pull
を実行する場合など)送信インターネット要求をプロキシサーバー経由でルーティングする必要がある場合に使用される標準的なネットワーク環境変数。企業の環境で一般的です。- 例:
export HTTPS_PROXY=http://proxy.mycompany.com:8080
Ollama環境変数の設定方法
これらの変数を設定する正しい方法は、Ollamaをどのようにインストールして実行したかによって異なります。
macOS上のOllama(アプリ使用): macOSのGUIアプリケーションの環境変数は、launchctl
を使用して設定するのが最適です。ターミナルを開き、次を使用します。
launchctl setenv OLLAMA_MODELS "/Volumes/ExternalSSD/OllamaStorage"
launchctl setenv OLLAMA_HOST "0.0.0.0:11434"
# 他の変数についても繰り返す
変数を設定した後、変更を有効にするには、メニューバーアイコンからOllamaアプリケーションを終了して再起動する必要があります。
Linux上のOllama(Systemdサービス使用): 推奨される方法は、サービスのオーバーライドファイルを作成することです。
sudo systemctl edit ollama.service
を実行します。これにより、空のテキストエディタが開きます。- 必要に応じて変数と値を変更して、次の行を追加します。
[Service]
Environment="OLLAMA_MODELS=/path/to/custom/model/dir"
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_DEBUG=1"
- エディタを保存して閉じます。
- 変更を適用します:
sudo systemctl daemon-reload
- Ollamaサービスを再起動します:
sudo systemctl restart ollama
Windows上のOllama: 組み込みの環境変数エディターを使用します。
- スタートメニューで「システム環境変数の編集」を検索して開きます。
- 「環境変数...」ボタンをクリックします。
- 特定のユーザー(「ユーザー環境変数」)またはすべてのユーザー(「システム環境変数」)に変数を設定できます。通常、システム変数には管理者権限が必要です。
- 目的のセクションの下にある「新規...」をクリックします。
変数名
(例:OLLAMA_MODELS
)と変数値
(例:D:\OllamaData
)を入力します。- 開いているすべてのダイアログで「OK」をクリックします。
- **重要なことに、Ollamaバックグラウンドプロセスを再起動する必要があります。**タスクマネージャー(Ctrl+Shift+Esc)を開き、「サービス」タブに移動し、「Ollama」を見つけて右クリックし、「再起動」を選択します。または、コンピュータを再起動します。
Docker経由のOllama: 各変数に対して-e
フラグを使用して、docker run
コマンドで直接環境変数を渡します。
docker run -d \
--gpus=all \
-v ollama_data:/root/.ollama \
-p 127.0.0.1:11434:11434 \
-e OLLAMA_HOST="0.0.0.0:11434" \
-e OLLAMA_DEBUG="1" \
-e OLLAMA_KEEP_ALIVE="10m" \
--name my_ollama_configured \
ollama/ollama
ターミナルでの手動ollama serve
経由のOllama: コマンドの前に同じ行に変数の割り当てを付けるだけです。
OLLAMA_DEBUG=1 OLLAMA_HOST=0.0.0.0:11434 OLLAMA_MODELS=/data/ollama ollama serve
これらの変数は、その特定のサーバーインスタンスにのみ適用されます。
セットアップに適した方法を選択し、変更を有効にするためにOllamaサーバープロセスを再起動することを忘れないでください。
一般的なOllama問題のトラブルシューティング
Ollamaはシンプルさを重視していますが、時折問題が発生する可能性があります。ここでは、頻繁に発生する問題の診断と解決方法を示します。
Ollamaログの確認
主要な診断ツールはOllamaサーバーのログファイルです。起動情報、モデルロード試行、GPU検出結果、APIリクエスト、そして最も重要なこととして、詳細なエラーメッセージが記録されます。
デフォルトのログファイルの場所:
- macOS上のOllama:
~/.ollama/logs/server.log
- Linux上のOllama(Systemd): ジャーナル制御コマンドを使用します:
journalctl -u ollama
。リアルタイムでログを追跡するには-f
を追加します(journalctl -u ollama -f
)。最後の100行を表示するには-n 100
を使用します(journalctl -u ollama -n 100
)。 - Windows上のOllama: ログファイルは
%LOCALAPPDATA%\Ollama
内にあるserver.log
です。ファイルエクスプローラーのアドレスバーまたは実行ダイアログ(Win+R)に%LOCALAPPDATA%\Ollama
を貼り付けることで、このフォルダを簡単に開くことができます。 - Docker経由のOllama: Dockerログコマンドを使用します:
docker logs my_ollama
(my_ollama
をコンテナ名に置き換えます)。追跡するには-f
を追加します(docker logs -f my_ollama
)。 - 手動
ollama serve
経由のOllama: ログはコマンドを起動したターミナルウィンドウに直接出力されます。
ヒント: より詳細なトラブルシューティングを行うには、Ollamaサーバーを起動する前にOLLAMA_DEBUG=1
環境変数を設定してデバッグロギングを常に有効にし、その後ログを再度確認してください。
Ollamaエラーの修正:listen tcp 127.0.0.1:11434: bind: address already in use
この特定のエラーメッセージは、新規ユーザーが遭遇する最も一般的な問題の1つです。これは、Ollamaが必要とするネットワークポート(デフォルトは11434
)が別のプロセスによって既に占有されているため、OllamaがAPIサーバーを起動できないことを意味します。
- 考えられる原因:
- Ollamaサーバーの別のインスタンスが既にバックグラウンドで実行されている(おそらく、クリーンにシャットダウンされなかった以前のセッションから)。
- システム上のまったく異なるアプリケーションが偶然ポート11434を使用している。
- 解決策1:競合するプロセスを特定して停止する: ポートを使用しているプロセスを見つけて停止する必要があります(安全に行える場合)。
- Linux / macOS: ターミナルを開き、
sudo lsof -i :11434
またはsudo netstat -tulnp | grep 11434
を実行します。これらのコマンドは、ポートを使用しているプログラムのプロセスID(PID)を表示するはずです。その後、正常に停止しようとするか、sudo kill <PID>
を使用できます。それが古いOllamaプロセスであれば、それを強制終了することで競合が解決するはずです。 - Windows: 管理者としてコマンドプロンプトを開き、
netstat -ano | findstr "11434"
を実行します。最後の列でPIDを確認します。タスクマネージャー(Ctrl+Shift+Esc)を開き、「詳細」タブ(または「プロセス」タブでPID列を追加)に移動し、そのPIDを持つプロセスを見つけて、適切であれば終了します。 - 解決策2:Ollamaのリッスンポートを変更する: 競合するプロセスを停止できない場合、または意図的にOllamaを別のポートで実行したい場合は、Ollamaが代替ポートを使用するように構成できます。Ollamaを起動する前に
OLLAMA_HOST
環境変数を設定して、目的のポートを含めます。 - 例:
OLLAMA_HOST
を127.0.0.1:11435
に設定します(構成セクションで説明した方法を使用)。 - この変更を行った後、APIクライアント構成、Web UI、またはスクリプトを新しいポート(例:
http://localhost:11435
)を指すように調整することを忘れないでください。
Ollama GPU検出および使用の問題の解決
ollama ps
がgpu
ではなくcpu
を表示する場合、またはログに特定のGPU関連のエラー(CUDA error
, ROCm error
など)が発生する場合は、次の手順に従ってください。
- GPUの互換性を確認する: 特定のGPUモデルがGitHubの公式Ollama GPUドキュメントでサポートされているとしてリストされていることを再確認します。
- ドライバーを更新する: NVIDIAまたはAMDのウェブサイトから直接インストールされた最新の安定した公式ドライバーがあることを確認します。OSに含まれる汎用ドライバーはしばしば不十分です。ドライバーインストール後の完全なシステム再起動が強く推奨されます。
- Ollamaログを確認する(デバッグモード):
OLLAMA_DEBUG=1
を設定し、Ollamaサーバーを再起動し、起動ログを注意深く調べます。GPU検出、ライブラリのロード(CUDA、ROCm)、および特定のエラーコードに関連するメッセージを探します。 - NVIDIA固有(Linux):
nvidia-smi
コマンドが機能し、GPUとドライバーのバージョンが表示されることを確認します。- Dockerを使用している場合は、NVIDIA Container Toolkitがインストールされ、機能していることを確認します(
docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi
)。 - 必要なカーネルモジュールがロードされているかどうかを確認します(
lsmod | grep nvidia
)。時々リロードする(sudo rmmod nvidia_uvm nvidia && sudo modprobe nvidia_uvm nvidia
)と役立つことがあります。 - ハードウェアまたはドライバーのエラーについては、システムログ(
dmesg | grep -iE 'nvidia|nvrm'
)を確認します。 - AMD固有(Linux):
rocminfo
コマンドが機能し、GPUが表示されることを確認します。- Ollama(またはDockerコンテナ)を実行しているユーザーが、
/dev/kfd
および/dev/dri/renderD*
デバイスに対する正しい権限を持っていることを確認します(多くの場合、render
およびvideo
グループのメンバーシップが必要です)。groups $USER
またはgroups ollama
でグループメンバーシップを確認します。Dockerコマンドに--group-add render --group-add video
が必要な場合があります。 - エラーについては、システムログ(
dmesg | grep -iE 'amdgpu|kfd'
)を確認します。 - CPUを強制する(テスト用): 一時的な診断ステップとして、
CUDA_VISIBLE_DEVICES=-1
またはROCR_VISIBLE_DEVICES=-1
を設定してCPUの使用を強制してみてください。OllamaがCPUで正しく実行される場合、問題がGPUセットアップに関連していることが確認されます。
その他の一般的なOllama問題への対処
- 権限エラー(モデルディレクトリ): 特にSystemdサービスを使用しているLinuxで、Ollamaがモデルのプルまたは作成に失敗する場合、モデルストレージディレクトリ(
OLLAMA_MODELS
またはデフォルト)への書き込み権限がない可能性があります。ディレクトリが存在し、ollama
ユーザー/グループによって所有されているか書き込み可能であることを確認します(sudo chown -R ollama:ollama /path/to/models
およびsudo chmod -R 775 /path/to/models
)。 - 遅いモデルダウンロード(
ollama pull
): - 基本的なインターネット接続速度を確認します。
- プロキシの背後にいる場合は、
HTTPS_PROXY
が正しく構成されていることを確認します。 ollama.com
への接続をブロックまたはスロットリングしている可能性のあるファイアウォールルールを確認します。- WSL2を使用しているWindowsでは、既知のLSO(Large Send Offload)の問題がWSL内のネットワークパフォーマンスに影響を与えることがあります。Windowsネットワークアダプター設定でWSL仮想ネットワークアダプターのLSOv2を無効にすると役立つ場合がありますが、これは現在ではあまり一般的ではありません。
- 文字化けしたターミナル出力(古いWindowsでの
ollama run
): 古いWindows 10バージョンのcmd.exe
またはPowerShellで←[?25h...
のような奇妙な文字が表示される場合、それはおそらく貧弱なANSIエスケープコードサポートが原因です。最良の解決策は次のとおりです。 - Windows 10をバージョン22H2以降にアップグレードします。
- Windows 11を使用します。
- 優れたANSIサポートを備えた最新のWindowsターミナルアプリケーションを使用します。
これらのトラブルシューティング手順を試し、デバッグログを確認しても問題が解決しない場合は、Ollamaコミュニティが優れたリソースです。問題の明確な説明、OS、Ollamaバージョン、ハードウェア(CPU/GPU/RAM)、使用している特定のモデル、実行したコマンドに関する関連詳細、そして重要なことに、デバッグログの関連セクションを含めて準備します。Ollama Discordで質問を投稿するか、Ollama GitHubリポジトリで詳細な問題を報告してください。
Ollamaを完全にアンインストールする方法
システムからOllamaを削除する必要がある場合、プロセスは最初のインストール方法によって異なります。通常、アプリケーション/バイナリ、バックグラウンドサービス(該当する場合)、および保存されているモデル/構成ファイルの削除が含まれます。
macOSでのOllamaのアンインストール(.app経由でインストール):
- Ollamaの終了: Ollamaメニューバーアイコンをクリックし、「Ollamaを終了」を選択します。
- アプリケーションの削除:
/Applications
フォルダからOllama.app
をゴミ箱/Binにドラッグします。 - データと構成の削除: ターミナルを開き、
rm -rf ~/.ollama
を実行します。警告: これにより、ダウンロードされたすべてのモデルと構成が完全に削除されます。実行する前にコマンドを再確認してください。 - (オプション)環境変数の設定解除:
launchctl setenv
を使用して手動で変数を設定した場合は、それらを設定解除できます:launchctl unsetenv OLLAMA_HOST
,launchctl unsetenv OLLAMA_MODELS
など。
WindowsでのOllamaのアンインストール(.exe経由でインストール):
- Windowsアンインストーラーの使用: 「設定」>「アプリ」>「インストールされているアプリ」に移動します。リストから「Ollama」を見つけ、その横にある3つの点(...)をクリックし、「アンインストール」を選択します。アンインストールのプロンプトに従います。
- データと構成の削除: アンインストーラーが完了した後、Ollamaデータディレクトリを手動で削除します。ファイルエクスプローラーを開き、アドレスバーに
%USERPROFILE%\.ollama
と入力してEnterキーを押し、.ollama
フォルダ全体を削除します。警告: これにより、すべてのモデルが削除されます。 - (オプション)環境変数の削除: システムプロパティ経由で手動で
OLLAMA_HOST
,OLLAMA_MODELS
などを追加した場合は、そこ(「システム環境変数の編集」)に戻って削除します。
LinuxでのOllamaのアンインストール(スクリプトまたは手動バイナリ経由でインストール):
- サービスの停止:
sudo systemctl stop ollama
- サービスの無効化:
sudo systemctl disable ollama
- バイナリの削除:
sudo rm /usr/local/bin/ollama
(またはインストールしたパス)。 - サービスファイルの削除:
sudo rm /etc/systemd/system/ollama.service
- Systemdのリロード:
sudo systemctl daemon-reload
- (オプション)ユーザー/グループの削除:
ollama
ユーザー/グループが作成された場合:sudo userdel ollama
,sudo groupdel ollama
。 - データと構成の削除: モデルストレージディレクトリを削除します。これは保存場所によって異なります。
- ユーザーとして実行した場合:
rm -rf ~/.ollama
- システムサービス(
ollama
ユーザー)として実行した場合:sudo rm -rf /usr/share/ollama/.ollama
(またはサービスファイル内のOLLAMA_MODELS
で指定されたパス)。
警告:sudo rm -rf
は細心の注意を払って使用してください。実行する前にパスが正しいことを確認してください。
Docker経由でのOllamaのアンインストール:
- コンテナの停止:
docker stop my_ollama
(コンテナ名を使用)。 - コンテナの削除:
docker rm my_ollama
。 - イメージの削除:
docker rmi ollama/ollama
(および使用した場合はollama/ollama:rocm
)。 - (オプション、破壊的)ボリュームの削除: Dockerボリュームに保存されているダウンロードされたすべてのモデルを削除したい場合は、
docker volume rm ollama_data
を実行します(作成したボリューム名を使用)。警告: これは元に戻せません。
結論:OllamaでローカルAIの力を受け入れる
Ollamaは、現代の大規模言語モデルの計り知れない力へのアクセスを民主化する上で極めて重要なツールとして立っています。セットアップ、構成、実行の複雑さをエレガントに抽象化することにより、経験豊富な開発者や研究者から好奇心旺盛な愛好家まで、多様なユーザーが自身のハードウェア上で直接洗練されたAIを実行できるようにします。利点は明らかです:比類なきプライバシー、繰り返し発生するAPIコストからの解放、信頼性の高いオフライン操作、そして直感的なModelfile
システムと堅牢なAPIを使用してモデルを深くカスタマイズし実験する自由。
あなたの目標が、次世代のAI駆動アプリケーションを構築することであれ、データ主権を維持しながら最先端の研究を行うことであれ、あるいは単に外部依存なしに言語生成の魅力的な能力を探求することであれ、Ollamaは安定した、効率的で、ユーザーフレンドリーな基盤を提供します。それは、llama.cpp
のような推論エンジンの生の力とユーザーの実用的なニーズとの間のギャップをうまく埋め、活気に満ちたオープンソースAIランドスケープ内でのイノベーションを促進します。
ローカルLLMの世界への旅は、Ollamaのおかげでアクセスしやすく、非常にやりがいのあるものになります。アプリケーションをダウンロードし、ollama pull
を使用して最初のモデルをプルし、ollama run
で会話を開始し、あなた自身のマシン上で、人工知能の広大な可能性を解き放ち始めてください。