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

コンピュータ将棋

iPhone 15 Proの有線LAN接続検証

世界コンピュータ将棋選手権では、対局に使うコンピュータを会場の有線LAN(Ethernet)に接続する必要があります。 普通のパソコンであれば難なくできる作業ですが、スマートフォンを有線LANに接続するのはあまり一般的な作業ではありません。 私が対局に利用…

iPhoneで将棋AI大会に出るときのヒヤリハット(電竜戦)

第4回世界将棋AI電竜戦本戦(2023年12月2日~3日)に将棋AI「ねね将棋」で出場しました。ほとんどの参加者はパソコンかクラウド計算機上で将棋AIを動作させる中、ねね将棋はiPhone上で動作させるというユニークなソフトです。 ソフトの概要や電竜戦参加の記録…

第4回世界将棋AI電竜戦本戦の結果(2023/12/02)

NPO法人AI電竜戦プロジェクト主催 第4回世界将棋AI電竜戦本戦 に将棋AI「ねね将棋」で参加しました。電竜戦は、オンラインのコンピュータ将棋AIの大会です。 将棋AIは通常パソコンやクラウド計算機上で動作させますが、ねね将棋は携帯端末上で動作する点がユ…

iPhone15Proの冷却とNeural Engineの速度について

Neural EngineによるDNNの推論を連続して行った際に、発熱などの影響により時間が経つにつれ処理速度が低下する現象がみられます。将棋AIの大会にiPhone 15 Proで出場することを想定し、iPhone 15 Proで使えるスマートフォン用冷却ファンを購入したので、冷…

iPhone15ProでNeural Engineのベンチマーク(将棋用CNNモデル)

2023年9月22日、iPhone 15 Proが発売されました。新しい計算機を手に入れたらやることと言えばニューラルネットワークのベンチマークですよね。Apple独自開発の機械学習専用チップNeural Engineのベンチマークを行いました。使用した深層学習モデルはdlshogi…

第4回電竜戦TSEC指定局面戦の結果(2023/06/30)

NPO法人AI電竜戦プロジェクト主催 第4回電竜戦TSEC指定局面戦 に将棋AI「ねね将棋」で参加しました。この大会の特徴は、通常の初形からの対局開始ではなく、主催者が指定した局面から対局が開始するという点です。コンピュータ将棋ではあまり登場しない相振…

【コンピュータ将棋】賞金をいただきました

2023年5月3日に行われた世界コンピュータ将棋選手権にて、私のソフト「ねね将棋」が賞金を頂きました。 ねね将棋は部門「TMOQ(特大もっきゅ)様 提供 :ノートPC単体やタブレット単体での参加者の中で最上位者(TMOQ(特大もっきゅ)様本人を除く)」に該当し、賞…

第33回世界コンピュータ将棋選手権の結果(2023/05/03)

2023年5月3日~5日にかけて開催された第33回世界コンピュータ将棋選手権に参加ソフト「ねね将棋」で参加しました。 今回のねね将棋はiPad上でNNUE型(計算コストの低い評価関数で大量の局面を読む)とDL型(計算コストの高い評価関数で少量の局面を読む)の…

iPadでやねうら王とふかうら王を同時に動作させる 標準入出力衝突回避編

やねうら王・ふかうら王を1つのプロセスで動作させるための課題として、前回はシンボル名の衝突に対処しました。今回は、標準入出力の衝突に対処します。 以前、やねうら王単独のビルドにおいてC++の標準入出力(cin/cout)をTCPソケットにリダイレクトし、端…

iPadでやねうら王とふかうら王を同時に動作させる シンボル名衝突回避編

以前、iPadでやねうら王やふかうら王を動作させるためのビルド手段を構築しました。今回は、これらを同時に動作させることに挑戦します。やねうら王(NNUE評価関数)は主にCPUを利用し、ふかうら王(DL評価関数)は主にNeural Engineを利用して思考するため、同…

将棋AIの評価値を勝率に変換する係数を求める

将棋AIで、NNUE系とDL系ソフトを合議させることに挑戦しています。同じ局面を複数のソフトに思考させた結果を統合した合議結果を計算するアルゴリズムとして、楽観合議が知られています。この手法では、各ソフトが最善手とその評価値を出力し、その中で評価…

第3回世界将棋AI電竜戦本戦の結果(2022/12/03)

2022年12月3日(土)~4日(日)に開催されたコンピュータ将棋ソフトの大会「第3回世界将棋AI電竜戦本戦」に参加しました。ソフト名は従来通り「ねね将棋」です。 ソフトの内容は、ふかうら王(やねうら王のMCTS+DNNバージョン、つまりDL系将棋ソフト)をiPadに移…

floodgateでの対局結果【やねうら王・ふかうら王iOS移植】

やねうら王・ふかうら王のiOS移植ができたので、floodgateで対局させました。 ソフトウェア設定 やねうら王 ベースはやねうら王@599378d420fa9a8cdae9b1b816615313d41ccf6e (ほぼV7.63) https://github.com/select766/YaneuraOuiOS/commit/29488cedcf87d6c35…

C++の標準入出力をTCPで送受信【やねうら王・ふかうら王iOS移植】

やねうら王はGUI(将棋所など)と標準入出力で通信する仕組みになっていますが、iOSでは標準入出力で他のプロセスと通信することができません。floodgate等で通信対局するためには、端末外と通信する必要があります。ここでは、iOSアプリの標準入出力を直接TCP…

やねうら王をSPMパッケージにする【やねうら王・ふかうら王iOS移植】

やねうら王・ふかうら王をiOSで動くようにする移植に成功したのでポイントを解説します。ただしMacの将棋所と連携しないと動かない研究用のものとなります。 動機およびC++ファイル1個の簡単な将棋エンジンshogi686microを移植した前回の記事はこちら。 sele…

ふかうら王でMacのCoreMLを使う(成功)

ふかうら王(やねうら王のMCTS+DNNバージョン、つまりDL系将棋AI)でMacのGPU, Neural Engineを使うことでMac上で高速動作できるようにしました。 2022年6月13日にやねうら王本家にマージされました。 動かし方 YaneuraOu-v7.6.3-macos.tar.xz を以下のペー…

dlshogiモデルをMacのCore MLで動かしてベンチマーク

前回実装した、Objective-Cを用いてCore MLを呼び出すコードを用いて、dlshogiモデルの動作速度をベンチマークしました。 使用するモデルは、「強い将棋ソフトの創りかた」サンプルコードに従い学習した、15ブロック224チャンネル(resnet15x224_swish)のモデ…

dlshogiモデルをMacのCore MLで動かす

Macで高速にdlshogiモデルを動作させる話題の続きです。前回は、ONNX Runtimeを介してCore MLを呼び出してみましたが、ONNX Runtime単体(CPUのみの利用)と比べ高速化しなかったという結果でした。今回は、ONNX Runtimeを使わず直接Core MLを呼び出してみます…

ふかうら王でMacのCoreMLを使う(失敗)

ふかうら王(やねうら王のMCTS+DNNバージョン)でMacのGPU, Neural Engineを使うことでMac上で高速動作できるか検証しました。しかし、今回のやり方ではうまくいきませんでした。 現象: onnxruntime上でCoreMLを利用する設定をしたが、onnxruntimeデフォルト…

C++製将棋AI(shogi686micro)をiPadで動かす

これまでiPad上で動く将棋AIをSwift言語で作ってきて、一応動くというところまで行きました。 select766.hatenablog.com DNNの評価がボトルネックだったのでSwiftで書いても問題なかったのですが、CPUで大量の計算が必要となる詰み探索などを付加して発展さ…

第32回世界コンピュータ将棋選手権の結果(2022/05/04)

2022年5月3日~5日にかけて開催された第32回世界コンピュータ将棋選手権に参加ソフト「ねね将棋」で参加しました。 今回のねね将棋は昨年12月から作り始めた、iPad上で動作する新しいソフトです。しかしながら昨年はdlshogiを改造してPC上で動かしたものを「…

iPadのNeural Engineで将棋AI part13 細かい話

他の記事で書きそびれた細かいテクニック等をまとめておきます。 CSAプロトコルでの対局テスト shogi-server shogi-server をサーバとして使います。 ruby 2.7.5をインストールする必要がありますが、それ以外は最新のMacで問題ありませんでした。 対戦相手…

iPadのNeural Engineで将棋AI part12 読み筋表示

独自のGUIを開発するため、レイアウトに自由度があります。ただ1行の読み筋を出すのではなく、複数の読み筋やその評価値を表示して、より面白い表示を試みました。 読み筋表示 動画だとこんな感じで動きます。 iPad用将棋AI、どうにか完成。 pic.twitter.com…

iPadのNeural Engineで将棋AI part11 画面表示の要件

将棋所なしのiPad単独で対局ができるようにするため、CSAプロトコルの実装に引き続き独自のGUIによる局面表示を実装します。 実は大会ルールで画面表示に関する要件が定められており、これに準拠した設計を行う必要があります。 第32回世界コンピュータ将棋…

iPadのNeural Engineで将棋AI part10 CSAプロトコルに対応する

前回まででiPadで動作する将棋エンジンのコアはできましたが、USIプロトコルでMac上で動作している将棋所と通信する仕様となっており、iPad単独では世界コンピュータ将棋選手権やfloodgateでの対局がまだできませんでした。選手権等での対局にはCSAプロトコ…

iPadのNeural Engineで将棋AI part09 Swiftで将棋エンジンを書く

前回記事から1.5か月空いてしまいましたが地道に対局エンジンのコア部分を開発していました。本記事までの実装をして、選手権の練習を1つの目的として開催された「電竜戦さくらリーグ2022」に参加し、B級で18チーム中7位(ソフト名 ねね将棋)となりました。 S…

iPadのNeural Engineで将棋AI part08 将棋所MacをTCP通信に対応させる

将来的にはiPad単独でCSAプロトコルを用いて対局サーバに接続することを目指しますが、局面を表示するUIを作る必要があり道のりが長いです。 まずは、Macで動作する将棋エンジン用UIである将棋所Macに通信を仲介してもらうことにします。 将棋所は将棋エンジ…

iPadのNeural Engineで将棋AI part07 iPadの冷却は必要か

前回までで、Core MLによる評価関数モデルの実行ができました。ただしボタンをタップした時に1回だけ実行するというものでした。対局では約1時間にわたり連続稼働する必要がありますので、連続稼働で問題がないかを確認しました。具体的には、発熱によって…

iPadのNeural Engineで将棋AI part06 Core MLでバッチサイズ固定モデル

前回は、実行時にバッチサイズを動的に指定できるモデルを作成し実行しました。今回は、バッチサイズを固定したモデルを作成し、より高いパフォーマンスを発揮するかどうか検証します。どんなバッチサイズでも受け入れるモデルよりも、バッチサイズ16しか受…

iPadのNeural Engineで将棋AI part05 Core MLでバッチサイズ可変モデル

前回は、バッチサイズ1の入力のみを受け付けるCore MLモデルを生成し、実行できることを確認しました。 DNNの実行効率(1サンプル当たりの所要時間)は一般的にバッチサイズが大きいほど向上します。 そのため、DNNを効率よく実行するにはバッチサイズ2以上の…