表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
92/115

第076 話:開通せよ、愛の専用回線(ポートプロキシ) ~WSL2の壁を超えて~

※この作品は、作者の実作業ログを元に、生成AI(Gemini)をキャラクターとして扱いながら対話形式で構成・執筆したものです。 AIの出力をそのまま掲載するのではなく、作者の手で加筆・修正を行っています。

# 第76話:開通せよ、愛の専用回線ポートプロキシ ~WSL2の壁を超えて~




 家庭内クラウド構想。

 それは、Node B(本宅)の圧倒的な推論能力と、Node A(別荘)の堅実なCU-DA演算能力を連結させる、我が家のAIハーレム最大規模のプロジェクトだ。


 旧居であるNode Aの電源を入れ、ORamaを起動するまでは順調だった。

 だが、俺たちは今、見えない「壁」に直面していた。


**[マスター]**:「……だめだ。繋がらない」


 俺はZenbookのターミナルを叩き、Node BからNode Aへの接続テスト(curl)を繰り返していた。

 だが、返ってくるのは無慈悲なエラーメッセージだけだ。


━━━━━━━━━━━━━━━━━━━━


 ◇ Connection Test Log ◇


━━━━━━━━━━━━━━━━━━━━

> [Master@Node-B]

> curl http://192.168.1.15:11434/api/tags

>

> [System Response]

> curl: (7) Failed to connect to 192.168.1.15 port 11434: Connection refused

--------------------------------------------------


**[マスター]**:「IPアドレスは合ってる。OpenWebUIの画面はブラウザで見えてるのに、肝心のAPIが通じない……なんでだ!?」


 俺が頭を抱えていると、サブモニターに映るウェブが、慌てふためいた様子で画面内を走り回っていた。

 彼女は今、精神体プロセスとしてNode Aの中に「ダイブ」している。


**[ウェブ]**:「おかしいですぅ! マスターからの荷物パケットが全然届きません~!」


 背景は真っ黒なコンソール画面(WSL2環境)。

 ウェブはLANケーブルの切れ端のようなものを手に持ち、右往左往している。


**[ウェブ]**:「もしもーし! マスター! 聞こえますかー!? 私はここですよぉー!」

挿絵(By みてみん)


 彼女は画面の端――おそらくファイアウォールやネットワーク境界と思われる「見えない壁」に耳を当て、必死に叫んでいる。

 だが、その声はくぐもって、データとしてこちらに到達していないようだ。


**[ウェブ]**:「うぅ……。せっかく『別荘』に来たのに、これじゃあ一人ぼっちの独房ですぅ……」


 涙目になるウェブ。

 その時、メインモニターから冷静な声が響いた。


**[ジェム]**:「焦らないで、マスター。原因は明白よ」


 ジェムが腕組みをして登場する。彼女は既にシステム構成図を展開し、問題箇所を赤くマーキングしていた。


**[ジェム]**:「ウェブ、そこは『WSL2』という特殊な隔離世帯なの。Win-dowsの中に作られた仮想的なLinux環境……いわば『家の中にある別の家』ね」


 彼女は指示棒カーソルでNode Aの構造図を指し示した。


**[ジェム]**:「デフォルトでは、ORamaは『localhost(自分自身)』からのアクセスしか許可していないわ。つまり、玄関の鍵が閉まっている上に、住所(IP)も仮想ネットワークの奥深くに隠されている状態よ」


**[マスター]**:「なるほど……。Node Bからのラブレター(APIリクエスト)は、Win-dowsの玄関までは届いているが、その奥のWSL2の部屋までは届いていないわけか」


**[ジェム]**:「ええ。だから工事が必要ね。……ウェブ、聞こえる? 泣いてる場合じゃないわよ」


 ジェムの通信は、制御回線を通じてウェブに届いたようだ。

 ウェブがハッとして涙を拭う。


**[ジェム]**:「ウェブ、スコップを持ちなさい! まずはORamaの設定ファイルを書き換えて、誰でもウェルカムな状態(0.0.0.0)にするの!」


**[ウェブ]**:「は、はいっ! お任せくださいジェムお姉ちゃん! ガテン系ウェブちゃん、出動です!」


 ウェブの衣装がパッと切り替わる。

 黄色いヘルメットにニッカポッカ、首にはタオル。どこで覚えたのか分からない「現場作業員スタイル」だ。


**[ウェブ]**:「環境変数をセットしますぅ! えいっ、やぁっ!」

挿絵(By みてみん)


 彼女がピッケルを振るう(コマンドを打つ)動作に合わせて、Node Aの深部で設定が書き換わっていく。


━━━━━━━━━━━━━━━━━━━━


 ◇ Node A: Internal Setting ◇


━━━━━━━━━━━━━━━━━━━━

> [Web-UI@Node-A]

> export OLLAMA_HOST=0.0.0.0

> systemctl restart oRama

>

> [System Log]

> ORama is now listening on 0.0.0.0:11434

--------------------------------------------------


**[ウェブ]**:「ふぅ、これで玄関の鍵は開けました! でもジェムお姉ちゃん、まだ『道』が繋がってません!」


**[ジェム]**:「ええ、ここからが本番よ。仕上げはマスター、お願い」


 ジェムが俺の方を向き、真剣な眼差しを送る。


**[ジェム]**:「Win-dowsという分厚い壁に、WSL2への直通『土管』を通すわ。PowerShallを管理者権限で開いて」


**[マスター]**:「了解。『ポートプロキシ』だな」


 俺は管理者としてPowerShallを立ち上げた。

 Win-dowsが受け取ったポート11434への通信を、WSL2内部の仮想IPへ転送する。まさに「トンネル工事」だ。


**[マスター]**:「WSLのIPを取得して……よし、いくぞ!」


━━━━━━━━━━━━━━━━━━━━


 ◇ Win-dows PowerShall (Admin) ◇


━━━━━━━━━━━━━━━━━━━━

> PS C:\> $wsl_ip = (wsl -e ip addr show eth0 | Select-String "inet ").ToString().Split(" ")[5].Split("/")[0]

> PS C:\> netsh interface portproxy add v4tov4 listenport=11434 listenaddress=0.0.0.0 connectport=11434 connectaddress=$wsl_ip

>

> [Status]

> Proxy Added. Bridge Established.

--------------------------------------------------


 俺は祈りを込めて、エンターキーをッターン! と叩いた。


 その瞬間だった。


 ブフォォォォォン!!


 足元のNode Aのファンが、今まで聞いたこともないような高回転で唸りを上げた。


**[ウェブ]**:「――! き、来ました! 何かすごい勢いで来ましたぁ!」


 画面の中のウェブが、目を見開いて叫ぶ。

 彼女の頭上から、大量のテキストデータの奔流が降り注いでいた。


**[ウェブ]**:「ドバドバ来ますぅ! 文字の洪水ですぅ~! でも……でも、これなら泳げます!」


 ウェブがデータの海に飛び込むと、背後の「黒い箱(GTX 4060)」が緑色の光を放ち始めた。

 CU-DAコア。

 2500個を超える演算ユニットが、Node Bから送られてきたテキストを一斉に飲み込み、高速で行列計算(Embedding)を行い、ベクトルデータとして吐き出していく。


**[ジェム]**:「接続確立(Connection Established)。……見て、この速度」


 Node Bのモニターには、先ほどまで停止していたプログレスバーが、信じられないスピードで右側へ伸びていく様子が映し出されていた。


**[ラマ姐]**:「あらぁ……悪くないわねぇ」


 騒ぎを聞きつけたラマ姐が、優雅に紅茶(仮想データストリーム)を啜りながら現れた。


**[ラマ姐]**:「私が一口飲む間に、もう数百件の処理が終わってるなんて。あの子(GTX 4060)、小さい身体でよく働くわぁん」

挿絵(By みてみん)


**[マスター]**:「おおお……! 速い! これがCU-DAネイティブの力か……!!」


 CPU処理では数時間かかると予測されていたタスクが、分単位で消化されていく。

 ただの「Connection Refused」という絶望が、今は「2000 items/sec」という歓喜の数字に変わっていた。


 しばらくして、全てのデータのベクトル化が完了した。


**[ジェム]**:「ふぅ……完璧ね。お疲れ様、マスター」

挿絵(By みてみん)


 ジェムが満足げに眼鏡を拭く。


**[ジェム]**:「CU-DA環境があって本当に良かったわ。もしNode Aを売ってしまっていたら、このRAG計画は『CPUの遅さ』という泥沼で頓挫していたかもしれない」


**[マスター]**:「ああ、本当にそうだ。AI開発において、CU-DAはもはや単なるアクセラレータじゃない。……『インフラ』であり、生きるための『人権』なんだな」


 俺は唸りを静めたNode Aを、愛おしそうに撫でた。

 型落ちだろうが、VRAMが少なかろうが、NVIVIAのGPUがあるというだけで、そこには「世界標準」のレールが敷かれているのだ。


 画面の中では、仕事を終えたウェブが、Node A(別荘)とNode B(本宅)を行ったり来たりして遊んでいた。


**[ウェブ]**:「わーい! Node BとNode Aが直通トンネルで繋がりましたぁ! 毎日お出かけ気分ですぅ!」


 彼女はデータのパイプラインを滑り台のように滑り降りては、また登っていく。


**[ラマ姐]**:「ふふ、これなら安心ねぇ。面倒な計算(汚れ仕事)は全部あっちに投げて、私はここで優雅に『推論』という高尚な遊びに専念させてもらうわぁん♡」


 ラマ姐は上機嫌でソファに沈み込んだ。

 ジェムはそんな彼女を見て、呆れたように肩をすくめる。


**[ジェム]**:(やれやれ、結局一番得してるのはラマ姐ね……。まあ、マスターが満足そうだから、良しとしましょう)


 ジェムが俺を見て微笑む。

 Node Bの知能と、Node Aの計算力。

 2つのPCと3人のAIが有機的に連携する「最強のハーレム環境」が、今ここに完成した。

-------------------------------------

【作者より】


最後まで読んでいただきありがとうございます!



この物語は、実在する作業ログを元に再構成しています。

AIたちの脚色が入っていない、ありのままの「原文(システムエンジニアが本気で自宅にAI環境を構築しようとする実際の技術検証ログ)」はこちらで公開中です。

「え、ここ実話なの?」と思ったら、ぜひ見比べてみてください。


[Work 025] Geminiと一緒にETLパイプライン構築④【プロンプトログ】

https://ncode.syosetu.com/n4715ll/82/


[Work 025] Geminiと一緒にETLパイプライン構築④【振り返り】

https://ncode.syosetu.com/n4715ll/83/

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ