機械学習周りのプログラミング中心。 イベント情報
ポケモンバトルAI本電子書籍通販中

iPadのNeural Engineで将棋AI part01 構想

最近のiPhoneiPadには、Neural Engineという機械学習専用のコアが搭載されています。 これを使ったら、モバイル端末でどの程度強いディープラーニングベースの将棋AIが作れるのか検証してみたくなりました。

というわけで、まだアイデア段階なのですが連載していきたいと思います。私はいつも実験結果をためて長大な記事を書きがちなのですが、短くして速報性を上げたいと思っています。メモ書きみたいな記事も出るかもしれませんがご了承ください。

目標

2022年5月3日の、世界コンピュータ将棋選手権に、iPadで動作する将棋AIで出場すること。特に、ディープラーニングベースの評価関数をできるだけ高速に動作させる手段を検討し、現代のモバイル端末上で実現可能な棋力を検証すること。

実装手段など

  • ハードウェア
    • iPad 第9世代
    • 64ビットアーキテクチャ搭載A13 Bionicチップ・Neural Engine
    • iPadOS 15
    • 冷却手段も考慮がいるかもしれません。
    • 2021年12月に、お絵かき用に買ったものを転用します。
  • 開発言語
    • Swift
    • 標準ライブラリ以外原則使わず、スクラッチで書きます。
    • 強さを愚直に求めるならC++で書かれたdlshogiをどうにかしてiPad向けにビルドする手段を探るべきかと思います。しかし私はApple系開発環境の初心者なので、中身を理解していないC++コードを含んだアプリをビルド・デバッグするのに困難が予想されること、今まで将棋AI開発でほぼ使われていないであろうSwiftでどうやったら将棋AIを書けるかということに興味があることから、Swiftでの開発を目指します。
    • 一応Swiftでの合法手生成ライブラリはあります(jiro/SwiftShogi)が、中身を見ないで自分で考えてみます。
  • 思考部
    • MCTSベースのシンプルなものを書きます。
  • 通信部
    • ソフト以前に、選手権で使う有線LANにiPadを接続する手段がいるので、今後準備します。
    • 選手権ではCSAプロトコルが使われるので、iPad単体で参戦するには(将棋所がないので)CSAプロトコルを自前で喋れる必要があります。CSAプロトコルの通信は書いたことがないので手間がかかりそうです。
    • 開発初期段階では、UIがないというのもありMacの将棋所に仲介してもらってUSIプロトコルを喋るものを作ろうかと思っています。
  • UI
    • iPad単体で参戦するには、ルール上局面表示や相手の指し手の手入力ができるUIが必要です。思考部が確立したら頑張って作ります。

新規性

  • モバイル向けOS(iPadOS/iOS/Android)での世界コンピュータ将棋選手権への出場は史上初(過去の参加者リストで確認)。
    • Swift言語も同様に史上初。
    • WindowsタブレットはWCSC26(2016年)の「HoneyWaffle」で前例あり。
    • 電竜戦では、第2回世界将棋AI電竜戦本戦にて「チームシャイニー」でAndroidスマホの使用例あり。人間との合議。アピール文書がなく、言語、機種は不明。
    • 大会を除けば、App StoreでCPU戦が可能な将棋アプリが複数配布されているため、Swift製の将棋ソフト自体は存在すると思われます。深層学習の使用有無については判断できません。
  • NVIDIA以外のGPU使用も多分史上初。

評価関数

書籍「強い将棋ソフトの創りかた」のサンプルコードとして提供されているモデルを用います。正確には、提供された棋譜と学習プログラムを、私が契約したGoogle Colab Pro上で実行してモデルを得ました。著者の山岡さんに確認しましたが、このようにして得たモデルは自由に使用していいそうです。

モデルファイルmodel_resnet10_swish-072のSHA1SUM

  • サンプルとして配布されているファイル: 74cba7cb7f29937498cebeee06a87da21d51346c
  • 自前の追実験で得たモデル: 5cf25d7687006974967d62800e838cc8c99b6e65

次は、評価関数をiPad上で動作させるところから進めようと思います。