【完全解説】A100(40GB + RAM併用)環境でOllama(gpt-oss GGUF版)を動かし、OpenAI互換APIを構築する方法

LLM

本記事では、A100(40GB) GPU 環境を活用し、OllamaのGGUF量子化版 gpt-oss 20b / 120b モデルを動かして、OpenAI互換APIとして利用する方法を初心者でも分かるように解説します。
GGUF量子化により、公式のフル精度モデルよりも軽量化されており、40GB VRAMでも120bモデルをRAM併用で動かせます。


🚀 はじめに

Ollama はローカルやクラウドで大規模言語モデル(LLM)を動かすためのツールです。
ここでは gpt-oss GGUF版(20b / 120b)を、A100(40GB)環境+RAMオフロードで実行する方法を紹介します。

メリット:

  • 量子化により大幅に軽量化
  • 20bは余裕動作、120bもRAM併用で可能
  • OpenAI互換API対応
  • VRAM要件が公式仕様より低い

📋 gpt-oss GGUF モデル概要

モデル 量子化方式 ファイルサイズ 推奨VRAM RAM併用動作目安 主な用途
gpt-oss:20b Q4_K_M 約11.67GB 12〜14GB A100 40GBなら余裕 チャット、QA
gpt-oss:120b Q4_K_M 約56GB 40GB + RAMオフロード RAM 64GB以上推奨 長文生成、コード補完

※ VRAM要件はGGUF版の実測値に基づくおおよその目安です。


🛠️ セットアップ手順

ステップ1: Ollama のインストールと起動

# Ollamaをインストール
!curl -fsSL https://ollama.com/install.sh | sh

# バックグラウンドでOllamaサーバーを起動
import subprocess
import time
import os

# Ollamaサーバーをバックグラウンドで起動
process = subprocess.Popen(['ollama', 'serve'],
                          stdout=subprocess.PIPE,
                          stderr=subprocess.PIPE)

# サーバーが起動するまで少し待つ
time.sleep(5)
print("Ollama server started in background")

ステップ2: モデルのダウンロード

# 高精度モデル(量子化済)
!ollama pull gpt-oss:120b

# 軽量モデル(量子化済)
!ollama pull gpt-oss:20b

ステップ3: OpenAI互換APIの利用

Python + requests

import requests

def call_ollama(prompt, model="gpt-oss:120b"):
    res = requests.post(
        "http://localhost:11434/v1/chat/completions",
        headers={"Content-Type": "application/json"},
        json={
            "model": model,
            "messages": [{"role": "user", "content": prompt}],
            "stream": False
        }
    )
    return res.json()["choices"][0]["message"]["content"]

print(call_ollama("Pythonでfor文の例を教えて"))

Python + OpenAIクライアント

!pip install openai

import openai
client = openai.OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

res = client.chat.completions.create(
    model="gpt-oss:120b",
    messages=[{"role": "user", "content": "量子コンピュータとは何ですか?"}]
)

print(res.choices[0].message.content)

ステップ4: ストリーミング応答

def stream_chat(prompt, model="gpt-oss:120b"):
    res = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": prompt}],
        stream=True
    )
    for chunk in res:
        if chunk.choices[0].delta.content:
            print(chunk.choices[0].delta.content, end="")

stream_chat("AIが教育分野で果たす役割について説明してください")

📌 まとめ

  • 20bモデル(GGUF Q4_K_M):A100(40GB)で余裕動作(VRAM 12〜14GB程度)
  • 120bモデル(GGUF Q4_K_M):A100(40GB) + RAM64GB以上で動作可能(速度低下あり)
  • GGUF量子化により、公式の80GB VRAM要件よりも軽量化されているため、実験や開発用途で扱いやすい

📒ノートブック

Google Colab

参考URL

コメント

タイトルとURLをコピーしました