https://github.com/datacanvasio/alaya
https://github.com/datacanvasio/alaya
Last synced: 12 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/datacanvasio/alaya
- Owner: DataCanvasIO
- License: apache-2.0
- Created: 2023-11-20T10:55:26.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-02-23T09:50:06.000Z (over 2 years ago)
- Last Synced: 2025-03-27T20:51:13.856Z (about 1 year ago)
- Language: Python
- Size: 725 KB
- Stars: 44
- Watchers: 8
- Forks: 3
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
九章云极DataCanvas重磅发布的元识大模型Alaya,在自主整理的高品质多语言数据集上训练了1.5T+ tokens。
首先在Hugging Face开源了7B-Base和7B-Chat版本,模型表现业内领先,知识丰富且富有时效性,最新数据覆盖2023年10月的内容。Alaya-7B-Chat具备多轮对话、自我认知和偏见拒答的能力,能够完成知识问答、代码编写、信息提取、阅读理解、创意写作等多项语言任务。
# 🔗 目录
- [预训练](#-预训练)
- 训练数据
- 训练参数
- Loss曲线
- [微调](#-微调)
- 训练数据
- [使用Alaya](#-使用Alaya)
- 依赖包安装
- Chat Model推理方法
- [新闻](#-新闻)
- [声明与协议](#-声明)
# 🧱 预训练
### 训练数据
Alaya使用了自研的大规模、多语言语料库,并采用文本去重和过滤这两种方法来控制数据品质。在文本去重上,我们采用了Fuzzy match 的策略,使用MinHash + LSH 筛选相似段落和文档,并结合编辑距离实现细致的文本去重。在针对低质量的文本数据过滤上,首先采用启发式的方法过滤掉部分不符合要求文本,然后训练了二分类器用于预测给定的网页文本是否适合,选择性丢弃一些数据。
Alaya预训练数据中,英文语料占比约60%,中文语料占比约30%,代码语料占比约10%。为了更好地控制不同类型的语料参与训练的比例,对所有语料都做了分类,各个类型的语料token占比细节如下图所示:
### 训练参数
训练Alaya的过程中,使用的超参如下:
| **Hidden Dimension** | 4096 |
|:------------------------------|:----------------------------------------------------------------------|
| **Number of Attention Heads** | 32 |
| **Number of Layers** | 32 |
| **Vocabulary Size** | 60160 |
| **Optimizer** | Decoupled AdamW ($\beta_1$=0.9, $\beta_2$ =0.95, $\epsilon$ = 1.0e-8) |
| **Max Learning Rate** | 1.2e-4 |
| **Min Learning Rate** | 1.2e-5 |
| **Scheduler** | Cosine Decay with Warmup |
| **Weight Decay** | 1.0e-5 |
| **Gradient Clip Norm** | 0.3 |
### Loss
# 🔗 微调
### 训练数据
Alaya-Chat基于Alaya-7B进行有监督微调(SFT),微调数据量达500k+条,包含多领域的指令和对话数据。经过模型初筛和人工精筛,大幅提高微调数据品质,并且基于偏见语料对模型做了Red Teaming拒答微调。由于目前中文SFT语料多为机器翻译/大模型翻译而成,人工精筛可以进一步将其中不符合中文语法或使用习惯的劣质数据剔除。具体的微调数据分布如下图:
+ HHH(Helpful, Honest, Harmless):问答模型最基础的属性就是为用户提供有帮助的、诚实的、无害健康的回答,我们精选了数万条3H对话数据。
+ 自我认知:模型对于自己的认知需要微调时提供相关信息,我们结合了人工编写和self-instruct两种方式,生成了3k+条多样的自我认知数据,从各个角度帮助模型学习Alaya的基本信息(i.e., 她的中文名、英文名...)。
+ 偏见拒答:一定比例的Red Team数据可以减少模型的毒性输出,对于用户的错误引导做出拒答。我们使用了5k+偏见Red Team数据,模型拒绝回答不合理问题的能力显著增强。但需要注意的是,这并不能彻底杜绝毒性输出,对于用户强硬的洗脑,模型还是可能被误导。
+ 通用知识:我们使用了针对知识内容问答的数据集,增强模型作为知识助手的能力,让模型能够给出有效知识含量更高的回答。
+ 逻辑推断:CoT可以帮助模型提升推理能力,我们使用了中英双语的CoT数据数万条,同时也整理了代码、数学等领域的逻辑推理对话数据集。
+ 角色扮演:日常使用场景中,角色扮演可以对模型回答的风格、领域等细节进行限制,一定程度上增强问答模型的垂直领域灵活性。
科学设计的微调数据能够显著提升模型的问答能力,更加了解用户想要怎样的回答,提供更有效的帮助,并且不会对其在预训练阶段学习到的知识造成明显的负面影响。
# 💬 使用Alaya
### 依赖包安装
```
git clone https://github.com/DataCanvasIO/Alaya.git
```
+ 推断依赖包: ```pip install -r requirments.txt```
+ 微调依赖包: ```pip install -r requirments_sft.txt```
### 推理方法
```
python -u inferrence.py [adapter_path]
```
+ ```model_path``` :模型文件路径
+ ```input_file``` :推断的输入```.txt```文件路径,每行为一个prompt
+ ```output_file``` :输出的```.json```文件路径
+ ```adapter_path```:如果要使用微调后的adpter,设置其路径
# 📰 新闻
+ 2023年11月21日,九章云极举办开源Alaya-7B系列大模型发布会。
# 🛎 声明
Alaya训练过程中已经采取多种措施进行数据的筛选与过滤,尽可能保证数据的合法合规,但由于神经网络的黑盒性质,即使训练数据相对干净,模型还是可能生成一些错误的、不可预见的或难以干预的回答。请谨慎使用!
请注意:
+ 请勿使用Alaya进行任何违反法律法规或是危害国家安全的活动
+ 请勿恶意引导Alaya生成不合适的回答
+ 请勿使用Alaya侵犯他人或团体的权益
+ Alaya生成的文本不代表训练数据一定包含该信息,且不代表九章云极的立场
对于使用模型而导致的任何问题,九章云极将不承担任何责任。
### 联系我们
如果您在使用的过程中发现任何问题,想要提供意见或建议,欢迎联系:sophia@zetyun.com。
# 📃 协议
Alaya使用Apache 2.0 Lisense,开放模型权重,允许商业用途。如果您的项目引用了我们的Alaya,请标明出处,可以使用以下citation:
```
@misc{datacanvas2023alaya,
author = {DataCanvas Ltd.},
title = {alaya},
year = {2023},
howpublished = {\url{https://github.com/DataCanvasIO/Alaya}},
}
```