変わりモノがいい!

変わりモノには価値がある・・・ハズ?

コンピュータ将棋が動いた!

疲れた。

いや~難航しました。
Macbook Proに将棋所をインストールし、世界コンピュータ将棋選手権に出場したエンジンをダウンロードしMakeして登録し、対局させるところまでは、色々調べながら進めた面はあるが比較的順調にできた。
それでは、ということで、今まで作ってきたコンピュータ将棋のエンジンを将棋所に登録しようと今朝から悪戦苦闘を続けていた。 ネットで調べると同じ悩みを持っている人もいて問い合わせを投げなけているが解決できていないようにも見え、自分で解決するしかないね、ということで色々なことをやってみた。
同じ悩みを持っている人もいると思うので備忘録として記録しておきたいと思います。

f:id:ken2017:20200512123506p:plain

最初のつまずき

僕は、将棋AIで学ぶディープラーニング、という本を先生に、将来はコンピュータ将棋を自分で作れるようになりたいな、と勉強しています。 
今は本を参考に自分で変更できるところを変更しながらコンピュータ将棋に慣れることから始め、GPUを使った学習処理を行うことは訳あって中断することになりましたが、CPUを使っての学習処理は無事に終わりました。
そして上に書いたようにGUIである将棋所をインストールし、著名なUSIエンジンをダウンロードし、Makeして登録し、対局、正常動作するところまできました。

f:id:ken2017:20200512140217p:plain

ということで、次のステップとして、今までやってきたコンピュータ将棋のプログラムをUSIエンジンとして将棋所に登録して名だたるUSIエンジンと対局させようとしました。
で、大きく蹴つまずきました。
USIエンジンとして登録できない。

f:id:ken2017:20200512140332p:plain

色々調べていくと同じ悩みを持っている人がいました。

www2.ezbbs.net

teratail.com

qiita.com

結論から言えば、
将棋所のUSIエンジンとしては、実行ファイルしか登録できないところに.batファイルを
登録しようとした。
ということが間違いの原因で、その対策として、
batファイルではなくシェルスクリプトのターミナルでの実行、ができるようにする
ということを行う必要があり、そのために、
batファイルの先頭に以下の記述を追加して以降の記述がシェルスクリプトであるということを認識させる必要がありました。
#!/bin/sh
当然と言えば当然なのですが、これがなかなか判らなくて悩みました。
そしてシェルスクリプトを以下のコマンドによって実行可能ファイルに変換します。
%cd

%chmond 755 ファイルネーム.sh
この手順でやっと実行ファイルができました。

f:id:ken2017:20200512140453p:plain

上の画面のpolicy_playerというファイルが今回作ったUSIエンジンの実行ファイルです。
きちんとexec表示になっています。
これでUSIエンジンとして登録できると思ったら登録できませんでした。
でも気分は実行ファイルができたので比較的楽な感じだったのでお散歩して気分転換、としました。

散歩の効果は抜群

お散歩しながら思考を整理していくと、机について、あ〜でもない、こ〜でもない、と考え続けるよりは早くゴールにたどり着けることがあります。 今回もそうでした。
実行ファイルが動かなかった原因は僕のMacbook Proの環境にありました。
過去の記事にも書いたように、ディープラーニングでMacbook ProのGPUを使おうとして仮想環境を構築してPlaidMLやkerasをインストールしていました。 今、僕がコンピュータ将棋の開発行為をやっているのは、この環境の上でした。 従って、ただ単に実行ファイルが存在するファイルの場所を指定すれば良いだけでなく、将棋所のプログラムがUSIエンジンを起動するときにも仮想環境のアクティベートを行う必要がありました。
ということで、先ほど作成した実行ファイルに仮想環境のアクティベートとディレクトリー指定の行を追加しました。 以下が実行ファイルに記載した内容です。
#!/bin/sh
source ~/plaidml-test/bin/activate
cd Shogi-keras
cd cpu-only
python -m pydlshogi.usi.usi_policy_player 2>NUL

それでは登録!

できた!
登録できました。 ネットでの先人たちの状況を見ていると途中で諦めかけもしましたがなんとかできました。 ラッキーでした。

f:id:ken2017:20200512142905p:plain

早速、登録したUSIエンジンと昨年の世界コンピュータ将棋選手権の優勝USIエンジンであるやねうら王を対局させました。
結果は? 次回のお楽しみ、です。
言えることは、世界一は半端じゃない、ということです。

では、また。

 

 



プライバシーポリシー お問い合わせ