2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカル LLM で gpt-oss-20b を実行する

2
Last updated at Posted at 2025-11-14

はじめに

以下の記事では、ローカル環境に LLM を構築しましたが、今回は同じ環境に OpenAI の gpt-oss-20b を入れました。

参考になったウェブページはこちらです。

なお、環境は以下のようにバージョンアップ(変更)しています。

Ubuntu 24.04.03、CUDA Toolkit 13.0 Update 2、cuDNN 9.14.0、Python 3.12

LLM モデルファイルをダウンロード

Hugging Face、Models、Libraries -[GGUF]、Apps -[llama.cpp]、Filter by name -[gpt-oss-20b]

[Files and versions]タブ
gpt-oss-20b-mxfp4.gguf  [Download file]ボタン

ダウンロードしたファイルを、自分のホームディレクトリに置きました

Python で LLM を実行

sample.py
from llama_cpp import Llama

llm = Llama(
    model_path="gpt-oss-20b-mxfp4.gguf",
    n_gpu_layers=10,    #GPUを使う指定をする
    n_ctx=4096,    #「過去の会話+プロンプト+生成中の文章」を一時的に保持できる最大量
)

# few-shot 学習を用いて、期待する文体や段落構成の例を示す
prompt = """
<s>[INST] <<SYS>>
あなたは日本の文化の専門家です。日本語で回答してください。
<</SYS>>

Q: 男性の袴の一般的な着用場面は?
A: 結論:礼装や式典での着用が多い。根拠:明治以降の礼装規範/現代の成人式・卒業式。補足:業種や地域で差がある。

Q: 女性の着物の合わせは?
A: 結論:左前(自分の左側が上)。根拠:古くからの礼法で現代も同じ。補足:右前は亡くなった方に用いる。

Q: 男性の着物は右側と左側でどちらが前ですか?
A: [/INST]
"""

output = llm(
    prompt=prompt,
    stop=["</s>", "[INST]", "[/INST]"],    #返信にこの単語があれば終了
    echo=True,
    max_tokens=2048,    #生成する最大トークン数を指定
)

print(output["choices"][0]["text"])

 

LLM は「どう対話データが作られて学習されたか」によって指示の通し方(プロンプト構文)が決まります。Llama 系の標準チャットテンプレートは、

<s>[INST] <<SYS>>
{システム指示}
<</SYS>>

{ユーザーの質問}[/INST]

OpenAI ChatGPT なら、

system: ...
user: ...
assistant: ...

 

実行
(.llm) webmaster@noble03:~$ python sample.py

final<|message|>
**男性の着物の「前」は右側です。**

- **根拠**
  - 伝統的に男性が着物を締めるとき、左側(背中側)を内側にして右側を外側にして前に向かいます。
  - この左右の取り扱いは「礼法」に基づき、古典・現代にわたり一貫している。
- **補足**
  - 女性の着物では逆に「左側が前」になります。
  - 近年の公式行事・式典でも男性は右側を前にしたまま着物を着用します。

従って、男性の着物は **右側が前** であると結論づけられます。

 

Ollama でローカルLLMを使用する際の設定方法

1.Modelfile という名前のファイルを作成し、モデルファイルを指定する
nano Modelfile

FROM ./gpt-oss-20b-mxfp4.gguf

TEMPLATE """
ここに、templete ファイルの中身を貼り付け 
"""

PARAMETER stop "~"
ここに、params ファイルの中身を記述。但し、PARAMETER stop "~" の形式に書き直す必要がある

templete と params ファイルは https://huggingface.co/unsloth/gpt-oss-20b-GGUF から持って来ました。または、https://github.com/ollama/ollama/blob/main/docs/modelfile.mdxhttps://ollama.com/library/gpt-oss:20b を参考にします

2.モデルを作成する
ollama create gpt-oss-20b -f Modelfile

3.モデルを実行する
ollama run gpt-oss-20b
Ctrl+D または /bye で停止

 

OllamaでGPUが使用されていることを確認
(.llm) webmaster@noble03:~$ ollama ps
NAME                  ID              SIZE     PROCESSOR          CONTEXT    UNTIL
gpt-oss-20b:latest    e2037755aeca    12 GB    43%/57% CPU/GPU    4096       3 minutes from now

 

templete は中身をそのまま貼り付ければ良いのですが、params は JSON から Ollama の形式に書き換えます

params
{
    "stop": [
        "<|endoftext|>",
        "<|return|>"
    ],
    "temperature": 1.0,
    "min_p" : 0.00,
    "top_k" : 0,
    "top_p" : 1.0
}
Modelfile(一部)
PARAMETER stop "<|endoftext|>"
PARAMETER stop "<|return|>"
PARAMETER temperature 1.0
PARAMETER min_p 0.00
PARAMETER top_k 0
PARAMETER top_p 1.0 

 

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?