地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

#05 LLMでマリオをプレイ「Large Language Mario」に挑戦。Qwen2も味見。

ColabのT4環境でコンピューティングユニットを消費しながらスーパーマリオのステージ8-3を強化学習とLLM(MobileVLM)のコンビで学習させていました。学習がさちってきた感じがしてきたので、打ち切りました。また、LLMとしてQwen2_vl(2b)を味見しました。

LLM+強化学習

bwgift.hatenadiary.jp

 

残念ながらゴールならず。

Stage 8-3

私レベルの人間様だと、ここまで行けるか自信なし。

 

コードはこちら

github.com

 

どういうスクリーンショットかは理解しているようだが、位置関係や未来予測な観点は弱い。GPT-4oを使っても大きく変わらない。状況記述学習はしていても、因果関係のデータセットを学習してないということでしょうか。

 

強化学習とmultimodel LLMのコンビは結構面白そうでした。これはワンフレーム毎の報酬設計をしてという流れですが、一連の操作動画からの報酬設計や、強化学習からの出力とLLMの出力を比較する、なんて遊びも可能ではないでしょうか。強化学習の出力に予測確度評価数値も出力できれば、強化学習の予測結果に自信がない(笑)予測にLLMからフィードバックをもらうと、さら学習効率もあがるのではないでしょうか。(素人考察)

 

Qwen2_vl(2b)単独で頑張る

Qwen2-VLはオープンソース(Apache 2.0)のmultimodal LLMです。Qwen2は賢く生成速度も速い傾向があり、評価ついでに遊んでみました。npakaさんのWebサイトページを参考にしました。

 

github.com

 

Qweb2(2b)も軽い動作が期待できそうなので、単体でどこまでできるのか試しました。

 

これは「スーパーマリオブラザーズ」のスクリーンショットです。これは1985年に発売された、任天堂が開発したアクション型のゲームソフトです。

 

スクショ画面で聞いてみます。

これはなんというゲーム?

これは「スーパーマリオブラザーズ」のスクリーンショットです。これは1985年に発売された、任天堂が開発したアクション型のゲームソフトです。

ゲームだってわかってくれています。

 

Please elaborate on Mario's situation. What should Mario do next?

Mario is currently in a game, likely playing Super Mario Bros. He is standing on a platform with a green hill and a blue cloud above him. The game is set in the World 1-1 level.
Given Mario's current position and the available options, he should:
1. **Jump** to the right to move forward.
2. **Run** to the right to continue moving forward.
3. **Jump** again to reach the next platform or obstacle.
Since there are no immediate obstacles or platforms to jump over, Mario should focus on running to the right until he reaches the next platform or obstacle.

詳しく操作手順を提示しています。英語の方が質の高い答えを返してくれそうなので、英語で聞いてみます。なかなか期待できそうです。

 

さっそくプレイさせます。

Qwen2 play Super Mario 1-1

なかなか先に進まず苦労しました。もっともうまく行った画面です。画面間引きを最小限(SKIP_RATE=1)。jump押しっぱなしで再ジャンプしなくて頓死対策プロンプトを仕込みました。が、あまりうまく行きませんでした。

 

今回は最新のスクショだけを解釈させました。しかし、Qwen2_vlは動画がいけるので、前後フレームで解釈させたりするのも良いのかもしません。状況の記述や操作手順を答えることができるので、JSONフォーマットで回答させようと試みましたが、プロンプトだけではフォーマットに沿ってもらえませんでした。パッと例示が見当たりませんでした。

 

今回使ったコードです。

github.com