🗺️

gpt-oss:20bをローカル環境で動かしてみた

に公開

はじめに

OpenAI社より先日gpt-ossが発表されました。

Apache2.0ライセンスの下でgpt-oss-120bとgpt-oss-20bがそれぞれ利用可能です。

モデルの性能評価では
gpt-oss-120bモデルは、80GBのGPUで稼働し、コア推論ベンチマークでo4-miniとほぼ同等の結果
gpt-oss-20bモデルは、16GBのメモリで動作し一般的なベンチマークでo3‑miniと同様の結果

と記載されています。

https://openai.com/ja-JP/index/introducing-gpt-oss/

実際にgpt-oss-20bモデルであればローカルのマシンで動かせそうなので実際に動かしてみます。

実践

マシンスペック

MakBook Pro
CPU: Apple M3 Max
Memory: 64 GB

open-webui + ollama

ollama側ですでにモデルを準備してくれていたのでサクッと簡単に試すことができます。

https://ollama.com/library/gpt-oss

まずはUIもあり視覚的に操作しやすいopen-webuiと連携させて動作の確認を行います。

事前に上記のページを参考にしてgpt-ossのモデルをダウンロードしましょう。
今回はgpt-oss:20bを使うのでこのようにしました。

早速動作確認をします。
サクサクと回答が得られて問題なく動作していました。
たったこれだけでgptモデルがローカル環境で動くというのは嬉しいですね。

dockerを使い環境を構築していたのですが、memoryは16.5GB以上必要でした。

参考情報

Dockerを利用したローカルLLMの実行方法(open-webui + ollama)については、以下の記事をご参照ください。

https://zenn.dev/shirochan/articles/451edb7238dfc0

ollama

次はコマンドライン上で動作を確認してみます。

brewなどを使いollamaコマンドをインストールしましょう。

$ ollama --version
ollama version is 0.11.2

ollamaコマンドがインストールできていれば準備OKです。

それでは実行です。
まずはollamaのサーバーを起動します。

$ ollama server

こちらのコマンドでローカルモデルを動かしていきます。

$ ollama run gpt-oss:20b --verbose
pulling manifest
pulling b112e727c6f1: 100% ▕█████████████████████████████████████████████▏  13 GB
pulling 51468a0fd901: 100% ▕█████████████████████████████████████████████▏ 7.4 KB
pulling f60356777647: 100% ▕█████████████████████████████████████████████▏  11 KB
pulling d8ba2f9a17b3: 100% ▕█████████████████████████████████████████████▏   18 B
pulling 8d6fddaf04b2: 100% ▕█████████████████████████████████████████████▏  489 B
verifying sha256 digest
writing manifest
success
>>>

最初はモデルのpullが行われます。

>>> こんにちは
Thinking...
The user says "こんにちは" which is Japanese greeting "Hello". The assistant should respond in
Japanese, likely greeting back. The context: we are ChatGPT. Should respond appropriately. Probably a
friendly greeting: "こんにちは!" Then maybe ask how can I help. The user didn't ask a question. So
respond with greeting. Could also ask what they need help with. The instruction says produce best
possible answer. Just respond politely.
...done thinking.

こんにちは! 今日はどんなご用件でしょうか?お気軽にお知らせくださいね。

total duration:       4.168737708s
load duration:        1.4032115s
prompt eval count:    68 token(s)
prompt eval duration: 345.937334ms
prompt eval rate:     196.57 tokens/s
eval count:           116 token(s)
eval duration:        2.418224166s
eval rate:            47.97 tokens/s

いい感じですね。

他にも色々と質問してみました。

あなたは何ができますか?
>>> あなたは何ができますか?
Thinking...
User asks: "あなたは何ができますか?" meaning "What can you do?" They want a list of capabilities. We
should give a concise, friendly answer, possibly enumerating tasks. Also mention context: we can
answer questions, provide explanations, code, creative writing, etc. Should be in Japanese. Also
mention limitations.
...done thinking.

### 私(ChatGPT)ができること

| 種類 | 具体例 |
|------|--------|
| **質問応答** | 科学・歴史・技術・趣味など、幅広い分野の質問に対して正確な情報や解説を提供します。 |
| **学習・勉強サポート** | 数学・物理・プログラミングなどの問題を一緒に解き、解説を丁寧に行います。 |
| **プログラミング支援** | Python・JavaScript・C++・SQL などのコードを書いたり、デバッグのヒントを出し
たりします。 |
| **文章作成・編集** | エッセイ・ブログ記事・メール・レポート・創作小説・詩などを作成・校正します。 |
| **翻訳** | 日本語と英語(ほかの主要言語)間の自然な翻訳を行います。 |
| **対話・相談** | 日常の悩みや考えを聞き、共感やアドバイスを提供します。 |
| **アイデア発想** | ビジネスアイデア、プロジェクトの企画、ゲームのシナリオ、料理レシピなどを提案します
。 |
| **データ解析の説明** | 統計手法や機械学習の概念をわかりやすく解説します。 |
| **学習プラン作成** | 目標に合わせた学習スケジュールや教材の選び方をアドバイスします。 |
| **ゲーム・パズル** | しりとり・数独・クイズなど、対話型ゲームを一緒に楽しめます。 |

#### 使い方のコツ
1. **具体的に質問** すると、もっと的確に答えられます。
   例: 「ニュートンの運動方程式の第2法則を簡単に説明して」
2. **必要に応じて詳細を求める** ことで、段階的に深掘りできます。
3. **試行錯誤**: コードや文章を提示していただければ、修正提案もできます。

#### なお
- 私は「実際に行動」できないので、実物の操作やインターネット検索は行えません。
- 2024年6月時点での知識をもとに回答しています。最新情報が必要な場合は、公式サイトなどで確認してください
。

何か試したいことがあれば、遠慮なく教えてくださいね!

total duration:       25.6424005s
load duration:        1.692852167s
prompt eval count:    1808 token(s)
prompt eval duration: 6.00814825s
prompt eval rate:     300.92 tokens/s
eval count:           684 token(s)
eval duration:        17.880241833s
eval rate:            38.25 tokens/s
あなたのモデル名は?
>>> あなたのモデル名は?
Thinking...
The user asks: "あなたのモデル名は?" Which means "What is your model name?" They want the name of
the model, like GPT-4. So answer: GPT-4. But also mention ChatGPT, etc. Also mention version. Use
Japanese. Also maybe mention 4. The user might want the exact model number: "ChatGPT GPT-4". The
response should be concise.
...done thinking.

私は「ChatGPT(OpenAI GPT‑4)」です。
つまり、OpenAI が開発した GPT‑4 アーキテクチャをベースにした対話モデルです。

total duration:       5.758719541s
load duration:        42.835625ms
prompt eval count:    2430 token(s)
prompt eval duration: 2.20133075s
prompt eval rate:     1103.88 tokens/s
eval count:           135 token(s)
eval duration:        3.45523875s
eval rate:            39.07 tokens/s

2024年6月時点での知識をもとに回答しています。

私は「ChatGPT(OpenAI GPT‑4)」です。
つまり、OpenAI が開発した GPT‑4 アーキテクチャをベースにした対話モデルです。

この辺りの回答が興味深いですね。
1年前までの学習データを用いてモデルが構築されているみたいですね。
ベースのモデルはここで回答されたようにgpt-4なのでしょうか。

ここで書かれていることが本当だとしても、少し古いモデルではありますがローカル環境でこのモデルを動作させることができるというのは嬉しいですね。

まとめ

今回はOpenAI社から発表されたgpt-ossモデルをローカルマシンで動かしてみました。
マシンスペックさえ満たしていれば、他のローカルLLM同様にサクッと動かすことができました。
セキュリティなどを考慮した結果でローカルLLMを検討している方は選択肢の一つにgpt-ossを検討してみるのはアリではないでしょうか?

こういった形で利用できるライセンスで生成AIのモデルが提供されるのは我々開発者としても嬉しい限りですね。

MIXI DEVELOPERS Tech Blog

Discussion