TinyLlama

TinyLlama

3万亿token训练的小型1.1B参数语言模型

TinyLlama是一个使用3万亿token预训练的1.1B参数语言模型。它与Llama 2架构兼容,可集成到现有Llama项目中。TinyLlama体积小巧,适用于计算和内存受限的场景。该项目开源了预训练和微调代码,具有高效的训练和推理性能。TinyLlama可应用于推测解码、边缘计算和实时对话等领域。

TinyLlama语言模型AI预训练开源项目模型评估Github
<div align="center">

TinyLlama-1.1B

English | 中文

聊天演示 | Discord

</div>

TinyLlama项目旨在预训练一个1.1B参数的Llama模型,训练数据量为3万亿个token。通过一些适当的优化,我们可以在"仅仅"90天内使用16个A100-40G GPU完成这一目标🚀🚀。训练已于2023年9月1日开始。

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/2f437da0-584e-4e25-ad18-485dc8da343c.png" width="300"/> </div>

我们采用了与Llama 2完全相同的架构和分词器。这意味着TinyLlama可以即插即用于许多基于Llama的开源项目。此外,TinyLlama仅有1.1B参数,非常紧凑。这种紧凑性使其能够满足许多对计算和内存占用有严格限制的应用需求。

新闻

  • 2023-12-18:添加了两个说明 12 解释了训练曲线的变化、项目进度和错误修复。
  • 2023-10-03:添加了使用llama.cpp进行推测解码的示例。请查看 speculative_decoding/README.md
  • 2023-10-02:1. 刚刚发布了1T token的检查点。2. 我们在这里记录了所有中间检查点。
  • 2023-09-28:添加了Discord服务器。
  • 2023-09-18:1. 我们添加了一个聊天演示,让您可以立即试用TinyLlama-Chat-V0.1。
  • 2023-09-16:1. 我们发布了在503B token上训练的中间检查点。2. 我们发布了一个在OpenAssistant上微调的聊天模型,并添加了简单的微调脚本。3. 在EVAL.md中添加并记录了更多评估基准。

评估

您可以在EVAL.md中找到TinyLlama的评估结果。

发布计划

我们将按照以下计划发布中间检查点。

基础模型:

日期HF 检查点Token数步骤常识平均分
2023-09-01Pythia-1.0B300B143k48.30
2023-09-04TinyLlama-1.1B-intermediate-step-50k-105b105B50k46.11
2023-09-16TinyLlama-1.1B-intermediate-step-240k-503b503B240K48.28
2023-10-01TinyLlama-1.1B-intermediate-step-480k-1T1T480k50.22
2023-11-04TinyLlama-1.1B-intermediate-step-715k-1.5T1.5T715k51.28
2023-11-20TinyLlama-1.1B-intermediate-step-955k-2T2T955k51.64
2023-12-11TinyLlama-1.1B-intermediate-step-1195k-2.5T2.5T1195k53.86
2023-12-28TinyLlama-1.1B-intermediate-step-1431k-3T3T1431k52.99

我们正在撰写一份说明,提供从2T到2.5T检查点显著改进的可能解释(这与bos_id问题有关)

聊天模型:

日期HF 检查点Token数步骤常识平均分
2023-09-16TinyLlama-1.1B-Chat-V0.1503B240K49.57
2023-10-1TinyLlama-1.1B-Chat-V0.31T480K51.36
2023-11-04TinyLlama-1.1B-Chat-V0.41.5T715K52.30

请注意,基础模型的学习率尚未降低,因此我们建议您也使用微调后的聊天模型。

同时,您可以在这里实时跟踪交叉熵损失。

潜在用途

小而强大的语言模型在许多应用中都很有用。以下是一些潜在用途:

  • 辅助更大模型的推测解码。(参见Andrej Karpathy的教程
  • 部署在内存和计算能力受限的边缘设备上,用于诸如无需互联网连接的实时机器翻译等功能(4位量化的TinyLlama-1.1B的权重仅占用637 MB)。
  • 在视频游戏中实现实时对话生成。

此外,我们的代码可以作为对预训练5亿以下参数语言模型感兴趣的爱好者的参考,无需过早深入研究Megatron-LM

训练细节

以下是我们训练设置的一些详细信息:

设置描述
参数1.1B
注意力变体分组查询注意力
模型大小层数: 22, 头数: 32, 查询组数: 4, 嵌入大小: 2048, 中间大小 (Swiglu): 5632
序列长度2048
批量大小200万个token (2048 * 1024)
学习率4e-4
学习率调度余弦退火,2000步预热。参见Issue 27了解一个小bug
训练数据Slimpajama & Starcoderdata
数据预处理排除了Slimpajama的GitHub子集;从Starcoderdata中抽样所有代码
合并数据集大小约950B个token
训练期间的总token数3万亿(略多于3个周期/1430k步)
自然语言与代码比例7:3
硬件16个A100-40G GPU

极速快

我们的代码库支持以下功能:

  • 使用FSDP进行多GPU和多节点分布式训练。
  • flash attention 2。
  • 融合层归一化。
  • 融合swiglu。
  • 融合交叉熵损失。
  • 融合旋转位置编码。

致谢:flash attention 2、融合层归一化、融合交叉熵损失和融合旋转位置编码来自FlashAttention仓库。融合swiglu来自xformers

得益于这些优化,我们在每个A100-40G GPU上实现了每秒24k个token的吞吐量,这相当于56%的模型浮点运算利用率,且不使用激活检查点(我们预计在A100-80G上MFU会更高)。这意味着您可以在32小时内用8个A100训练一个符合chinchilla最优的TinyLlama(1.1B参数,22B token)。这些优化还大大减少了内存占用,让我们能够将1.1B参数的模型塞进40GB的GPU内存,并以每GPU 16k token的批量大小进行训练。您也可以在3090/4090 GPU上预训练TinyLlama,只需使用更小的每GPU批量大小。 下面是我们代码库与Pythia和MPT训练速度的比较。

模型在300B token上花费的A100 GPU小时数
TinyLlama-1.1B3456
Pythia-1.0B4830
MPT-1.3B7920

<small> Pythia的数据来自他们的论文。MPT的数据来自这里,其中他们说MPT-1.3B"在440个A100-40GB上训练了大约半天",处理了200B个token。 </small>

TinyLlama是一个相对较小的模型,使用分组查询注意力,这意味着它在推理时也很快。以下是我们测量的一些吞吐量:

框架设备设置吞吐量(token/秒)
Llama.cppMac M2 16GB RAM批量大小=1; 4位推理71.8
vLLMA40 GPU批量大小=100, n=107094.5

预训练

有关如何预训练TinyLlama的说明,请参阅PRETRAIN.md

微调

我们在 sft 中包含了一个简单的全参数微调和推理脚本。我们的 V0.1 聊天模型就是使用这个脚本进行微调的。我们使用的微调数据集是 openassistant-guanaco。 对于 RAM 小于 4GB 的微调,我们建议您参考 Qlorabitsandbytes 仓库。 我们没有进行广泛的超参数调优,也没有选择更高性能的微调数据集。我们希望社区能够探索 TinyLlama 的微调,并开发出更好的聊天模型。我将在此仓库中包含社区微调的模型。

待办事项

本项目仍在积极开发中。我们是一个非常小的团队。非常感谢社区的反馈和贡献。以下是我们计划进行的一些工作:

  • 添加在其他数据集上预训练的脚本。
  • 序列长度外推。
  • 测试 Llama-2-7B 的推测性解码。
  • 测试 RTX 3090/4090 的吞吐量。
  • 添加微调脚本。
  • 对下游任务进行适当的模型评估。
  • 在手机上运行的演示。
  • 探索检索增强。

致谢

本仓库基于 lit-gptflash-attention 构建。如果您还不了解这些优秀的开源项目,一定要去探索一下!

@online{lit-gpt,
  author    = {Lightning AI},
  title     = {Lit-GPT},
  url       = {https://github.com/Lightning-AI/lit-gpt},
  year      = {2023},
}
@article{dao2023flashattention2,
  title     ={Flash{A}ttention-2: Faster Attention with Better Parallelism and Work Partitioning},
  author    ={Dao, Tri},
  year      ={2023}
}

引用

本项目目前由新加坡科技设计大学 StatNLP 研究组的 Peiyuan Zhang *、Guangtao Zeng *、Tianduo WangWei Lu 共同贡献。

如果您认为我们的工作有价值,请引用:

@misc{zhang2024tinyllama,
      title={TinyLlama: An Open-Source Small Language Model}, 
      author={Peiyuan Zhang and Guangtao Zeng and Tianduo Wang and Wei Lu},
      year={2024},
      eprint={2401.02385},
      archivePrefix={arXiv},
      primaryClass={cs.CL}
}

常见问题

1. 为什么对一个 1.1B 的模型进行如此长时间的预训练是有意义的?这是否与 Chinchilla 缩放定律相矛盾?

上图是 Llama 2 论文中的训练损失曲线。这里我引用该论文的一段话:"我们观察到,在 2T 个 Token 的预训练之后,模型仍然没有显示出任何饱和的迹象"。这就是为什么我们认为对一个 1.1B 的模型进行 3T 个 Token 的预训练是合理的。即使损失曲线最终不会下降,我们仍然可以研究饱和现象并从中学到一些东西。

2. "饱和"是什么意思?

这张图来自 Pythia 论文,显示了 LAMBADA 准确率随总训练 Token 数(300B)的变化。"饱和"一词特指 70M 和 160M 模型。值得注意的是,即使是 410M 模型在 300B Token 时也没有饱和,它仍然呈现上升趋势,类似于更大模型的趋势。

Star 历史

Star 历史图表

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多