Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
M1 Macと将棋AIとUSI
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
mganeko
December 29, 2022
Technology
1.5k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
M1 Macと将棋AIとUSI
社内のLTイベント用のスライドです
mganeko
December 29, 2022
More Decks by mganeko
See All by mganeko
OpenAI RealTime API WebRTCモード - シグナリングとDataChannelの使い道 -
mganeko
0
330
Canvasで簡易背景ぼかしをやってみた
mganeko
0
1.1k
WebCodecsの実装状況 / Status of WebCodecs
mganeko
0
1.7k
Small Tips to use Bun with WebSocket Server and WebAssembly Modules
mganeko
0
5.4k
Build Node.js–WASM/WASI tiny compiler with Node.js
mganeko
0
780
Node.js x Chrome headless for WebRTC MCU
mganeko
1
3.4k
Extend User Experience of WebRTC with Cool Sensor Devices
mganeko
1
740
Playing with OSS WebRTC SFU meidasoup (update for v1.2)
mganeko
0
950
Build WebRTC iOS Gateway on Browser
mganeko
0
1.3k
Other Decks in Technology
See All in Technology
Benchmarking Vector Databases: pgvector vs. LanceDB
tsho
0
140
設計の世代交代を乗り越える、14年続くAndroidアプリの開発戦略
sansantech
PRO
1
120
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.6k
DMMブックスのNext.js化を加速させるAI活用 / Migrating DMM Books to Next.js with AI
kentarom
1
330
Bet AI Day 2026丨Agentは、「金融」という巨大産業の何を変えられるのか
layerx
PRO
0
770
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
0
160
Amazon S3 Tablesに全部任せてみた結果——コンパクション/スナップショット管理は本当に手放せるか
shigeruoda
0
380
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
0
240
DGX Sparkを2台使って いろいろ動かす話
sonoda_mj
1
130
ブラウザアプリの継続的パフォーマンスモニタリング (序) / Continuous Browser Application Performance Monitoring; Act 1
moznion
0
110
DINO-EdgeQuery:Edge-First Polygon Decoding for Building Footprint Extraction from Satellite Imagery
lehupa
0
140
どんな手を使っても絶対間に合わせるスケジューラ
asari194617
0
1.6k
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
580
Measuring & Analyzing Core Web Vitals
bluesmoon
9
990
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
Mobile First: as difficult as doing things right
swwweet
225
10k
The Curious Case for Waylosing
cassininazir
1
490
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Are puppies a ranking factor?
jonoalderson
2
3.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Building Applications with DynamoDB
mza
96
7.2k
Transcript
M1 Macと将棋AIとUSI えるLT Vol.28 がねこまさし / @massie_g
やりたいこと:将棋AIで形勢判断 ABEMA TVより
将棋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 連携
今回: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 連携
オマケ: 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版)
セットアップの流れ • Electron将棋をインストール ◦ ダウンロード、インストール ◦ 起動→セキュリティで許可→再度起動 • やねうら王をインストール ◦
バイナリをダウンロード、解凍、お好きなフォルダーにコピー ◦ 定跡ファイルをダウンロード、解凍、やねうら王のフォルダー にコピー ◦ ターミナルから実行→セキュリティで許可→再度実行 • Electron将棋とやねうら王を連携 ◦ バイナリのパスを指定 ◦ 定跡ファイルのフォルダと、ファイル名を指定 やねうら王 評価関数 モジュール 定跡 ファイル Electron将棋
参考: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 アイコンをダブルクリック ◦ セキュリティに引っかかるので、 [システム環境設定]-[セキュリティ]で実行を許可 ◦ 再度アイコンをダブルクリックして起動
参考: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] で止める
Electron将棋の画面
Electron将棋とやねうら王を連携 • Electron将棋の [設定] - [エンジン設定] メニュー でダイアログを表示 • 下部の[追加]ボタンをクリック
◦ 将棋AIのバイナリ(YanauraOu-by-gcc)を指定 • ダイアログに戻ったら、[設定]ボタンをクリック ◦ エンジン設定で、BookDirを指定 「book」 ◦ BookFileで定跡ファイルを指定「user_book1.db」 ◦ [OK] でダイアログに戻る • [保存して閉じる]ボタンをクリック
棋譜を解析 • 棋譜(将棋の手順)を準備 ◦ 将棋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形式
将棋GUIと将棋AIの連携:USIプロトコル やねうら王 評価関数 モジュール 定跡ファイル Electron将棋 USI(Universal Shogi Interface) プロトコル
標準入出力経由のテキスト形式
USIプロトコル • “USI(Universal Shogi Interface)”プ ロトコル ◦ http://shogidokoro.starfree.jp/usi.html • GUIとエンジン間の通信のやり取り
は、標準入出力を通してテキストのコ マンドで行われます。 • エンジンは常に(たとえ思考中であっ ても)コマンドの受信ができる必要が あります。 • エンジンがコマンドの行を送信する場 合、最後に必ず改行コード( \n) https://engineerblog.mynavi.jp/technology/shogi-ai/ より (ちょっとATコマンドっぽい?)
将棋AI同士の対戦 将棋GUI 将棋AI 将棋AI USI USI USI USIは対称なプロトコルではないので、 直接やりとりはできない USIプロトコルを使って、
AI同士を仲立ちす る • 標準入出力を使うので、同じマシン 上で動かす必要あり • ※TCP/IP経由のCSAプロトコルもあ るらしい
実際にやってみた(同じ将棋AI同士の対戦) 将棋GUI 将棋AI やねうら王 V7.0 将棋AI やねうら王 V7.0 USI 標準入出力
USI 標準入出力 Electron将棋 同一マシン(M1 Mac)
結果:千日手(同じ手順を繰り返す→引き分け)
勝敗がついたケースもあり:先手の勝ち
リモートマシン上のAIと対戦させたい 将棋AI やねうら王 V7.0 将棋AI やねうら王 V7.0 USI 標準入出力 USI
標準入出力 将棋GUI Electron将棋 メインマシン(M1 Mac) リモートマシン TCP/IP
リモートマシン上のAIと対戦: ssh で実現 将棋AI やねうら王 V7.0 将棋AI やねうら王 V7.0 USI
標準入出力 将棋GUI Electron将棋 メインマシン(M1 Mac) リモートマシン(Intel Mac) シェル スクリプト ssh (鍵接続) ssh(TCP/IP) USI 標準入出力
まとめ • 最近の将棋ソフトは、GUI部分とAI部分が分離されている • 間をつなぐインターフェイスは共通化されている ◦ USIプロトコル、(CSAプロトコル) • M1 Macでも将棋AI動いた
◦ Intel Mac, Windows 10でも同様な手順で動かせた ◦ Intel Mac版/Windows版は、CPUの世代により拡張命令が異なる ▪ それぞれに最適化されたバイナリが配布されている • USI over SSH で M1 Mac ←→ Intel Mac 対戦もできた ◦ ビバ! UNIX思想 & 標準入出力(& SSH)