このブログは、株式会社フィックスターズのエンジニアが、あらゆるテーマについて自由に書いているブログです。
本日、フィックスターズは、CuPyをOpenCLでも使えるようにしたClPyの最新版v2.1.0beta1を公開しました!
8月にβ0版をリリースしてから4ヶ月、ClPyは開発が続き、さらに多くの機能が追加されました。追加された主な機能の概要は以下のとおりです
その他より詳細な変更点についてはGitHubのIssue一覧をご覧ください。
ImageNetサンプルはβ0でも動作するようになっていましたが、そこでは既定のNINが使われていました。しかし、大規模な分散並列学習においてはResNet50が使われるように、NINだけでは不十分でした。そこで今回、ResNet50を使えるようにしたことで、より実用に近いニューラルネットワークがClPyでも動かすことができるようになりました。
そうなると次はそろそろ処理性能を考え始める時期になります。前回のβ0リリース記事でもお伝えしたとおり、β0ではBLAS(密行列積)がハンドコードされており性能があまり良くありませんでした。今回、BLASライブラリとしてCLBlastを導入したことで、多くの種類・型のBLAS APIに対応することが可能になり、また処理性能も向上しました。
実測してみたところ、前回のβ0の性能と今回のβ1を比べると、ImageNet(nin)のような重いネットワークでは、どのGPUでも1.2-1.5倍程度高速化されたことが分かります。やはり適当に手書きするよりは、ライブラリ等を導入するのが簡単な高速化技法であることが分かりますね。
一方で、依然として、同じGPUでCuPyとClPyを使うと、まだまだ性能に差があることが分かります。今回、cuDNNを使わない状態で計測しましたが、GeForce 1060もTITAN Vもどちらも概ねCuPyの方が2-3倍速いという結果が出ています。これについては、引き続き調査をし、次回以降のリリースでは改善したいと考えています。
また、今回は機能拡充としてテストをたくさん通しました。α版からβ0版では不合格テストのファイル数も件数もほとんど変わっていませんが、β1版では、β0で改善された基礎機能を用いて、多くの機能を有効化することができました。不合格テストファイル数は67件から45件と2/3に、不合格テストケースの数は約1500件から約1150件と75%程度になりました。このテスト合格のための機能拡充は引き続き開発されており、既に一部が実装済みで次回リリースに確実に入る見込みです。疎行列ライブラリなどの一部非サポートの試験は残りますが、次回リリースでは、核となるndarrayに関するほぼすべての機能を提供したいと考えています。
今後の開発項目についてはGitHubで随時更新されます。開発中の機能もPull Requestに上がっていきますので、先行して試してみたい方は、ぜひGitHubのレポジトリをwatchしてみてください。
また、みなさんが使ってみた結果のフィードバックも引き続き歓迎しています。うまく動かなかったりで支援が必要でしたり、こうした方が良いと思うなどの提案があれば、GitHubにIssueを遠慮なく作ってください(何語でも歓迎ですが、日本語か英語が推奨です)。
keisuke.kimura in Livox Mid-360をROS1/ROS2で動かしてみた
Sorry for the delay in replying. I have done SLAM (FAST_LIO) with Livox MID360, but for various reasons I have not be...
Miya in ウエハースケールエンジン向けSimulated Annealingを複数タイルによる並列化で実装しました
作成されたプロファイラがとても良さそうです :) ぜひ詳細を書いていただきたいです!...
Deivaprakash in Livox Mid-360をROS1/ROS2で動かしてみた
Hey guys myself deiva from India currently i am working in this Livox MID360 and eager to knwo whether you have done the...
岩崎システム設計 岩崎 満 in Alveo U50で10G Ethernetを試してみる
仕事の都合で、検索を行い、御社サイトにたどりつきました。 内容は大変参考になりま...
Prabuddhi Wariyapperuma in Livox Mid-360をROS1/ROS2で動かしてみた
This issue was sorted....