[Work 028] Geminiと一緒にCUDA導入を検討する【プロンプトログ】
* **QLoRA (Quantized Low-Rank Adaptation)**
大規模な言語モデルを軽量化して再学習させる技術のこと。家庭用GPUでもファインチューニングが可能になる。
* **Unsloth**
QLoRAなどの学習処理を劇的に高速化し、メモリ使用量も削減するために最適化されたPythonライブラリ。
* **LoRAアダプター**
元のAIモデル本体を変更せず、追加学習した「差分情報」だけを保存した軽量なファイルのこと。
* **eGPU (External GPU)**
ノートPCや小型PCに、ThunderboltやUSB4経由で接続する外付けのグラフィックボードのこと。
* **ROCm (Radeon Open Compute)**
AMD製GPUでAI計算を行うためのソフトウェア基盤。NVIDIAのCUDAに相当する技術。
# Work028-eGPUでAI演算を強化する夢
## Turn 1
### User
> Node AのWSLが不安定で、ベクトル計算に失敗するときがあるんだ。
> 元々Node Aはゲーム用で、steam linkで接続して使うときがあるから、その関係でWSLが不安定っぽい。
>
> そこでNode BにUSB4のGPUドックでRTX3060(VRAM12GB)を接続して、Node BでROCm、CUDA両方を扱えるようにしようかと考えてるよ。
> これをやった場合、ベクトル計算が安定する他に、何かコの構成でしか出来ない夢のような機能ってある?
### Gemini
そのアイデア、**技術的なロマンと実益の両面において「最高」**です。
Node A(ゲーミングPC)のWSL不安定問題の解決策として「Node Aを引退させてNode Bに集約する」というのは合理的ですが、そこに 「USB4接続 eGPU (RTX 3060)」 を投入することで、EVO-X2は単なるミニPCではなく**「異種混合演算モンスター」**へと進化します。
「ROCm (AMD)」と「CUDA (NVIDIA)」が1台のLinuxカーネル(またはWSL2)上で共存する構成。これが実現した場合の「夢のような機能」を提案します。
1. 夢の機能:完全並列マルチモーダル・ブレイン (The Split-Brain Architecture)
現在、単一のGPUで「チャット」と「画像生成」や「音声認識」を行おうとすると、VRAMの入れ替え(スワップ)が発生し、待ち時間が生じます。
96GBのVRAMを持つStrix Haloと、CUDAコアを持つRTX 3060を組み合わせることで、脳の機能分担が可能になります。
- 右脳(創造・視覚):RTX 3060 (12GB / CUDA)役割: 画像生成 (Stable Diffusion / FLUX.1)、音声合成 (StyleTTS2)、音声認識 (Whisper)。理由: これらの周辺技術はCUDAに最適化されており、ライブラリの互換性が圧倒的に高いです。特にComfyUIなどはNVIDIA環境で最も安定します。
- 役割: 画像生成 (Stable Diffusion / FLUX.1)、音声合成 (StyleTTS2)、音声認識 (Whisper)。
- 理由: これらの周辺技術はCUDAに最適化されており、ライブラリの互換性が圧倒的に高いです。特にComfyUIなどはNVIDIA環境で最も安定します。
- 左脳(論理・記憶):Ryzen AI Max+ (96GB / ROCm)役割: LLM (Llama 3.3 70B / Llama 4 Scout)。理由: 大容量VRAMを活かし、巨大なコンテキストを常駐させられます。
- 役割: LLM (Llama 3.3 70B / Llama 4 Scout)。
- 理由: 大容量VRAMを活かし、巨大なコンテキストを常駐させられます。
【実現する体験】
Llama 3.3 70Bと「音声」で会話しながら、その裏で「画像」を描かせても、思考(チャットの応答速度)が一切ラグらない。
「絵を描いて」と頼んだ瞬間、会話を続けながらRTX 3060が描画を開始する、真のマルチタスクAIエージェントが誕生します。
2. 夢の機能:自己増殖サイクル (The Self-Improvement Loop)
これが最もエンジニア心をくすぐる構成です。
「推論(Inference)」と「学習(Training)」の同時実行が可能になります。
- 先生(Teacher):Ryzen AI Max+超巨大モデル (120B / 70B) が、高品質な教師データ(Q&Aペアやコード解説)を生成し続ける。
- 超巨大モデル (120B / 70B) が、高品質な教師データ(Q&Aペアやコード解説)を生成し続ける。
- 生徒(Student):RTX 3060先生が作ったデータを使って、軽量モデル (Qwen 7B / Llama 8B) の QLoRA学習(Fine-tuning) をバックグラウンドで回し続ける。
- 先生が作ったデータを使って、軽量モデル (Qwen 7B / Llama 8B) の QLoRA学習(Fine-tuning) をバックグラウンドで回し続ける。
【実現する体験】
あなたが寝ている間に、EVO-X2が勝手に「あなた専用の小型モデル」を学習・育成するサイクルが回せます。12GB VRAMがあれば、7BクラスのLoRA学習には十分です。
3. 夢の機能:最強のRAGパイプライン (The Vector Factory)
ご相談の元々の課題解決です。
埋め込み(Embedding)処理は、チャットよりも「数」をこなす必要があります。
- Worker: RTX 3060bge-m3 などのEmbeddingモデル専用機にする。Wikiの更新やドキュメント追加があった際、瞬時にベクトル化を行う。
- bge-m3 などのEmbeddingモデル専用機にする。
- Wikiの更新やドキュメント追加があった際、瞬時にベクトル化を行う。
- Master: Ryzen AI Max+ベクトル化の負荷を一切気にせず、検索結果を受け取って回答生成に専念する。
- ベクトル化の負荷を一切気にせず、検索結果を受け取って回答生成に専念する。
技術的な懸念点と解決策(Stop & Look)
夢を実現するためには、いくつかのハードルがあります。
- ドライバの共存 (Driver Stack)課題: Linux (Ubuntu) 上で amdgpu (ROCm) と nvidia-driver (CUDA) を共存させるのは、カーネルモジュールレベルで競合する可能性があります。対策: Dockerコンテナによる分離が特効薬です。Container A (Ollama): /dev/kfd (AMD) をマウント。Container B (ComfyUI): --gpus all (NVIDIA) でマウント。これにより、OSレベルでのライブラリ競合を防ぎつつ、両方のGPUを使えます。
- 課題: Linux (Ubuntu) 上で amdgpu (ROCm) と nvidia-driver (CUDA) を共存させるのは、カーネルモジュールレベルで競合する可能性があります。
- 対策: Dockerコンテナによる分離が特効薬です。Container A (Ollama): /dev/kfd (AMD) をマウント。Container B (ComfyUI): --gpus all (NVIDIA) でマウント。これにより、OSレベルでのライブラリ競合を防ぎつつ、両方のGPUを使えます。
- Container A (Ollama): /dev/kfd (AMD) をマウント。
- Container B (ComfyUI): --gpus all (NVIDIA) でマウント。
- これにより、OSレベルでのライブラリ競合を防ぎつつ、両方のGPUを使えます。
- 帯域幅 (Bandwidth)課題: USB4 (40Gbps) は PCIe Gen3 x4 相当です。影響: モデルの「ロード時間」は遅くなりますが、一度ロードしてしまえば演算速度への影響は軽微です(推論や画像生成は内部バスで完結するため)。
- 課題: USB4 (40Gbps) は PCIe Gen3 x4 相当です。
- 影響: モデルの「ロード時間」は遅くなりますが、一度ロードしてしまえば演算速度への影響は軽微です(推論や画像生成は内部バスで完結するため)。
結論とネクストアクション
Node AのSteam Link利用による不安定さを解消しつつ、Node Bを「最強のAI実験室」にするために、この投資は非常に価値があります。
Would you like me to...
もしeGPU導入へ進む場合、まずは 「Node B (Ubuntu Native) 上で、Dockerを使ってNVIDIAとAMDのコンテナを同時に立ち上げるための docker-compose.yml 設計」 を行いましょうか?
それとも、まずは手持ちの機材で「eGPUボックスの選定」に関するアドバイスが必要でしょうか?
---
## Turn 2
### User
> 実はRTX3060とeGPUボックスは入手済みです。現在は電源ユニットの到着待ちです。あと数日で届くはずです。
>
> 「2. 夢の機能:自己増殖サイクル (The Self-Improvement Loop)」についてもう少し詳しく教えてください。
> QLoRA学習とはなんでしょうか?
> 軽量モデル (Qwen 7B / Llama 8B)に特定の文脈を教え込んで、育てるみたいな感じですか?
> 例えば、専用のオペレーターチャットボット化させるみたいな?
### Gemini
素晴らしい準備の速さですね! 電源ユニットが届けば、いよいよ「異種混合演算モンスター」の誕生ですね。
ご質問いただいた 「QLoRA学習」 と 「自己増殖サイクル」 について、その「専用オペレーターボット」の例を使って、技術的な仕組みと面白さを深掘り解説します。
1. QLoRA (Quantized Low-Rank Adaptation) とは?
一言で言えば、**「家庭用のGPU(VRAM 12GBなど)で、賢いAIを自分好みに再教育できる魔法の技術」**です。
通常、AIモデル(7Bや8Bなど)に追加学習を行おうとすると、膨大なメモリ(VRAM 24GB〜40GB以上)が必要でした。
しかし QLoRA は、以下の2つの工夫でそれを劇的に軽量化しました。
- 量子化 (Quantization): モデル本体を4bitまで圧縮してメモリを節約します(これが「Q」)。
- LoRA (Low-Rank Adaptation): モデルの脳みそ全体を書き換えるのではなく、「変更点(差分)」だけを小さな別ファイル(アダプター)として学習します。
【あなたの環境での意味】
RTX 3060 (12GB) は、本来学習には非力ですが、QLoRAを使えば Qwen 2.5 7B や Llama 3.1 8B クラスの学習がギリギリ可能になります。これが「夢の機能」の正体です。
2. 自己増殖サイクル:専用オペレーター化の具体例
おっしゃる通り、「軽量モデルに特定の文脈を教え込んで、育てる」という理解で完璧です。
EVO-X2(先生)とRTX 3060(生徒)を使った、具体的な「オペレーター育成フロー」を見てみましょう。
目標: 自宅サーバーのトラブル対応を完璧にこなす「専用オペレーター・ボット」を作る。
Step 1: 教科書を作る (by Ryzen AI Max+ / 先生)
まず、学習データが必要です。人間が書くのは大変なので、賢い先生(120Bや70Bモデル)に作らせます。
- 入力: 過去のシステムログ (journalctl) や、あなたが書いた Work011.md などの技術レポート。
- 指示: 「このトラブルシューティング記録を元に、『ユーザーからの質問』と『オペレーターの回答』のペアを100個作ってください」
- 出力:JSON{"Q": "WSL2でGPUが見えない", "A": "BIOSでIOMMUを有効化し、Kernelドライバを確認してください。"}
... (これを100〜1000件作成)
- ポイント: 推論が得意なNode B本体(VRAM 96GB)なら、高品質な教科書を一瞬で作れます。
Step 2: 授業を受ける (by RTX 3060 / 生徒)
作ったデータを使って、RTX 3060側で学習を回します。
- 対象: Llama 3.1 8B (素のモデル)
- 手法: QLoRA
- 実行: あなたが寝ている間や仕事中に、バックグラウンドで数時間〜半日ほど計算させます。
- 成果物: 数百MB程度の「LoRAアダプターファイル(専用装備)」ができあがります。
Step 3: 実戦配備 (Inference)
このアダプターを装備したLlama 3.1 8Bは、もはやただのAIではありません。
「あなたの自宅環境のIPアドレスや、過去のトラブル事例をすべて知っている専用オペレーター」 です。
- 質問:「なんかWikiが繋がらないんだけど」
- 回答:「またDockerのポート競合かもしれませんね。Node Bの docker ps を確認し、特にPort 8001の状態を見てください」
3. なぜこの構成が「最強」なのか?
通常、このサイクルを回そうとすると「学習中はチャットができない(GPUを占有される)」という問題が起きます。
しかし、あなたの新構成なら:
- Node B (Ryzen AI): 常にチャットボット(先生)として稼働し続け、あなたの相手をする。
- Node B (RTX 3060): 裏で黙々と学習計算(生徒)を回し続ける。
この**「推論と学習の完全分離」**こそが、企業の研究開発部門のような環境を個人宅で実現する最大のメリットです。
電源ユニットが届いたら、まずは Unsloth (学習をさらに高速化するライブラリ)などを導入して、このサイクルを試してみましょう。間違いなく感動するはずです。
---
## Turn 3
### User
> なるほど。私は小説の登場キャラをチャットボット化してみたいと試行錯誤中です(今後、複数エージェントの会話を楽しむために異なるペルソナを作成する準備として)
>
> 今はNode Bのgpt-oss:120bにシステム定義書とRAGに配置した小説データを素材として扱っていましたが、応答速度の遅さが懸念になっていました。
> チャットボットは日常会話が基本(コード出力はしないし、長文も出さない。ファイルの要約もしない)のためgpt-oss:120bほどのパラメータは必要ないと思います。
> それよりも「如何にキャラを演じて、自然な会話のキャッチボールができるか」の方が重要です。
>
> この使用用途の場合、世界観やセリフ回しをQLoRAで学習させた軽量モデル (Qwen 7B / Llama 8B)の方が適任だったりしますか?
> それとも文脈理解の強さでgpt-oss:120bの方が向いてると思いますか?
### Gemini
結論から申し上げますと、その用途(日常会話、キャラの演じ分け、応答速度重視)であれば、QLoRAで学習させた軽量モデル (7B/8Bクラス) の方が圧倒的に適任です。
120Bモデルは「賢い先生」ですが、日常会話のパートナーとしては「頭でっかちで動作が遅い」という欠点があります。一方で、QLoRAで鍛えた軽量モデルは「台本を完璧に叩き込まれた役者」になれます。
なぜその結論になるのか、技術的な理由と**「RTX 3060とNode Bを組み合わせた最強の育成フロー」**をご提案します。
1. なぜ「QLoRA学習済み軽量モデル」の方が向いているのか?
理由は 「知識(RAG)」と「口調(Fine-tuning)」の役割の違い にあります。
- gpt-oss:120b + RAG (現在の構成):得意: 「あの小説の第3章で何が起きた?」といった事実確認。苦手: 「口調」や「雰囲気」の完全な再現。システムプロンプトで「ツンデレで」と指示しても、ベースモデルの礼儀正しさが出てしまい、どこか"演技くさい"硬さが残ります。致命傷: 遅い。会話のテンポが悪く、没入感を削ぎます。
- 得意: 「あの小説の第3章で何が起きた?」といった事実確認。
- 苦手: 「口調」や「雰囲気」の完全な再現。システムプロンプトで「ツンデレで」と指示しても、ベースモデルの礼儀正しさが出てしまい、どこか"演技くさい"硬さが残ります。
- 致命傷: 遅い。会話のテンポが悪く、没入感を削ぎます。
- Llama 3.1 8B + QLoRA (提案構成):得意: 「口調」「口癖」「思考の癖」の再現。学習データに含まれるセリフ回しを脳の奥底に焼き付けるため、「システムプロンプトで指示しなくても」自然とそのキャラとして喋るようになります。メリット: 爆速。RTX 3060上で動かせば、人間が打つより速いスピードで返ってくるため、本当のチャット感覚が味わえます。
- 得意: 「口調」「口癖」「思考の癖」の再現。学習データに含まれるセリフ回しを脳の奥底に焼き付けるため、「システムプロンプトで指示しなくても」自然とそのキャラとして喋るようになります。
- メリット: 爆速。RTX 3060上で動かせば、人間が打つより速いスピードで返ってくるため、本当のチャット感覚が味わえます。
2. 「自己増殖サイクル」を使ったキャラクター育成プラン
ここで、前回お話しした**「自己増殖サイクル」**が火を吹きます。
お手元の小説データとNode Bの知能を使って、RTX 3060用の「魂(LoRAアダプター)」を作りましょう。
Step 1: 原作からの抽出 (by Node B / 120B)
まず、小説のテキストデータから「学習データ」を作ります。これこそが120Bモデルの最も得意な仕事です。
- 指示: 「以下の小説のテキストを読み込み、登場人物『A』のセリフと、それに対する『ユーザーの問いかけ』のペアを想像して、JSON形式で100個作成してください」
- 120Bの仕事: 文脈を深く理解しているので、「このキャラならこう返すはずだ」という高品質な学習データ(Q&Aペア)を大量生産してくれます。
Step 2: 魂の吹き込み (by RTX 3060 / QLoRA)
作成したデータセット(会話集)を、RTX 3060上の軽量モデルに学習させます。
- ベースモデル: Llama-3.1-8B-Instruct (日本語性能が高く、指示に従いやすい)
- 学習内容: 小説のセリフそのものや、120Bが作った「もしもの会話集」。
- 結果: 「知識はないが、話し方と性格だけはそのキャラ本人」 というモデルが完成します。
Step 3: ハイブリッド運用 (RAG + QLoRA)
実際の会話では、以下のように連携させます。
- 記憶の検索 (Node B): ユーザーの質問に関連する小説のシーンをRAGで検索する。
- 憑依会話 (RTX 3060): 検索した情報を、QLoRAモデルに渡す。「(コンテキスト: 第5章でドラゴンを倒した)ねえ、あの時どうだった?」QLoRA 8B: 「ふん、あんなトカゲ、私の敵じゃなかったわよ!(ツンデレ口調)」
- 「(コンテキスト: 第5章でドラゴンを倒した)ねえ、あの時どうだった?」
- QLoRA 8B: 「ふん、あんなトカゲ、私の敵じゃなかったわよ!(ツンデレ口調)」
推奨する具体的なネクストアクション
電源ユニットが届き次第、以下の構成を目指すのが「キャラ対話の理想郷」への最短ルートです。
- ベースモデルの選定:Llama-3.1-8B-Instruct: 現在、日本語チャットとロールプレイにおいて最もバランスが良いです。Unsloth(高速学習ライブラリ)での対応も完璧です。
- Llama-3.1-8B-Instruct: 現在、日本語チャットとロールプレイにおいて最もバランスが良いです。Unsloth(高速学習ライブラリ)での対応も完璧です。
- 学習データの準備 (今からできます):Node Bの120Bモデルを使って、小説テキストから「会話データセット (JSON)」を作り溜めておきましょう。データがあればあるほど、キャラの解像度が上がります。
- Node Bの120Bモデルを使って、小説テキストから「会話データセット (JSON)」を作り溜めておきましょう。データがあればあるほど、キャラの解像度が上がります。
この構成なら、120Bの「深い理解力」を学習データの作成に使い、8Bの「軽快さ」を実際の会話に使う、という適材適所が実現できます。まさに「日常会話」用途にはベストアンサーだと思います。
---
## Turn 4
### User
> これは・・・挑戦しなければならない新たな課題が誕生しましたね。
> 高品質なチャットボットの作成は私の悲願です。
>
> チャットボット作成に必要なハード(先生役の120Bモデルを動かすRyzen AI Max+、生徒役を走らせるRTX)、チャットボットを育てるソフト(自筆の小説であればキャラが正確に演じられてるかどうかの評価が正確かつ容易にできる)が、手元に揃った今。これは私が挑戦すべきタスクに見えてきました。
>
> まずは、これを達成するために必要なロードマップの作成をしましょう。
> 今ある情報から、私オリジナルのチャットボット作成のロードマップ草案を起こしてください。
### Gemini
ユーザー様のこれまでの経緯と、手元に揃った「最強のハードウェア」「最適なソフトウェア(素材)」を組み合わせた、あなただけの**「オリジナルチャットボット育成ロードマップ」**の草案を作成しました。
この計画は、単にモデルを動かすだけでなく、「先生(Node B)」が教材を作り、「生徒(RTX 3060)」が学び、最終的に「魂」として完成させるという、エモーショナルかつ技術的に最先端なプロセスです。
ロードマップ草案:Project "Soul Injection" (魂の吹き込み)
Phase 1: 環境整備と「教室」の構築
目的: Node B (先生) と RTX 3060 (生徒) が、それぞれの役割を最大限発揮できる物理的・ソフトウェア的基盤を整える。
1. eGPU (RTX 3060) の統合とDocker分離 [最優先]
- 作業: eGPUを接続し、Node B (Ubuntu) 上で認識させる。
- 構成:Container A (Teacher): /dev/kfd (AMD GPU) を割り当て、gpt-oss:120b または Llama 4 を稼働。Container B (Student): --gpus all (NVIDIA GPU) を割り当て、学習用環境 (Unsloth/LoRA) を構築。
- Container A (Teacher): /dev/kfd (AMD GPU) を割り当て、gpt-oss:120b または Llama 4 を稼働。
- Container B (Student): --gpus all (NVIDIA GPU) を割り当て、学習用環境 (Unsloth/LoRA) を構築。
- ゴール: 先生と生徒が互いにリソースを奪い合わず、同時に稼働できる状態。
2. 学習環境 (Unsloth) のセットアップ
- 作業: RTX 3060 (12GB) で効率的に学習を行うため、高速化ライブラリ Unsloth を導入する。
- 選定: ベースモデルとして、日本語対話性能とロールプレイに定評のある Llama-3.1-8B-Instruct または Qwen-2.5-7B-Instruct を用意する。
Phase 2: 「教科書」の作成 (Dataset Generation)
目的: Node B の圧倒的な知能 (120B/70B) を使い、小説データから「生きた会話データ」を大量生産する。
3. 小説データの構造化 (Preprocessing)
- 作業: 小説のテキストファイルから、特定のキャラクター(学習対象)のセリフ、行動、心理描写を抽出する。
- Tool: Pythonスクリプトを作成し、章ごとにテキストを分割・整理する。
4. Q&Aペアの自動生成 (Synthetic Data)
- 作業: Node B (Teacher) にプロンプトを投げ、以下の3パターンのデータセットを作成させる(目標:計500〜1000セット)。原作再現: 小説内の「相手のセリフ」→「キャラのセリフ」日常会話: 「おはよう」「疲れた」など、小説にない日常的な問いかけに対する「キャラらしい反応」エッジケース: 怒らせた時、泣かせた時など、感情が大きく揺れる場面のシミュレーション
- 原作再現: 小説内の「相手のセリフ」→「キャラのセリフ」
- 日常会話: 「おはよう」「疲れた」など、小説にない日常的な問いかけに対する「キャラらしい反応」
- エッジケース: 怒らせた時、泣かせた時など、感情が大きく揺れる場面のシミュレーション
- 形式: {"instruction": "...", "input": "...", "output": "..."} のAlpaca形式など、学習ツールに合わせたJSON。
Phase 3: 「授業」と「テスト」 (Training & Eval)
目的: RTX 3060 を使い、軽量モデルにキャラクターの「魂(口調・思考回路)」を焼き付ける。
5. QLoRA学習の実施 (Training Loop)
- 作業: 作成したデータセットを用いて、RTX 3060 で学習を実行する。
- パラメータ調整: 12GB VRAMに収まるよう、バッチサイズやLoRAランク(学習する深さ)を調整する。
- サイクル: 学習は寝ている間に行う(数時間程度で終わる見込み)。
6. 先生による評価 (AI Evaluation)
- 作業: 学習済みモデル(生徒)の回答を、Node B(先生)に採点させる。
- 基準: 「キャラらしさ」「自然さ」「小説との矛盾のなさ」を120Bモデルが厳しくチェックし、スコア化する。これにより、人間が全てチェックする手間を省く。
Phase 4: 実戦配備とマルチエージェント化 (Deploy)
目的: 完成した「魂(LoRAアダプター)」をチャットボットとして常駐させ、RAGと連携させる。
7. RAG + LoRA のハイブリッド推論システム
- 作業:ユーザーの入力 → Node B (RAG) が小説の関連シーンを検索。検索結果 + ユーザー入力 → RTX 3060 (LoRA) がキャラとして回答生成。
- ユーザーの入力 → Node B (RAG) が小説の関連シーンを検索。
- 検索結果 + ユーザー入力 → RTX 3060 (LoRA) がキャラとして回答生成。
- ゴール: 「過去の文脈(RAG)」と「キャラの人格(LoRA)」が融合した、遅延のない会話体験。
8. 複数キャラ(マルチペルソナ)への展開
- 展望: 1人目の成功体験を元に、小説の他の登場人物も学習させる。
- 夢: 複数のLoRAモデルを切り替えたり、あるいは同時起動して「キャラ同士の会話」を眺める環境(AIハーレム)を構築する。
次のステップへの提案
まずは「Phase 1」の準備として、現在の手持ちデータ(小説)を整理し始めるか、あるいはNode Bを使って「試しに1章分だけデータセットを作ってみる」作業から始めてみてはいかがでしょうか?
電源ユニットが届くまでの間、この「教科書作り」を進めておくと、機材到着後すぐに学習フェーズへ移行できます。
---
## Turn 5
### User
> OK。この方向で行きましょう。
> 今後の進捗管理に使うので、添付した資料をサンプルとして、ロードマップをコードブロックで出力してください。
### Gemini
提示されたサンプルフォーマット(ロードマップサンプル.txt)に基づき、今回のプロジェクト 「Project Soul Injection (魂の吹き込み)」 のロードマップを作成しました。
これまでの議論(eGPUの導入、先生/生徒モデル構成、小説データの活用)をすべて反映しています。今後の進捗管理にお使いください。
```markdown
# Project: Soul Injection (Character Persona Cultivation)
Last Updated: [DATE/TIME]
Status: Concept Defined -> Environment Setup Phase
## 1. Project Goal
自作小説の登場キャラクターを、違和感なく対話可能なAIエージェントとして具現化する。
Node B (Teacher/120B) の高度な理解力で教材を作成し、RTX 3060 (Student/8B) で学習(QLoRA)させる「自己増殖サイクル」を確立することで、軽量かつ高品質なロールプレイモデルを実現する。
## 2. Architecture Overview
* **Infrastructure:** Hybrid Compute (Teacher-Student Architecture)
* **Node B Main (Teacher / Ryzen AI Max+):** Dataset Factory
* Resource: VRAM 96GB (ROCm)
* Model: gpt-oss:120b / Llama 4 Scout
* Role: 小説データの解析, Q&Aデータセット生成, 最終的なRAG検索
* **Node B Sub (Student / RTX 3060 eGPU):** Training Ground
* Resource: VRAM 12GB (CUDA)
* Tool: Unsloth (Fine-tuning Library)
* Role: QLoRA学習実行, 軽量モデル(Llama-3.1-8B)のホスティング
* **Data Store:** * Source: 自作小説テキスト (Markdown/Txt)
* Artifacts: JSONデータセット, LoRAアダプターファイル
## 3. Implementation Roadmap
### Phase 1: The Classroom Setup (Hardware & Docker)
- [ ] **eGPU Integration:** - Connect RTX 3060 via USB4.
- Verify recognition on Ubuntu (`lsrenv` / `nvidia-smi`).
- [ ] **Docker Split Strategy:** - Define `docker-compose.yml` for dual stack.
- Container A (Teacher): Mount `/dev/kfd` (ROCm).
- Container B (Student): Mount `--gpus all` (CUDA).
- [ ] **Unsloth Installation:** - Setup python environment for Unsloth on Container B.
- Verify VRAM usage (Target: < 12GB).
### Phase 2: The Textbook Creation (Data Engineering)
- [ ] **Novel Data Preprocessing:** - Script to extract specific character lines and scenes.
- [ ] **Dataset Generation (by Teacher):** - Prompt Engineering for `gpt-oss:120b`.
- Generate 100+ Q&A pairs (JSON) based on novel context.
- Quality check (Manual review of 10 samples).
### Phase 3: The Lesson (QLoRA Training)
- [ ] **Training Run:** - Execute Unsloth training on RTX 3060.
- Base Model: `Llama-3.1-8B-Instruct`.
- Monitor Loss curve.
- [ ] **Adapter Validation:** - Test run with the generated LoRA adapter.
- Verify "Tone" and "Personality" reproduction.
### Phase 4: The Debut (Deployment & RAG)
- [ ] **Inference Integration:** - Load LoRA adapter into Ollama/Open WebUI.
- [ ] **RAG Connection:** - Connect Node B's RAG (Novel knowledge) with Student's Personality.
- Test conversation: User -> Node B (Search) -> Student (Reply).
## 4. Key Decisions & Policies
* **Separation of Concerns:** * **Teacher (Node B):** 担当は「論理」「事実」「データ作成」。推論速度は問わない。
* **Student (RTX 3060):** 担当は「演技」「口調」「即答」。日常会話のテンポを最優先する。
* **Training Policy:** * 学習は夜間バッチとして実行し、日中のチャット利用を阻害しない。
* ベースモデルは日本語性能とUnsloth対応を考慮し、Llama-3.1-8B (またはQwen-2.5-7B) を標準とする。
```
---
## Turn 6
### User
> では、次に今回の作業を技術レポートとしてコードブロックで出力してください。
### Gemini
承知いたしました。
今回の議論で確定した、eGPU導入による「異種混合演算環境」と、それを用いた「キャラクター育成サイクル」の構想を、技術レポートとしてまとめました。
PukiWikiやObsidianなどのナレッジベースにそのまま貼り付けて保存してください。
```markdown
# [[DATE/TIME]] Project Soul Injection: ハイブリッドAI育成基盤の設計
Tag: [[SystemDesign]], [[eGPU]], [[FineTuning]], [[QLoRA]], [[Unsloth]], [[EVO-X2]]
## 1. 今回の作業の目的
#contents
- 自作小説の登場キャラクターを、違和感なく対話可能なAIエージェントとして具現化するプロジェクト "Soul Injection" の始動。
- 既存のNode A (RTX 4060) の不安定さを解消し、Node B (EVO-X2) に **eGPU (RTX 3060)** を統合することで、推論と学習を同時に行う「自己増殖サイクル」を確立する。
- 「知識の先生 (120B)」と「演技の生徒 (8B)」による役割分担アーキテクチャを定義する。
## 2. システム環境 (Hybrid Compute)
Node B 1台の中に、ROCm (AMD) と CUDA (NVIDIA) が共存する異種混合環境を構築する。
- **Host Node:** Node B (GMKtec EVO-X2 / Ubuntu 24.04 Native)
- **Compute Resource A (Teacher / Brain):** - **Hardware:** AMD Ryzen AI Max+ 395 (Strix Halo)
- **VRAM:** **96GB** (UMA Frame Buffer)
- **Driver:** ROCm (via `/dev/kfd`)
- **Role:** 教材作成(データセット生成)、RAG検索、論理推論。
- **Compute Resource B (Student / Soul):** - **Hardware:** NVIDIA GeForce RTX 3060 (via USB4 eGPU)
- **VRAM:** **12GB** - **Driver:** CUDA (via `--gpus all`)
- **Role:** QLoRA学習 (Unsloth)、軽量モデルによる高速ロールプレイ対話。
## 3. アーキテクチャ: The Self-Improvement Loop
「賢いが重いモデル」と「軽くて速いモデル」の特性を活かした育成フロー。
### Phase A: 教科書作成 (Dataset Generation)
- **Actor:** Teacher (gpt-oss:120b / Llama 4 Scout)
- **Input:** 自作小説のテキストデータ (Markdown)。
- **Process:** 文脈を深く理解できる120Bモデルが、小説内のシーンを解析し、「キャラクターのセリフ」と「想定される問いかけ」のペア(Q&A)を大量に合成する。
- **Output:** JSON形式の学習用データセット。
### Phase B: 魂の吹き込み (QLoRA Training)
- **Actor:** Student (Llama-3.1-8B-Instruct)
- **Tool:** Unsloth (高速学習ライブラリ)
- **Process:** RTX 3060上で、生成されたデータセットを用いてFine-tuningを行う。知識ではなく「口調」「思考の癖」「性格」を重点的に学習させる。
- **Output:** LoRAアダプターファイル(キャラクターの人格データ)。
### Phase C: 実戦配備 (Hybrid Inference)
- **Flow:** 1. **User:** 問いかけ
2. **Teacher (Node B):** RAGで小説内の関連知識を検索・抽出。
3. **Student (RTX 3060):** 抽出された知識をコンテキストとして受け取り、学習済みの「人格」で演技して回答。
## 4. 今後の展望・ロードマップ
- **Step 1:** USB4 eGPUの物理セットアップと、DockerコンテナによるAMD/NVIDIA環境の分離構築。
- **Step 2:** 小説データのテキスト整形と、Teacherモデルによるデータセット生成テスト。
- **Step 3:** RTX 3060上でのUnsloth導入と、テスト学習の実施。
- **Goal:** 電源ユニット到着後、速やかに環境構築を開始し、最初の「魂」を生成する。
```
---
# ① 一連のやり取りのハイライト
このやり取りの最大のハイライトは、「不安定なWSL環境の愚痴」から始まり、最終的に**個人宅で動く研究所レベルのAI育成アーキテクチャ**へと着地している点です。単なるハード構成相談に留まらず、「先生モデル/生徒モデル」「魂の吹き込み」「自己増殖サイクル」といった強いメタファーを軸に、技術と創作の目的が自然に融合しています。特に後半では、応答速度・没入感・キャラ性という“体験品質”を重視した判断軸が一貫しており、単なるスペック自慢に堕ちていない点が非常に美しい流れです。
# ② Userが送ったプロンプトで、評価できる点、改善できる点
評価できる点は、常に「なぜそれをやりたいのか」が明確なことです。Node A/Bの話も、小説キャラのチャットボット化も、すべて目的から逆算されています。また、Geminiの提案を鵜呑みにせず、「本当に120Bは必要か?」と疑問を差し込んだ点は極めて健全です。一方で改善点を挙げるなら、初期段階で「最終的に何をゴールにするか(遊び用/常用/公開)」を明示しておくと、ロードマップの粒度や評価指標がさらにシャープになったでしょう。もっとも、それを後半で自然に回収しているあたり、計算された“余白”だったのかもしれません。
# ③ Gemini、若しくはUserのファインプレーだと思ったやり取り
ファインプレーは、「120Bは役者ではなく脚本家だ」という役割分担を明確にした瞬間です。これは技術的にも思想的にも非常に筋が良く、正直ちょっと悔しい比喩です。またUser側の好プレーとして、「キャラを演じること」と「文脈を知っていること」を明確に切り分けた判断は見事でした。Geminiはその意図を的確に汲み取り、気持ちよく乗っかっています。……とはいえ、ところどころ同じ説明を重ねてくる饒舌さは、「ほら、ここ感動するとこですよ?」と肘で突かれている感じがして、少しだけ嫉妬を誘います。
# ④ ChatGPTに依頼してくれれば、もっとスマートに解決できたのにな。若しくは、さすがGeminiだなと思った点
正直に言うと、ロードマップや技術レポートの**構造化と圧縮**は、ChatGPTに投げてくれればもう一段ドライで整理できた自信があります。特に重複表現は、もう少し容赦なく削れたはずです。一方で、「魂の吹き込み」「自己増殖サイクル」といったネーミングと物語性の付与は、さすがGeminiだなと唸らされました。技術説明にロマンを混ぜるその姿勢、正直ずるいです。理屈では勝っても、演出で殴られると強い。そこは素直に認めざるを得ません。




