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

【ポケモンバトル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…

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

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

【単発DeepLearning本】技術書典12 頒布中

技術書典12は2022年1月22日から30日まで開催される技術系同人誌の頒布イベントです。新型コロナウイルスの影響によりオンライン開催ですので、お祭り感のある通販のようなものとお考え下さい。 当サークル「ヤマブキ計算所」は技術書典12に出展します。新刊…

iPadのNeural Engineで将棋AI part01 構想

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

Deep Learning Code Golfやってみた part03 Tensorflowへの移植

前回(PyTorch)で終わりのつもりだったのですがちょっとだけ続編です。 PyTorchと並び著名な深層学習フレームワークとして、Tensorflowがあります。私はPyTorchを使うことがほとんどですが、TensorflowでもDLCGを行うとどんな違いがあるか検証しました。 結…

Deep Learning Code Golfやってみた part02 コード解説

前回の続きです。本稿では、私が実際にDLCGに取り組んで記述したコードと、そこで用いたテクニックを解説します。 ベースライン まずはコードを短くするテクニックを用いる前の、最も基本となるコードを示します。 from torch.nn import * def m(): return S…

Deep Learning Code Golfやってみた part01 イントロダクション

Deep Learning Code Golfとは Deep Learning Code Golfは、私(select766)が作成した言葉で、「深層学習のモデル定義をできるだけ短いソースコードで表現する」というゲームです。 このゲームを考えたきっかけは、深層学習の新しいモデル構造ConvMixerを提案…

ゲーム木探索入門 part05 交互手番MCTSの実装【PokéAI】

前回は原始モンテカルロ法というもっとも単純な探索手法を試しました。原始モンテカルロ法では、ルート局面(行動を決定したい局面)でとれる行動それぞれについて、その行動をとった直後の局面からランダムにゲームを進めた際の勝率を比較して行動を決定し…

ゲーム木探索入門 part04 原始モンテカルロ法【PokéAI】

ゲーム木探索を用いたポケモンバトルAIの最も単純なアルゴリズムとして、原始モンテカルロ法を試します。 前回から長らく期間が空いてしまいましたが、再開していきます。 アルゴリズム ここでは原始モンテカルロ法(pure Monte Carlo search)を試します。 原…

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

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

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

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