模型简介
模型特点
模型能力
使用案例
license: llama2 language:
- zh
- en
Colossal-LLaMA-2-7B
目录
模型介绍
Colossal-AI团队推出了开源模型Colossal-LLaMA-2-7B-base。该模型基于LLaMA-2,经过约85亿token的持续预训练,耗时15小时,使用了64块A800 GPU。以不到1000美元的成本,您可以获得与花费数百万美元从头预训练相似的结果。该模型遵循LLaMA-2许可证和Apache 2.0许可证无额外商业使用限制。此解决方案也可用于构建特定领域知识或任务的模型。
Colossal-LLaMA-2-7B-base支持中英双语,拥有4096 token的上下文窗口。在标准中英文评估指标(如C-Eval和MMLU等)上,与同等规模模型相比表现卓越。
使用方法
使用Transformers加载Colossal-LLaMA-2-7B-base模型的代码如下:
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("hpcai-tech/Colossal-LLaMA-2-7b-base", device_map="auto", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("hpcai-tech/Colossal-LLaMA-2-7b-base", trust_remote_code=True)
input = "明月松间照,\n\n->\n\n"
inputs = tokenizer(input, return_tensors='pt')
inputs = inputs.to('cuda:0')
pred = model.generate(**inputs,
max_new_tokens=512,
do_sample=True,
temperature=0.3,
top_k=50,
top_p=0.95,
num_return_sequences=1)
print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True)[len(input):])
性能评估
性能评估
我们在4个数据集上进行了全面评估,并将Colossal-Llama-2-7b-base模型与多个模型进行了比较。
- 对于MMLU,我们使用5-shot,并根据第一个预测token的logits计算分数。
- 对于CMMLU,我们使用5-shot,并根据第一个预测token的logits计算分数。
- 对于AGIEval,我们使用5-shot,仅计算四选一问题的分数,使用精确匹配和第一个预测token的logits的组合指标。如果精确匹配或第一个预测token的logits任一正确,模型将获得分数。
- 对于GAOKAO-Bench,我们使用0-shot,仅计算四选一问题的分数,基于第一个预测token的logits。
- 所有数据集的生成配置为贪婪搜索。
- 我们还提供了CEval最新排行榜或模型官方仓库中的分数。
更多关于指标的详细信息,请参见Metrics。
主干模型 | 消耗的Token数 | MMLU | CMMLU | AGIEval | GAOKAO | CEval | ||
---|---|---|---|---|---|---|---|---|
- | - | 5-shot | 5-shot | 5-shot | 0-shot | 5-shot | ||
Baichuan-7B | - | 1.2T | 42.32 (42.30) | 44.53 (44.02) | 38.72 | 36.74 | 42.80 | |
Baichuan2-7B-Base | - | 2.6T | 46.97 (54.16) | 57.67 (57.07) | 45.76 | 52.60 | 54.00 | |
ChatGLM-6B | - | 1.0T | 39.67 (40.63) | 41.17 (-) | 40.10 | 36.53 | 38.90 | |
ChatGLM2-6B | - | 1.4T | 44.74 (45.46) | 49.40 (-) | 46.36 | 45.49 | 51.70 | |
InternLM-7B | - | - | 46.70 (51.00) | 52.00 (-) | 44.77 | 61.64 | 52.80 | |
Qwen-7B (原版) | - | 2.2T | 54.29 (56.70) | 56.03 (58.80) | 52.47 | 56.42 | 59.60 | |
Qwen-7B | - | 2.4T | 58.33 (58.20) | 62.54 (62.20) | 64.34 | 74.05 | 63.50 | |
Llama-2-7B | - | 2.0T | 44.47 (45.30) | 32.97 (-) | 32.60 | 25.46 | - | |
Linly-AI/Chinese-LLaMA-2-7B-hf | Llama-2-7B | 1.0T | 37.43 | 29.92 | 32.00 | 27.57 | - | |
wenge-research/yayi-7b-llama2 | Llama-2-7B | - | 38.56 | 31.52 | 30.99 | 25.95 | - | |
ziqingyang/chinese-llama-2-7b | Llama-2-7B | - | 33.86 | 34.69 | 34.52 | 25.18 | 34.2 | |
TigerResearch/tigerbot-7b-base | Llama-2-7B | 0.3T | 43.73 | 42.04 | 37.64 | 30.61 | - | |
LinkSoul/Chinese-Llama-2-7b | Llama-2-7B | - | 48.41 | 38.31 | 38.45 | 27.72 | - | |
FlagAlpha/Atom-7B | Llama-2-7B | 0.1T | 49.96 | 41.10 | 39.83 | 33.00 | - | |
Colossal-LLaMA-2-7b-base | Llama-2-7B | 0.0085T | 53.06 | 49.89 | 51.48 | 58.82 | 50.20 |
括号中的分数对应模型官方仓库中的分数。
对于ChatGLM模型,我们使用零-shot。
在MMLU数据集上评估Qwen-7B时,提示为“xxx Answer:”(移除“:”后的空格),我们计算Qwen-7B在“A”、“B”、“C”和“D”上的logits。Qwen-7B的原版和更新版都倾向于比其他模型更加确定性。例如,“A”的logits可能是
-inf
,softmax结果精确为0
。对于其他模型和其他数据集,我们计算“A”、“B”、“C”和“D”上的logits。
❗️ 更多关于评估方法和结果复现的详细信息,请参考ColossalEval。
技术洞见
为了增强LLaMA-2理解和生成中文内容的能力,Colossal-AI团队提出使用中英文语料库继续预训练LLaMA-2模型。
数据
像LLaMA-2这样的大型语言模型已经通过高质量异构数据集的混合训练取得了有希望的结果。增强LLaMA-2在中文语料库上的表现,同时保持其在英语上的熟练程度,关键取决于两个关键因素:数据集组成(包括中英文内容)和每个组成部分的质量。
下图展示了Colossal-LLaMA-2的数据处理流程。
❗️重要:我们将很快开源我们的数据处理工具包,敬请期待!
分词器
原始的LLaMA-2词汇表中包含的中文字符不足一千个,因此无法有效编码全面的中文文本。其次,字节token的使用对Transformer编码器捕捉中文字符的语义细微差别提出了挑战。
为了解决上述问题,我们将LLaMA-2的词汇表从32,000扩展到69,104。为了使LLaMA-2模型适应Colossal-LLaMA-2的分词器,我们通过计算原始LLaMA-2嵌入的平均值来初始化新词嵌入,然后将这些新行附加到原始嵌入矩阵的末尾。
扩展词汇量的优势:
- 提高字符串序列编码的压缩率。
- 增强信息的完整性。
- 使编码序列包含更多有价值的信息,从而理论上增强篇章级编码的能力。
低资源设置下大词汇量的优势:
- 大量未使用的token可归因于有限的训练数据集,过多的token可能未被有效学习。
- 过度的词汇扩展导致嵌入相关参数增加,内存使用量上升,进而影响训练效率。
为了平衡两方面,我们最终构建了大小为69,104的词汇表。下表展示了7B级别各种模型的比较。
模型 | 词汇量大小 | 压缩率 | 样本平均长度(token级别) |
---|---|---|---|
Colossal-LLaMA-2 | 69104 | 0.659 | 73.682 |
LLaMA-2-7B | 32000 | 1.205 | 134.689 |
Atom-7B | 65000 | 0.634 | 70.915 |
Baichuan-7B | 64000 | 0.678 | 75.857 |
Baichuan2-7B-base | 125696 | 0.570 | 63.761 |
Chatglm2-6B | 64789 | 0.645 | 72.178 |
InternLM-7B | 103168 | 0.566 | 63.349 |
Qwen-7B | 151643 | 0.578 | 64.703 |
Tigerbot-7B-base | 60515 | 0.630 | 70.515 |
Yayi-7B-llama2 | 32005 | 1.214 | 135.689 |
Chinese-llama-2-7b | 55296 | 0.668 | 74.690 |
Chinese-Falcon-7B | 90046 | 0.669 | 74.858 |
LinkSoul-Chinese-Llama-2-7b | 40076 | 0.958 | 107.089 |
Ziya-LLaMA-13B-v1.1 | 39410 | 0.958 | 107.074 |
训练日志
以下是我们实验的训练日志:
训练策略
多阶段训练
为了提升模型性能并充分发挥原始LLaMA-2的潜力,我们开发了一种多阶段训练策略。该策略旨在通过一系列阶段系统地释放模型的能力。
因此,我们将训练过程分为三个阶段:
- 大规模预训练阶段(由LLaMA-2执行):此初始阶段旨在从零开始建立模型的基础能力。需要使用不少于1万亿token的庞大数据集。
- 中文知识注入阶段:在此阶段,我们将中文知识引入模型。需要访问富含全面中文相关知识的高质量数据集。
- 知识回放阶段:通过问答(QA)机制回放知识,涵盖中英文领域。
完成这一多阶段训练过程后,模型在中英文基准测试中的表现均有显著提升。
下图展示了训练Colossal-LLaMA-2的三个阶段。
基于桶的训练
我们的实验表明,训练数据集中的分布以及各种主题相关数据点的排列方式显著影响模型的整体性能,特别是在LLaMA-2的持续预训练背景下。
为了实现更平衡的分布并控制数据集的顺序,我们采用了一种方法,将每个子数据集划分为离散的箱。然后将这些箱组合起来构建单独的数据桶,每个子数据集贡献一个箱。
更多详情,请参阅我们的Github。
局限性
Colossal-LLaMA-2-7B是LLaMA-2的衍生模型,使用时存在风险。迄今为止的测试仅在中英文语言中进行,重要的是要承认它无法涵盖所有可能的情况。与其他LLM一样,无法提前预测Colossal-LLaMA-2-7B-base的潜在结果。在某些情况下,Colossal-LLaMA-2-7B-base可能生成不准确、有偏见或其他有害的响应。因此,在部署任何由Colossal-LLaMA-2-7B-base驱动的应用程序之前,开发人员必须进行安全测试和调优,以满足其应用程序的特定要求。
引用
@article{bian2021colossal,
title={Colossal-AI: A Unified Deep Learning System For Large-Scale Parallel Training},
author={Bian, Zhengda and Liu, Hongxin and Wang, Boxiang and Huang, Haichen and Li, Yongbin and Wang, Chuanrui and Cui, Fan and You, Yang},
journal={arXiv preprint arXiv:2110.14883},
year={2021}
}
@misc{touvron2023llama,
title={Llama 2: Open Foundation and Fine-Tuned Chat Models},
author={Hugo Touvron and Louis Martin and Kevin Stone and Peter Albert and Amjad Almahairi and Yasmine Babaei and Nikolay Bashlykov and Soumya Batra and Prajjwal Bhargava and Shruti Bhosale and Dan Bikel and Lukas Blecher and Cristian Canton Ferrer and Moya Chen and Guillem Cucurull and David Esiobu and Jude Fernandes and Jeremy Fu and Wenyin Fu and Brian Fuller and Cynthia Gao and Vedanuj Goswami and Naman Goyal and Anthony Hartshorn and Saghar Hosseini and Rui Hou and Hakan Inan and Marcin Kardas and Viktor Kerkez and Madian Khabsa and Isabel Kloumann and Artem Korenev and Punit Singh Koura and Marie-Anne Lachaux and Thibaut Lavril and Jenya Lee and Diana Liskovich and Yinghai Lu and Yuning Mao and Xavier Martinet and Todor Mihaylov and Pushkar Mishra and Igor Molybog and Yixin Nie and Andrew Poulton and Jeremy Reizenstein and Rashi Rungta and Kalyan Saladi and Alan Schelten and Ruan Silva and Eric Michael Smith and Ranjan Subramanian and Xiaoqing Ellen Tan and Binh Tang and Ross Taylor and Adina Williams and Jian Xiang Kuan and Puxin Xu and Zheng Yan and Iliyan Zarov and Yuchen Zhang and Angela Fan and Melanie Kambadur and Sharan Narang and Aurelien Rodriguez and Robert Stojnic and Sergey Edunov and Thomas Scialom},
year={2023},
eprint={2307.09288},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
@article{dao2023flashattention2,
title={Flash{A}ttention-2: Faster Attention with Better Parallelism and Work Partitioning},
author={Dao, Tri},
year={2023}
}


