読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

囲碁AIアプリの作り方4

追記(2019/02/19) 猛烈に勘違いしていました。 AlphaZeroは、バリューネットワークの出力には[-1,1]レンジを使っていますが、MCTSでは[0,1]レンジだそうです。 talkchess.com 今までのいくつかの謎が氷解しました。 これに合わせてコードのコメントとオリジ…

囲碁AIアプリの作り方4

今日は碁盤描画周りです。間口の一番広いウェブアプリを対象にします。 JavaScriptの碁盤描画のライブラリをまずご紹介します。 eidogo: HTML5以前では事実上のデファクトスタンダードだったオープンソースのウェブアプリです。DOMで描画します。耳赤サイト…

囲碁AIアプリの作り方3

今日はちょっと変わったところで、SGFファイルを扱う方法です。SGFというのは、様々なプラットフォーム上で販売されているSmartGoというアプリケーションのファイルフォーマットです。Smart Game Formatの略で、囲碁以外のボードゲームにも対応可能なフォー…

囲碁AIアプリの作り方2

今日はニューラルネットワーク周りのご紹介です。 前回同様、技術的な話ではないです。どういう材料が利用可能かご紹介します。AlphaGo Zeroは、MCTS、ニューラルネットワーク、強化学習という組み合わせで、0から人類を遥かに超えて学習するAIです。 「莫大…

囲碁AIアプリの作り方1

1日遅れですが、一人アドベントカレンダーを始めます。 (ご協力いただける方、お声がけください) 題して「囲碁AIアプリの作り方」です。 念のため、「囲碁AIの作り方」ではありません。囲碁AI自体を作りたい方はAlphaGo論文などを読んで頑張ってください。 …

AWS LambdaでGnuGo

[追記 2018-11-27] デフォルトの設定では中盤でのGnuGoのestimateがAmazon API Gatewayのタイムアウトである29秒以内に完了しなかったです。AWS Lambdaはメモリを増やすとCPUパワーも増える仕様なので、256MBに増やしたところ、estimateできました。メモリ最…

「囲碁の師匠」絶賛?発売中!

自作のiPadアプリ「囲碁の師匠」が11月16日に発売になりました。以下は紹介ベージです。 https://new3rs.github.io/a_master_of_go/index.ja.html ご興味お持ちいただけたら幸いです。

iOSアプリのシンプルなプライバシーポリシー

この度、iOSアプリを一つ申請し承認いただきました。(契約関係でトラブっていてまだApp Storeには掲載されていません) 6年ぶりのiOSアプリ申請で色々新鮮でした。 中でもすべてのアプリにプライバシーポリシーURLの掲載を求められたことがびっくりしました。…

クラウドでLeela Zeroを動かしてローカルのLizzieで見る

以前、VPSサービスGPUEaterでLeela ZeroとLizzie動かす方法を紹介しました。nextliteracy.hatenablog.comVPSにVNCで繋いて、VPS側でLizzieを動かす方法でしたが、この方法だとVPS側にデスクトップ関連のインストールする必要があってその時間が比較的長く、…

SwiftでSGFをパースしたりその逆をしたりするライブラリを公開しました

github.com

Maximaマニュアルを5.42.0に更新しました。

maxima.osdn.jp置換用パッケージcombinatoricsと最悪ケース解析パッケージwrstcseが追加されましたね。 稚拙な訳ですがご活用ください。

Leela ZeroのウェイトをCore MLで計算させる

AZ.jsをSwiftに移植しました。その際に、Leela ZeroのウェイトをCore ML上に移す作業があったのですが、ハマり所があったので、備忘録です。Leela Zeroのウェイトは、leela-zeroレポジトリのtraining/tfフォルダ以下のスクリプトを使って、TensorFlowに読み…

GeForce RTX 2080 Tiは2枚でAlphaGo Readyと言えるかも(言えないかも)

追追追追記 2018/11/29 TOPSという数字の追求だけでは心もとないので、もっと具体的な数値を見ました。 AlphaGo Zero(20b)は4TPUsで16000プレイアウト/秒です。 ELF OpenGo(20b)はV100でTensor Coreを使って1600プレイアウト/秒です。 TuringのINT8でプレイ…

GPUEaterでLeela Zeroを動かす

追記 2018/10/06 Leela Zeroのコンパイル手順が古くなっています。 GitHub - gcp/leela-zero at nextの記述に従ってください。 GPUEaterというGPUサーバーレンタルサービスがあります。www.gpueater.comRX Vega 56などハイエンドのPCやワークステーションに…

囲碁AI AZ.js

A9.jsとA19.jsはコードがほとんど同じだったのですが、碁盤サイズに定数を使っていたため、別のレポジトリとして作りました。 メンテの意味でもそれはあまりに残念なので、コードをマージしてリファクタリングしてドキュメンテーションを充実させたAZ.jsを公…

囲碁AI A19.js

以前にA9.jsというブラウザ上で遊べる9路盤囲碁AIを公開しました。 今日は、これの19路盤版、A19.jsを公開しました。 FacebookのELF OpenGoのニューラルネットワークを使っています。iMac Late 2012(GTX-660M)でニューラルネットワークの評価は380ms前後でし…

WGoエディタ再び

2年弱前にWGoエディタというものを作りました。nextliteracy.hatenablog.com新興アプリSabakiが良さげだったので開発をやめました。見立てもよかったようで、今、Sabakiは結構人気のアプリになったようです。 SabakiはLeela/Leela Zeroを使った検討機能も拡…

AlphaGoまとめ

AlphaGo Fan AlphaGo Lee AlphaGo Master AlphaGo Zero (20b) AlphaGo Zero (40b) AlphaZero (20b) ELF OpenGo PhoenixGo 評価ハードウェア 1202 CPU & 176 GPU 48 TPU v1 4 TPU v1 4 TPU v1 4 TPU v1 4 TPU v1 1 V100 Tesla P40 HW指標 1TPUで1600simに0.4…

Meteorを使ったリアルタイムアプリのためのデータ構造

Meteor歴5年で今更感があるのですが。Meteorといえばリアルタイムアプリがターゲットのウェブプラットフォームです。 クライアントとサーバーのDBの同期やリアクティブなレンダリングはとても重宝しています。さて、MeteorのDBのクライアント-サーバ同期の単…

macOS(High Sierra)でTensorFlowをコンパイルする

古いiMac(2012)を使っているのでGPUが馬力がないので、CPUでもIntel MKLを使って高速化をすべく、macOS(High Sierra)でTensorFlowをコンパイルしようとしたら嵌りました。TensorFlowはコンパイル時にデフォルトのApple clangを使うのですが、このclangはOpen…

Web WorkerのためのRemote Method Invocation(RMI)

表題のライブラリを作成しました。 github.com 山口さんが開発されたPyaq(https://github.com/ymgaq/Pyaq)という9路盤の囲碁AIをJavaScriptの移植(A9.js)したのですが、そのときに、 UIのレスポンスを維持するためにAIの演算はワーカーで実行したい でも、ワ…

ChromeでTwitterサイトをアプリっぽくする

Twitter for Macの提供終了が発表されました。 Mac版公式Twitterアプリ、突然の提供終了 - ITmedia NEWS iMacでTwitter for Macを立ち上げて、画面の左側に幅を最小にしていつもTLを楽しんでいる私としてはとても困りました。 なのでChromeでTwitterサイトを…

機械翻訳のオープンソース情報を集めます

追記 ここにたくさん集めてありました。https://github.com/jonsafari/nmt-list Sockeye URL: https://github.com/awslabs/sockeye コメント: Sequence-to-sequence framework プラットフォーム: MXNet Fairseq-py URL: https://github.com/facebookresearch…

NodObjCを使ってNode.jsでPasteboardの画像データを取得する

Node.jsでスクリーンショットを扱いたいことがあって、外部コマンドscreencaptureを起動してファイルを生成してそれを読み込むという処理をしていました。 ファイルの生成場所にはRAMディスクを使うなど高速化を図っていたのですが、やはりオーバーヘッドが…

AlphaGo Zeroの研究開発に使われたリソースを見積もってみる

表題の中身 2018/01/30 追記その3 私の「論文のTPUはTPU1を示す」説に対してDeepZenGo代表の加藤英樹さんから「Google の misleading にマンマと騙されている。TPUはTPU2である」というご指摘があったので、なぜこんなことになってしまったのかと思いながら…

Maxima日本語マニュアル(5.41.0)更新しました。

第一種不完全ガンマ函数 gamma_greekが gamma_incomplelte_lowerに名前が変わったぐらいですね。後はマニュアルの見た目の修正のみでした。 maxima.osdn.jp

rust-cudnnのcuDNN v6対応

2年ほど前にAutmunAIというヨーロッパのベンチャがRustで書かれたDeep Learning Framework "Leaf"を開発し始めて注目していました。 しかし、残念なことに1年ほど前に、TensorFlowのエコシステムの成長を見て「負け」を宣言して開発を中止したようです。 Rus…

Maxima日本語マニュアル(5.40.0)更新しました。

仔細な修正以外の主なところはencode_timeとdecode_timeの追加、Maximaの式整理のイントロダクションの追加でした。

Herokuで無料でたくさんTwitter Streamingボットを実装する方法

Herokuでは、ここ2年ほどで無料のdynoに関して変遷がありましたが、今はアカウント毎に毎月所定の時間のdyno hourを割り当てるということに落ち着いたようです。Twitterでリプライやフォローバックをリアルタイムで自動でしようと思うと、Streaming APIを利…

RustによるWeb Assembly事始め

2018/02/14 追記 去年の11月25日にRustのnightly本体でwasm32-unknown-unknownサポートされたようです。なので、本記事はobsoleteです。 Rustが安定版1.14.0でWeb Assemblyを実験的にサポートしました。blog.rust-lang.orgasm.js関連技術を使うにはC/C++に戻…