Neural Network Libraries v1.11.0をリリースしました!
スポットライト
CUDAエクステンション: AllReduce()実行時にレスポンスがない場合、システムが例外を送出
マルチノード学習を行う際、ユーザーは学習が実際にはハングしているのか、それとも計算に時間がかかりすぎているだけなのかがわかりにくいケースがありました。本バージョンからは、AllReduce()の結果が所定の時間内に返されるか否かを調べることでこれを判断するようになりました。
通常、barrier()を使うことで同期するポイントを指定することができます。同期が行われる前であれば、異なるノードで異なる計算を行わせることができ、それぞれの計算の処理時間は大きく異なる可能性があります。しかし、同期後には、複数ノードにおいて同程度の負荷の演算が行われるとみなせるため、AllReduce演算はある時間内に終了するはずであると考えられます。そうでなければ、あるノードで問題が生じていることが予想されます。これによりいずれかのノードで例外が発生した際に学習を止めることができます。
Cランタイム: 固定小数点演算のサポートおよび固定小数点と浮動小数点の頻繁な変換を回避
以下の関数が固定小数点演算に対応しました!
– DepthwiseConvolution
– AddScalar, MulScalar
– Reshape
– Transpose
– Affine
– ReLU
– Add2, Sub2
– Mul2, Div2
– SumPooling
– MaxPooling
– AveragePooling
レイヤー関数の新規追加・改善
ユーティリティの機能改善
- マルチノード学習時に遅延が起きているGPUを特定
- キャッシュ生成時にマルチプロセスを利用
- uint16のデータ正規化時の処理の適切化
- .h5パラメータ保存の有効化
- インストールされているパッケージに応じてcpuとgpuの負荷計測を行うよう変更
- グラフコンバーターのリデザイン
バグ修正
- 一時的にnew_groupテストのスキップ
- タイポ修正
- NNPLoaderがVariableを読み込む際にShapeをチェック
- 出力VariableがInplaceされる際の勾配演算の修正 (CPU / CUDA)
- Deeplab推論時のバグ修正
- マルチノード学習時に同一ファイルが複数プロセスでアクセスされる問題の回避
- ScatterNdのinplace演算時の勾配演算の修正
ビルド関連
- Dockerfileのアップデート (CPU / CUDA)
- auto-format用Dockerfileのアップデート
- ビルド時の依存関係のエラーの解決
- CIエラー回避のためのタイムアウト制限延長
- gccのバージョンを4.9.2にアップデート
- Cランタイム: APIレベルの更新