Home

Awesome

<div align="center"> <img src="./assets/yayi_dark_small.png" alt="YAYI" style="width: 30%; display: block; margin: auto;"> <br>

Code License Data License Model License

[📖README] [🤗HF Repo] [🔗网页端]

中文 | English

</div> <!-- ## 目录 - [目录](#目录) - [介绍](#介绍) - [数据集地址](#数据集地址) - [模型地址](#模型地址) - [评测结果](#评测结果) - [推理](#推理) - [环境安装](#环境安装) - [Base 模型推理代码](#base-模型推理代码) - [模型微调](#模型微调) - [环境安装](#环境安装-1) - [全参训练](#全参训练) - [LoRA 微调](#lora-微调) - [预训练数据](#预训练数据) - [分词器](#分词器) - [Loss 曲线](#loss-曲线) - [相关协议](#相关协议) - [开源协议](#开源协议) - [引用](#引用) -->

更新

[2024.03.28] 所有模型和数据上传魔搭社区。

[2023.12.22] 我们发布了技术报告🔥🔥🔥YAYI 2: Multilingual Open-Source Large Language Models

介绍

YAYI 2 是中科闻歌研发的新一代开源大语言模型,包括 Base 和 Chat 版本,参数规模为 30B。YAYI2-30B 是基于 Transformer 的大语言模型,采用了超过 2 万亿 Tokens 的高质量、多语言语料进行预训练。针对通用和特定领域的应用场景,我们采用了百万级指令进行微调,同时借助人类反馈强化学习方法,以更好地使模型与人类价值观对齐。

本次开源的模型为 YAYI2-30B Base 模型。我们希望通过雅意大模型的开源来促进中文预训练大模型开源社区的发展,并积极为此做出贡献。通过开源,我们与每一位合作伙伴共同构建雅意大模型生态。

更多技术细节,欢迎阅读我们的技术报告🔥YAYI 2: Multilingual Open-Source Large Language Models

数据集地址

数据集名称大小🤗 HF模型标识下载地址魔搭模型标识下载地址
YAYI2 Pretrain Data500Gwenge-research/yayi2_pretrain_data数据集下载wenge-research/yayi2_pretrain_data数据集下载

模型地址

模型名称上下文长度🤗 HF模型标识下载地址魔搭模型标识下载地址
YAYI2-30B4096wenge-research/yayi2-30b模型下载wenge-research/yayi2-30b模型下载
YAYI2-30B-Chat4096wenge-research/yayi2-30b-chatComming soon...

评测结果

我们在多个基准数据集上进行了评测,包括 C-Eval、MMLU、 CMMLU、AGIEval、GAOKAO-Bench、GSM8K、MATH、BBH、HumanEval 以及 MBPP。我们考察了模型在语言理解、学科知识、数学推理、逻辑推理以及代码生成方面的表现。YAYI 2 模型在与其规模相近的开源模型中展现出了显著的性能提升。

<table id="myTable"> <!-- Table header --> <tr> <th></th> <th colspan="5" style="text-align: center;">学科知识</th> <th colspan="2" style="text-align: center;">数学</th> <th colspan="1" style="text-align: center;">逻辑推理</th> <th colspan="2" style="text-align: center;">代码</th> </tr> <tr> <th style="text-align: left;">模型</th> <th>C-Eval(val)</th> <th>MMLU</th> <th>AGIEval</th> <th>CMMLU</th> <th>GAOKAO-Bench</th> <th>GSM8K</th> <th>MATH</th> <th>BBH</th> <th>HumanEval</th> <th>MBPP</th> </tr> <tr> <td></td> <td style="text-align: center;">5-shot</td> <td style="text-align: center;">5-shot</td> <td style="text-align: center;">3/0-shot</td> <td style="text-align: center;">5-shot</td> <td style="text-align: center;">0-shot</td> <td style="text-align: center;">8/4-shot</td> <td style="text-align: center;">4-shot</td> <td style="text-align: center;">3-shot</td> <td style="text-align: center;">0-shot</td> <td style="text-align: center;">3-shot</td> </tr> <tr> <td><strong>MPT-30B</strong></td> <td style="text-align: center;">-</td> <td style="text-align: center;">46.9</td> <td style="text-align: center;">33.8</td> <td style="text-align: center;">-</td> <td style="text-align: center;">-</td> <td style="text-align: center;">15.2</td> <td style="text-align: center;">3.1</td> <td style="text-align: center;">38.0</td> <td style="text-align: center;">25.0</td> <td style="text-align: center;">32.8</td> </tr> <tr> <td><strong>Falcon-40B</strong></td> <td style="text-align: center;">-</td> <td style="text-align: center;">55.4</td> <td style="text-align: center;">37.0</td> <td style="text-align: center;">-</td> <td style="text-align: center;">-</td> <td style="text-align: center;">19.6</td> <td style="text-align: center;">5.5</td> <td style="text-align: center;">37.1</td> <td style="text-align: center;">0.6</td> <td style="text-align: center;">29.8</td> </tr> <tr> <td><strong>LLaMA2-34B</strong></td> <td style="text-align: center;">-</td> <td style="text-align: center;">62.6</td> <td style="text-align: center;">43.4</td> <td style="text-align: center;">-</td> <td style="text-align: center;">-</td> <td style="text-align: center;">42.2</td> <td style="text-align: center;">6.2</td> <td style="text-align: center;">44.1</td> <td style="text-align: center;">22.6</td> <td style="text-align: center;">33.0</td> </tr> <tr> <td><strong>Baichuan2-13B</strong></td> <td style="text-align: center;">59.0</td> <td style="text-align: center;">59.5</td> <td style="text-align: center;">37.4</td> <td style="text-align: center;">61.3</td> <td style="text-align: center;">45.6</td> <td style="text-align: center;">52.6</td> <td style="text-align: center;">10.1</td> <td style="text-align: center;">49.0</td> <td style="text-align: center;">17.1</td> <td style="text-align: center;">30.8</td> </tr> <tr> <td><strong>Qwen-14B</strong></td> <td style="text-align: center;">71.7</td> <td style="text-align: center;">67.9</td> <td style="text-align: center;">51.9</td> <td style="text-align: center;">70.2</td> <td style="text-align: center;">62.5</td> <td style="text-align: center;">61.6</td> <td style="text-align: center;">25.2</td> <td style="text-align: center;">53.7</td> <td style="text-align: center;">32.3</td> <td style="text-align: center;">39.8</td> </tr> <tr> <td><strong>InternLM-20B</strong></td> <td style="text-align: center;">58.8</td> <td style="text-align: center;">62.1</td> <td style="text-align: center;">44.6</td> <td style="text-align: center;">59.0</td> <td style="text-align: center;">45.5</td> <td style="text-align: center;">52.6</td> <td style="text-align: center;">7.9</td> <td style="text-align: center;">52.5</td> <td style="text-align: center;">25.6</td> <td style="text-align: center;">35.6</td> </tr> <tr> <td><strong>Aquila2-34B</strong></td> <td style="text-align: center;">98.5</td> <td style="text-align: center;">76.0</td> <td style="text-align: center;">43.8</td> <td style="text-align: center;">78.5</td> <td style="text-align: center;">37.8</td> <td style="text-align: center;">50.0</td> <td style="text-align: center;">17.8</td> <td style="text-align: center;">42.5</td> <td style="text-align: center;">0.0</td> <td style="text-align: center;">41.0</td> </tr> <tr> <td><strong>Yi-34B</strong></td> <td style="text-align: center;">81.8</td> <td style="text-align: center;">76.3</td> <td style="text-align: center;">56.5</td> <td style="text-align: center;">82.6</td> <td style="text-align: center;">68.3</td> <td style="text-align: center;">67.6</td> <td style="text-align: center;">15.9</td> <td style="text-align: center;">66.4</td> <td style="text-align: center;">26.2</td> <td style="text-align: center;">38.2</td> </tr> <tr> <td><strong>YAYI2-30B</strong></td> <td style="text-align: center;">80.9</td> <td style="text-align: center;">80.5</td> <td style="text-align: center;"><b>62.0</b></td> <td style="text-align: center;"><b>84.0</b></td> <td style="text-align: center;">64.4</td> <td style="text-align: center;"><b>71.2</b></td> <td style="text-align: center;">14.8</td> <td style="text-align: center;">54.5</td> <td style="text-align: center;"><b>53.1</b></td> <td style="text-align: center;"><b>45.8</b></td> </tr> </table>

我们使用 OpenCompass Github 仓库 提供的源代码进行了评测。对于对比模型,我们列出了他们在 OpenCompass 榜单上的评测结果,截止日期为 2023年12月15日。对于其他尚未在 OpenCompass 平台参与评测的模型,包括 MPT、Falcon 和 LLaMa 2,我们采用了 LLaMA 2 报告的结果。

推理

我们提供简单的示例来说明如何快速使用 YAYI2-30B 进行推理。该示例可在单张 A100/A800 上运行。

环境安装

  1. 克隆本仓库内容到本地环境
git clone https://github.com/wenge-research/YAYI2.git
cd YAYI2
  1. 创建 conda 虚拟环境
conda create --name yayi_inference_env python=3.8
conda activate yayi_inference_env

请注意,本项目需要 Python 3.8 或更高版本。

  1. 安装依赖
pip install transformers==4.33.1
pip install torch==2.0.1
pip install sentencepiece==0.1.99
pip install accelerate==0.25.0

Base 模型推理代码

>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> tokenizer = AutoTokenizer.from_pretrained("wenge-research/yayi2-30b", trust_remote_code=True)
>>> model = AutoModelForCausalLM.from_pretrained("wenge-research/yayi2-30b", device_map="auto", trust_remote_code=True)
>>> inputs = tokenizer('The winter in Beijing is', return_tensors='pt')
>>> inputs = inputs.to('cuda')
>>> pred = model.generate(
        **inputs, 
        max_new_tokens=256, 
        eos_token_id=tokenizer.eos_token_id, 
        do_sample=True,
        repetition_penalty=1.2,
        temperature=0.4, 
        top_k=100, 
        top_p=0.8
        )
>>> print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))

当您首次访问时,需要下载并加载模型,可能会花费一些时间。

模型微调

本项目支持基于分布式训练框架 deepspeed 进行指令微调,配置好环境并执行相应脚本即可启动全参数微调或 LoRA 微调。

环境安装

  1. 创建 conda 虚拟环境:
conda create --name yayi_train_env python=3.10
conda activate yayi_train_env
  1. 安装依赖:
pip install -r requirements.txt
  1. 安装 accelerate:
pip install --upgrade accelerate
  1. 安装 flashattention:
pip install flash-attn==2.0.3 --no-build-isolation
pip install triton==2.0.0.dev20221202  --no-deps 

全参训练

deepspeed --hostfile config/hostfile \
    --module training.trainer_yayi2 \
    --report_to "tensorboard" \
    --data_path "./data/yayi_train_example.json" \
    --model_name_or_path "your_model_path" \
    --output_dir "./output" \
    --model_max_length 2048 \
    --num_train_epochs 1 \
    --per_device_train_batch_size 1 \
    --gradient_accumulation_steps 1 \
    --evaluation_strategy "no" \
    --save_strategy "steps" \
    --save_steps 500 \
    --save_total_limit 10 \
    --learning_rate 5e-6 \
    --warmup_steps 2000 \
    --lr_scheduler_type cosine \
    --logging_steps 1 \
    --gradient_checkpointing True \
    --deepspeed "./config/deepspeed.json" \
    --bf16 True 

或者通过命令行启动:

bash scripts/start.sh

请注意,如需使用 ChatML 模版进行指令微调,可将命令中的 --module training.trainer_yayi2 修改为 --module training.trainer_chatml;如需或自定义 Chat 模版,可修改 trainer_chatml.py 的 Chat 模版中 system、user、assistant 三种角色的 special token 定义。以下是 ChatML 模版示例,如果训练时使用该模版或自定义模版,推理时也需要保持一致。

<|im_start|>system
You are a helpful and harmless assistant named YAYI.<|im_end|>
<|im_start|>user
Hello!<|im_end|>
<|im_start|>assistant
Hello! How can I assist you today?<|im_end|>
<|im_start|>user
1+1=<|im_end|>
<|im_start|>assistant
1+1 equals 2.<|im_end|>

LoRA 微调

bash scripts/start_lora.sh

预训练数据

分词器

Alt text

Loss 曲线

YAYI 2 模型的 loss 曲线见下图: loss

相关协议

开源协议

本项目中的代码依照 Apache-2.0 协议开源,社区使用 YAYI 2 模型和数据需要遵循《雅意 YAYI 2 模型社区许可协议》。若您需要将雅意 YAYI 2系列模型或其衍生品用作商业用途,请完整填写《雅意 YAYI 2 模型商用登记信息》,并发送至 yayi@wenge.com,收到邮件后我们将在3个工作日进行审核,通过审核后您将收到商用许可证,请您在使用过程中严格遵守《雅意 YAYI 2 模型商用许可协议》的相关内容,感谢您的配合!

引用

如果您在工作中使用了我们的模型,请引用我们的论文:

@article{YAYI 2,
  author    = {Yin Luo, Qingchao Kong, Nan Xu, et.al.},
  title     = {YAYI 2: Multilingual Open Source Large Language Models},
  journal   = {arXiv preprint arXiv:2312.14862},
  url       = {https://arxiv.org/abs/2312.14862},
  year      = {2023}
}

Star History

Star History Chart