Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
MiniCPM-training
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Yutong Wu
MiniCPM-training
Commits
1cda58a7
Commit
1cda58a7
authored
Sep 10, 2024
by
wyt2000
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://62.234.201.16/wyt2000/MiniCPM-training
parents
a3a5e312
642f7863
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
102 additions
and
2 deletions
+102
-2
README.md
+102
-2
No files found.
README.md
View file @
1cda58a7
...
...
@@ -2,12 +2,111 @@
MiniCPM 训练流程记录
## 模型结构修改
## 模型修改
所有量化均按最后一维量化,见
`models/MiniCPM-quant/utils_quant.py`
中的 activation_quant 。
[
TODO: 推理加速
]
### KV
将 hidden_states 过 k_proj 和 v_proj 后得到的 key_states 和 value_states 量化到 4bit。
[
TODO:目前是 int4,需要支持 fp4
]
### XW
X 量化到 int8,W 量化到 int4
[
TODO: 换成 fp4
]
,然后计算 nn.functional.linear(X, W),相当于 XW^T,如 X 是
[
1,1,1536
]
,W 是
[
3840, 1536
]
,这样 dim=-1 就都是按累加维量化。
lm_head 也按此方式量化。
### lm_head SVD 分解
先预训练,再 SVD,再 SFT。
SFT 的时候现场拆 SVD。打印 tensor 看看有没有 require_grad。SVD 的模型和代码,bin 。
### Attention 有 norm
http://62.234.201.16/wyt2000/MiniCPM-training/blob/master/models/MiniCPM-quant/modeling_minicpm.py#L460
## 预训练
### 数据集
| 数据集 | 成分 | token 数量 | 文件大小 | 来源 |
| :--------------------------------: | :------------: | :--------: | :------: | :----------------------------------------------------------: |
| the-stack-v2-train-smol-ids-python | 纯 Python 代码 | 56B | 160G | 过滤 starcoder2 预训练数据中的 Python 代码 |
| RedPajama-Data-V2-EN-100B | 英语文章 | 100B | 555G | RedPajama 的 1T token 子集中标签为 en 的语料 |
| Proof-pile-2-arxiv | LaTeX 代码 | 29B | 25G | 从 RedPajama 过滤
[
TODO: 去重
]
|
| Proof-pile-2-open-web-math | 数学文章 | 15B | 48G | 从网络爬取 |
| Proof-pile-2-algebraic-stack | 数学代码 | 11B | 7.2G | 手工规则过滤,Python 共 6B
[
TODO: 去重
]
,定理证明语言共 1.6B |
[
TODO: 确定比例,数学 70% (55B),代码 20% (15B),文章 10% (8B)
]
重新初始化代码可能要多一点
### 训练框架
暂定 llama-factory(备选:OLMo)。
-
内存放不下所有数据,需要用 stream 一条一条地读取。
-
先用 tokenizer 将文本编码成 tensor 保存起来
[
TODO: 代码需进一步重构,存 json -> 存 pt?
]
,节约编码的时间。
-
训练中断恢复问题,确定一个 epoch 需要多少 step。
[
TODO: yutong
]
### 超参
[
TODO
]
## 微调
## 评测
### 数据集
| 数据集 | 成分 | 数量 |
| :----------------: | :----------------------------------------------------------: | :--: |
| evol-instruct-gpt4 | 各种语言的代码问题 | 110K |
| NuminaMath-CoT | 数学问题+文本回答 | 860K |
| MathInstruct-CoT | 数学问题+文本回答 | 188K |
| MathInstruct-PoT | 数学问题+代码回答 | 73K |
| infinitymath-PoT | 数学问题+代码回答(种子问题来自 gsm8k 等 benchmark 的训练集) | 101K |
| allenai/lila | | |
和 Deepseek 比较,相同数据集,取正常 lr 调度和固定 lr。
混起来。
[
TODO: QA 任务,测下
]
### 训练框架
暂定 aimo-progress-prize (备选 llama-factory / Magicoder)。
[
TODO: 测代码数据集训练效果
]
### 超参
先训 math,找到比较好的混合数据,再基于这个数据去调 code 和 math 的超参
#### Code
同 WizardCoder-GPT4 ?
#### Math
同 NuminaMath-CoT ?
## 任务与评测
| Benchmark | 成分 | 测试框架 | 测试时间 |
| :-------: | :-----------------: | :----------------------------------------------------------: | :------: |
| HumanEval | 代码生成 | EvalPlus | |
| MBPP | 代码生成 | EvalPlus | |
| MMLU | QA,选择题 | lm_eval | |
| ARC | QA,选择题 | lm_eval | |
| GSM8K | 数学题,文本 / 程序 | DeepSeek
[
TODO: few shot
]
| 1h |
| MATH | 数学题,文本 / 程序 | DeepSeek | 5h |
| MiniF2F | 定理证明 |
[
TODO: DeepSeek 只能测 Isabellel,只要测一个好结果,选容易的
]
| |
| 说人话 | | | |
SFT 之后至少达到 bf16 的效果
所有 benchmark 写一个测试脚本。
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment