Neural Network Libraries v1.16.0をリリースしました!
Spotlight
Out-of-Core training (CPU / CUDA)
GPUを利用した学習・推論時に、パラメータや計算結果をCPUメモリに自動で退避させながら演算を行うことで、GPUメモリ以上のモデル・データを実行することができるOut-of-Core (OoC) trainingの機能を追加しました。Algorithmの詳細はこちらの論文に公開しており、この手法の公式実装となります。
OoC機能は、以下のように、既存のnnablaのコードに数行追加するだけで簡単に利用することができます。
# scheduerの定義
scheduler = lms_scheduler(ctx,
use_lms=True,
gpu_memory_size=3.5e9,
window_length=5e9)
...
# 適用範囲をwithスコープで指定
with scheduler:
loss.forward(clear_no_need_grad=True)
solver.zero_grad()
loss.backward(clear_buffer=True)
solver.update()
また、nnabla-examplesのgithubレポジトリにOoC機能を利用したColabデモも公開しております。詳しい利用方法やOoC機能の有効性など、実際にお試しいただける内容となっておりますので、是非そちらもご覧ください。
CenterNet
物体認識モデルの1つであるCenterNetのExampleが新たに追加されました!
CenterNetはYOLOなどの既存の物体検出で用いられていたアンカーを利用せず、1つの物体を1つの点とみなすことで高速・高精度な検出を可能にしたモデルです。
以下はNNabla実装のCenterNetによって物体検出を行った例です(画像はオリジナルCenterNetのレポジトリより)。
学習済みモデルもダウンロード可能になっており、すぐにCenterNetを用いた推論ができるようになっています。こちらもあわせて試してみてください!
バグ修正
- nn.gradが不要な部分までBackwardグラフを作ってしまう問題の修正
- gnumakefileの修正
- コードのタイポ修正
- マルチスレッド学習サポート
- conv_cosとconv_sinのパラメータ名修正
- ImageNet分類Exampleのマルチノード学習の修正
- マルチGPU使用時のNCCLのエラーの修正
- ウォッチドッグの追加
- example/cppのGNUmakefileアップデート
- 不要なモジュールのインポートを削除
ビルド関連
- Windowsビルド時のエラーの修正
- test_shiftエラー修正
- CUDNN_PATH未検出によるビルドエラーの解消
- CUDA版パッケージのwheelの生成のエラー解消
- c-runtimeビルド時のエラー解消