File size: 2,991 Bytes
9d07c8f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f9c3b60
9d07c8f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f9c3b60
 
9d07c8f
f9c3b60
 
de92a43
f9c3b60
9d07c8f
 
f9c3b60
9d07c8f
 
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
---
license: mit
datasets:
- HuggingFaceFW/fineweb-2
language:
- ja
pipeline_tag: fill-mask
---
# makiart/jp-ModernBert-base-preview

このモデルは[ABCI 生成AIハッカソン](https://abci.ai/event/2024/12/23/ja_abci_3.0_genai_hackathon.html)にて提供された計算資源によって[Algomatic](https://algomatic.jp/)チームが作成したモデルです。

- コンテキスト長:8192
- 語彙数:50,368
- 総学習トークン数:約300B Tokens
- パラメータ数:150M
- 埋め込み抜きパラメータ数:110M
- fineweb2 日本語データを利用

## How to Use

```bash
pip install -U transformers>=4.48.0
```

トークナイザーにBertJapaneseTokenizerを利用しているため、下記を追加でインストールする必要があります。

```bash
pip install fugashi unidic_lite
```

GPUがFlashAttentionに対応しているのであれば下記のインストールをすると効率よく推論できます。

```bash
pip install flash-attn --no-build-isolation
```

## Example Usage

```python
import torch
from transformers import AutoModelForMaskedLM, AutoTokenizer, pipeline

model = AutoModelForMaskedLM.from_pretrained("makiart/jp-ModernBert-base-preview", torch_dtype=torch.bfloat16)
tokenizer = AutoTokenizer.from_pretrained("makiart/jp-ModernBert-base-preview")
fill_mask = pipeline("fill-mask", model=model, tokenizer=tokenizer)

results = fill_mask("[MASK]という言葉を無限定に使ってはいけない。")

for result in results:
    print(result)

# {'score': 0.00897216796875, 'token': 13588, 'token_str': '好き', 'sequence': '好き と いう 言葉 を 無 限定 に 使っ て は いけ ない 。'}
# {'score': 0.0074462890625, 'token': 384, 'token_str': '、', 'sequence': '、 と いう 言葉 を 無 限定 に 使っ て は いけ ない 。'}
# {'score': 0.00677490234375, 'token': 2278, 'token_str': '愛', 'sequence': '愛 と いう 言葉 を 無 限定 に 使っ て は いけ ない 。'}
# {'score': 0.006561279296875, 'token': 13875, 'token_str': '安全', 'sequence': '安全 と いう 言葉 を 無 限定 に 使っ て は いけ ない 。'}
# {'score': 0.006378173828125, 'token': 17498, 'token_str': '正義', 'sequence': '正義 と いう 言葉 を 無 限定 に 使っ て は いけ ない 。'}
```

## Model Description

- 2段階形式でMLM学習を行いました。
    - マスキングレートは30%
    - 1024のコンテキスト長で約150B Tokens
    - 8192のコンテキスト長で約150B Tokens
- トークナイザーはtohoku-nlp/bert-base-japanese-v3をベース
    - 語彙数は50,368
- データセット
    - fineweb2の日本語データのみを利用
- 計算資源
    - ABCIから提供いただいた計算資源のうち1ノード(H200 x 8)を利用し、2日間で学習

## Evaluation

ちゃんとした評価はできていません😭

総合学習トークン数的に既存のモデルよりも劣ることが予想されます。