2018-03-01から1ヶ月間の記事一覧
将棋AIをChainerを使用した実装からcuDNNを使用した実装に変更できたので、マルチGPUでの性能を測定した。 Chainerを使用した場合 Python経由でChainerを使用しているPythonのGIL機構によってマルチスレッドの性能に制限がある。 Chainerを使用した場合の、…
モデルの学習にディープラーニングフレームワークのChainerを使用していますが、対局時にChainerで推論を行うと、Python経由で呼び出すためマルチGPUで動かす際、Python経由だとGILによってマルチスレッドの性能が出なくなる。 また、実行環境にPythonが必要…
前回実装した、Chainerで学習したモデルを使用してcuDNNで推論するコードを、マルチGPUで並列に動作するようにした。cuDNNをマルチスレッドで、スレッドに別々のGPUを割り当てて使用する場合、それぞれのスレッドでcudaSetDevice()を呼び出し、GPU IDを指定…
前回実装した、Chainerで学習したモデルを使用してcuDNNで推論するコードを、Residual Network(ResNet)構成にした。推論時には、テンソルの加算を行うだけで特に難しいことはない。 ネットワーク定義(Chainer) ResNetは1ブロックのみで、ブロック内の畳み込…
前回実装した、Chainerで学習したモデルを使用してcuDNNで推論するコードに、dropoutを追加した。dropoutは学習時のみ処理を行うため、推論時には何もしなくてよい。 つまり、推論のネットワーク定義にはdropoutは必要ない。 学習用ネットワーク定義 学習用…
前回実装した、Chainerで学習したモデルを使用してcuDNNで推論するコードに、BatchNormalizationを追加した。BatchNormalizationも、cuDNNにAPIが用意されているため、簡単に使用できる。 ネットワーク定義(Chainer) まず、Chainerで学習するモデルにBatchNo…
昨日の日記の続きです。C++のコードでcuDNNを直接使用して推論を行った場合と、Chainerを使用して推論を行った場合の実行時間の比較を行った。 測定条件 MNISTのtest set images(1000画像)のすべてを推論するのに要する時間を測定 ミニバッチサイズは、100 …
ディープラーニングを使ったモデルを学習する際、ディープラーニングフレームワークを使うと使わないとでは生産性に大きな差がある。 多少のオーバーヘッドは許容して、ディープラーニングフレームワークを使う方がトータルでメリットがあると思う。しかし、…
自己対局による強化学習の検証をはじめた。強化学習の手法は、以前の日記で書いた通りで、Alpha Zeroの手法を参考にして、1手800シミュレーションで自己対局を行う。自己対局→学習のサイクルを繰り返してモデルを成長させる。 1回のサイクルで、どれだけの自…
「将棋AIで学ぶディープラーニング」という本を出版します。昨年10月に技術書典3で「ディープラーニングを使った将棋AIの作り方」という技術系同人誌を出したことをきっかけに書籍化のお話をいただきました。技術書典で出した本は、方策ネットワークを使った…
Visual Studioで開発してLinuxでもビルドや実行できるソースにしようとすると、改行コードをLFにそろえたい。Visual Studio 2015では保存時の改行コードを設定できる。 https://msdn.microsoft.com/ja-jp/library/dd409797.aspxしかし、いったんLFにして保存…
DeepMindからarXivに投稿された論文「Learning to Search with MCTSnets」についてです。Redditの投稿が簡潔に要約しています。 Learning to Search with MCTSnets : cbadukAlphaGo ZeroのPUCTアルゴリズムは、PolicyとValueと訪問回数を使って、固定の計算…