Update README.md
Browse files
README.md
CHANGED
|
@@ -14,11 +14,11 @@ license: apache-2.0
|
|
| 14 |
|
| 15 |
代码部分在:https://github.com/ViperEkura/KHAOSZ/tree/main
|
| 16 |
|
| 17 |
-
代码遵循 apache-2.0 协议,
|
| 18 |
|
| 19 |
- **设备选择**:当前代码默认使用CUDA进行训练
|
| 20 |
- **性能优化**:代码中设置了`dtype=torch.bfloat16`来启用训练,这有助于提高训练速度和降低显存消耗,但需确保硬件支持此特性。
|
| 21 |
-
-
|
| 22 |
|
| 23 |
### 1. 如何训练
|
| 24 |
|
|
@@ -57,6 +57,8 @@ python train.py \
|
|
| 57 |
|
| 58 |
--batch_size:指定每个批次的样本数量。
|
| 59 |
|
|
|
|
|
|
|
| 60 |
--max_lr: 指定过程中最大的学习率(学习率采用的是预热 + 余弦衰减)
|
| 61 |
|
| 62 |
--n_iter_ckpt:指定每多少迭代次数保存一次检查点。
|
|
@@ -67,7 +69,7 @@ python train.py \
|
|
| 67 |
|
| 68 |
--resume_dir: 恢复训练的checkpoint路径
|
| 69 |
|
| 70 |
-
|
| 71 |
检查点文件会保存在指定的检查点目录中,您可以使用这些检查点文件来恢复训练或进行评估。
|
| 72 |
|
| 73 |
|
|
@@ -93,7 +95,6 @@ while True:
|
|
| 93 |
history=histroy,
|
| 94 |
temperature=0.95,
|
| 95 |
top_p=0.9,
|
| 96 |
-
top_K=50,
|
| 97 |
):
|
| 98 |
print(response[response_size:], end="")
|
| 99 |
response_size = len(response)
|
|
@@ -121,14 +122,15 @@ while True:
|
|
| 121 |
history=histroy,
|
| 122 |
temperature=0.95,
|
| 123 |
top_p=0.9,
|
| 124 |
-
top_K=50,
|
| 125 |
)
|
| 126 |
print(response)
|
| 127 |
```
|
| 128 |
|
| 129 |
### 其他问题
|
| 130 |
-
本模型基于
|
|
|
|
|
|
|
| 131 |
|
| 132 |
-
|
| 133 |
|
| 134 |
-
|
|
|
|
| 14 |
|
| 15 |
代码部分在:https://github.com/ViperEkura/KHAOSZ/tree/main
|
| 16 |
|
| 17 |
+
代码遵循 apache-2.0 协议, 使用时请注明代码来源
|
| 18 |
|
| 19 |
- **设备选择**:当前代码默认使用CUDA进行训练
|
| 20 |
- **性能优化**:代码中设置了`dtype=torch.bfloat16`来启用训练,这有助于提高训练速度和降低显存消耗,但需确保硬件支持此特性。
|
| 21 |
+
- **语言支持**:该模型目前支持在中文和英文数据集上训练, 在训练分词器时没有加入其他语言的文本,BBPE分词器不会存在OOV问题,但是对别的语言支持比较差
|
| 22 |
|
| 23 |
### 1. 如何训练
|
| 24 |
|
|
|
|
| 57 |
|
| 58 |
--batch_size:指定每个批次的样本数量。
|
| 59 |
|
| 60 |
+
--n_iter_step: 多少batch迭代一步
|
| 61 |
+
|
| 62 |
--max_lr: 指定过程中最大的学习率(学习率采用的是预热 + 余弦衰减)
|
| 63 |
|
| 64 |
--n_iter_ckpt:指定每多少迭代次数保存一次检查点。
|
|
|
|
| 69 |
|
| 70 |
--resume_dir: 恢复训练的checkpoint路径
|
| 71 |
|
| 72 |
+
训练过程中,您可以在终端中查看训练日志(train_log.txt),了解训练进度、损失值等信息。
|
| 73 |
检查点文件会保存在指定的检查点目录中,您可以使用这些检查点文件来恢复训练或进行评估。
|
| 74 |
|
| 75 |
|
|
|
|
| 95 |
history=histroy,
|
| 96 |
temperature=0.95,
|
| 97 |
top_p=0.9,
|
|
|
|
| 98 |
):
|
| 99 |
print(response[response_size:], end="")
|
| 100 |
response_size = len(response)
|
|
|
|
| 122 |
history=histroy,
|
| 123 |
temperature=0.95,
|
| 124 |
top_p=0.9,
|
|
|
|
| 125 |
)
|
| 126 |
print(response)
|
| 127 |
```
|
| 128 |
|
| 129 |
### 其他问题
|
| 130 |
+
本模型基于20层的transformer,参数大致设置如`config.json`,参数大小为4亿(0.40b)
|
| 131 |
+
|
| 132 |
+
模型采用权重绑定, embedding层的权重和最后线性层的权重是共享的(比较小的模型都采用这种方式节省参数大小, 因为不采用权重绑定, embedding层假设有10000单词, 将会占用 10000 * 1024 = 102,400,000 参数, 也就是 0.1b 参数, 因为词表会占用太多的参数, 所以采用权重绑定是小模型的通用方法)
|
| 133 |
|
| 134 |
+
由于模型参数相对较少,在某些任务上可能会出现性能不足的情况,比如对复杂语言现象的理解能力可能不如更大规模的模型。此外,较小的模型也可能更容易过拟合训练数据,导致泛化能力较差。不过,这也意味着该模型可以在较低配置的硬件上运行,并且训练时间相对较短。
|
| 135 |
|
| 136 |
+
另外目前给定的权重仅仅完成了 preTrain + SFT (也就是说训练流程并非完整的), 之后在完成DPO/PPO 训练之后会更新权重和readme
|