Qi Wang
commited on
Commit
•
911dfe3
1
Parent(s):
22c830f
Update README.md
Browse files
README.md
CHANGED
@@ -7,3 +7,85 @@ language:
|
|
7 |
library_name: transformers
|
8 |
---
|
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
library_name: transformers
|
8 |
---
|
9 |
|
10 |
+
# Llama2中文童话小模型(93M)
|
11 |
+
|
12 |
+
|
13 |
+
|
14 |
+
## 模型背景
|
15 |
+
|
16 |
+
本模型采用 [llama2.c](https://github.com/karpathy/llama2.c) 提供的代码和工具,训练了一个参数量93M的中文小模型。它的tokenizer是从语料中重新训练的,仅包含3000个中文字符,采用BPE算法实现,tokenizer.model仅有38K。
|
17 |
+
|
18 |
+
数量的数据集来自[TinyStoriesZh](https://huggingface.co/datasets/52AI/TinyStoriesZh/tree/main),合并了1M和2M的数据集,总字符数量199,536,607,汉字数量2492,共计1,124,957行。从中随机抽取800,000训练3K的tokenizer
|
19 |
+
|
20 |
+
模型的训练参数如下:
|
21 |
+
|
22 |
+
| 参数 | 值 |
|
23 |
+
| ------------- | ---- |
|
24 |
+
| dim | 768 |
|
25 |
+
| n_heads | 12 |
|
26 |
+
| n_layers | 12 |
|
27 |
+
| kv_heads | 12 |
|
28 |
+
| batch_size | 24 |
|
29 |
+
| max_seq_len | 768 |
|
30 |
+
| hidden_dim | 2268 |
|
31 |
+
| dropout | 0.1 |
|
32 |
+
| learning rate | 3e-4 |
|
33 |
+
|
34 |
+
## 训练细节
|
35 |
+
|
36 |
+
训练在单卡A10G的服务器上运行了大约18小时,共3个epoch
|
37 |
+
|
38 |
+
| Key | Value |
|
39 |
+
| ---------- | ------------- |
|
40 |
+
| iteration | 22,940 |
|
41 |
+
| loss/eval | 1.3784 |
|
42 |
+
| loss/train | 1.2773 |
|
43 |
+
| lr | 0.00003 |
|
44 |
+
| tokens | 9,020,375,040 |
|
45 |
+
|
46 |
+
## 模型表现
|
47 |
+
|
48 |
+
```bash
|
49 |
+
git clone https://github.com/karpathy/llama2.c
|
50 |
+
cd llama2.c
|
51 |
+
make run
|
52 |
+
```
|
53 |
+
|
54 |
+
运行推理
|
55 |
+
|
56 |
+
```bash
|
57 |
+
./run ./llama2c-93MB.bin -t 0.9
|
58 |
+
```
|
59 |
+
|
60 |
+
结果如下
|
61 |
+
|
62 |
+
```txt
|
63 |
+
▁从前,有一个小女孩,名叫莉莉。有一天,莉莉的妈妈让她帮忙洗衣服。莉莉很乐意帮忙,并把一件
|
64 |
+
衬衫放进了洗衣机。突然,莉莉听到了奇怪的声音。▁“那是什么?”她问她妈妈。“这只是洗衣机。我们需要确保衣服干净,”她妈妈回答道。莉莉感到很安心,因为她帮助了妈妈。他们把所有的衣服都拿出
|
65 |
+
来,放进洗衣机里。洗完衣服后,莉莉的妈妈说:“干得好,莉莉!你真是个好帮手。”莉莉笑了,也为自己感到骄傲。她拥抱妈妈说:“妈妈,谢谢你让我帮忙洗衣服。”
|
66 |
+
|
67 |
+
▁从前,有一位高大强壮的超级英雄。他肌肉发达,可以举起重物。他喜欢帮助别人,并且非常坚强。
|
68 |
+
有一天,他去公园散步,看到一只小狗被困在树上。超级英雄想帮助那只狗。他爬上树,把狗从树枝上扶下来。狗很高兴,舔着超级英雄的脸表示感谢。超级英雄微笑着继续前行。他很高兴自己能够用自己的肌肉帮助这只狗,并结识了一个新朋友。
|
69 |
+
|
70 |
+
▁从前,有一只兔子,名叫雷米。雷米喜欢和他的朋友们一起跳来跳去玩耍。有一天,雷米和他的朋友
|
71 |
+
们正在玩捉迷藏,这时他们看到了一大堆干草。他们正在扔掉,突然干草碎成了碎片。弗雷米和他的朋友们很害怕,但他们知道他们必须帮忙。他们请他们的朋友兔子山姆帮他们捡干草。萨姆很勇敢,没有把干草分开。他们把干草拿到池塘里,把它分成小块。大家坐下来吃饭,雷米和山姆很高兴他们帮助了他们。从那天起,雷米就被称为森林里最勇敢的小兔子,总是在附近玩耍。
|
72 |
+
|
73 |
+
▁从前,有一个小女孩,名叫莉莉。她喜欢在外面玩耍并探索周围的世界。有一天,她在地上发现了一
|
74 |
+
块闪闪发光的石头。它是如此美丽和闪闪发光,她想永远保留它。但后来,莉莉的朋友过来看到了这块石头。她也想要它,但莉莉不想分享。她的朋友感到很难过,就回家了。那天晚些时候,莉莉意识到她不分享她的石头是自私的。她感到很难过,决定把石头送给她的朋友。她的朋友很高兴,他们一起玩了一整天。莉莉了解到分享很重要,自私会让别人感到难过。
|
75 |
+
```
|
76 |
+
|
77 |
+
可以看到93M的模型参数量虽然少,但是仍然具有一定的逻辑能力,故事可以保持基本的自洽。
|
78 |
+
|
79 |
+
## 小模型的意义
|
80 |
+
|
81 |
+
小模型的能力虽然有限,但是它在一下几个方面是具有非凡意义的
|
82 |
+
|
83 |
+
1. 可以促进对模型原理的理解。俗话说“麻雀虽小五脏俱全”,小模型规模虽然小,但是具有llama2标准架构,方便学习和理解模型训练的原理
|
84 |
+
2. 加速调试。在开发大模型app时,可以用小模型加快启动和运行的速度,方便快速迭代开发
|
85 |
+
3. 嵌入式。在游戏这种需要快速反馈,并且存在高并发的环境中,小模型比大模型具有更强的优势。
|
86 |
+
|
87 |
+
## 感谢
|
88 |
+
|
89 |
+
1. [llama2.c](https://github.com/karpathy/llama2.c)
|
90 |
+
2. [llama2.c-zh](https://github.com/chenyangMl/llama2.c-zh)
|
91 |
+
3. [TinyStoriesZh](https://huggingface.co/datasets/52AI/TinyStoriesZh/tree/main)
|