EN

Neural Network Libraries v1.29.0をリリースしました!

2022年6月20日 月曜日

リリース

Posted by Takuya Yashima

Spotlight

QNNコンバータ / QATスケジューラの追加

nnablaにおけるQuantization-Aware-Training (QAT):
nnablaでは、QATを2つのステージ、すなわちRECORDINGステージとTRAININGに分けています。
RECORDINGステージでは、ネットワーク内の各重みやアクティベーションのダイナミックレンジを収集/記録します。
TRAININGステージでは、量子化効果をシミュレートするために量子化/逆量子化ノードを挿入します。
本リリースにおいて、QATをサポートするQATスケジューラが利用可能になりました。

QATSchedulerの作成:

from nnabla.utils.qnn import QATScheduler, QATConfig, PrecisionMode

# Create training network
pred = model(image, test=False)

# Create validation network
vpred = model(vimage, test=True)

# configure of QATScheduler
config = QATConfig()
config.bn_folding = True
config.bn_self_folding = True
config.channel_last = False
config.precision_mode = PrecisionMode.SIM_QNN
config.skip_bias = True
config.niter_to_recording = 1
config.niter_to_training = steps_per_epoch * 2

# Create a QATScheduler object
qat_scheduler = QATScheduler(config=config, solver=solver)

# register the training network to QATScheduler
qat_scheduler(pred)

# register the validation network to QATScheduler
qat_scheduler(vpred, training=False)

TensorRTの場合:

from nnabla.utils.qnn import QATScheduler, QATTensorRTConfig
config = QATTensorRTConfig()
qat_scheduler = QATScheduler(config=config, solver=solver)
qat_scheduler(pred)
qat_scheduler(vpred, training=False)

学習コードのイテレーション部分はこのようになります:
Training loop w/ or w/o/ QAT

強化学習のExampleの拡充

強化学習のサンプルを大幅に拡充しました!
サンプルはnnabla-rlを利用し、10以上のアルゴリズムのサンプルを追加しました!
CartPolePendulumなどの古典的なタスクの他、AtariMuJoCoの各種タスクを解くサンプルになっています。
是非ご利用ください!

mpiライブラリncclライブラリの動的ロード

分散学習の時に利用するopenmpiとncclのライブラリを実行時に動的にロードするようになりました。
今まではシステムにインストールされているopenmpiがversion 2の時はnnabla-ext-cuda110-nccl2-mpi2-1-1を、version 3の時は nnabla-ext-cuda110-nccl2-mpi3-1-6をインストールする必要がありました。
これからはnnabla-ext-cuda110をインストールすれば、どのバージョンのopenmpi/ncclがインストールされていても分散学習を実行することができます。

バグ修正

ビルド関連

ユーティリティの機能改善

Exampleの新規追加