ソフトウェア

予期せぬバグの原因は「満月」だった


技術者のバルトウォミェイ・クピアウ氏が、ローグライクゲーム「NetHack」の遊び方を学習するニューラルネットワークのトレーニングをする中で出会った、過去に見た中で最も不思議なバグについての話を披露しています。


Thread by @CupiaBart on Thread Reader App – Thread Reader App
https://threadreaderapp.com/thread/1793930355617259811.html

クピアウ氏はポーランドのヤギェウォ大学で博士研究員を務めるマチェイ・ヴォウチェク氏とともに、AI研究者のイェンス・タイルス氏の開発したモデルを用いて、ローグライクゲーム「NetHack」の遊び方を学ぶニューラルネットワークのトレーニングに取り組んでいます。


強化学習で改良を進めた結果、モデルは5000点を獲得できるようになり、クピアウ氏らは微調整してさらなるスコアの向上を目指していましたが、ある日、スコアが3000点しか取れなくなってしまったとのこと。

NetHackはプレイするたびに異なるダンジョンが自動生成されるゲームで、クピアウ氏らはシードを固定してプレイしていたようですが、問題はシードを変えても一貫して発生したことから、そもそもモデル側に何かの異常が起きたと考えたクピアウ氏はモデルを数日前のコードに戻しましたしかしスコアは3000点しか出ず、数週間前のコードにまで戻しても、なおもスコアは3000点でした。


運良く、実験中のサーバーに5000点を獲得したときのファイル群が残っていたため、クピアウ氏らはこのファイルでやり直しを行いましたが、それでもスコアは3000点でした。

環境全体を見直したところ、GPUで高速計算を行うためのCUDAライブラリが11.8から12.4にバージョンアップしていました。「CUDAのバージョン違いがこのような影響を及ぼすものだろうか」と思いつつも、改めてライブラリを11.8に戻してもスコアは3000点。別途、CUDA 12.4用に環境を新構築しても、やはりスコアは3000点となりました。

NetHackプレイの様子の一例


さらには、個人のノートPCを使ったり、マルチスレッドやGPU、その他問題を引き起こす可能性がある選択肢をすべてオフにして実行しましたが、スコアは3000点でした。

何時間も問題に取り組んで、気が狂いそうになったというクピアウ氏は、念のため寝る前にタイルス氏に質問を投げてその日は休みました。

翌日、クピアウ氏のもとにはタイルス氏から「今日は満月ですよ」という返信が届いていました。

NetHackは、1カ月を3~4日ずつ8つの期間に区切って扱っており、そのうち「満月」の期間はキャラクターがより幸運になるなどの変更が加わります。ゲームが難しくなるわけではないのですが、当該モデルのトレーニングセットには満月のデータが含まれていなかったため、スコアが下がっていたとのこと。

Time - NetHack Wiki
https://nethackwiki.com/wiki/Time

念のため、クピアウ氏がシステムクロックを変更して「満月」に該当する時期からずらすと、再びモデルは5000点を取れるようになったそうです。

クピアウ氏はタイルス氏に感謝を示し、「もし予期しないバグに遭遇したら、月齢を確認してください」と、エピソードを締めくくっています。

この記事のタイトルとURLをコピーする

・関連記事
メール本文からピリオドが消失してしまう謎の現象をエンジニアが解明 - GIGAZINE

バニラのアイスを買ったときだけ車のエンジンがかからなくなる不思議な現象、その原因は? - GIGAZINE

「ページを更新するたびに販売価格が上昇する」サイトの存在が明らかに、ユーザー搾取かそれともバグか? - GIGAZINE

in ソフトウェア, Posted by logc_nt

You can read the machine translated English article here.