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

【CodinGameオセロ】1文字に1.994バイトを埋め込むbase63483/base63481を開発した

CodinGameにおけるオセロAIの対戦は、提出するものが実行バイナリではなく、プログラムのソースコードです。提出可能なソースコードは1ファイルのみで、サイズ制限は10万文字です。なお、重要なのは、サイズ制限が10万バイトではなく、10万「文字」であると…

日本中どのJR路線でも日帰りで乗りつぶせるのか

鉄道乗りつぶしという趣味があります。自宅から遠い路線へ行く場合は泊りがけになることが普通でしょうが、「日曜日しか休みがない人がいたら、乗車不可能なJR路線はあるのか?」という疑問が生じたので調べてみました。 条件 東京駅発、東京駅着で初電~終…

【CodinGameオセロ】AlphaZero式オセロAIを自作する

2023年3月から、CodinGameというサービス上で動作するオセロAIを開発しています。目的は、AlphaZeroのアルゴリズムをスクラッチから実装する体験をすることです。AlphaZeroは、ゲーム固有の戦略に関する知識をプログラムに実装することなく、強化学習によっ…

【CodinGameオセロ】実行環境チェック

最近、CodingameというサイトでオセロAIを開発しています。自分が実装したAIのコードをサーバに送信し、サーバ上で他のユーザが開発したAIと対戦する仕組みになっています。ソースコードの長さ等、自分で用意したマシンでAIを動作させる場合には発生しない特…

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

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

Chainer v5, CuPy v5, Windows 10での環境構築

古いソフトを動作させるための環境構築。 Anacondaをインストール CUDA 10.0をインストール(より新しいバージョンが共存してもOK) 環境変数 CUDA_PATH_V10_0 がセットされる cuDNN 7.6.5 をCUDAのディレクトリにコピー ファイルパスの例: "C:\Program File…

第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…

【ポケモンバトルAI本】技術書典13 頒布予定【オンラインのみ・第4巻に追加コンテンツ】

技術書典13は2022年9月10日から9月25日まで開催される技術系同人誌の頒布イベントです。当サークル「ヤマブキ計算所」はオンラインマーケットのみ参加です。 新刊はありませんが、2020年9月に発行したポケモンバトルAI本第4巻に、約30ページの加筆を行いまし…

iPhoneでテキストを音声入力してHTTPサーバにPOSTする

WebベースのTODOアプリを試作していたのですが、ブラウザ上のフォームからキーボードで入力するだけでなく、iPhoneの音声入力を用いて手がふさがっているときでも入力を行えるようにできないか方法を考えていました。その結果、「ショートカット」というiPho…

ふかうら王で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で大量の計算が必要となる詰み探索などを付加して発展さ…

初代ポケモンの図鑑完成やってみた(23時間10分56秒)

背景 初代ポケモン(ポケットモンスター赤・緑)は3DSのバーチャルコンソールで配信されているが、間もなく配信が終了してしまう。初代ポケモンは小学生の時プレイした思い出深いソフトである一方、一度も図鑑完成したことがなかった。そこで、この機会に図…

第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以上の…

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…