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)
学習コードのイテレーション部分はこのようになります:
強化学習のExampleの拡充
強化学習のサンプルを大幅に拡充しました!
サンプルはnnabla-rlを利用し、10以上のアルゴリズムのサンプルを追加しました!
CartPoleやPendulumなどの古典的なタスクの他、AtariやMuJoCoの各種タスクを解くサンプルになっています。
是非ご利用ください!
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がインストールされていても分散学習を実行することができます。
バグ修正
- Moduleの派生クラスがパラメータスコープのメソッドをラップ
- infのシリアル化のバグの修正
- executorにno_image_normalizationを保存するように変更
- libnccl.so.2のロード対応
- Cランタイム: depthwise convolutionの構造体に起因するバグ修正
- Cランタイム: max_poolingのバグ修正
ビルド関連
- FlatBuffersを最新のバージョンからビルド (CPU / GPU)
- NVIDIA関係のGPGキーの更新 (1 / 2)
- numpy v1.20.0以降の使用 (CPU / GPU)
- tensorboardXサポートドキュメントの問題の修正
- protobufのアップデート (CPU / GPU)
- OSによって利用するprotobufのバージョンを変更