k4rasu commited on
Commit
6d3f3c2
·
verified ·
1 Parent(s): d676c73

Upload folder using huggingface_hub

Browse files
README.md ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - ja
4
+ license: mit
5
+ library_name: transformers
6
+ pipeline_tag: text-generation
7
+ tags:
8
+ - llama
9
+ - tiny
10
+ - japanese
11
+ - character
12
+ - zundamon
13
+ - llama2.c
14
+ - esp32
15
+ ---
16
+
17
+ # 幼生ずんだもん v4(zundamon-tiny-llm)
18
+
19
+ ゼロから学習した、とても小さな「ずんだもん風」の日本語会話モデルです。話しかけると、ずんだもんとして短く返事をし、返事の最後に、そのときの気持ちのタグ(〈うれしい〉〈かなしい〉など 8 種類)を 1 つ付けます。
20
+
21
+ | 版 | パラメータ | 構造 | int8 の大きさ |
22
+ |---|---|---|---|
23
+ | base(このフォルダの直下) | 約 174 万 | Llama(dim 128・8 層・8 ヘッド・KV 4 ヘッド・FFN 352) | 2.0MB |
24
+ | small(`small/`) | 約 81 万 | Llama(dim 96・6 層・6 ヘッド・KV 3 ヘッド・FFN 256) | 0.9MB |
25
+
26
+ - 語彙:2,048(SentencePiece BPE)
27
+ - 文脈の長さ:256 トークン
28
+
29
+ ブラウザの中だけでも動きます。M5Stack Core2(ESP32)向けの int8 版も `llama2c/` に入れています。
30
+
31
+ - **デモ**:https://crowpilot.github.io/zundamon-tiny-llm/
32
+ - **コード**(学習・Core2・ブラウザ):https://github.com/crowpilot/zundamon-tiny-llm
33
+
34
+ 非公式のファン作品です。ずんだもんは[東北ずん子・ずんだもんプロジェクト](https://zunko.jp/)のキャラクターで、[キャラクター利用の手引き](https://zunko.jp/guideline.html)に沿って非商用で公開しています。モデルがとても小さいので、ときどきおかしなことを言います。
35
+
36
+ ## 使い方(transformers)
37
+
38
+ ```python
39
+ from transformers import AutoModelForCausalLM, AutoTokenizer
40
+
41
+ repo = "crowpilot/zundamon-tiny-llm"
42
+ tok = AutoTokenizer.from_pretrained(repo)
43
+ model = AutoModelForCausalLM.from_pretrained(repo) # small は subfolder="small"
44
+
45
+ prompt = "A:おはよう、ずんだもん!B:"
46
+ ids = tok(prompt, return_tensors="pt").input_ids # 先頭に <s> が付きます
47
+ out = model.generate(ids, max_new_tokens=48, do_sample=False)
48
+ print(tok.decode(out[0, ids.shape[1]:])) # 例: おはよー!ボクはいつも元気いっぱいなのだ!〈ふつう〉
49
+ ```
50
+
51
+ ### 書き方の約束
52
+
53
+ - **話者**:全角の `A:`(話しかけ)と `B:`(ずんだもん)で書きます。
54
+ - **返事の終わり**:返事の最後に気持ちのタグが 1 つ出て止まります(`generation_config.json` の終わりのトークンにタグを入れてあります)。8 種類は〈ふつう〉〈うれしい〉〈ドヤ〉〈びっくり〉〈かなしい〉〈ぷんぷん〉〈こまった〉〈ねむい〉です。
55
+ - **会話の区切り**:この版は 1 往復ずつ学習しています。話しかけるたびに先頭に `<s>` を置くと、いちばん安定します。
56
+
57
+ ## Core2(ESP32)・llama2.c で使う
58
+
59
+ `llama2c/` に次のファイルがあります。
60
+
61
+ | ファイル | 中身 |
62
+ |---|---|
63
+ | `zundamon-v4-base_q8.bin`、`zundamon-v4-small_q8.bin` | int8(グループ 32)。Core2 とブラウザ版の形式 |
64
+ | `zundamon-v4-*_fp32.bin` | llama2.c 形式の FP32 |
65
+ | `tok.bin` | llama2.c 形式のトークナイザ |
66
+
67
+ 読み込み方はコードのリポジトリを見てください。気持ちタグ(語彙の 5〜12 番)は、返事の終わりの印として扱います。
68
+
69
+ ## 学習
70
+
71
+ - **方法**:ランダムな初期値から、次のトークンを当てる学習だけで作りました。指示に従う追加学習や強化学習はしていません。
72
+ - **データ**:Gemma 4(Apache 2.0)で作り、機械と Gemma の採点で選んだ、ずんだもんへの話しかけと返事の組(約 7 万組)。返事の気持ちも Gemma が 8 種類から選んでいます。学習データとデータの作り方は公開していません。
73
+ - **大きさ**:学習トークンは約 162 万です。
74
+ - **環境**:NVIDIA V100 1 枚で、base は約 10 分で学習できます。
75
+
76
+ ## 評価
77
+
78
+ 話しかけ 201 個への返事を、Gemma 4 がモデル名を伏せて 1〜5 点で採点しました。比べたのは、前に公開していた版(v3、気持ちタグなし)です。
79
+
80
+ | モデル | 応答 | ならでは(決まり文句でないか) | 気持ちタグの一致 |
81
+ |---|---|---|---|
82
+ | v3 base(前の公開版) | 1.89 | 1.47 | — |
83
+ | v4 base | 2.80 | 2.11 | 75.2% |
84
+ | v4 small | 2.92 | 2.07 | 75.5% |
85
+
86
+ - 「気持ちタグの一致」は、学習に使っていない組で、Gemma が付けた気持ちとモデルが選んだ気持ちが同じだった割合です。
87
+ - 応答の点が 2 以下の返事も、まだ半分ほどあります。
88
+
89
+ ## 制限
90
+
91
+ - とても小さいモデルです。事実の知識はほとんどなく、話がつながらないこともよくあります。
92
+ - 1 往復ずつ学習しているので、前の会話の内容は使えません。
93
+ - 漢字の多い文や長い文は苦手です。
94
+ - 会話の練習用・遊び用です。大事な判��には使わないでください。
95
+
96
+ ## ライセンス
97
+
98
+ - **モデル**:MIT
99
+ - **学習データ**:Gemma 4(Apache 2.0)で生成しました。
100
+ - **ずんだもん**:キャラクターに関する権利は東北ずん子・ずんだもんプロジェクトにあり、このライセンスの対象外です。利用するときは[キャラクター利用の手引き](https://zunko.jp/guideline.html)に従ってください。
101
+
102
+ ---
103
+
104
+ ## English summary
105
+
106
+ A very small Japanese chat model, trained from scratch, that answers in the style of Zundamon (unofficial, non-commercial fan work).
107
+
108
+ - **Sizes**:Llama architecture, about 1.74M parameters (base) and 0.81M (small)
109
+ - **Vocabulary**:2,048-token SentencePiece BPE
110
+ - **Context length**:256 tokens
111
+
112
+ **Prompt format**:`A:<user>B:`, with `<s>` placed before every exchange. The model ends each reply with one emotion tag such as `〈うれしい〉`, and generation stops there.
113
+
114
+ **Training data**:about 70k single-turn exchanges written by Gemma 4 (Apache 2.0) and then filtered; each reply was also labeled with one of 8 emotions by Gemma. The dataset is not released.
115
+
116
+ **Other formats**:`llama2c/` contains the int8 build for an ESP32 (M5Stack Core2) and for the browser demo.
config.json ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "LlamaForCausalLM"
4
+ ],
5
+ "attention_bias": false,
6
+ "attention_dropout": 0.0,
7
+ "bos_token_id": 1,
8
+ "dtype": "float32",
9
+ "eos_token_id": 2,
10
+ "head_dim": 16,
11
+ "hidden_act": "silu",
12
+ "hidden_size": 128,
13
+ "initializer_range": 0.02,
14
+ "intermediate_size": 352,
15
+ "max_position_embeddings": 256,
16
+ "mlp_bias": false,
17
+ "model_type": "llama",
18
+ "num_attention_heads": 8,
19
+ "num_hidden_layers": 8,
20
+ "num_key_value_heads": 4,
21
+ "pad_token_id": null,
22
+ "pretraining_tp": 1,
23
+ "rms_norm_eps": 1e-05,
24
+ "rope_parameters": {
25
+ "rope_theta": 10000.0,
26
+ "rope_type": "default"
27
+ },
28
+ "tie_word_embeddings": true,
29
+ "transformers_version": "5.20.2",
30
+ "use_cache": true,
31
+ "vocab_size": 2048,
32
+ "rope_theta": 10000.0
33
+ }
generation_config.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token_id": 1,
3
+ "do_sample": false,
4
+ "eos_token_id": [
5
+ 2,
6
+ 3,
7
+ 4,
8
+ 5,
9
+ 6,
10
+ 7,
11
+ 8,
12
+ 9,
13
+ 10,
14
+ 11,
15
+ 12
16
+ ],
17
+ "max_new_tokens": 48,
18
+ "transformers_version": "5.20.2"
19
+ }
llama2c/tok.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:213ed9474b9d447e86f901e7ad0009047c6d06887fd0fedbd8ddba5590ce2637
3
+ size 29754
llama2c/zundamon-v4-base_fp32.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f37b3daab1cbf0f8a4472a6f836aacf2c252fb1c7a1aa73b59ccc46a4d6e05bd
3
+ size 6971932
llama2c/zundamon-v4-base_q8.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c6c7553307b9705eaf6b68f41b325d43e98182b9ce44e48892c87fcb809de78d
3
+ size 1962536
llama2c/zundamon-v4-small_fp32.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ee4c89cb213b1bb872bba8bd06e3b7665688569a8404e6a9ae5bba4b7425105b
3
+ size 3240860
llama2c/zundamon-v4-small_q8.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b8ef3569293a5ae8081feea9cd911fc375553ff369e3276920e51a848db001cd
3
+ size 910504
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:303d88045dfda34d8176a2b66efbf4f97a0aafd1473e2631b75842e63a760063
3
+ size 6963400
small/config.json ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "LlamaForCausalLM"
4
+ ],
5
+ "attention_bias": false,
6
+ "attention_dropout": 0.0,
7
+ "bos_token_id": 1,
8
+ "dtype": "float32",
9
+ "eos_token_id": 2,
10
+ "head_dim": 16,
11
+ "hidden_act": "silu",
12
+ "hidden_size": 96,
13
+ "initializer_range": 0.02,
14
+ "intermediate_size": 256,
15
+ "max_position_embeddings": 256,
16
+ "mlp_bias": false,
17
+ "model_type": "llama",
18
+ "num_attention_heads": 6,
19
+ "num_hidden_layers": 6,
20
+ "num_key_value_heads": 3,
21
+ "pad_token_id": null,
22
+ "pretraining_tp": 1,
23
+ "rms_norm_eps": 1e-05,
24
+ "rope_parameters": {
25
+ "rope_theta": 10000.0,
26
+ "rope_type": "default"
27
+ },
28
+ "tie_word_embeddings": true,
29
+ "transformers_version": "5.20.2",
30
+ "use_cache": true,
31
+ "vocab_size": 2048,
32
+ "rope_theta": 10000.0
33
+ }
small/generation_config.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token_id": 1,
3
+ "do_sample": false,
4
+ "eos_token_id": [
5
+ 2,
6
+ 3,
7
+ 4,
8
+ 5,
9
+ 6,
10
+ 7,
11
+ 8,
12
+ 9,
13
+ 10,
14
+ 11,
15
+ 12
16
+ ],
17
+ "max_new_tokens": 48,
18
+ "transformers_version": "5.20.2"
19
+ }
small/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:69d00b35476d01b4dc7703b5ba08baa2f5a3a0f8c981aa022e45c960898c162a
3
+ size 3230336
small/tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
small/tokenizer_config.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token": "<s>",
3
+ "clean_up_tokenization_spaces": false,
4
+ "eos_token": "</s>",
5
+ "model_max_length": 256,
6
+ "tokenizer_class": "PreTrainedTokenizerFast",
7
+ "unk_token": "<unk>",
8
+ "add_bos_token": true
9
+ }
tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
tokenizer_config.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token": "<s>",
3
+ "clean_up_tokenization_spaces": false,
4
+ "eos_token": "</s>",
5
+ "model_max_length": 256,
6
+ "tokenizer_class": "PreTrainedTokenizerFast",
7
+ "unk_token": "<unk>",
8
+ "add_bos_token": true
9
+ }