模型简介
模型特点
模型能力
使用案例
🚀 TeenyTinyLlama-460m
TeenyTinyLlama-460m是一对用于巴西葡萄牙语文本生成的紧凑型模型,旨在研究低资源语言模型开发的挑战,为相关研究提供支持。
🚀 快速开始
你可以使用如下代码示例快速体验模型的文本生成功能:
基础用法
from transformers import pipeline
generator = pipeline("text-generation", model="nicholasKluge/TeenyTinyLlama-460m")
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-460m", revision='main')
model = AutoModelForCausalLM.from_pretrained("nicholasKluge/TeenyTinyLlama-460m", 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)}')
✨ 主要特性
- 专注低资源语言:针对巴西葡萄牙语进行优化,弥补低资源语言在大语言模型方面的不足。
- 模型规模紧凑:具有4.68亿参数,在资源受限的情况下也能高效运行。
- 训练数据丰富:基于62亿标记的Pt-Corpus Instruct数据集进行预训练。
- 上下文长度适中:支持2048个标记的上下文长度,能处理较复杂的文本输入。
📦 安装指南
文档未提及具体安装步骤,可参考相关库的官方文档进行安装,主要使用的库包括:
📚 详细文档
模型详情
- 架构:基于Transformer的模型,通过因果语言建模进行预训练。
- 规模:468,239,360个参数。
- 上下文长度:2048个标记。
- 数据集:Pt-Corpus Instruct(62亿标记)。
- 语言:葡萄牙语。
- 训练步数:1,200,000步。
- GPU:1块NVIDIA A100-SXM4-40GB。
- 训练时间:约280小时。
- 碳排放:41.1 KgCO2(德国)。
- 总能耗:115.69 kWh。
本仓库包含用于训练该模型的源代码。
预期用途
TeenyTinyLlama主要用于研究开发低资源语言模型相关的挑战。训练期间保存的检查点旨在为进行科学实验提供可控环境。只要使用符合Apache 2.0许可证,也可以对TeenyTinyLlama进行进一步微调并部署。如果你决定使用预训练的TeenyTinyLlama作为微调模型的基础,请自行进行风险和偏差评估。
非预期用途
- 不适合部署:它不是产品,不适合用于面向人类的交互。
- 语言局限性:仅适用于巴西葡萄牙语,不适合翻译或生成其他语言的文本。
- 未针对下游场景微调:未针对语言模型常见的下游上下文进行微调。
局限性
- 幻觉问题:可能生成看似真实但实际上具有误导性或完全错误的内容。
- 偏见和毒性:继承了训练数据中的社会和历史刻板印象,可能生成有害、冒犯性或对个人、群体或社区有害的内容。
- 代码不可靠:可能生成不正确的代码片段和语句,不应将其视为建议或准确的解决方案。
- 语言限制:主要设计用于理解标准巴西葡萄牙语,对其他语言的理解可能存在挑战,导致潜在的误解或错误响应。
- 重复和冗长:可能陷入重复循环(尤其是在生成时重复惩罚设置较低时)或生成与给定提示无关的冗长响应。
因此,尽管我们的模型以宽松的许可证发布,但我们敦促用户在将其用于实际应用时对这些模型进行风险分析,并在模型与受众交互的应用中安排人工审核输出,确保用户始终意识到他们正在与语言模型交互。
评估结果
在训练过程中,两个模型都显示出一致的收敛性。评估曲线从未显示过拟合或饱和的迹象。对于4.6亿参数的模型,我们有意在最佳点之后继续训练了约75,000步,以评估是否有饱和迹象,但评估结果始终更好。我们假设我们的模型训练不足,但如果进一步训练以超过Chinchilla最佳范围,可能会有所改进。
处理的标记数 | 困惑度 | 能耗 (kWh) | 碳排放 (KgCO2eq) |
---|---|---|---|
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 |
基准测试
使用Language Model Evaluation Harness(由EleutherAI开发)对模型进行评估。使用Laiviet翻译了我们使用的LM-Evaluation-Harness中的任务。标有“*”的模型结果取自Open LLM Leaderboard。
模型 | ARC | HellaSwag | MMLU | TruthfulQA | 平均 |
---|---|---|---|---|---|
Pythia-410m | 24.83* | 41.29* | 25.99* | 40.95* | 33.26 |
TTL-460m | 29.40 | 33.00 | 28.55 | 41.10 | 33.01 |
Bloom-560m | 24.74* | 37.15* | 24.22* | 42.44* | 32.13 |
Xglm-564M | 25.56 | 34.64* | 25.18* | 42.53 | 31.97 |
OPT-350m | 23.55* | 36.73* | 26.02* | 40.83* | 31.78 |
TTL-160m | 26.15 | 29.29 | 28.11 | 41.12 | 31.16 |
Pythia-160m | 24.06* | 31.39* | 24.86* | 44.34* | 31.16 |
OPT-125m | 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 |
Multilingual GPT | 23.81 | 26.37* | 25.17* | 39.62 | 28.73 |
使用葡萄牙语版的EleutherAI LM Evaluation Harness(由Eduardo Garcia创建)对巴西葡萄牙语基准进行评估。
模型 | ASSIN2 RTE | ASSIN2 STS | BLUEX | ENEM | FAQUAD NLI | HateBR | OAB Exams | 平均 |
---|---|---|---|---|---|---|---|---|
Qwen-1.8B | 64.83 | 19.53 | 26.15 | 30.23 | 43.97 | 33.33 | 27.20 | 35.03 |
TinyLlama-1.1B | 58.93 | 13.57 | 22.81 | 22.25 | 43.97 | 36.92 | 23.64 | 31.72 |
TTL-460m | 53.93 | 12.66 | 22.81 | 19.87 | 49.01 | 33.59 | 27.06 | 31.27 |
XGLM-564m | 49.61 | 22.91 | 19.61 | 19.38 | 43.97 | 33.99 | 23.42 | 30.41 |
Bloom-1b7 | 53.60 | 4.81 | 21.42 | 18.96 | 43.97 | 34.89 | 23.05 | 28.67 |
TTL-160m | 53.36 | 2.58 | 21.84 | 18.75 | 43.97 | 36.88 | 22.60 | 28.56 |
OPT-125m | 39.77 | 2.00 | 21.84 | 17.42 | 43.97 | 47.04 | 22.78 | 27.83 |
Pythia-160 | 33.33 | 12.81 | 16.13 | 16.66 | 50.36 | 41.09 | 22.82 | 27.60 |
OLMo-1b | 34.12 | 9.28 | 18.92 | 20.29 | 43.97 | 41.33 | 22.96 | 27.26 |
Bloom-560m | 33.33 | 8.48 | 18.92 | 19.03 | 43.97 | 37.07 | 23.05 | 26.26 |
Pythia-410m | 33.33 | 4.80 | 19.47 | 19.45 | 43.97 | 33.33 | 23.01 | 25.33 |
OPT-350m | 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-1.1B | 33.33 | 1.30 | 8.07 | 10.22 | 17.72 | 35.79 | 15.03 | 17.35 |
微调比较
为了进一步评估我们模型的下游能力,我们决定对TTL模型在Poeta基准的部分任务子集上进行基本的微调。为了进行比较,我们对BERTimbau模型也应用了相同的微调过程,因为它们也是在巴西葡萄牙语上从头开始训练的大语言模型,并且与我们的模型规模相近。我们使用这些比较来评估我们的预训练是否产生了在下游应用中能够取得良好结果(这里的“良好”指“接近BERTimbau”)的大语言模型。
模型 | 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-460m | 91.64 | 91.18 | 92.28 | 86.43 | 94.42 | 91.19 |
TTL-160m | 91.14 | 90.00 | 90.71 | 85.78 | 94.05 | 90.34 |
所有显示的结果都是在训练集上对模型进行微调后,在相应任务测试集上获得的最高准确率分数。所有微调运行都使用了相同的超参数,代码实现可以在我们微调模型的模型卡片中找到。
🔧 技术细节
模型架构
基于Transformer架构,通过因果语言建模进行预训练。
训练过程
使用1块NVIDIA A100-SXM4-40GB GPU进行训练,训练步数为1,200,000步,训练时间约280小时。
碳排放和能耗
训练过程中的碳排放为41.1 KgCO2(德国),总能耗为115.69 kWh。
📄 许可证
TeenyTinyLlama-460m采用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)支持。
⚠️ 重要提示
尽管模型以宽松的许可证发布,但使用时需自行进行风险分析,特别是在实际应用中,并安排人工审核输出。
💡 使用建议
若将模型用于下游应用,可参考文档中的微调比较部分,对模型进行微调以获得更好的效果。同时,注意设置合理的重复惩罚参数,避免生成重复或冗长的内容。



