Neural Network Libraries v1.25.0をリリースしました!BERTのファインチューニングスクリプトが追加されました!
BERTについては、nnabla ディープラーニングチャンネルでも解説動画を用意しているので、ぜひご覧ください。
また、v1.25.0のリリースに際して、nnabla-examples内のディレクトリ構造を大幅に変更しました。タスクベースでディレクトリを整理するようになったため、以前とはディレクトリ名が変更されていたり、属している親ディレクトリが異なるものもありますので、以前の構造に慣れている方は注意するようお願いします。
Spotlight
BERT ファインチューニング
BERT (Bidirectional Encoder Representations from Transformers)はトランスフォーマーベースの言語モデルであり、自然言語処理、音声認識、マルチモーダル表現理解といった幅広いドメインにおいて非常に影響力をもつモデルです。様々なタスクに対応するため、BERTをベースとした改良モデルが数多く提案されており、いくつか例を挙げるだけでもRoBERTa, ViLBERT, TinyBERTなどがあり、BERTが言語モデルのマイルストーンとして幅広い応用性と重要性をもつことを証明しています。
BERTは初期の言語表現モデルとは異なり、文章中のある単語を、その単語前後両方のコンテキストで条件づけるかたちで、ラベル付けされていないテキストから深層双方向表現を事前学習するように設計されています。結果的に、事前学習されたBERTはたった1つの出力レイヤーを加えるだけで多様なタスクに応じたファインチューニングを行うことができ、SoTAを達成しています。
nnabla実装によるBERTのファインチューニングのために、 著者提供のモデル重みをnnabla用に変換しました。その重みはここから直接ダウンロードすることが可能です。また、変換に用いるコードも公開しているので、どのように重みの変換が行われているかを確認することもできます(これは他のモデルの重みの変換時に有用です)。このスクリプトはGLUEベンチマークデータセットのすべてのタスクにおいて実行可能であり、論文で報告されているスコアとほぼ同じ結果を出すことができます。
さらに、BERTの事前学習用のコードもまもなく公開する予定ですので、ご期待ください!
ビルド関連
- Dockerfile.documentをdoc/requirements.txtに依存するよう変更
- g++を4.9.2から6.5.0にアップグレード / C++14対応
- Deformable Convolutionで不正アクセスが起こり得る問題を修正
- deformable_convolution.cuのアップデート
バグ修正
- AssignCudaの追加
- reduce.cuがcudaDeviceGetAttributesを使うように変更
- GPU環境におけるFusedBN実行時に演算がCPUにフォールバックしないように変更 (CPU / GPU)