第三話:レジストリとパラメータ
《作者より》
◆◆◆◆◆で始まるブロック=影山一人称視点
影山が場面にいる場合は影山が基本、一人称になります。スピンオフなど特別な章ではこの制限を外します。
★★★★★で始まるブロック=三人称視点
影山が居ないところで動いているあちこちの風景、事情を書き連ねています。
「影山さん! 影山さん! しっかりしてください」
影山―― 俺の苗字だ。浜松あたりじゃよくある名前だが東京だとあまり見かけない。英語にするとシャドウって単語が入るのがクールだとかで中二病患者にはよく羨ましがられたものだ。
「影山さんてば!」
妙に真剣な声に起こされ薄目を開けると、俺の顔を心配そうに覗き込んでいる後輩・服部の顔が見えた。
「服部か……。すまん、俺は倒れたのか?」
「あと十分、意識を取り戻さなかったら救急車を呼ぼうと思っていました。大事なさそうで良かったです」
俺は給湯室近くで気を失って倒れていたらしい。なるほど、このパイプ椅子ベッドは服部お手製か。
服部の満面の笑顔に光る、リスのような黒目がちの瞳と大きめの前歯が眩しい。隣で服部と同期の中山も安堵の表情を浮かべている。
「中山と一緒にここまで運ぶの大変だったんですよ」
「悪かった……。お前らも疲れている筈なのに迷惑かけたな。ありがとな」
服部と中山に礼を言いながら、俺は首や肩をコキコキと鳴らせた。正直、パイプ椅子のベッドの寝心地はそんなにいいもんじゃない。
「さすがに20連勤はアラサーの体には堪えるわ。お茶を飲んでたところまでは覚えているが、気を失っていたのか俺は」
「目が開いたときはホッとしましたよ。お疲れのようですが、作業が終わらなければ明日も出勤です。大丈夫なようでしたら様子を見つつ作業に戻って下さい」
「……申し訳ない。落ち着いたらすぐ戻る」
「お願いしますよ」
服部と中山は軽く会釈すると会議室の電気を消して出て行った。もうしばらく寝ていろということか。
ああそうか、俺は倒れてたのか―― しかし変な夢見てたなあ。人類の数を減らせとか神っぽい変なゲーム厨に頼まれる夢だ。
なんだっけ……そうそう、地球上の各オブジェクトのオフセットやら変数にアクセス出来るって言ってたな。妙にリアルで笑えるわ。
パラメータとか抽象化レイヤーとかなんだよそれ。地球はオブジェクト指向で動いてんのかっつーの。
俺は自嘲気味に一人ニヤリと笑いながら自分の夢の荒唐無稽さに呆れかえったりしてみたが、妙に理屈が破綻していないのが気になった。
夢なら何かしら、もうちょっとおかしなところがある筈だ。あの白い空間も、人類の数を減らせと言ってきたあいつも、その存在感が記憶の中でさえ妙に生々しい。
「……オブジェクトのパラメータ見るってどうやるんだっけ。寿命と本名が変なフォントで見えたりして」
一人薄暗い会議室でつぶやきながら、夢の中で受けたレクチャーを思い出す。あまり誰かに見られたくない光景だ。
「オブジェクトの、地球の基本位置からのオフセットが確定したら一旦ターゲットを確定。そこからリストを展開する。リストはサブリストを何段にも持っている可能性があるよ。必要なパラメータを発見したらそれをトグルしよう。変更するなら好きな数字や記号を入れるといい」
「ちょっとまて、なんだそりゃ。まるでウィンドウズのレジストリエディタじゃねえか」
「君の能力や知見に出来るだけ沿うようにしているんだよ」
「だったらもうちょっとマシなユーザーインターフェースにしろよぉ! 他にもなんかあるだろうがよ!」
「以上の操作は君は自転車に乗るがごとく、自然に出来るようにしてある」
「お、おう……そりゃなんか、すごいな」
「ただ、小脳の一部を使うので運動機能全般に支障をきたすよ。歩いたり車の運転をしたりしながらこの操作を行うと事故を起こすからね。気をつけて」
「なんだよそりゃ」
俺は会議室の椅子に焦点を当て、その椅子のオフセットを……確定できた。ツリー構造の数字と文字のリストが脳裏に浮かぶ。頭の中に整然とリスト構造と要素が並ぶ感じだ。
数字も文字も、ご丁寧に俺がわかるようにおそらくは生データから変換されている。各パラメータの細かい意味までは判らないが、これらの数字がシミュレータに使われているらしい。
なるほど自転車に乗るが如くだ。自分でもどうやったのか他人に説明できない。しかし、これをやったあとの手足と首のだるさが半端じゃないな。
…
……!
………‼
現実だ! 現実だった! あの白い空間も! あの高次元知的生命体も! そしておそらくあの依頼も!
突きつけられた驚愕の事実に俺は動揺した。動揺せずにいられるか! あれは夢ではなかったのだ!
じゃあ、やっぱり俺は人類をこれから40億人ほど減らさなきゃいけないのか? 単純に半分以上だぞ? 二人に一人以上をだ!
やらなければあいつがゲームメーカーに不具合報告をする。そしてそのバグを修正しようとする「運営」は何をしてくるかわからない連中……それだけは、それだけは避けたい。
結構な絶望感にさいなまれ、俺はメンタルがどうにかなりそうだった。
しかし、そのメンタル周りも「あいつ」が俺の許可もなくしれっと補強しておいたらしい。俺はあっさり立ち直った。しかも自分でも信じられない程の短時間でだ。
「……戻るか」
すっかりぬるくなってしまったペットボトルの茶を一気に飲み干し、喉からゲェプと下品な音を一度鳴らすと、俺は作業を再開するため職場へと向かった。
今は人口を減らすことより目の前のデスマーチを終わらせることの方が大事だ。
これは決して現実逃避じゃないぞ。というか、逃避出来るなら是非させてほしい。いっそ現実じゃないと言って欲しいわ。
◆◆◆◆◆
「影山さん担当の部分で再現性に乏しいバグが出てて、そこがボトルネックになってるんです」
「そうだったな……いや、解ってる。迷惑かけてすまん」
俺は自分が開発を担当している人工知能を使った株の自動売買システムのデバッグに戻った。
このシステムは株式市場からデータを取得してくるパート、株式市場以外からデータを取得してくるパート、それらのデータを前処理するパート、そしてそれらから株価の予測をするパート、そして予測した株価に応じて投資を決断するパート、最後にオンラインで株の売買をするパートに分かれている。
俺の担当はこの中の株価の予測パートで、俺がほとんどの設計と実装をしたものだ。
偉そうに人工知能とか言ってるが再帰型ニューラルネットワークを使った、ちょっと凝ってるだけの株価の予測システムだ。そもそもそんなに正確に株価の予測が出来るわけじゃない。だから、正しい株価が予測値として出てこないというのはバグじゃない。
今困っているのは、何かの拍子にとんでもない数字が出てくることだ。0.07%くらいの確率で3つも桁の違う株価が予測されて出てくる。このまま納入して稼働させれば発注主は数か月で破産するに違いない。
その、何かの拍子というのが特定できないのが俺の20連勤の原因だ。バグがめったに発生しない上にログファイルにも異常は見当たらない、システムは正常運転だと自己診断しているため手の付けように困っていたのだ。
「あ、そうか」
試しに、俺は例の能力を発動してテスト用サーバーのオフセットを確定し、0.0007に近い数字を検索した。
「こいつか……!」
自転車を漕ぐように簡単に怪しい箇所は見つかった。メモリのエラーレートだ。0.0007よりははるかに小さいけれど、こいつで間違いない。
テストサーバーを安く構築するためにエラー訂正機能のついたメモリとCPUを使っていなかったのが原因だ。畜生プロマネめ。だから本番環境と同じにしろとあれだけ言ったのに予算がどうのとのらりくらりと逃げまくった挙句そのツケが全部こっちに来てんじゃねえか。
「つーか、メモリエラーならなんで俺のプログラムでだけ発生するんだよ……勘弁してくれよもう……」
幸運なことにテストサーバーは社内にあったのですぐに手は打てた。服部が何度もテストを回して確認したメモリと、エラーを吐くメモリを取り換えるのにそんなに時間はかからない。
実際、作業はすぐに終わった。これが大手町にあるデータセンターのサーバーだったら土日だけに入室申請から何から、大変な手間になるところだ。
その後、別のバグも発見できた。2つの原因が折り重なって原因の特定を阻んでいたのだ。よくある。ありすぎて困る。片方の原因がなくなったため問題が単純化され、もう一方のバグの原因が簡単に突き止められたってわけだ。
特定のサンプルがLSTMエンコーダに入力する前の制限値域に収まらないために学習がうまくいかないのか……。じゃ、ここを正規化してしまえばいい。これでいいか。よし直った。たぶん直った。チェックも実装した。できた筈!
「出来たぞ。テストしてくれ」
肺にたまった息を大きく吐き出して、服部に単体テストを依頼する。作業に熱中しすぎて呼吸をするのを忘れていたらしい。頭が少しくらくらした。
簡単にテストと言うが、LSTMやらTCNやらを長大に繋げた化け物みたいな再起ニューラルネットを軸に、過去のIR文書やら各種の市場外乱パラメータをぶっこんでファインチューニングさせたマルチモーダルLLM、それを使って株式ニュースをベクトル化……そしてオフライン強化学習を……とやると、テストの結果までには結構な時間がかかる(注)。
まして、0.07%の発生率だったものが0%になりましたというのを実証するには、一度や二度正常に動いたくらいでは駄目だ。さらにこの後は自動売買システムや市場株価取得システムと連携してのコンビネーションテストが待っている。道は遠い。
「今日はこのテストを何台かで二晩ほど回して、何百回かやってエラーが無くなればとりあえず単体のほうのデバッグは終了ですかね」
プロの顔で服部が言う。入社して4年目、俺が一から鍛え上げただけあって手順も手際もなかなかのものだ。ただこいつはエディタにviを使う。そこだけは何とも相容れない。いや関係ないけど。
「じゃ、今日は帰れるな。お疲れ様ー」
「というか、やっと明日休めますね。日曜日に休めるなんて当たり前なのに、なんだか嬉しいなあ」
屈託のない顔で服部が言う。俺はこんな気のいい連中を、2人に1人間引かないといけないのか。
キツい。
(注) 結構な計算量が必要な面倒くさい演算だと思って下さい。