【ITニュース解説】Set up your own personal AI Frankenstack: DIY edition
2025年09月04日に「Dev.to」が公開したITニュース「Set up your own personal AI Frankenstack: DIY edition」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
オープンソースのツールを組み合わせ、自分だけの多機能AI環境を構築する方法を紹介。大規模言語モデル(LLM)を中心に、画像生成、音声合成、Web検索機能を統合する。LM StudioやOpenWeb UIなど具体的なソフトウェアの選定理由や設定の概要も解説している。(119文字)
ITニュース解説
この解説は、大規模言語モデル (LLM) や画像生成AI、音声合成などを組み合わせ、自分だけのAIシステムを構築する方法と、そのために必要なツールについて述べるものである。このシステムは「AI Frankenstack」と呼ばれ、LLM、Stable Diffusion(画像生成)、テキスト読み上げ(TTS)、そしてLLMのためのWeb検索機能が、一つの統合されたフロントエンドを通じて連携する。これらのツールはすべてオープンソースであり、サブスクリプションや支払いは不要で、個人利用を目的としているためプライバシーも重視されている。
筆者は、Nvidia GTX 1070 8GB(ノートPCのGPU)とNvidia RTX 3060 12GB(外付けGPU)、Intel i7プロセッサ、32GBのRAM、NVMeドライブを搭載したシステムでこのAI Frankenstackを構築している。システム全体で約120GBのストレージを使用し、これには8つ程度のLLMおよびStable Diffusionモデルが含まれる。このようなAIシステムはGPUとCPUのリソースを多く消費するため、ある程度の高性能なハードウェアが求められる。
システムの中心となる大規模言語モデル(LLM)には、「LM Studio」というソフトウェアが選ばれている。LM Studioは、直感的なユーザーインターフェースを持ち、モデルのダウンロード、パフォーマンスチューニング、実験的な機能の利用が容易である。複数のモデルを同時に実行する機能もあるが、筆者の環境では一度に一つのモデルしか実行できない。モデルのダウンロードは、Hugging Faceから直接GUI経由で行えるため、初心者にも扱いやすい。筆者は、推論能力に優れ、ツール利用向けに訓練されているOpenAIのGPT-OSS 20B、創造的な文章生成に適したMythalion 13B、そして長文の複雑なコード生成に特化したDeepseek-Coder(R1)などのモデルを使用している。GPUのVRAMが少ない場合でも、7Bやそれ以下のサイズのモデルを試すことができる。
画像生成には、「A1111」として知られるAUTOMATIC1111/stable-diffusion-webuiが採用されている。このソフトウェアは、LoRA訓練、画像から画像への変換(img to img)など、高度な機能を持ちながらも、基本的な操作は非常に分かりやすい。専用のWeb UIも提供されており、AIが生成するプロンプトが適切でない場合に、手動で細かい設定を行って画像を生成することも可能だ。
テキスト読み上げ(TTS)機能では、「Chatterbox」が推奨されている。Chatterboxは、ElevenLabsのような高品質な音声をローカル環境で生成できる。テキスト生成後、数秒で音声のストリーミングが始まり、待ち時間を短縮する。さらに、開発元であるResembleAIの音声クローン技術を活用すれば、わずか10秒程度の音声クリップから特定の声質をクローンし、AIにその声で話させることも可能になる。
Web検索機能には、「SearXNG」というカスタムブラウザが利用されている。これは、Google、DuckDuckGo、Brave、Operaなど複数の検索エンジンやサービスを一度に検索できるため、広範囲な情報を効率的に収集できる。筆者はプライバシーを重視しており、Cloudflared Warpを利用して検索時のIPアドレスを隠す工夫もしている。
これらの各コンポーネントを統合し、一つの場所から操作するためのフロントエンドとして「OpenWeb UI」が使われている。OpenWeb UIは、LLMの応答を評価したり、AIに画像生成、Web検索、コード実行などのタスクを実行させたりできる多機能なインターフェースだ。AIの「記憶」機能や「知識ベース」の構築も可能で、AIの応答品質向上に役立つ。各コンポーネントのローカルサーバーアドレスをOpenWeb UIの管理パネルに設定することで連携が完了する。例えば、TTSを接続する際には、OpenAIのAPIオプションを選択し、localhostのアドレスと任意のAPIキーを入力すればよい。OpenWeb UIは、環境変数を設定することで完全にオフラインでの利用も可能であり、カスタマイズ性も高い。
AIの「パーソナリティ」を設定する際には、まずLM Studioで基本的なプロンプトを設定し、OpenWeb UIの管理パネルでさらに詳細なプロンプトや、ユーザーごとのプロンプトを追加できる。これにより、AIの応答スタイルや振る舞いを細かく制御することが可能になる。
Linux環境でこのシステムを運用する場合、筆者は「aistart」や「aistop」といったカスタムスクリプトを作成し、各コンポーネントの起動順序やGPU割り当てを自動化している。これにより、システム全体の起動とシャットダウンがスムーズに行える。ただし、複数のGPUを使用する場合、プログラムが認識するGPUの番号がnvidia-smiコマンドの表示と異なる場合があるため、注意が必要である。
筆者はDockerを使用していない。過去の試みでlocalhostアドレスの扱いに問題が生じたり、追加の依存関係が増えることを嫌ったためである。システムに多くの「動く部品」があると、それだけ故障のリスクが高まるという考えに基づいている。
構築したAI Frankenstackを外部のインターネットから利用したい場合、ドメインを取得し、Cloudflareなどのサービスを通じて設定する。その後、Cloudflare Tunnelのようなトンネリングサービスを利用して、ローカルで動作するOpenWeb UIに外部からアクセスできるようにする。これにより、筆者は外出先からスマートフォンで自分のAIシステムを利用し、まるで専用のAIアプリを使っているかのように感じている。
このような複雑なAIシステムを初めて構築する際には、多くの困難に直面する可能性がある。しかし、ドキュメントを読み、オンラインのコミュニティやAIツール(例えばChatGPT)を活用して問題を解決していくことが重要である。トラブルシューティングの過程は大変かもしれないが、最終的にシステムが正常に動作した時の達成感は非常に大きい。この自作AIシステムは、ユーザーの創造性を刺激し、新たな体験を提供する可能性を秘めている。