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

コンピュータ将棋

iPadのNeural Engineで将棋AI part04 Core MLでdlshogiの評価関数を動かす

iPad上でCore MLを用いてバッチサイズ1でモデルを動作させ、計算結果があっているかどうかの確認までを行います。 検証用データの生成 DNNではモデルがエラーなく動作したように見えても、入力データの与え方が間違っていたり、変換ツールのバグを引いたりし…

iPadのNeural Engineで将棋AI part03 dlshogiの評価関数をCore ML形式に変換

iPad上でdlshogiの評価関数であるDNNモデルを動作させるには、Appleが提供しているCore ML APIを使用します。 本記事では、モデルをAppleの開発環境へ取り込むための変換作業を解説します。 モデルの変換 dlshogiのモデルはPyTorch形式のため、これをCore ML…

iPadのNeural Engineで将棋AI part02 iPadを有線LANに接続

WCSCでは、対局サーバと将棋AIが入ったパソコンの間を有線LAN (Ethernet)で接続する必要があります。iPadを有線LANに接続する手段を検証しました。 ※本記事は将棋AIの話題はなく、WCSC特有の課題への対応手段を説明します。 接続対象の環境 WCSCの有線LAN環…

iPadのNeural Engineで将棋AI part01 構想

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

第31回世界コンピュータ将棋選手権の参加記録(ねね将棋)

ねね将棋は2021年5月3日~5日にかけてオンラインで行われた第31回世界コンピュータ将棋選手権(コンピュータ将棋協会主催)に参加しました。 対局に付き合ってくださった方、運営の方、応援してくださった方に感謝申し上げます。 簡単に参加記録を残しておきま…

世界コンピュータ将棋選手権(第31回)のねね将棋の手法リンク

世界コンピュータ将棋選手権に関連してこのサイトへ来られた方のために、今回(第31回=2021年5月)に用いた手法へのリンクを掲載します。 select766.hatenablog.com select766.hatenablog.com select766.hatenablog.com select766.hatenablog.com select766…

DNNの方策に従来型エンジンのbestmoveをブレンドする コードの動かし方【コンピュータ将棋】

今回の研究用に開発したコードの動かし方と、改良のアイデアを掲載します。私が所持していない、より強力なハードウェアで検証・強化したいという方がもしいらっしゃれば参考にしてください。 記事一覧 DNNの方策に従来型エンジンのbestmoveをブレンドする【…

DNNの方策に従来型エンジンのbestmoveをブレンドする 実装編 part03(終)【コンピュータ将棋】

前回、dlshogiの方策関数にelmoの読み筋をブレンドする実験の結果を示しました。dlshogi同士でこの改造の有無を比較すると改造したほうが強くなるのですが、対戦相手としてelmo単体(dlshogiから呼び出すのではなく、elmoを普通に対局エンジンとして使用する…

DNNの方策に従来型エンジンのbestmoveをブレンドする 実装編 part02【コンピュータ将棋】

前回、dlshogiのDNN評価と同時にelmoを呼び出し、bestmoveを取得して利用する最低限の実装をしました。その結果、無改造のdlshogiだと2500nps程度出るところ1900nps程度まで下がるという結果でした。今回はこのnps低下の原因究明と改善を行い、無改造のdlsho…

DNNの方策に従来型エンジンのbestmoveをブレンドする 実装編 part01【コンピュータ将棋】

ブレンドのアイデアを実際の対局エンジンに実装して評価を進めていきます。 dlshogiを改造して実装することにしました。昨日時点の最新版dlshogi cc722f5b2362b0364af063f008a5d922aa8c266eから分岐したこちらのブランチに実装していきます。 GitHub - selec…

DNNの読み抜け例を観察する【コンピュータ将棋】

前回、DNNの方策に従来型エンジンのbestmoveをブレンドすれば読み抜けが減らせるのではないかというアイデアを示しました。 select766.hatenablog.com このアイデアが成立する条件として、DNNで1局面を評価するのと同程度の時間従来型エンジンに手を読ませた…

DNNの方策に従来型エンジンのbestmoveをブレンドする【コンピュータ将棋】

第31回世界コンピュータ将棋選手権の参加申込が始まり、私も久々にコンピュータ将棋の研究を再開しました。 評価関数としてDNNを使い、MCTSで探索を行う将棋AIの弱点として、読みぬけの問題があります。ここで読みぬけとは、DNNが出力した方策で、ほぼ確率0…

AWSスポットインスタンスの起動高速化【コンピュータ将棋】

先日の世界コンピュータ将棋オンライン大会では、ねね将棋はAWSのスポットインスタンス上で将棋エンジンを動作させていました。スポットインスタンスはAWS上の余剰計算資源を安価に貸し出すような形態で、余剰が少なくなると強制的に終了されてしまう仮想マ…

TensorRTのバッチサイズチューニング【コンピュータ将棋】

前回の記事ではNVIDIA GPU上でDNNモデルを高速実行できるライブラリであるTensorRTの使い方について紹介しました。 select766.hatenablog.com その中で、最適化プロファイルの設定というチューニング項目の効果について紹介します。 TensorRTはモデルとGPUの…

USIプロトコルのコンピュータ将棋エンジンのフェイルオーバーツール【コンピュータ将棋】

コンピュータ将棋エンジンの強さを最大化するにはAWS等のクラウド上の強力なマシンの利用が不可欠ですが、大会で本番対局中に回線が切れるという可能性があります。また普段より性能の高いマシンで十分に動作テストが行えず、クラッシュするリスクもあります…

TensorRTを用いて将棋AI向けDeep Neural Networkの推論を高速化する【コンピュータ将棋】

TensorRTは、NVIDIA社が提供している、Deep Neural Networkの推論を高速に行うライブラリです。NVIDIA社のGPU上での推論(学習済みモデルの実行)に特化しており、CaffeやPyTorchで学習したモデルを読み込んで実行計画を最適化したうえで推論してくれます。も…

第29回世界コンピュータ将棋選手権振り返り【コンピュータ将棋】

私が開発しているコンピュータ将棋AIの「ねね将棋」は2019年5月3日開催の第29回世界コンピュータ将棋選手権に参加しました。 ソースコード・バイナリをこちらで公開しました。 github.com 大会直前と本番をちょっとだけ振り返ります。 数週間前の準備 AWS(ク…

MCTSでの時間管理【コンピュータ将棋】

ねね将棋では探索アルゴリズムとしてMCTSを採用しているのですが、今まで1手あたりの思考時間は一定でした。 その結果として、飛車先の歩を交換するタイミングなど、有効な手が1つしかない場合でも10秒以上思考してしまって見栄えが悪いです。 明らかな手が…

CNNの複雑さとnpsと棋力【コンピュータ将棋】

CNN (Deep Learning)ベースの評価関数を使った将棋AIをチューニングするにあたり、難しい点の1つが評価関数の複雑さ(計算量)の調整です。 層やチャンネルの数を増やせば静的評価の精度は上がるものの、計算時間が増加するため探索に組み込んだ時の評価局面…

第29回世界コンピュータ将棋選手権 参加登録しました【コンピュータ将棋】

2019年5月3日開催の第29回世界コンピュータ将棋選手権の暫定チーム一覧が出ています。(1/11時点、シードチームは非表示?) 第29回世界コンピュータ将棋選手権 参加チーム 私が開発している「ねね将棋」も出場登録しました。忘れないようにと最低限の事項を…

GPU1枚でのfloodgate対局と学習の両立【コンピュータ将棋】

12月24日、来年の世界コンピュータ将棋選手権(WCSC29)の募集が開始されました。 ねね将棋もこの大会に向けて徐々にですが改良を続けています。 ねね将棋はDeep Learningベースの評価関数を用いており、その学習にも対局エンジンの探索部からの評価もGPUを必…

世界コンピュータ将棋選手権でのAWSクラウド利用法(WCSC28)

世界コンピュータ将棋選手権では、コンピュータのハードウェアに関する制限がなく、開発者が用意したコンピュータを利用して対局を行います。 最近ではAmazon Web Services (AWS)をはじめとしたクラウドを利用することが多くなっています。買えば数百万円す…

第28回世界コンピュータ将棋選手権に参加しました

2018年5月3日~5日にかけて行われた、第28回世界コンピュータ将棋選手権(WCSC28)に参加しました。 大会中の記録です。技術情報はまた別の記事で書きます。 結果を述べると、1次予選で5勝3敗(1不戦勝含む)で15位となり、2次予選には進めませんでした。 大会…

ねね将棋(WCSC28)のソースコード公開

第28回世界コンピュータ将棋選手権(WCSC28)関係者の皆様、お疲れさまでした。 私は将棋ソフト「ねね将棋」を参加させました。大会の模様は別途記事を書きたいと考えていますが、取り急ぎ、ソースコードを公開いたしました。 やねうら王ライブラリを使用しつ…

ねね将棋miniを開発しました

第28回世界コンピュータ将棋選手権まで1か月を切りました。開発者の皆様いかがお過ごしでしょうか。 開発がうまくいかないので現実逃避として、将棋におけるディープラーニング評価関数の雰囲気を知ってもらうため、「ねね将棋mini」というアプリを開発しま…

第5回将棋電王トーナメント総括(本番編)

2017年11月11日から12日にかけて、ドワンゴ・日本将棋連盟主催の「第5回将棋電王トーナメント」に「ねね将棋」というソフトで出場しました。この記事では、東京・六本木の「ニコファーレ」で行われた本番の感想などを述べます。 ソフト開発に関しては、以前…

第5回将棋電王トーナメント総括(開発編)

2017年11月11日から12日にかけて、ドワンゴ・日本将棋連盟主催の「第5回将棋電王トーナメント」に「ねね将棋」というソフトで出場しました。この記事では、ソフト開発の軌跡や本番の感想などを述べます。 開発を始めた経緯 もともと私が将棋ソフト開発に興味…