ysakuramoto
commited on
Commit
•
2d8cd28
1
Parent(s):
7eaa0f5
Create README.md
Browse files
README.md
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
language: ja
|
3 |
+
tags:
|
4 |
+
- mobilebert
|
5 |
+
license: cc-by-sa-3.0
|
6 |
+
datasets:
|
7 |
+
- wikipedia
|
8 |
+
---
|
9 |
+
|
10 |
+
# MobileBERT 日本語事前学習済みモデルについて
|
11 |
+
AI関係の仕事をしている櫻本です。
|
12 |
+
2020年に発表されたBERTの発展型モデルの一つである「MobileBERT」の日本語事前学習済みモデルを構築しました。
|
13 |
+
このページを見つけた方はかなりラッキーですから、ぜひ一度使ってみてください!!
|
14 |
+
|
15 |
+
# 利用方法
|
16 |
+
transformersを利用されている場合の方法です。
|
17 |
+
トークナイザを東北大学さんのモデルからお借りしました。
|
18 |
+
それ以外は、**BertFor**なんちゃら~のクラスを**MobileBertFor**なんちゃら~に直して、このリポジトリを指定するだけです!
|
19 |
+
(注意:文書分類などのタスクに利用するには、ファインチューニングが必要です)
|
20 |
+
```from transformers import BertJapaneseTokenizer, MobileBertForSequenceClassification
|
21 |
+
tokenizer = BertJapaneseTokenizer.from_pretrained("cl-tohoku/bert-large-japanese")
|
22 |
+
model = MobileBertForSequenceClassification.from_pretrained("ysakuramoto/mobilebert-ja") # 文書分類の場合
|
23 |
+
```
|
24 |
+
|
25 |
+
# BERTとの性能比較
|
26 |
+
文書分類と固有表現抽出について、ファインチューニング・性能評価を行いました。
|
27 |
+
参考程度にご覧ください。(ファインチューニング後の性能を常に保証するものではありません)
|
28 |
+
|
29 |
+
- 文書分類(MobileBertForSequenceClassification)
|
30 |
+
|メトリック|BERT|MobileBERT(高速化前)|MobileBERT(高速化後)|
|
31 |
+
|-----------|-----------| ------- | -------- |
|
32 |
+
|学習時間(s)|585.0|399.7|-|
|
33 |
+
|推論時間(s)|259.0|108.7|70.5|
|
34 |
+
|精度|86.4%|85.5%|86.4%|
|
35 |
+
- 条件
|
36 |
+
- ライブドアニュースコーパスのタイトルとカテゴリで学習・推論。
|
37 |
+
- BERTモデルに、'cl-tohoku/bert-base-japanese-whole-word-masking'を利用。
|
38 |
+
- 推論データ n=1,474。精度はAccuracy。
|
39 |
+
- エポック数=10, lr=1e-4
|
40 |
+
- 高速化として、枝刈り・量子化・jitコンパイルを実施。
|
41 |
+
- Google Colabにて、学習にGPU、推論にCPUを利用した。推論はバッチ処理でなく1件ずつ処理。
|
42 |
+
|
43 |
+
- 固有表現抽出(BertForTokenClassification)
|
44 |
+
|メトリック|BERT|MobileBERT(高速化前)|MobileBERT(高速化後)|
|
45 |
+
|-----------|-----------| ------- | -------- |
|
46 |
+
|学習時間(s)|428.0|294.0|-|
|
47 |
+
|推論時間(s)|163.5|78.4|40.9|
|
48 |
+
|精度|86.4%|82.5%|83.3%|
|
49 |
+
- 条件
|
50 |
+
- ストックーマークさんのwikipediaデータセットで学習・推論。(https://github.com/stockmarkteam/ner-wikipedia-dataset)
|
51 |
+
- BERTモデルに、'cl-tohoku/bert-base-japanese-whole-word-masking'を利用。
|
52 |
+
- 推論データ n=2,140。精度は完全一致のAccuracy。
|
53 |
+
- エポック数=10, lr=1e-4
|
54 |
+
- 高速化として、枝刈り・量子化・jitコンパイルを実施。
|
55 |
+
- Google Colabにて、学習にGPU、推論にCPUを利用した。推論はバッチ処理でなく1件ずつ処理。
|
56 |
+
|
57 |
+
# モデルの説明
|
58 |
+
- モデルの構造
|
59 |
+
- 論文中の"MobileBERT"構造に従いました。(論文中にはMobileBERT<sub>TINY</sub>というバージョンもありますがそちらではないです)
|
60 |
+
- 論文中のTable.1 をご確認ください。 https://arxiv.org/abs/2004.02984
|
61 |
+
- 学習に利用したデータ
|
62 |
+
- 東北大学さんが公開されている方法で、2021年8月時点のwikipediaデータを利用しました。
|
63 |
+
- 東北大学さんのgithub https://github.com/cl-tohoku/bert-japanese
|
64 |
+
- トークナイザ
|
65 |
+
- 東北大学さんのモデル"cl-tohoku/bert-large-japanese"からお借りしました。vocab sizeは32768です。
|
66 |
+
- 学習方法
|
67 |
+
- Google ColabからTPUを用いて学習しました。
|
68 |
+
1. IB-BERT<sub>LARGE</sub>をlr=5e-4で1Mステップ学習しました。
|
69 |
+
1. 240kステップの蒸留後、mobileBERTをlr=5e-4で2Mステップ学習しました。
|
70 |
+
- トータルで2ヶ月半くらいかかりました。。エラーも出まくってつらかったです。
|
71 |
+
- tensorflow liteでの利用
|
72 |
+
- こちらで説明されています。その名の通りモバイルで動かせるんですね。
|
73 |
+
- https://www.tensorflow.org/lite/examples/bert_qa/overview
|
74 |
+
|
75 |
+
# ライセンス
|
76 |
+
[CC-BY SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/deed.ja)
|
77 |
+
トークナイザについては東北大学さんのモデル"cl-tohoku/bert-large-japanese"からお借りしました。
|