0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2025-08-09

本記事では、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要件よりも軽量化されているため、実験や開発用途で扱いやすい

📒ノートブック


参考URL

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?