ローカルLLM(大規模言語モデル)をGeForce RTXで動かす:インストール&活用レシピ完全ガイド

ローカルLLM(大規模言語モデル)をGeForce RTXで動かす:インストール&活用レシピ完全ガイド

目的: RTX搭載PCで 完全ローカル にLLMを動かすための実用手順を、OllamaLM Studiollama.cpp(llama-cpp-python) の3ルートで解説します。サンプルコードはそのまま貼って使えます。


目次

1. 推奨スペックと準備

  • GPU:GeForce RTX 3060以上(VRAM 8GB〜)。大型モデルや長文処理はVRAM多いほど安定。
  • OS:Windows 10/11(64bit)
  • ツール共通:PowerShell または cmdFFmpeg(音声・動画を扱う場合)

2. ルートA:いちばん簡単に始める Ollama

ポイント: 1コマンドでモデルを取得&実行。APIも最初から内蔵(デフォルトhttp://localhost:11434)。

2.1 インストールと初回起動

  1. 公式サイトからOllamaをインストール(Windows版)。
  2. モデルを取得して即実行:
    ollama pull llama3.1
    ollama run llama3.1
    # 直接プロンプトを渡す例
    ollama run llama3.1 "日本語で自己紹介して。"

2.2 よく使う操作

# インストール済みモデル一覧
ollama list

# モデル情報
ollama show llama3.1

# サーバー単体起動(バックグラウンド運用向け)
ollama serve

2.3 REST APIで叩く(curl/Python)

チャット形式(推奨):

# curl
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.1",
  "messages": [{"role":"user","content":"要点を3行で箇条書きして"}]
}'
# Python(標準ライブラリのみ)
import json, urllib.request
req = urllib.request.Request(
  "http://localhost:11434/api/chat",
  data=json.dumps({
    "model":"llama3.1",
    "messages":[{"role":"user","content":"RTXでローカルLLMの利点を3つ"}],
    "stream": False
  }).encode("utf-8"),
  headers={"Content-Type":"application/json"}
)
with urllib.request.urlopen(req) as r:
    print(r.read().decode("utf-8"))

2.4 カスタム(Modelfile)

システムプロンプトや温度設定を固定した自分専用モデルを作れます:

# Modelfile
FROM llama3.1
PARAMETER temperature 0.6
SYSTEM "あなたは日本語で簡潔に答える技術アシスタントです。"

# 作成&実行
ollama create jp-assist -f Modelfile
ollama run jp-assist

3. ルートB:GUIで手軽+OpenAI互換API LM Studio

ポイント: 画面操作でモデル検索→ダウンロード→起動まで完結。OpenAI互換APIをローカルで提供(既定 http://localhost:1234/v1)。

3.1 セットアップ

  1. LM Studioをダウンロード&インストール。
  2. 「Model」から使いたいモデル(例:Llama 3 InstructQwen 2.5)をダウンロード。
  3. Developer/Local Server で Start Server を押してAPIを起動。

3.2 既存OpenAIクライアントをそのまま流用

# Python
from openai import OpenAI
client = OpenAI(base_url="http://localhost:1234/v1", api_key="lm-studio")
res = client.chat.completions.create(
  model="<LM Studio上のモデルID>",
  messages=[{"role":"user","content":"明日のタスクを箇条書きで"}],
  temperature=0.7
)
print(res.choices[0].message.content)
// TypeScript/Node
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "http://localhost:1234/v1", apiKey: "lm-studio" });
const r = await client.chat.completions.create({
  model: "<model-id>",
  messages: [{ role: "user", content: "日本語で短い自己紹介" }],
});
console.log(r.choices[0].message?.content);

4. ルートC:柔軟&高機能 llama.cpp / llama-cpp-python

ポイント: GGUF量子化モデルを軽量高速に推論。サーバーも同梱&OpenAI互換。

4.1 もっとも簡単:プリビルドサーバー(llama.cpp)

# 事前にGGUFモデルを用意(例:<path>/model.gguf)
# サーバー起動(既定UIつき、OpenAI互換API)
llama-server -m <path>/model.gguf --port 8080

# ブラウザUI: http://localhost:8080
# Chat Completions API: http://localhost:8080/v1/chat/completions

4.2 Python派:llama-cpp-python をCUDAで

CUDA対応Wheelを使う(環境のCUDA版に合わせて選択):

pip install "llama-cpp-python[server]" \
  --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu121
# 例:cu122 / cu123 / cu124 など環境に合わせて変更

OpenAI互換サーバーとして起動:

python -m llama_cpp.server --model <path>/model.gguf --port 8000
# エンドポイント例: http://localhost:8000/v1/chat/completions

5. モデルの選び方(例)

  • 軽量・高速: Phi-4 Mini、Llama 3.x 3B など(Q4量子化)
  • 汎用チャット: Llama 3.1/3.2 8B Instruct、Mistral 7B Instruct、Qwen 2.5 7B Instruct
  • コーディング: Qwen2.5-Coder、DeepSeek/StarCoder系のInstruct/Chat版

量子化(GGUF)Q4_K_*(省メモリ)〜Q5_K_M(高品質寄り)が実用バランス。まずは「VRAMに丸ごと載る最大精度」を選ぶのがコツです。


6. 具体的な活用レシピ

6.1 速攻「議事録→要約」:LM Studio APIを使う

pip install openai
from openai import OpenAI
client = OpenAI(base_url="http://localhost:1234/v1", api_key="lm-studio")

meeting_text = open("meeting.txt", encoding="utf-8").read()
prompt = f"次の議事録を、目的/決定事項/ToDoに整理して日本語で要約してください。\n---\n{meeting_text}\n---"

res = client.chat.completions.create(
  model="<model-id>",
  messages=[{"role":"user","content": prompt}],
  temperature=0.3, max_tokens=800
)
print(res.choices[0].message.content)

6.2 コーディング支援:OllamaのChat API

curl http://localhost:11434/api/chat -d '{
  "model": "llama3.1",
  "messages": [
    {"role":"system","content":"あなたは熟練のソフトウェアエンジニアです。"},
    {"role":"user","content":"このPython関数のバグ原因を説明し、テスト付きで修正して:\n```python\ndef add(a,b): return a-b\n```"}
  ]
}'

6.3 超シンプルRAG:ローカルPDFを質問応答(llama-cpp-pythonサーバー)

最小構成の例(テキスト分割+ベクトル化は簡易実装)。

pip install openai pypdf numpy scikit-learn
import os, glob
from pypdf import PdfReader
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
from openai import OpenAI

# 1) 文書読み込み&チャンク化
docs=[]
for fp in glob.glob("docs/*.pdf"):
    text=""
    for p in PdfReader(fp).pages:
        text+=p.extract_text() or ""
    for i in range(0, len(text), 800):
        docs.append(text[i:i+800])

# 2) TF-IDFで簡易検索
vec=TfidfVectorizer().fit(docs)
mat=vec.transform(docs)

def retrieve(q, k=5):
    qv=vec.transform([q])
    scores=cosine_similarity(qv, mat)[0]
    idx=scores.argsort()[::-1][:k]
    return "\n\n".join(docs[i] for i in idx)

# 3) LLMへ質問(llama-cpp-pythonサーバーを http://localhost:8000/v1 で起動しておく)
client = OpenAI(base_url="http://localhost:8000/v1", api_key="none")
question = "PDF群から、AIPCの定義と利点を日本語で箇条書きして。"
context = retrieve(question, k=6)

msg = f"次の資料抜粋だけを根拠に、正確に回答してください。\n---\n{context}\n---\n質問:{question}"
res = client.chat.completions.create(
  model="local-gguf",
  messages=[{"role":"user","content": msg}],
  temperature=0.2, max_tokens=600
)
print(res.choices[0].message.content)

7. トラブルシューティング

  • VRAM不足/遅い: 量子化を1段下げる(例:Q5→Q4)。コンテキスト長や出力トークン数を下げる。
  • CUDAが使われない: NVIDIAドライバ/CUDA Toolkitsを最新版へ。llama-cpp-pythonはCUDA対応Wheelや CMAKE_ARGS="-DLLAMA_CUDA=on" 指定で再インストール。
  • API互換エラー: LM Studio/llama.cpp は /v1/chat/completions(OpenAI互換)。Ollamaは独自の /api/chat//api/generate を使用。

8. 法務・配慮

  • モデルのライセンス/商用可否を確認(再配布不可の場合あり)。
  • 機密データはローカル完結を徹底。生成物の事実確認は必ず人間が実施。

まとめ: 初心者は Ollama、ノーコード運用や既存クライアント流用は LM Studio、細かい制御や軽量高効率は llama.cpp。用途に合わせて選べば、RTXマシンで高品質なローカルLLM環境がすぐ作れます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次