MicroLlama项目介绍
MicroLlama是一个轻量级的大型语言模型项目,由个人开发者keeeeenw发起。与许多大企业追求越来越大的模型相反,MicroLlama着眼于建立一个小而精致的模型,其主要目标是在有限的预算和资源下实现模型的预训练。
项目背景和目标
MicroLlama项目的目标是预训练一个300M规模的Llama模型,同时满足以下条件:
- 总预算不得超过500美元。
- 必须使用完全开源的数据集和模型从头开始预训练一个大语言模型。
- 不能微调模型,也不能使用像GPT-4这样的现有语言模型生成训练数据。
模型详细信息
MicroLlama项目受到了TinyLlama的启发,这是一个开源项目,目标是预训练一个1.1.1B的Llama模型。MicroLlama目前进行了四天的训练,已花费280美元云计算费用和3美元的AWS S3存储费用,并使用50B个tokens对300M Llama模型进行了训练。
主要的模型配置继承自TinyLlama:
block_size=2048
vocab_size=32000
n_layer=12
n_head=16
- 其他参数如
rotary_percentage
和intermediate_size
等均经过精心设计。
项目进展和修改
为了实现上述目标,项目对TinyLlama进行了多处修改:
- 将原来的模型缩小至300M,并专注于Slimpajama数据集。
- 移除了Starcoderdata数据集,以便模型更集中于Slimpajama,这也意味着模型未经微调可能不适合编码任务。
- 增加了在下载数据同时处理和标记的能力,从而节省时间。
- 提供了多种辅助脚本和Python代码。
使用说明
用户可以通过以下步骤安装和运行MicroLlama:
- 安装依赖:
pip install transformers pip install torch
- 使用示例代码生成文本。
模型评估
MicroLlama使用标准的lm-evaluation-harness进行了实验评估。评估结果显示,MicroLlama虽小于TinyLlama,但在多个数据集上的表现与其接近,并优于常见的小型LLM如BERT。
模型 | 预训练Tokens | HellaSwag | Obqa | WinoGrande | ARC_c | ARC_e | boolq | piqa | 平均 |
---|---|---|---|---|---|---|---|---|---|
MicroLlama | 50B | 34.30 | 30.60 | 51.54 | 23.29 | 39.06 | 53.15 | 64.58 | 42.36 |
BERT大写无引号版本 | N/A | 24.53 | 26.20 | 49.80 | 25.68 | 25.08 | 40.86 | 47.66 | 34.26 |
TinyLlama-1.1B-Chat-v0.1 | 503B | 53.81 | 32.20 | 55.01 | 28.67 | 49.62 | 58.04 | 69.64 | 49.57 |
TinyLlama-1.1B中间步骤-1431k-3T | 3T | 59.20 | 36.00 | 59.12 | 30.12 | 55.25 | 57.83 | 73.29 | 52.99 |
通过评估结果可以看出,MicroLlama是一个小型LLM的良好起点,可用于句子转换、打分和轻量级聊天机器人等任务。
结论
MicroLlama项目在预算有限的情况下,成功实现了小规模模型的预训练。通过对开源资源的充分利用,它为无须巨额投资的模型开发提供了新的思路和方向。