オープンウェイトLLMとは、モデルの内部パラメーター(重み)が一般に公開されている大規模言語モデル(LLM)だ。個人や企業が、モデルを自由にダウンロードして使用できる。Web上で公開されているLLMには利用者には見えない仕組みがあり、これを迂回するためにオープンウェイトLLMを使うことにした。セットアップ方法を紹介しよう。
オープンウェイトLLM
オープンウェイトLLMとは?
オープンウェイトLLMとは、学習済みモデルの「重み(ウェイト)」が一般に公開されている大規模言語モデル(LLM)のことだ。ウェイトとは、モデルが学習を通じて獲得した知識や能力を決定する、数理的なパラメーター(数値の集合体)を指す。MetaのLlama、OpenAIのgpt-ossなどのLLMで、自由にダウンロードして自分のPCで使うことができる。 一般的に商用利用もOKだ。ネット記事でLlamaやgpt-ossが「オープンソースLLM」と紹介されている事が多いがが、これは正しくない。オープンソースLLMでは、ソースコード、学習データ、ウェイトなど、モデルを再現するために必要なすべての要素が公開されていなければならないが、一般的に自由に使えるモデルは学習済みの「重み(ウェイト)」とモデルのアーキテクチャのみ公開されている「オープンウェイトLLM」である。OpenAIがオープンウェイトLLMにgpt-oss(普通はopen source softwareの略)と紛らわしい名を付けたことで混乱を助長している風がある。
導入の経緯
これまでCIViCの臨床エビデンス大量処理方法の開発を行ってきた(CIViC臨床エビデンス解析:CEA/CEA-MPXとLLM比較評価 )。大量のPubMedアブストラクトをLLMへ送って分析する場合、処理されないアブストラクトが必ず発生する。これはLLMサービス側で入力情報がカットされているためだ。電力消費はトークン量(文字数)依存なので、経費節減のためにサービス側で重要度の低い情報を除去している。LLMサービス側の操作はブラックボックスなので、これを取り払って素のLLMを使うためにオープンウェイトLLMを導入することにした。
準備
当面の目標は、大量のPubMedアブストラクトの情報の圧縮(構造化)と分析。LLMは構造化と分析に用いる。基本的な方針は「学習コストを下げる」。エンドポイントから逆算して最も学習コストの低いオプションを選択する。この観点からハードウェアはMacを優先した。
言語モデルとプラットフォーム
言語モデルは、OpenAIのgpt-oss-20b, gpt-oss-120bを標準として他のオープンウェイトLLMを検討することにした。オープンウェイトLLM用プラットフォームとしてはLM StudioとOllamaの学習コストが低いが、LM studioはGLI中心なので、CLIも使えるOllamaを選択した。Ollamaでは、gpt-oss-20b, gpt-oss-120b以外にgemma3, DeepSeek R!などのモデルが使える(library)。
ハードウェア
オープンウェイトLLM用のハードウェアとしてMacは一つの選択肢となっている。MacのメモリはUnified Memoryと呼ばれ、CPUとGPUが一つのメモリを共有している。従ってCPUのメモリ占有率が低いと、GPUが占有できるメモリが増える。GPU性能はNVIDIAよりも劣るが、メモリの対コスト効果比が高い。
オープンウェイトLLMが動作するかどうかはメモリで決まる。20bモデルは最低16GB、快適に使うためには48~64GB必要;120bモデルは最低96GB、実用レベル最低限128GB、実務での運用には256GNが目安になっている。
最終的に2025年版Mac Studio M4 Max 128GBを使うことにした。gpt-oss-20bでは余裕、gpt-oss-120bでも一人でシステムを検討する分には十分と予想している。
OllamaとLLMのダウンロード
1)Ollamaをダウンロード(Download Ollama on macOS)して、指示に従いインストールする。
2)オープンウェイトLLMをダウンロードする:ターミナルで下記コマンドを入力する。
% ollama pull gpt-oss:20b
あるいは、GUIのチャットボットでLLM選択して、メッセージを入力すると自動的にダウンロードが始まる。なおLLMの名称はOllamaの定めるものを使うこと(ibrary参照)。
Ollama及びLLMの起動
下記コマンドでサーバーを起動する。
% OLLAMA_ORIGINS="*" OLLAMA_KEEP_ALIVE=-1 ollama serve
このコマンドのウィンドウはそのままにして(サーバーを起動したまま)別ウィンドウでLLMを立ち上げる。
% ollama run gpt-oss:20b
注意点:
:OLLAMA_ORIGINSとOLLAMA_KEEP_ALIVEは環境変数でコマンドollama serve実行前に設定する必要がある。
:OLLAMA_ORIGINS="*":CORSエラー回避する。javascriptのアプリケーションをブラウザで使うことが多いための処置。場合によっては不要。
:OLLAMA_KEEP_ALIVE=-1:LMMがメモリから消去されないための処置。デフォルト設定ではは5分でメモリから消去される。
:Ollamaが起動しているとollama serveを起動できない。以下の処置を行う。
Ollamaが起動しているかどうか確認
% ps aux | grep ollama
起動していればプロセス終了(プロセス番号は表示される最初の数字)
% kill -9 [プロセス番号]
Ollamaの終了を確認
% ps aux | grep ollama