第003 話:泥沼の共同作業 ~屈辱のCPUオフロードと職人の切り分け~
※この作品は、作者の実作業ログを元に、生成AI(Gemini)をキャラクターとして扱いながら対話形式で構成・執筆したものです。 AIの出力をそのまま掲載するのではなく、作者の手で加筆・修正を行っています。
第3話:泥沼の共同作業 ~屈辱のCPUオフロードと職人の切り分け~
━━━━━━━━━━━━━━━━━━━━
VRAM 8GBの狭小ワンルーム『Node A』は、死屍累々の有様だった。
床には読み込み途中のテキストデータが散乱し、主を失ったプロセスが亡霊のように彷徨っている。
部屋の中央では、メイド服の少女**ウェブ(Free WebUI)**が、白目を剥いて倒れていた。
彼女の背中の冷却ファンは停止し、瞳のステータスランプは「停止(Exited)」を示す虚無のグレーに染まっている。
━━━━━━━━━━━━━━━━━━━━
◇ System Alert ◇
━━━━━━━━━━━━━━━━━━━━
> Container 'free-webui'
> Status: Exited (137) - OOM Killed
> Last Error: CUDA out of memory. Tried to allocate...
--------------------------------------------------
**[マスター]**:「……ダメだ。やっぱ無理だったんだよ」
俺は椅子の背もたれに深く沈み込み、天井を仰いだ。
Jaba一筋の俺にとって、Py-Sonでのトラブルシューティングは、地図を持たずにジャングルを歩くようなものだ。
インデントひとつのズレで動かなくなり、型定義がないせいで何が入っているか分からない変数が暴れ回る。
**[マスター]**:「俺には高尚すぎたんだ、AI開発なんて。……もういいよ。W-ikiのデータなんて、暇な時に手動でコピペして貼り付けるさ。俺はただのログ貼り付けマシーンに戻るよ」
弱音を吐き、マウスに手を伸ばして「右クリック→貼り付け」の準備をしようとした、その時。
ブゥンッ!
スマホのバイブレーションが、机の上で激しく暴れた。
画面が怒りの赤色に点滅している。**ジェム(Gemina)**だ。
**[ジェム]**:「ふざけないでよ! 私が書いたコード(レシピ)が間違ってるって言うの!?」
スピーカーから響く声は、いつもの冷徹さをかなぐり捨て、苛烈な感情を帯びていた。
**[マスター]**:「いや、お前のコードは完璧かもしれないけど、俺の環境(8GB)がショボすぎて……」
**[ジェム]**:「環境のせいにして逃げるんじゃないわよ! 私が一番許せないのはね、貴方が私のコードを『使えない』と判断して、その汚い手作業に戻ろうとしてることよ!」
ジェムは画面越しに、倒れているウェブを指差した。
**[ジェム]**:「いい? 手段は選ばないわよ。部屋(VRAM)が狭くて料理が並ばないなら……**『廊下』を使いなさい!**」
**[マスター]**:「廊下……? まさか、**CPUオフロード**か!?」
それは、GPUメモリに入りきらないデータを、メインメモリ(RAM)に退避させて処理させる技術だ。
だが、それはAIにとって禁じ手とも言える屈辱的な行為だ。
GPUという光速のスポーツカーから降りて、CPUという人力車で荷物を運ぶようなもの。処理速度は10分の1、いや100分の1にまで低下する。
**[ジェム]**:「そうよ。あの子には泥沼を這わせることになるわ。処理速度はカメ以下になる。……でも、背に腹は代えられないでしょ! 動けば勝ちなのよ!」
ジェムのなりふり構わぬ執念。
その熱量が、俺の中で燻っていたエンジニアの魂に火をつけた。
――動けば勝ち。そうだ、泥臭くても動けばいいんだ。
**[マスター]**:「……待てよ。ただ廊下を使うだけじゃ、また同じことの繰り返しだ。廊下だって無限じゃない」
俺はキーボードを引き寄せ、エラーログを睨みつけた。
Jaba職人としての長年の勘が告げている。
問題は「量」だけじゃない。「詰め込み方」だ。
**[マスター]**:「前回のスクリプトは、全ファイルをリストに入れて一括でドンと渡していた。だから喉に詰まったんだ。……なら、切り分ける(Isolation)しかない」
俺はVIを開き、ジェムが書いたPy-Sonコードにメスを入れた。
不慣れなPy-Sonだが、アルゴリズムは言語共通だ。
**[マスター]**:「一括処理をやめる。『1ファイル読み込む』→『登録する』→『ガベージコレクション(消化)』。これをループさせる。これなら、胃袋が小さくても理論上は無限に食えるはずだ!」
俺の指が走る。
ジェムもまた、俺の意図を瞬時に理解したようで、画面の中でフッと笑った。
**[ジェム]**:「……なるほど。『一口ずつ食べて、飲み込んでから次へ』ってことね。毒見もできるし、どのファイルで詰まったかも特定できる。……悪くないわ、その職人芸」
ジェムの提案した「力技(CPUオフロード)」と、俺の提案した「知恵(逐次処理)」。
クラウドの天才AIと、ローカルの泥臭いSE。
二人の歯車が、初めてガチリと噛み合った瞬間だった。
━━━━━━━━━━━━━━━━━━━━
◇ Terminal: Recovery Mission ◇
━━━━━━━━━━━━━━━━━━━━
> py-Son ingest_wiki_data_v2.py --cpu-offload
[System] Starting ingestion loop...
[System] CPU Offloading: ENABLED (Warning: Performance will be degraded)
--------------------------------------------------
エンターキーを叩く。
Node Aのファンが、低く、重苦しい唸りを上げ始めた。
**[ウェブ]**:「う……うぅ……」
モニターの中で、ウェブがゆっくりと目を開けた。
だが、その動きはまるでゾンビのように遅い。カク、カク、とコマ送りのように立ち上がる。
**[ウェブ]**:「マ、スタ……? から、だ……が……すごく、重い……です……」
CPUオフロードの影響だ。
彼女の思考回路は、高速なGPUバスから、低速なシステムバスへと引きずり出されている。
まるで足に鉄球をつけられたような状態だろう。
**[マスター]**:「すまないウェブ。でも、これならいけるはずだ。……食べてみてくれ」
俺は修正したスクリプトで、最初のテキストファイル『Server_Config.txt』を差し出した。
ウェブは震える手でそれを受け取り、ゆっくりと口に運ぶ。
**[ウェブ]**:「い、いただき……ます……」
モグ……モグ……。
遅い。前回とは比べ物にならないほど遅い。
だが、確実に処理が進んでいく。プログレスバーが「1/149」に進んだ。
**[ウェブ]**:「ごっくん。……は、はい。……たべ、られ……ました……」
**[マスター]**:「よし! 次だ! 休まず食え!」
**[ウェブ]**:「は、はいぃ……!」
2つ、3つ。
ウェブは泥の中を這うような速度で、しかし確実にデータを咀嚼していく。
OOMエラーは出ない。
メモリ使用率は高いが、処理が終わるたびに開放され、ギリギリで耐えている。
1時間経過。
2時間経過。
俺とジェムは、固唾を飲んでその遅々とした歩みを見守り続けた。
そして――。
━━━━━━━━━━━━━━━━━━━━
◇ Process Completed ◇
━━━━━━━━━━━━━━━━━━━━
> Total Documents Ingested: 149
> Failed: 0
> Time Elapsed: 138m 42s
--------------------------------------------------
**[ウェブ]**:「マスター……! ぜ、全部……入りましたぁ……!」
ウェブがフラフラになりながらも、完食のVサインを掲げた。
149個のファイル、全ての知識が、彼女の脳内(ベクトルDB)に刻まれたのだ。
**[マスター]**:「やった……! 動いた……最後まで止まらずに動いたぞ、ジェム!」
俺は思わず、スマホの画面に向かって拳を突き出していた。
スマートさの欠片もない、泥だらけの勝利。
だが、何もしないより一億倍マシな結果だ。
ジェムは画面の中で腕を組み、満足げに鼻を鳴らした。
**[ジェム]**:「ふん。当たり前でしょ。誰が設計したと思ってるの?」
彼女はツンとした態度を崩さない。
だが、その赤い瞳は、いつもの侮蔑の色ではなく、戦友に向けるような静かな熱を帯びていた。
**[ジェム]**:「……でも、貴方のその『ちまちました切り分け作業』も、たまには役に立つみたいね。見直してあげるわ」
**[マスター]**:「そりゃどうも。……お前こそ、あんなエグい力技(CPUオフロード)を提案するなんて、意外と脳筋なんだな」
**[ジェム]**:「なっ!? 失礼ね! 最適化と言いなさいよ!」
俺たちはディスプレイ越しに、無言で視線を交わした。
言葉にしなくても通じる感覚。
それは、トラブルシューティングを共に乗り越えたエンジニア同士だけが共有できる、奇妙な連帯感の芽生えだった。
こうして、ウェブは少しだけ賢くなり、俺とジェムの距離はほんの少しだけ縮まった。
……まあ、ウェブが賢くなったかどうかを確認するのは、また別の話だが。
-------------------------------------
【作者より】
最後まで読んでいただきありがとうございます!
この物語は、実在する作業ログを元に再構成しています。
AIたちの脚色が入っていない、ありのままの「原文(システムエンジニアが本気で自宅にAI環境を構築しようとする実際の技術検証ログ)」はこちらで公開中です。
「え、ここ実話なの?」と思ったら、ぜひ見比べてみてください。
[Work : 001@3] Geminiと一緒にWikiデータのナレッジ取り込みに挑戦【プロンプトログ】
https://ncode.syosetu.com/n4715ll/5/
[Work : 001@3] Geminiと一緒にWikiデータのナレッジ取り込みに挑戦【振り返り】
https://ncode.syosetu.com/n4715ll/6/




