このブログは、株式会社フィックスターズのエンジニアが、あらゆるテーマについて自由に書いているブログです。
本日、フィックスターズは、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を遠慮なく作ってください(何語でも歓迎ですが、日本語か英語が推奨です)。
コンピュータビジョンセミナーvol.2 開催のお知らせ - ニュース一覧 - 株式会社フィックスターズ in Realizing Self-Driving Cars with General-Purpose Processors 日本語版
[…] バージョンアップに伴い、オンラインセミナーを開催します。 本セミナーでは、...
【Docker】NVIDIA SDK Managerでエラー無く環境構築する【Jetson】 | マサキノート in NVIDIA SDK Manager on Dockerで快適なJetsonライフ
[…] 参考:https://proc-cpuinfo.fixstars.com/2019/06/nvidia-sdk-manager-on-docker/ […]...
Windowsカーネルドライバを自作してWinDbgで解析してみる① - かえるのほんだな in Windowsデバイスドライバの基本動作を確認する (1)
[…] 参考:Windowsデバイスドライバの基本動作を確認する (1) - Fixstars Tech Blog /proc/cpuinfo ...
2021年版G検定チートシート | エビワークス in ニューラルネットの共通フォーマット対決! NNEF vs ONNX
[…] ONNX(オニキス):Open Neural Network Exchange formatフレームワーク間のモデル変換ツー...
YOSHIFUJI Naoki in CUDAデバイスメモリもスマートポインタで管理したい
ありがとうございます。別に型にこだわる必要がないので、ユニバーサル参照を受けるよ...