はじめに
Mac miniで建てたLLMサーバの使い道を色々考えてみた結果、いわゆるエージェントタスクにおける計算資源としての使い方が向いているのではという気がしてきた。イメージはAWS LambdaのようなFunction as a serviceのようなワンショットなステートレスな処理での使い方である。前回のベンチマークや実際のトライアルの中で、OpenAIなどで提供される高級モデルと比べると、計算が貧弱であることはわかっているため、許容しなければならない制約があれど、その制限があっても価値につなげられる考え方も何となく見えてきた。
前回の記事: Mac miniをローカルLLMサーバーとして使ってみた
https://qiita.com/bd8z/items/7e195ceabafff819b77c
触ってみて分かったローカルLLMの特徴
Mac minを買って一か月程度が過ぎた感想ベースのまとめ。
| ローカルLLMの特徴 | 使用時の考え方 |
|---|---|
| 応答性がそこまでない | 即回答が必要ない使い方で使えばよい(LLMならどれもそうか) |
| 使用回数制限なし | 繰り返し発生するタスク(IoT処理など)何度でも実行するタスクが向いている |
| マルチモーダル | 画像や自然言語問わず雑な入力を吸収でき、モデル学習コストを考えなくて良い |
| モデル選択の幅 | 応答、性能など用途に応じたモデル選択が可能 |
| ローカルだからこその優位性 | GPUを専有できる。セキュリティ面 |
私のローカルLLMの使い方のイメージ
雑な入力データを価値あるデータに変換するということが実質無料で何度でも実行できるという特徴を考えると、機械的なタスクの前処理フィルターとして利用する用途が一番向いているのではないかと考えた。これらの用途の実効性を確認するため、サービスを2つ立てて、その現実性を確認する。
ローカルLLM周辺のアーキテクチャ
ワンショットジョブをLLMに効率よく処理させるため、Amazn SQSを利用してメッセージキューイングの仕組みを採用した。Cloudflare経由でアクセスできる管理画面も作ることで、外出中もメンテナンスできるようにしておいた。一番コストがかかるはずの計算処理をローカルLLMで実装し、その他の部分をAWSのサーバーレスで組むことでコスト効果を狙っている。Mac miniは常にホットスタンバイで電気代もかかっているので、本当にお値打ちなのかは少し謎。
構成のイメージ
ローカルLLM実証①
まず日常タスクを管理できるサービスを作成した。Todoとジャンルをタスクごとに指定できるだけで、シンプルなTodoリストである。S3/Lmabda/Congito/CloudFrontなど一般的なサーバレスのリソースを使って構築した。REST API経由でGUIと同じ操作が可能な形とした。
作ったもの①: Todo List
実験の様子①
LLMには、既存タスクと自然言語で与えられたタスクっぽい文章を、RESTを通じて既存のタスク一覧のタスク名と属性と見比べながらマッチさせる役割を持たせた。Podmanで走るジョブがメッセージ取得、LLMへの渡し、新規タスク登録まで担う。Todoリストは既存タスクと似たような文章の場合は、既存タスクを更新、新規タスクの場合は新規タスクを登録するようにした。
右側のウィンドウは、Podmanサービスの監視用に用意したフロント。ジョブ動作に応じてGPUが動作していることが分かる。今回はgpt-oss:20bを使った。LLMを使うことで文章の表記揺れをロバストに吸収できることが確認できた。
ローカルLLM実証②
画像データの解釈可能実証をするために、画像とプロンプトを入力できるフロントを要した。簡単な画像付きジョブをGUIから入力できる。もちろんRESTからの入力もできるようにした。
実験の様子②
サムターンの画像から鍵の施錠状態を確認させてみた。S3にストアされた画像が、LLMに入力され、最後はSNSで通知される。はっきりと施錠状態を`y/n`で回答させることができた。まとめ
データの構造化においては、マルチモーダルAIであるLLMの特徴を生かし、学習させることなく、ちょっとしたプロンプトの工夫で、特定ニーズに使うことができた。一方で計算資源を有効活用するには、トラディショナルなサーバレスのサービスの構築、RESTによるアクセス容易性など、型にハマったパターンでシステム構築をすることも必要だった。LLMによって人間ライクな解釈ジョブの幅が広がった一方、ニーズを具象化するための旧来設計も必要なので、まだ人間の仕事はなくならそうな気もする。また、今回はワンショットLLMしか試さなかったが、RAGなど継続的に真価を発揮してくれるタスクで活躍できないか、ほかの用途ももう少し考えてみたい。




