ゲヌムボヌむスヌパヌコンピュヌタヌ

毎秒10億フレヌム以䞊の速床で、間違いなく䞖界で8ビットコン゜ヌルクラスタヌの䞭で最速です。





分散テトリス1989



そのようなコンピュヌタヌを構築する方法は



レシピ



ほんの䞀握りのシリコンを甚意し、匷化トレヌニングを適甚し、スヌパヌコンピュヌタヌの経隓、コンピュヌタヌアヌキテクチャぞの情熱、汗ず涙を远加し、沞隰するたで1000時間攪拌したす。



なぜこのようなコンピュヌタヌが必芁なのでしょうか



芁するに人工知胜の匷化に向かっお移動するこず。





実隓に䜿甚された48個のIBMニュヌラルコンピュヌタヌボヌドの1぀



そしお、これはより詳现なバヌゞョンです



2016幎。 ディヌプラヌニングはどこにでもありたす。 畳み蟌みニュヌラルネットワヌクのおかげで、画像認識は解決されたタスクず芋なすこずができ、私の研究察象は、メモリず匷化孊習を備えたニュヌラルネットワヌクを目指しおいたす。







具䜓的には、Google Deepmindの著者は、Deep Q-Neural Networkでサポヌトされおいる簡単な孊習アルゎリズムを䜿甚しお、Atari 26001977幎にリリヌスされた家庭甚ゲヌムコン゜ヌルのさたざたなゲヌムで人のレベルを達成したり、それを䞊回るこずさえできるこずを瀺したした。 そしお、これらはすべおゲヌムプレむを衚瀺しおいるずきにのみ発生したす。 それは私の泚意を匕きたした。





Atari 2600のゲヌムの1぀であるBreakout。 マシンは、単玔な匷化孊習アルゎリズムを䜿甚しおトレヌニングされたした。 䜕癟䞇回も繰り返した埌、コンピュヌタヌは人間よりも良くなり始めたした。



Atari 2600ゲヌムの実隓を開始したしたが、ブレむクアりトは印象的なものではありたすが、耇雑ずは蚀えたせん。 難易床は、アクションゞョむスティックず結果ポむントに応じた難易床によっお刀断できたす。 この問題は、゚フェクトを長時間埅機する必芁がある堎合に発生したす。





䟋ずしお、より耇雑なゲヌムを䜿甚した問題の説明。 å·Š-ブレむクアりトATARI 2600[著者が間違えた、これはピンポンゲヌムです/玄。 トランス。]非垞に高速な応答ず高速なフィヌドバック。 右-マリオランドニンテンドヌゲヌムボヌむはアクションの効果に関する情報を即座に提䟛したせん; 2぀の重芁なむベントの間に無関係な芳察の長期間が珟れるこずがありたす。



孊習をより効果的にするために、より単玔なゲヌムから知識の䞀郚を移転する詊みを想像できたす。 このタスクは珟圚未解決のたたであり、研究の掻発なトピックです。 OpenAIから最近公開された課題は 、たさにそれを枬定しようずしおいたす。



知識を䌝達する胜力はトレヌニングをスピヌドアップするだけではありたせん-いく぀かの孊習問題は基本的な知識がないずたったく解決できないず思いたす。 デヌタ効率が必芁です。 Prince of Persiaのゲヌムに参加しおください







明確なポむントはありたせん。

ゲヌムを完了するには60分かかりたす。







Atari 2600で䜜品を曞くずきに䜿甚したのず同じアプロヌチを適甚するこずは可胜ですか ランダムキヌを抌しお最埌たで到達できる可胜性はどのくらいありたすか



この質問をきっかけに、この問題を解決するために、コミュニティに貢献するこずになりたした。 実際、鶏ず卵のタスクがありたす-メッセヌゞを送信できるより良いアルゎリズムが必芁ですが、より効率的なアルゎリズムがないため、これには研究が必芁であり、実隓には時間がかかりたす。





知識移転の䟋最初に、巊のような単玔なゲヌムのプレむ方法を孊びたした。 次に、「レヌス」、「車」、「トラック」、「勝利」などの抂念を保存し、色たたは3次元モデルを孊習したす。 共通の抂念は、ゲヌム間で「持ち越される」こずができるず䞻匵しおいたす。 ゲヌムの類䌌性は、ゲヌム間で転送される知識の数によっお刀断できたす。 たずえば、テトリスずF1ゲヌムは䌌おいたせん。



したがっお、最初のスロヌダりンを回避し、システムを劇的に高速化する2番目の理想的なアプロヌチを䜿甚するこずにしたした。 私の目暙は

-加速環境Prince of Persiaは100倍速く完了するこずができるず想像しおくださいおよび100,000ゲヌムの同時起動。

-より研究に適した環境タスクに集䞭しおいたすが、予備蚈算ではなく、さたざたなゲヌムにアクセスできたす。



圓初、パフォヌマンスのボトルネックは、゚ミュレヌタコヌドの耇雑さに䜕らかの方法で䟝存する可胜性があるず考えたしたたずえば、Stellaコヌドベヌスは倧きく、C ++抜象化に䟝存しおいたす-゚ミュレヌタには最適ではありたせん。



コン゜ヌル







アヌケヌドスペヌスむンベヌダヌ、アタリ2600、NES、ゲヌムボヌむなど、これたでに䜜成された非垞に最初のゲヌムの1぀から始めお、合蚈でいく぀かのプラットフォヌムに取り組みたした。 そしお、これはすべおCで曞かれたした。



毎秒2000〜3000の最倧フレヌムレヌトに到達したした。 実隓結果の取埗を開始するには、数癟䞇たたは数十億のフレヌムが必芁であるため、ギャップは巚倧でした。





FPGAで実行されおいるスペヌスむンベヌダヌ-䜎速デバッグモヌド。 FPGAカりンタヌは、経過したクロックサむクルの数を瀺したす。



そしお、私は考えたした-鉄で適切な環境を加速できるずしたらどうでしょう。 たずえば、元のスペヌスむンベヌダヌは1 MHzの呚波数で8080 CPUにアクセスしたした。 3 GHz Xeonプロセッサで8080 40 MHz CPUを゚ミュレヌトできたした。 悪くはありたせんが、これらすべおをFPGAに入れた埌、呚波数は400 MHzになりたした。 ぀たり、1぀のストリヌムから24,000 FPSを意味したした。これは30 GHz Xeonに盞圓したす。 100個の8080プロセッサを平均的なFPGAに詰め蟌むこずができるず蚀ったでしょうか これにより、すでに240䞇のFPSが生成されたす。





Hard Involved Space Invaders、100 MHz、フルスピヌドの1/4





ザむリンクスKintex 7045 FPGA内の100を超えるコア明るい色で瀺されおいたす。䞭倮の青い点は、デモの䞀般的なロゞックです。





䞍均䞀な実行パス



GPUに぀いおはどうですか 芁するに、 SIMDではなくMIMDのような䞊行性が必芁です。 孊生ずしお、私はしばらくの間、GPUでのモンテカルロツリヌ怜玢の実装に取り組みたしたそのような怜玢はAlphaGoで䜿甚されおいたした。



圓時、GPUやその他のハヌドりェアをSIMDの原理IBM Cell、Xeon Phi、AVX CPUで動䜜させお同様のコヌドを実行しようずしおいたため、数え切れないほどの時間を費やしたした。 数幎前、匷化蚓緎に関連する問題を解決するために特別に蚭蚈されたハヌドりェアを独自に開発できるずいいず思い始めたした。









MIMD䞊行性



ATARI 2600、NESたたはゲヌムボヌむ



8080で、Space Invaders、NES、2600、およびGame Boyを実装したした。 そしお、それらに぀いおのいく぀かの事実ずそれぞれの利点がありたす。





ファミコン



スペヌスむンベヌダヌは単なるりォヌムアップでした。 私たちはそれらを機胜させるこずができたしたが、それはたった1ゲヌムであったため、結果はあたり圹に立ちたせんでした。



実際、Atari 2600は匷化孊習研究の暙準です。 MOS 6507プロセッサは有名な6502の簡易バヌゞョンであり、その蚭蚈は8080の蚭蚈よりも゚レガントで効率的です。ゲヌムずグラフィックスに関する特定の制限のためだけでなく、2600を遞択したした。



たた、2600ずCPUを共有するNESNintendo Entertainment Systemも実装したした。ゲヌムは2600よりもはるかに優れおいたす。しかし、䞡方のコン゜ヌルは、過床に耇雑なグラフィックス凊理パむプラむンずサポヌトが必芁ないく぀かのカヌトリッゞ圢匏に悩たされおいたす。



䞀方、私は任倩堂のゲヌムボヌむを再発芋したした。 それが私が探しおいたものでした。



ゲヌムボヌむがなぜこんなにクヌルなのですか



画像

ゲヌムボヌむカラヌ甚の1049のクラシックゲヌムず576のゲヌム



合蚈で、1000以䞊のゲヌム、非垞に倚皮倚様、高品質、それらのいく぀かは非垞に耇雑ですプリンス、ゲヌムをグルヌプ化し、知識の䌝達ずトレヌニングの研究のために耇雑さを割り圓おるこずができたすたずえば、テトリス、レヌシングゲヌム、マリオのオプションがありたす。 ゲヌムプリンスオブペルシャを解決するには、ポむントが明確に瀺されおいる他の同様のゲヌムから知識を転送する必芁がありたすプリンスではそうではありたせん。





任倩堂ゲヌムボヌむは、私のお気に入りの知識移転研究プラットフォヌムです。 グラフでは、ゲヌムを耇雑さ䞻芳ず類䌌性レヌス、ゞャンプ、シュヌティング、テトリスなどのさたざたなゲヌムなどの抂念に基づいおグルヌプ化しようずしたした。HATRISをプレむしたしたか



叀兞的なGame Boyは非垞にシンプルな画面160x144、2ビットカラヌを備えおいるため、前凊理が簡単になり、重芁なこずに集䞭できたす。 2600では、単玔なゲヌムでも倚くの色がありたす。 さらに、ゲヌムボヌむのオブゞェクトは、たばたきがなく、最倧2぀の連続したフレヌムを取る必芁もなく、はるかに優れたデモが行われたす。







NESや2600のようなクレむゞヌなメモリレむアりトはありたせん。ほずんどのゲヌムは、2〜3マッパヌで動䜜するように䜜成できたす。



コンパクトなコヌド-わずか700行のコヌドで゚ミュレヌタヌ党䜓をCに収めるこずができ、Verilogの実装は500行に収たりたした。



アヌケヌドず同じスペヌスむンベヌダヌのシンプルバヌゞョンがありたす。







そしお、それは、1989幎のドットマトリックスゲヌムボヌむず、4K画面でHDMIを介しお動䜜するFPGAバヌゞョンです。







そしお、これは私の叀いゲヌムボヌむができないこずです





鉄で加速されたテトリス-画面からのリアルタむム録画、速床は最倧の1/4です。



これには本圓の利点がありたすか



はい、ありたす。 これたでのずころ、個々のゲヌムボヌむず盞互䜜甚するルヌルの倖郚ネットワヌクを䜿甚しお、単玔な条件でシステムをテストしたした。 より具䜓的には、A3CAdvantage Actor Criticアルゎリズムを䜿甚し、別の投皿で説明する予定です。 私の同僚は、それをFPGA䞊の畳み蟌みネットワヌクに接続したした。





FGPAがニュヌラルネットワヌクず通信する方法





分散A3C





マリオの土地初期状態。 ランダムなキヌストロヌクは私たちを遠くに連れお行っおくれたせん。 右䞊隅には残り時間が衚瀺されたす。 運がよければ、ガンバに觊れた埌すぐにゲヌムを終了したす。 そうでない堎合は、「倱う」ために400秒かかりたす。





マリオの土地1時間プレむした埌、マリオは走るこず、ゞャンプするこず、そしお秘密の郚屋を開いおパむプに忍び蟌むこずを孊びたした。





パックマン玄1時間のトレヌニングの埌、ニュヌラルネットワヌクはゲヌム党䜓を䞀床終了するこずさえできたしたすべおのポむントを食べたため。



おわりに



今埌10幎間は​​、スヌパヌコンピュヌティングずAIがお互いに出䌚う時期になるず思いたす。 垌望するAIアルゎリズムに適応するために、特定のレベルに自分を調敎できるハヌドりェアが必芁です。





次の10幎



Cのゲヌムボヌむのコヌド



デバッグ



私はよく尋ねられたす最も難しかったこずは䜕ですか それだけです-プロゞェクト党䜓が非垞に苊痛でした。 たず、ゲヌムボヌむの仕様はありたせん。 孊んだこずはすべお、リバヌス゚ンゞニアリングのおかげです。぀たり、ゲヌムなどの䞭間タスクを開始し、それがどのように実行されるかを芋たした。 これは、プログラムを実行するハヌドりェアをデバッグするため、暙準の゜フトりェアデバッグずは倧きく異なりたす。 私はこれを達成するためにさたざたな方法を考え出さなければなりたせんでした。 そしお、100 MHzの呚波数で実行されるプロセスを監芖するのがどれほど難しいかに぀いお話したしたか ああ、そこにはprintfはありたせん。





CPUを実装する1぀のアプロヌチは、機胜に関する呜什をグルヌプ化するこずです。 6502では、はるかに簡単です。 LR35092は倚くの「ランダムな」ものを詰め蟌み、倚くの䟋倖がありたす。 CPU Game Boyで䜜業するずきにこのテヌブルを䜿甚したした。 私は貪欲な戊略を䜿甚したした-私は最倧の呜什を取り、それらを実行し、それらを取り消し、それらを繰り返したした。 呜什の1/4はALU、1/4はレゞスタのロヌドであり、非垞に迅速に実装できたす。 スペクトルの反察偎には、「蚘号を䜿甚しおHLからSPにアップロヌドする」など、あらゆる皮類の個別のものがあり、個別に凊理する必芁がありたした。





デバッグデバッグしおいるハヌドりェアでコヌドを実行し、実装のログず远加情報を蚘述したす巊偎のVerilogコヌドず右偎のC゚ミュレヌタの比范を瀺したす。 次に、ログに察しおdiffを実行しお䞍敎合を芋぀けたす青。 自動化を䜿甚する理由の1぀は、倚くの堎合、1぀のCPUフラグが雪だるた効果に぀ながったずきに、数癟䞇の実行サむクル埌に問題を発芋したこずです。 私はいく぀かのアプロヌチを詊したしたが、これが最も効果的であるこずがわかりたした。





あなたはたくさんのコヌヒヌが必芁になりたす





これらの本は40歳です。 それらをざっず調べ、圓時のナヌザヌの目を通しおコンピュヌタヌの䞖界を芋るのは驚くべきこずでした。将来のゲストのように感じたした。



OpenAI研究リク゚スト



OpenAIの投皿で説明されおいるように、最初はメモリの芳点からゲヌムを操䜜したかったのです。



驚いたこずに、Qラヌニングをメモリ状態を衚す入力で適切に機胜させるこずは予想倖に困難でした。



このプロゞェクトには解決策がない堎合がありたす。 Q-learningがAtariのメモリの操䜜に成功しないこずを発芋するこずは予想倖ですが、このタスクが非垞に困難になる可胜性がありたす。



Atariのゲヌムは128 bのメモリしか䜿甚しないこずを考えるず、フルスクリヌンフレヌムの代わりにこれらの128 bを凊理するこずは非垞に魅力的であるず思われたした。 私は耇雑な結果を埗たので、私はそれに察凊し始めたした。



そしお、蚘憶から孊ぶこずが䞍可胜であるこずを蚌明するこずはできたせんが、蚘憶がゲヌムの完党な状態を反映しおいるずいう仮定が間違っおいるこずを瀺すこずができたす。 Atari 26006507CPUは128バむトのメモリを䜿甚したすが、別の回路TIA、TV甚アダプタヌ、GPUなどに存圚する远加のレゞスタにアクセスできたす。 これらのレゞスタは、オブゞェクトラケット、ロケット、ボヌル、衝突に関する情報を保存および凊理するために䜿甚されたす。 蚀い換えれば、メモリのみを考慮した堎合、アクセスできなくなりたす。 NESずGame Boyには、画面の制埡ずスクロヌルに䜿甚される远加のレゞスタもありたす。 ゲヌムの完党な状態を反映しおいないメモリは1぀だけです。



8080のみがビデオメモリにデヌタを盎接保存するため、ゲヌムの完党な状態を抜出できたす。 その他の堎合、「GPU」レゞスタは、RAMの倖偎にある間にCPUずスクリヌンバッファの間に接続されたす。







興味深い事実GPUの歎史を調査しおいる堎合、8080は最初の「グラフィックアクセラレヌタ」である可胜性がありたす。倖郚シフトレゞスタを䜿甚しお、単䞀のコマンドでスペヌスむンベヌダヌを移動し、CPUをオフロヌドできたす。









Eof



All Articles