主要ポイント
- ローカル実行には、量子化ファイルとコンテキストキャッシュ用の十分なRAMまたはVRAMが必要です。
- Ollamaが最も簡単に始められます。llama.cppは量子化やフラグの制御をより細かく行えます。
- 両方ともOpenAIスタイルのサーバーを公開するため、同じクライアントコードでローカルまたはホストのどちらにも接続できます。
- ホスト型エンドポイントの入力トークン100万トークンあたり$0.15、出力トークン100万トークンあたり$0.50で、設定には数分かかります。
まず判断してください:どのようなハードウェアを持っていますか?
メモリがすべてを決定します。言語モデルは非常に大きな数の集合であり、生成中はその全体が高速メモリ上に存在する必要があります。量子化はこれらの数を圧縮します。4ビット量子化モデルはパラメータあたり約0.5バイトしか必要としないため、80億パラメータのモデルは約5 GB、700億パラメータのモデルは約40 GBになります。量子化フォーマットによって正確なサイズは異なるため、これらは概算として扱ってください。
重みに加えて、コンテキストキャッシュ用のスペースも必要です。これはプロンプトの長さに比例して増大するため、長いロールプレイ履歴や大きなドキュメントは、短い質問よりも多くのメモリを消費します。標準的なコンテキストでは数GBの余裕を見ておき、長いプロンプトに近づける場合はさらに多く計画してください。
- GPUなしの8GBラップトップ:小規模モデルのみ、出力は低速。
- 16〜32GBのApple Silicon Mac:CPUとGPUがメモリを共有するため、ミドルサイズのモデルが良好に動作します。
- VRAM 12〜24GBの単一コンシューマーGPU:ミドルサイズのモデルを高速で実行可能。
- それ以上:複数GPUまたはレンタルサーバーが必要。
方法1:数コマンドでOllama
Ollamaが最短の道です。量子化されたモデルをダウンロードし、バックグラウンドでサーバーを起動してチャットプロンプトを提供します。オペレーティングシステム用の公式サイトからインストールし、Ollamaのモデルライブラリが現在リストしているDolphinのタグを確認してください。リリースごとに名前やサイズが変更されるためです。
# replace <tag> with a Dolphin tag from the Ollama library
ollama pull <tag>
ollama run <tag>
最初のコマンドはファイルをダウンロードしますが、接続が低速な場合は時間がかかる場合があります。2番目のコマンドはターミナル上でインタラクティブなチャットを開きます。Ollamaはローカルマシン上でHTTP APIも提供しており、/v1の下にOpenAI互換のパスがあるため、他のプログラムから利用できます。
生成が非常に遅い場合、モデルがVRAMに収まらず、一部がCPUで実行されている可能性があります。より小さなタグまたは低ビット量子化を選択してください。
方法2:より多くの制御を得るためのllama.cpp
llama.cppは、他の多くのツールが構築されているC++エンジンです。モデルのGGUFファイルをダウンロードし、サーバーを起動します。これはOllamaよりも手順が多くなりますが、コンテキストの長さ、GPUに割り当てるレイヤー数、希望する量子化レベルを設定できます。
# after building llama.cpp and downloading a GGUF file
llama-server -m ./model.gguf -c 8192 -ngl 99 --port 8080
ここで-cはコンテキスト長を設定し、-nglはGPUに送るレイヤー数、--portはポートを選択します。バージョンによってフラグが変化する可能性があるため、プロジェクトのREADMEを確認してください。より大きな-cはより多くのメモリを使用するため、必要な場合にのみ引き上げてください。
グラフィカルな使用の場合、Open WebUIなどのフロントエンドはどちらのサーバーとも通信できます。Open WebUI APIエンドポイントに関するノートに、カスタムエンドポイントを追加する方法が示されています。
コードからローカルサーバーを呼び出す
両方のツールはOpenAIのチャット形式に対応しているため、クライアントは1回だけ記述すればよく、ターゲットを切り替えるには2つの設定を変更するだけです。このスクリプトでは両方のターゲットを並べて設定しています。ローカル側の設定ではOllamaがデフォルトで使用するポートを使います。llama.cppを8080で起動した場合は、ポート番号を変更してください。
from openai import OpenAI
TARGETS = {
"local": {"base_url": "http://localhost:11434/v1", "key": "not-needed", "model": "your-local-tag"},
"hosted": {"base_url": "https://api.dolphinllm.com/v1", "key": "YOUR_KEY", "model": "uncensored"},
}
t = TARGETS["hosted"]
client = OpenAI(base_url=t["base_url"], api_key=t["key"])
resp = client.chat.completions.create(
model=t["model"],
messages=[{"role": "user", "content": "Summarize what a GGUF file is."}],
)
print(resp.choices[0].message.content)
ローカルサーバーでは通常キーは無視されますが、SDKには空でない文字列が必要です。ローカルサーバーのモデル名は読み込んだタグやエイリアスそのものですが、ホスト版のモデルIDは常にuncensoredです。
方法3:セットアップをスキップしてホストエンドポイントを使用
ハードウェアの計算性能が最適でない場合や、すべてのマシンで同じ動作をさせたい場合は、ホスト版エンドポイントの方が簡単です。このサービスは1つのオープンウェイトモデルを提供しており、独立したプロバイダによって運用され、法的な成人向け利用においてコンテンツ拒否なしで回答するようにチューニングされています。これは任意のモデルベンダーの公式APIではなく、他のモデルを選択することもできません。得られるのは安定したURL、キー、トークン単位の課金です。
手順は短いです。Googleまたはメールアドレスとパスワードでサインアップし、APIキーページを開き、ワンクリックで$0.50のトライアルクレジットを受け取ります。カードは不要で、7日間有効、1人1回限りです。その後、上記のPythonスクリプトをホスト型ターゲットで実行します。curlを使用する場合は次の通りです:
curl https://api.dolphinllm.com/v1/chat/completions -H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" -d '{"model":"uncensored","messages":[{"role":"user","content":"Hello"}],"stream":false}'
コンテキストウィンドウは100,000トークンで、これはほとんどのノートパソコンがキャッシュに収められる量を超えています。プロンプトは学習に使用されません。
コストと労力の比較
ローカルは無料のように感じられますが、実際にはそうではありません。ハードウェア、電気、そしてあなたの時間を支払います。ホストはリクエストごとに費用がかかりますが、金額は小さくなります。入力トークン100万あたり$0.15、出力トークン100万あたり$0.50の場合、3,000入力トークンと700出力トークンのチャットターンは次の費用がかかります:
- 入力:3,000 x $0.15 / 1,000,000 = $0.00045
- 出力:700 x $0.50 / 1,000,000 = $0.00035
- 合計:ターンあたり$0.0008、つまり1,000ターンで$0.80
月間5,000回のそのようなターンを送信する重度ユーザーでも、約$4の費用がかかります。数百ドルのGPUでは、その利用量に対して元を取るのに数年かかります。継続的な大量利用、特定のファインチューンが必要、またはマシン外へのデータ送信ができない場合、比較は逆転します。
+5%、+10%、+15%のチャージボーナスを含む完全な価格詳細は価格ページに記載されており、ドキュメントには制限とパラメータが記載されています。
選択のためのシンプルなルール
多くのファインチューンを試したい、オフラインで作業したい、またはすべてのプロンプトを自前のディスクに保持したい場合はローカルで実行してください。他の人が使用するものを構築している場合、ハードウェアが限られている場合、またはメモリ管理なしで長い100,000トークンのコンテキストウィンドウを望む場合はホストエンドポイントを使用してください。多くの開発者は両方を行っています:プライベートな試行錯誤用のローカルモデルと、稼働が必要なもの用のホストエンドポイント。クライアントコードが同じであるため、切り替えには1行の変更だけで済みます。

