File size: 2,669 Bytes
4908d05
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
license: mit
datasets:
- Skywork/SkyPile-150B
- liwu/MNBVC
language:
- zh
- en
---

# Nano-56M

## 是什么?

- 版本:20241027
- 这是BD4SUR训练的预训练语言模型,基于[Nano](https://github.com/bd4sur/Nano),不兼容🤗Transformers。
- 语言模型采用类Llama结构,参数量约58M(55,591,424)。
- 使用约101亿词元的多源混合语料进行无监督训练,训练4轮(epoch)。语料分布如下:
  - [SkyPile-150B](https://huggingface.co/datasets/Skywork/SkyPile-150B):80%
  - [fineweb](https://huggingface.co/datasets/HuggingFaceFW/fineweb)(英文):12%
  - [MNBVC](https://huggingface.co/datasets/liwu/MNBVC)(中文,仅XXQG):3%
  - 中文维基百科:2%
  - 医疗领域文本:2%
  - 其他语料:1%
- 提供若干检查点文件,分别大致对应1整轮训练完成后的状态。每个检查点文件除包含模型权重外,还包含优化器状态和训练配置参数,可用于继续训练。
- 建议使用99000步的检查点。这个检查点对应4整轮训练完成后的状态。100000步的检查点可能在英文语料上有过拟合情况,倾向于生成英文文本。

## 怎么玩?

```
1. 克隆Nano仓库,并按照文档的说明安装依赖。
   cd ~
   git clone https://github.com/bd4sur/Nano
   cd Nano

2. 将检查点文件下载到`~/Nano/checkpoint`目录下。

3. 使用PyTorch推理。
   python infer.py -m ~/Nano/checkpoint/nano_56m_20241027_pt_99000.pt

4. 或者在浏览器上推理。
   python export model.bin --checkpoint ~/Nano/checkpoint/nano_56m_20241027_pt_99000.pt
   在浏览器上打开 ~/Nano/infer/index.html 页面,打开刚刚生成的 model.bin 文件。

5. 指令微调或者继续预训练。详见Nano仓库中的文档。

```

## 怎么训练的?

使用某算力云平台提供的单机4卡A800-80GB-PCIe,以数据并行方式训练了4轮。算力费用(按训练时价格)约为1克黄金。

训练集上交叉熵损失如下图。横轴为训练迭代步数,纵轴为交叉熵损失。

![ ](nano_56m_20241027.png)

后续可能发布技术报告,请勿期待😋

## 声明

作为统计语言模型,本模型的输出无法预测,其输出依赖于采样方式。本人不对该模型所生成的任何内容负责。

本模型“按原样”提供,采用MIT协议授权。本模型为作者个人以学习和自用目的所创作的作品。作者不对本模型和本系统的质量作任何承诺。作者不保证提供有关本模型和本系统的任何形式的解释、维护或支持。作者不为任何人使用此模型和系统所造成的任何正面的或负面的后果负责。