TinyLlama-1.1B-intermediate-step-715k-1.5T 项目介绍
TinyLlama-1.1B 是一个旨在通过训练庞大的语言模型来推动开源自然语言处理技术发展的项目。该项目的目标是在 3 万亿个标记(tokens)上预训练一个含有 11 亿参数的 Llama 模型。经过恰当的优化,团队期望能够在短短90天内完成此目标,这需要使用16个A100-40G的GPU进行并行训练。训练过程已于2023年9月1日正式启动。
项目背景与目标
TinyLlama 在设计上完全继承了 Llama 2 的架构及其分词器。这意味着该模型可以轻松融入已在 Llama 平台上构建的多种开源项目中使用。TinyLlama 的一大特点就是它的紧凑性,其仅包含 1.1B 的参数,这使得它非常适合用于那些对计算能力和内存占用有限制的应用场景。
模型现状
当前讨论的版本属于中间检查点,完成了 715K 步的训练,总共处理了 1.49T 个标记。尽管如此,该版本并不推荐直接用于推理,这是因为它仅作为开发期间的一个中间阶段。
使用方法
使用 TinyLlama 模型需要transformers
库(版本不低于 4.31)。通过以下代码片段,可以初步尝试文本生成工作:
from transformers import AutoTokenizer
import transformers
import torch
model = "PY007/TinyLlama-1.1B-intermediate-step-715k-1.5T"
tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = transformers.pipeline(
"text-generation",
model=model,
torch_dtype=torch.float16,
device_map="auto",
)
sequences = pipeline(
'The TinyLlama project aims to pretrain a 1.1B Llama model on 3 trillion tokens...',
do_sample=True,
top_k=10,
num_return_sequences=1,
repetition_penalty=1.5,
eos_token_id=tokenizer.eos_token_id,
max_length=500,
)
for seq in sequences:
print(f"Result: {seq['generated_text']}")
进一步的信息可以访问TinyLlama 的 GitHub 页面。
评估表现
根据已完成的训练数据,TinyLlama 的表现情况如下表所示:
模型 | 预训练标记数 | HellaSwag | Obqa | WinoGrande | ARC_c | ARC_e | boolq | piqa | 平均值 |
---|---|---|---|---|---|---|---|---|---|
Pythia-1.0B | 300B | 47.16 | 31.40 | 53.43 | 27.05 | 48.99 | 60.83 | 69.21 | 48.30 |
TinyLlama-1.1B-intermediate-step-50K-104b | 103B | 43.50 | 29.80 | 53.28 | 24.32 | 44.91 | 59.66 | 67.30 | 46.11 |
TinyLlama-1.1B-intermediate-step-240k-503b | 503B | 49.56 | 31.40 | 55.80 | 26.54 | 48.32 | 56.91 | 69.42 | 48.28 |
TinyLlama-1.1B-intermediate-step-480k-1007B | 1007B | 52.54 | 33.40 | 55.96 | 27.82 | 52.36 | 59.54 | 69.91 | 50.22 |
TinyLlama-1.1B-intermediate-step-715k-1.5T | 1.49T | 53.68 | 35.20 | 58.33 | 29.18 | 51.89 | 59.08 | 71.65 | 51.29 |
综上所述,TinyLlama 项目依旧处于发展中,但通过现有数据可以看出,其逐步提高的效果展示了模型在多个自然语言处理任务中的潜力。