自作のiPadアプリ「囲碁の師匠」が11月16日に発売になりました。
以下は紹介ベージです。
ご興味お持ちいただけたら幸いです。
この度、iOSアプリを一つ申請し承認いただきました。(契約関係でトラブっていてまだApp Storeには掲載されていません)
6年ぶりのiOSアプリ申請で色々新鮮でした。
中でもすべてのアプリにプライバシーポリシーURLの掲載を求められたことがびっくりしました。
(ニュースで話題になったのかも知れませんが当時iOSアプリを出す予定はなく気にしていませんでした)
ネットをググればプライバシージェネレータなるものも多数あり、やってみましたが、個人情報を全く収集しなくても結構なボリュームになります。
今回、アプリのローカリゼーションを行ったこともあってできるだけ短い記述で済ませたいと思い自分で書きました。
以下がそのページです。
https://new3rs.github.io/a_master_of_go/privacy_policy.html
一言語で7行程度です。
法律的にどうなのかはわかりませんが、少なくともこれでApp Storeの申請は通りました。
ご参考に。
以前、VPSサービスGPUEaterでLeela ZeroとLizzie動かす方法を紹介しました。
VPSにVNCで繋いて、VPS側でLizzieを動かす方法でしたが、この方法だとVPS側にデスクトップ関連のインストールする必要があってその時間が比較的長く、サクッと使ってみる気にはなれないものでした。
今回は、ローカル(自分のパソコン)でLizzieを動かして、Leela ZeroはVPSサービスで動かす方法を紹介します。元ネタは以下のイシューです。
VPSサービスとしてGPUEaterを例にしますが、sshでつながるVPSならどれでも同じだと思います。
省略^^:
省略^^:
SSH接続手順は省略^^;
シェルから以下を順に実行してください。スクリプトにして一括実行するのもいいかと思います。おおよそ2分30秒です。
最後のwgetは私のDropboxに置いてあるELF OpenGo v1ウェイトです。お好きなものを用意してください。
apt update git clone -b next http://github.com/gcp/leela-zero.git cd leela-zero git submodule update --init --recursive apt install -y libboost-dev libboost-program-options-dev libboost-filesystem-dev opencl-headers ocl-icd-libopencl1 ocl-icd-opencl-dev zlib1g-dev mkdir build && cd build cmake .. cmake --build . wget https://www.dropbox.com/s/qxd2bu0xb59lb5f/elf_converted_weights.txt.gz
次に以下を実行して、OpenCL最適化を終わらせておきます。
cd leela-zero/build/leelaz --weights leela-zero/build/elf_converted_weights.txt.gz --gtp
Setting max tree size to 4136 MiB and cache size to 459 MiB.
という感じのメッセージで止まったら終了してください。
(普通ローカル環境も維持したいかと思いますので、変更するよりはもう一式Lizzieをインストールしてから設定することをおすすめします)
以下のように、engine-commandプロパティを変更してください。
{ "leelaz": { "automatically-download-latest-network": そのまま, "max-analyze-time-minutes": そのまま, "analyze-update-interval-centisec": そのまま, "network-file": そのまま, "max-game-thinking-time-seconds": そのまま, "engine-start-location": そのまま, "engine-command": "ssh -i ~/.ssh/gpueater.pem root@<IPアドレス> leela-zero/build/leelaz --weights leela-zero/build/elf_converted_weights.txt.gz --gtp --lagbuffer 0 --threads 3", "print-comms": そのまま },
~.ssh/gpueater.pemはご利用のVPSとsshに合わせて変更してください。
<IPアドレス>はご利用のVPSインスタンスのIPアドレスです。
--weightsはもしLeela Zeroのインストールの際に違うウェイトをダウンロードしたならそれに合わせてください。
--threadsはご利用のVPSインスタンスの性能に合わせて変えてください。
engine.start-locationとengine-commandの--weightsオプションを組み合わせたファイルを用意してください。空のファイルで結構です。
(Lizzieがウェイトファイルが存在するか確認するので、それを誤魔化すために作ります)
お疲れ様でした。以上で設定完了です。いつものようにLizzieを起動してください。VPS上のLeela ZeroをLizzieで使うことができます。
20万円近くする高性能パソコンを買わなくても、GPUEaterなら1時間50円程度で高性能パソコンと同等にLizzieを使うことができます。
対局場控室で、持ち込みのノートPCは非力とお嘆きの解説の先生がた!、この方法ならノートPCでもいくらでも高性能Lizzieになりますよ!
Enjoy!
置換用パッケージcombinatoricsと最悪ケース解析パッケージwrstcseが追加されましたね。
稚拙な訳ですがご活用ください。
AZ.jsをSwiftに移植しました。
その際に、Leela ZeroのウェイトをCore ML上に移す作業があったのですが、ハマり所があったので、備忘録です。
Leela Zeroのウェイトは、leela-zeroレポジトリのtraining/tfフォルダ以下のスクリプトを使って、TensorFlowに読み込むことができます。なので、後はtfcoremlで.mlmodelに変換すれば完了です。
github.com
以下、ポイントは2点ありました。
ELF OpenGo v1のウェイト(20b, 224c)を変換してみたところ、私のiMac(27インチ ,Late 2012, i5)で推論が1回170--220ms程度でした。同じマシンのChrome(webgl)でWebDNN上のものが360ms前後なので倍ぐらいのスピードですか。Core ML(tfcoreml?)は量子化をしているようで出力の数字が荒っぽくなります。
追追追追記 2019/09/23
Leela Zero 40bがV100で2219プレイアウト/秒出るそうです。20bなら雑に2倍して4438プレイアウト/秒、INT8で2倍になるとして8876プレイアウト/秒。
2枚あれば16000プレイアウト/秒以上出ますね。
V100相当のTuringカードがあれば2枚でAlphaGo Readyと言えそうです。追追追追記 2018/11/29
TOPSという数字の追求だけでは心もとないので、もっと具体的な数値を見ました。
AlphaGo Zero(20b)は4TPUsで16000プレイアウト/秒です。
ELF OpenGo(20b)はV100でTensor Coreを使って1600プレイアウト/秒です。
TuringのINT8でプレイアウトが2倍になったとしても2枚で4倍にしかならず、10倍の4 TPUsには届きませんね。
AlphaGo Ready PCはまだまだ先のようです。
追追追記 2018/10/04
devblogs.nvidia.com
9月14日の記事ですが、RTXシリーズは、ということのようです。
cuDNN 7.3.1はまだTuring向けにチューンしたものではようで、FP32積算を使うようになっていると2080Tiは TITAN Vより速度が出ないということが起こりうるようです。
追追記 2018/09/23
将棋AIを開発されている山岡さんがTensor Coreを利用した記事を書かれていたので、質問して教えていただきました。
cuDNN Developer Guide :: NVIDIA Deep Learning SDK Documentationに、制約のある次元はfeature mapsのことであり、rows, columnsではないことが明記されていました。追記の記事にもchannelとあったのですが、ディープラーニングでのいわゆるチャンネルなのか、dimension一般のことかよくわからなかったので誤解しました。
というわけで、囲碁AIでも使えますね!
追記 2018/09/06
cuDNNは次元がそれぞれ8の倍数でないとTensor Coreを活用できないようです。
devblogs.nvidia.com
これだと、囲碁AIには使えないですね…
GeForceシリーズの新しいGPUが発表されました。Gamescomに先立って行われた講演では、リアルタイムレイトレーシングが強調されてTensor Coreに関しては搭載されているのかどうかはっきりしないものでしたが、2日経って詳細内容の記事が出てきました。
pc.watch.impress.co.jp
この記事によると、GeForce RTX-20シリーズにはすべてTensor Coreが搭載されていて、その仕様は、
2070 | 2080 | 2080 Ti | |
Tensor Core FP16 | 60 TFLOPS | 81 TFLOPS | 108 TFLOPS |
とのことです。
TuringアーキテクチャのTensor CoreはINT8, INT4もサポートするので、以下の仕様が想像できます。
2070 | 2080 | 2080 Ti | |
Tensor Core FP16 | 60 TFLOPS | 81 TFLOPS | 108 TFLOPS |
Tensor Core INT8 | 120 TOPS | 162 TOPS | 216 TOPS |
Tensor Core INT4 | 240 TOPS | 324 TOPS | 432 TOPS |
AlphaGo Zeroの対局時の仕様はTPU v1 4個なので、INT8が92 TOPS * 4 = 368 TOPSという仕様です。
なので、RTX 2080 Tiを2枚で432 TOPSでAlphaGo Zeroの仕様を(単に数字の上だけですが)超えることになります。
RTX 2070を3枚なら 360 TOPSでAlphaGo Zeroにほぼ並びます。
499ドル 3枚(約17万円)、999ドル 2枚(約22万円)は決して安い値段ではありませんが、半年前にはTITAN V 2枚(80万円)でも届かない性能が今この値段!
なんという世の中でしょう。競争激しいGPU業界のたゆまぬイノベーション努力に感謝致します。
(でも財布の都合で買うならRTX 2070一枚かな…)