Upgrade to Pro — share decks privately, control downloads, hide ads and more …

M1 Macと将棋AIとUSI

mganeko
December 29, 2022

M1 Macと将棋AIとUSI

社内のLTイベント用のスライドです

mganeko

December 29, 2022
Tweet

More Decks by mganeko

Other Decks in Technology

Transcript

  1. 将棋GUIアプリ と 将棋AIソフト ShogiGUI (Win) http://shogigui.siganus.com/ 将棋丸 - ブラウザ将棋 (Chrome)

    https://shogimaru.com/ Electron将棋 Electron(Win/Mac) https://sunfish-shogi.github.io/electron-shogi/ 将棋GUI やねうら王 https://github.com/yaneurao/Ya neuraOu 水匠5 https://drive.google.com/drive/folders/19Al6 9YMkJ_cXSBhtn8df9yfxhn8QFCYo 将棋所(Win/Mac) http://shogidokoro.starfree.jp/ dlshogi https://github.com/TadaoYamaoka/Dee pLearningShogi 将棋AI 連携
  2. 今回:Electron将棋 + やねうら王 ShogiGUI (Win) http://shogigui.siganus.com/ 将棋丸 - ブラウザ将棋 (Chrome)

    https://shogimaru.com/ Electron将棋 Electron(Win/Mac) https://sunfish-shogi.github.io/electron-shogi/ 将棋GUI やねうら王 https://github.com/yaneurao/Ya neuraOu 水匠5 https://drive.google.com/drive/folders/19Al6 9YMkJ_cXSBhtn8df9yfxhn8QFCYo 将棋所(Win/Mac) http://shogidokoro.starfree.jp/ dlshogi https://github.com/TadaoYamaoka/Dee pLearningShogi 将棋AI 連携
  3. オマケ: Electronとは • https://www.electronjs.org/ja/docs/latest • Electron は、JavaScript、HTML、CSS によるデスクトップアプリケーションを構築 するフレームワーク ◦

    Electron は Chromium (ChromeのOSS版) と Node.js をバイナリに組み込んでいる ◦ 単一の JavaScript コードベースを維持しつつ、ネイテイブ開発できる ◦ Windows、macOS、Linux で動作するクロスプラットフォームアプリを作成できる • 旧 Atom Shell ◦ GitHubが開発、管理 • 主なアプリケーション ◦ VS Code ◦ Slack (Desktop版) ◦ Discord (Desktop版)
  4. セットアップの流れ • Electron将棋をインストール ◦ ダウンロード、インストール ◦ 起動→セキュリティで許可→再度起動 • やねうら王をインストール ◦

    バイナリをダウンロード、解凍、お好きなフォルダーにコピー ◦ 定跡ファイルをダウンロード、解凍、やねうら王のフォルダー にコピー ◦ ターミナルから実行→セキュリティで許可→再度実行 • Electron将棋とやねうら王を連携 ◦ バイナリのパスを指定 ◦ 定跡ファイルのフォルダと、ファイル名を指定 やねうら王 評価関数 モジュール 定跡 ファイル Electron将棋
  5. 参考:M1 MacにElectron将棋をインストール(将棋GUI) • 使い方 ◦ https://github.com/sunfish-shogi/electron-shogi/wiki/%E4%BD%BF%E3%81%84%E6%96%B9 • Electron将棋 のサイトからバイナリをダウンロード ◦

    サイト https://sunfish-shogi.github.io/electron-shogi/ ◦ 安定版バイナリ https://github.com/sunfish-shogi/electron-shogi/releases/tag/v1.2.1 ▪ release-v1.2.1-mac.zip をダウンロード(2022.12現在) • インストール ◦ zip を解凍し、.dmg をダブルクリック (ElectronShogi-1.2.1.dmg 022.12現在) ◦ ElectronShogi.app をApplicationsフォルダー( or 適切なフォルダー)ドロップ • 起動 ◦ ElectronShogi.app アイコンをダブルクリック ◦ セキュリティに引っかかるので、 [システム環境設定]-[セキュリティ]で実行を許可 ◦ 再度アイコンをダブルクリックして起動
  6. 参考:M1 Macにやねうら王をインストール(将棋AI) • やねうら王 のサイト https://github.com/yaneurao/YaneuraOu/releases ◦ M1 Mac版のビルド済みバイナリは無し ◦

    参考:M1 Macbook Air でやねうら王を動かしてみた ▪ https://shogi.zukeran.org/2022/01/24/yaneuraoh-on-m1-macbook-air/ • M1 mac 用バイナリのインストール ◦ Mac用のKristallweizenバイナリ(2021年クリスマス版)※ちょっと古い ◦ https://github.com/bleu48/YaneuraOu/releases/tag/v7.00 ▪ Kristallweizen_M1Mac.zip をダウンロード ◦ 解凍してできたフォルダー (Kristallweizen_M1Mac)を、適切な場所にコピー • 定石ファイルを準備 ◦ 100テラショック定跡 ▪ https://github.com/yaneurao/YaneuraOu/releases/tag/BOOK-100T-Shock ▪ 100T-shock-book.zip をダウンロード、解凍 ◦ やねうら王のフォルダーの配下に booksフォルダーを作成 ◦ booksフォルダーに、解凍した 定跡ファイル(user_book1.db)をコピー • やねうら王を起動 ◦ ターミナルからバイナリ( YanauraOu-by-gcc) を起動 ▪ セキュリティに引っかかるので、 [システム環境設定]-[セキュリティ]で実行を許可 ◦ 再度ターミナルから起動 ▪ isready + [ENTER] と入力 → info〜と表示され、最後に "readyok" と表示されればOK ▪ quit + [ENTER] で止める
  7. Electron将棋とやねうら王を連携 • Electron将棋の [設定] - [エンジン設定] メニュー でダイアログを表示 • 下部の[追加]ボタンをクリック

    ◦ 将棋AIのバイナリ(YanauraOu-by-gcc)を指定 • ダイアログに戻ったら、[設定]ボタンをクリック ◦ エンジン設定で、BookDirを指定 「book」 ◦ BookFileで定跡ファイルを指定「user_book1.db」 ◦ [OK] でダイアログに戻る • [保存して閉じる]ボタンをクリック
  8. 棋譜を解析 • 棋譜(将棋の手順)を準備 ◦ 将棋DB2からKIF形式を コピー ◦ https://shogidb2.com • Electron将棋に取り込む

    ◦ [編集]-[棋譜・局面貼り 付け] • [解析]ボタンで解析スタート ◦ 評価値や期待勝率を切 り替えられる 手数----指手---------消費時間-- 1 2六歩(27) (00:00/00:00:00) 2 8四歩(83) (00:00/00:00:00) 3 2五歩(26) (00:00/00:00:00) 4 8五歩(84) (00:00/00:00:00) 5 7六歩(77) (00:00/00:00:00) 6 3二金(41) (00:00/00:00:00) 7 7七角(88) (00:00/00:00:00) 8 3四歩(33) (00:00/00:00:00) KIF形式
  9. USIプロトコル • “USI(Universal Shogi Interface)”プ ロトコル ◦ http://shogidokoro.starfree.jp/usi.html • GUIとエンジン間の通信のやり取り

    は、標準入出力を通してテキストのコ マンドで行われます。 • エンジンは常に(たとえ思考中であっ ても)コマンドの受信ができる必要が あります。 • エンジンがコマンドの行を送信する場 合、最後に必ず改行コード( \n) https://engineerblog.mynavi.jp/technology/shogi-ai/ より (ちょっとATコマンドっぽい?)
  10. 将棋AI同士の対戦 将棋GUI 将棋AI 将棋AI USI USI USI USIは対称なプロトコルではないので、 直接やりとりはできない USIプロトコルを使って、

    AI同士を仲立ちす る • 標準入出力を使うので、同じマシン 上で動かす必要あり • ※TCP/IP経由のCSAプロトコルもあ るらしい
  11. リモートマシン上のAIと対戦させたい 将棋AI やねうら王 V7.0 将棋AI やねうら王 V7.0 USI 標準入出力 USI

    標準入出力 将棋GUI Electron将棋 メインマシン(M1 Mac) リモートマシン TCP/IP
  12. リモートマシン上のAIと対戦: ssh で実現 将棋AI やねうら王 V7.0 将棋AI やねうら王 V7.0 USI

    標準入出力 将棋GUI Electron将棋 メインマシン(M1 Mac) リモートマシン(Intel Mac) シェル スクリプト ssh (鍵接続) ssh(TCP/IP) USI 標準入出力
  13. まとめ • 最近の将棋ソフトは、GUI部分とAI部分が分離されている • 間をつなぐインターフェイスは共通化されている ◦ USIプロトコル、(CSAプロトコル) • M1 Macでも将棋AI動いた

    ◦ Intel Mac, Windows 10でも同様な手順で動かせた ◦ Intel Mac版/Windows版は、CPUの世代により拡張命令が異なる ▪ それぞれに最適化されたバイナリが配布されている • USI over SSH で M1 Mac ←→ Intel Mac 対戦もできた ◦ ビバ! UNIX思想 & 標準入出力(& SSH)