File size: 5,020 Bytes
2d8cd28 00cfab8 2d8cd28 00cfab8 2d8cd28 1c77c84 2d8cd28 7de14d9 0368b5f 2d8cd28 0368b5f 2d8cd28 0368b5f 2d8cd28 0368b5f 2d8cd28 81efab8 2d8cd28 a1f3fdb 4a25df7 a1f3fdb 4a25df7 02c9413 2d8cd28 31bcc0d 2d8cd28 81efab8 2d8cd28 7855e31 a1f3fdb 4a25df7 a1f3fdb 4a25df7 02c9413 2d8cd28 d0fa09f 2d8cd28 7855e31 2d8cd28 b90ef8e 4a25df7 2d8cd28 85c9726 95bc47d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
---
language: ja
tags:
- mobilebert
license: cc-by-sa-3.0
datasets:
- wikipedia
---
# MobileBERT 日本語事前学習済みモデル爆誕!!
AI関係の仕事をしている櫻本です。
2020年に発表されたBERTの発展型モデルの一つである「MobileBERT」の、日本語事前学習済みモデルを構築しました。
このページを見つけた方はかなりラッキーですから、ぜひ一度使ってみてください!!
BERTの推論速度の遅さを嘆いている方にお薦めです。
# 利用方法
既にtransformersでBERTを利用されている方向けの説明です。
トークナイザは東北大学さんのモデル(cl-tohoku/bert-large-japanese)からお借りしましたのでご指定ください。
後は、**BertFor**なんちゃら~のクラスを**MobileBertFor**なんちゃら~に直して、このリポジトリを指定するだけです!
```from transformers import BertJapaneseTokenizer, MobileBertForSequenceClassification
tokenizer = BertJapaneseTokenizer.from_pretrained("cl-tohoku/bert-large-japanese")
model = MobileBertForSequenceClassification.from_pretrained("ysakuramoto/mobilebert-ja") # 文書分類の場合
```
(注意:文書分類などのタスクに利用するには、ファインチューニングが必要です)
# BERTとの性能比較
文書分類と固有表現抽出について、ファインチューニング・性能評価を行いました。
参考程度にご覧ください。(ファインチューニング後の性能を保証するものではありません)
- 文書分類(MobileBertForSequenceClassification)
|メトリック|BERT|MobileBERT(高速化前)|MobileBERT(高速化後)|
|-----------|-----------| ------- | -------- |
|学習時間(s)|585.0|399.7|-|
|推論時間(s)|259.0|108.7|70.5|
|精度|86.4%|85.5%|86.4%|
|モデルファイルサイズ(MB)|440.2|-|41.8|
- 条件
- ライブドアニュースコーパスのタイトルとカテゴリで学習・推論。
- 比較対象のBERTモデルは東北大学さんの"cl-tohoku/bert-base-japanese-whole-word-masking"。
- 推論データ n=1,474。精度はAccuracy
- 学習パラメータ: エポック数=10, lr=1e-4
- 推論時の高速化として、枝刈り(-20%)・量子化・jitコンパイルを実施。
- Google Colabにて、学習にGPU、推論にCPUを利用。バッチ処理でなく1件ずつ推論。
- それぞれ、学習~推論を3回実施した平均値。
- 固有表現抽出(MobileBertForTokenClassification)
|メトリック|BERT|MobileBERT(高速化前)|MobileBERT(高速化後)|
|-----------|-----------| ------- | -------- |
|学習時間(s)|428.0|294.0|-|
|推論時間(s)|163.5|78.4|40.9|
|精度|86.4%|82.5%|83.3%|
|モデルファイルサイズ(MB)|440.2|-|41.8|
- 条件
- ストックマーク社さんのwikipediaデータセットで学習・推論。(https://github.com/stockmarkteam/ner-wikipedia-dataset)
- 比較対象のBERTモデルは東北大学さんの"cl-tohoku/bert-base-japanese-whole-word-masking"。
- 推論データ n=2,140。精度は完全一致のf-measure
- 学習パラメータ: エポック数=10, lr=1e-4
- 推論時の高速化として、枝刈り(-20%)・量子化・jitコンパイルを実施。
- Google Colabにて、学習にGPU、推論にCPUを利用。バッチ処理でなく1件ずつ推論。
- それぞれ、学習~推論を3回実施した平均値。
# モデルの説明
- モデルの構造
- 論文中の"MobileBERT"構造に従いました。(論文中にはMobileBERT<sub>TINY</sub>というバージョンもありますがそちらではないです)
- 論文中のTable.1 をご確認ください。 https://arxiv.org/abs/2004.02984
- 学習に利用したデータ
- 東北大学さんが公開されている方法で、2021年8月時点のwikipediaデータを加工・利用しました。
- 東北大学さんのgithub https://github.com/cl-tohoku/bert-japanese
- トークナイザ
- 東北大学さんのモデル"cl-tohoku/bert-large-japanese"からお借りしました。vocab sizeは32,768です。
- 学習方法
- Google ColabからTPUを用いて学習しました。
1. IB-BERT<sub>LARGE</sub>をlr=5e-4で1Mステップ学習しました。
1. IB-BERT<sub>LARGE</sub>を240kステップ蒸留後、mobileBERTをlr=5e-4で2Mステップ学習しました。
- トータルで2ヶ月半くらいかかりました。。エラー出まくってつらかったです。
# ライセンス
[CC-BY SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/deed.ja)
トークナイザについては東北大学さんのモデル"cl-tohoku/bert-large-japanese"からお借りしました。
# 免責
このモデルを利用・参照することで発生したあらゆる不都合や損害について、一切の責任を負いかねます。 |