模型简介
模型特点
模型能力
使用案例
🚀 TeenyTinyLlama-160m
TeenyTinyLlama-160m是一对用于巴西葡萄牙语文本生成的紧凑型模型,旨在研究为低资源语言开发语言模型所面临的挑战。
🚀 快速开始
大型语言模型(LLM)在自然语言处理领域取得了显著进展,但不同语言之间的发展并不均衡。大多数LLM是使用英语等资源丰富的语言进行训练的,而多语言模型的性能通常不如单语言模型。此外,多语言模型的一些特性有时会限制其生成的结果,例如计算需求和许可制度。因此,我们开发了 TeenyTinyLlama 模型:两个用于巴西葡萄牙语文本生成的紧凑型模型。
阅读我们的文章 点击此处。
✨ 主要特性
- 架构:基于Transformer的模型,通过因果语言建模进行预训练。
- 规模:1.62417408亿个参数。
- 上下文长度:2048个标记。
- 数据集:Pt-Corpus Instruct(62亿个标记)。
- 语言:葡萄牙语。
- 训练步数:45.8万步。
- GPU:1块NVIDIA A100-SXM4-40GB。
- 训练时间:约36小时。
- 排放量:5.6千克二氧化碳(德国)。
- 总能耗:15.5千瓦时。
本仓库包含用于训练该模型的 源代码。主要使用的库包括:
📦 安装指南
文档未提及安装步骤,故跳过该部分内容。
💻 使用示例
基础用法
from transformers import pipeline
generator = pipeline("text-generation", model="nicholasKluge/TeenyTinyLlama-160m")
completions = generator("Astronomia é a ciência", num_return_sequences=2, max_new_tokens=100)
for comp in completions:
print(f"🤖 {comp['generated_text']}")
高级用法
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
# Load model and the tokenizer
tokenizer = AutoTokenizer.from_pretrained("nicholasKluge/TeenyTinyLlama-160m", revision='main')
model = AutoModelForCausalLM.from_pretrained("nicholasKluge/TeenyTinyLlama-160m", revision='main')
# Pass the model to your device
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.eval()
model.to(device)
# Tokenize the inputs and pass them to the device
inputs = tokenizer("Astronomia é a ciência", return_tensors="pt").to(device)
# Generate some text
completions = model.generate(**inputs, num_return_sequences=2, max_new_tokens=100)
# Print the generated text
for i, completion in enumerate(completions):
print(f'🤖 {tokenizer.decode(completion)}')
📚 详细文档
预期用途
TeenyTinyLlama的主要预期用途是研究为低资源语言开发语言模型所面临的挑战。训练期间保存的检查点旨在为进行科学实验提供一个可控的环境。只要您的使用遵循Apache 2.0许可协议,您也可以进一步微调并调整TeenyTinyLlama以进行部署。如果您决定使用预训练的TeenyTinyLlama作为微调模型的基础,请自行进行风险和偏差评估。
超出范围的使用
TeenyTinyLlama不适合用于部署。它不是一个产品,不应该用于与人类的交互。
TeenyTinyLlama模型仅支持巴西葡萄牙语,不适合用于翻译或生成其他语言的文本。
TeenyTinyLlama尚未针对语言模型通常部署的下游上下文进行微调。
局限性
与几乎所有在从网络上抓取的大型文本数据集上训练的其他语言模型一样,TTL模型表现出的行为使其不能成为许多现实应用的现成解决方案,特别是那些需要事实性、可靠性、无毒性文本生成的应用。我们的模型存在以下问题:
- 幻觉:该模型可能会生成看似真实但实际上具有误导性或完全错误的内容,即幻觉。
- 偏差和毒性:该模型继承了训练数据中的社会和历史刻板印象。由于这些偏差,模型可能会生成有毒内容,即对个人、群体或社区有害、冒犯或不利的内容。
- 不可靠的代码:模型可能会生成不正确的代码片段和语句。这些代码生成不应被视为建议或准确的解决方案。
- 语言限制:该模型主要设计用于理解标准巴西葡萄牙语。其他语言可能会挑战其理解能力,导致潜在的误解或响应错误。
- 重复和冗长:模型可能会陷入重复循环(特别是在生成过程中重复惩罚设置得很低的情况下),或者生成与给定提示无关的冗长响应。
因此,尽管我们的模型以宽松的许可协议发布,但我们敦促用户在打算将这些模型用于实际应用时对其进行风险分析,并在模型与受众交互的应用中安排人工对模型的输出进行审核,确保用户始终知道他们正在与语言模型进行交互。
评估
在我们的训练过程中,两个模型都表现出了一致的收敛性。我们的评估曲线在任何时候都没有显示出过拟合或饱和的迹象。对于我们的4.6亿参数模型,我们有意在最佳点之后再训练了约75000步,以评估是否有饱和的迹象,但我们的评估结果始终更好。我们假设我们的模型训练不足,但如果进一步训练以超过Chinchilla最佳范围,可能会有所改进。
处理的标记数 | 困惑度 | 能耗(千瓦时) | 排放量(千克二氧化碳当量) |
---|---|---|---|
810万 | 20.49 | 9.40 | 3.34 |
16亿 | 16.90 | 18.82 | 6.70 |
24亿 | 15.43 | 28.59 | 10.16 |
32亿 | 14.64 | 38.20 | 13.57 |
40亿 | 14.08 | 48.04 | 17.07 |
49亿 | 13.61 | 57.74 | 20.52 |
57亿 | 13.25 | 67.32 | 23.92 |
65亿 | 12.87 | 76.84 | 27.30 |
73亿 | 12.57 | 86.40 | 30.70 |
81亿 | 12.27 | 96.19 | 34.18 |
90亿 | 11.96 | 106.06 | 37.70 |
98亿 | 11.77 | 115.69 | 41.31 |
基准测试
使用 语言模型评估工具(由 EleutherAI 开发)对基准进行评估。我们使用的LM-Evaluation-Harness中的任务由 Laiviet 进行了翻译。标有“*”的模型结果取自 开放大语言模型排行榜。
模型 | ARC | HellaSwag | MMLU | TruthfulQA | 平均 |
---|---|---|---|---|---|
Pythia - 4.1亿 | 24.83* | 41.29* | 25.99* | 40.95* | 33.26 |
TTL - 4.6亿 | 29.40 | 33.00 | 28.55 | 41.10 | 33.01 |
Bloom - 5.6亿 | 24.74* | 37.15* | 24.22* | 42.44* | 32.13 |
Xglm - 5.64亿 | 25.56 | 34.64* | 25.18* | 42.53 | 31.97 |
OPT - 3.5亿 | 23.55* | 36.73* | 26.02* | 40.83* | 31.78 |
TTL - 1.6亿 | 26.15 | 29.29 | 28.11 | 41.12 | 31.16 |
Pythia - 1.6亿 | 24.06* | 31.39* | 24.86* | 44.34* | 31.16 |
OPT - 1.25亿 | 22.87* | 31.47* | 26.02* | 42.87* | 30.80 |
GPorTuguese - 2 | 22.48 | 29.62 | 27.36 | 41.44 | 30.22 |
Gpt2 - small | 21.48* | 31.60* | 25.79* | 40.65* | 29.97 |
多语言GPT | 23.81 | 26.37* | 25.17* | 39.62 | 28.73 |
使用 EleutherAI语言模型评估工具的葡萄牙语实现(由 Eduardo Garcia 创建)对巴西葡萄牙语基准进行评估。
模型 | ASSIN2 RTE | ASSIN2 STS | BLUEX | ENEM | FAQUAD NLI | HateBR | OAB考试 | 平均 |
---|---|---|---|---|---|---|---|---|
Qwen - 18亿 | 64.83 | 19.53 | 26.15 | 30.23 | 43.97 | 33.33 | 27.20 | 35.03 |
TinyLlama - 11亿 | 58.93 | 13.57 | 22.81 | 22.25 | 43.97 | 36.92 | 23.64 | 31.72 |
TTL - 4.6亿 | 53.93 | 12.66 | 22.81 | 19.87 | 49.01 | 33.59 | 27.06 | 31.27 |
XGLM - 5.64亿 | 49.61 | 22.91 | 19.61 | 19.38 | 43.97 | 33.99 | 23.42 | 30.41 |
Bloom - 17亿 | 53.60 | 4.81 | 21.42 | 18.96 | 43.97 | 34.89 | 23.05 | 28.67 |
TTL - 1.6亿 | 53.36 | 2.58 | 21.84 | 18.75 | 43.97 | 36.88 | 22.60 | 28.56 |
OPT - 1.25亿 | 39.77 | 2.00 | 21.84 | 17.42 | 43.97 | 47.04 | 22.78 | 27.83 |
Pythia - 1.6亿 | 33.33 | 12.81 | 16.13 | 16.66 | 50.36 | 41.09 | 22.82 | 27.60 |
OLMo - 10亿 | 34.12 | 9.28 | 18.92 | 20.29 | 43.97 | 41.33 | 22.96 | 27.26 |
Bloom - 5.6亿 | 33.33 | 8.48 | 18.92 | 19.03 | 43.97 | 37.07 | 23.05 | 26.26 |
Pythia - 4.1亿 | 33.33 | 4.80 | 19.47 | 19.45 | 43.97 | 33.33 | 23.01 | 25.33 |
OPT - 3.5亿 | 33.33 | 3.65 | 20.72 | 17.35 | 44.71 | 33.33 | 23.01 | 25.15 |
GPT - 2 small | 33.26 | 0.00 | 10.43 | 11.20 | 43.52 | 33.68 | 13.12 | 20.74 |
GPorTuguese | 33.33 | 3.85 | 14.74 | 3.01 | 28.81 | 33.33 | 21.23 | 19.75 |
Samba - 11亿 | 33.33 | 1.30 | 8.07 | 10.22 | 17.72 | 35.79 | 15.03 | 17.35 |
微调比较
为了进一步评估我们模型的下游能力,我们决定对TTL模型在Poeta基准的一部分任务上采用基本的微调程序。为了进行比较,我们对 BERTimbau 模型应用了相同的程序,因为它们也是在巴西葡萄牙语上从头开始训练的LLM,并且与我们的模型规模相似。我们使用这些比较来评估我们的预训练运行是否产生了在用于下游应用时能够产生良好结果(这里的“良好”指“接近BERTimbau”)的LLM。
模型 | IMDB | FaQuAD - NLI | HateBr | Assin2 | AgNews | 平均 |
---|---|---|---|---|---|---|
BERTimbau - large | 93.58 | 92.26 | 91.57 | 88.97 | 94.11 | 92.10 |
BERTimbau - small | 92.22 | 93.07 | 91.28 | 87.45 | 94.19 | 91.64 |
TTL - 4.6亿 | 91.64 | 91.18 | 92.28 | 86.43 | 94.42 | 91.19 |
TTL - 1.6亿 | 91.14 | 90.00 | 90.71 | 85.78 | 94.05 | 90.34 |
所有显示的结果都是在训练集上微调模型后,在相应任务测试集上获得的最高准确率分数。所有微调运行都使用了相同的超参数,代码实现可以在我们微调模型的 模型卡片 中找到。
🔧 技术细节
文档未提及技术实现细节,故跳过该部分内容。
📄 许可证
TeenyTinyLlama-160m采用Apache License 2.0许可协议。有关更多详细信息,请参阅 LICENSE 文件。
引用方式 🤗
@misc{correa24ttllama,
title = {TeenyTinyLlama: open-source tiny language models trained in Brazilian Portuguese},
author = {Corr{\^e}a, Nicholas Kluge and Falk, Sophia and Fatimah, Shiza and Sen, Aniket and De Oliveira, Nythamar},
journal={arXiv preprint arXiv:2401.16640},
year={2024}
}
@misc{correa24ttllama,
doi = {10.1016/j.mlwa.2024.100558},
url = {https://www.sciencedirect.com/science/article/pii/S2666827024000343},
title = {TeenyTinyLlama: open-source tiny language models trained in Brazilian Portuguese},
author = {Corr{\^e}a, Nicholas Kluge and Falk, Sophia and Fatimah, Shiza and Sen, Aniket and De Oliveira, Nythamar},
journal={Machine Learning With Applications},
publisher = {Springer},
year={2024}
}
资金支持
本仓库是RAIES(Rede de Inteligência Artificial Ética e Segura)计划的一部分,该项目得到了巴西FAPERGS(Fundação de Amparo à Pesquisa do Estado do Rio Grande do Sul)的支持。



