🚀 BODE
BODE是一款专为葡萄牙语设计的大语言模型(LLM),它基于Llama 2模型,通过在Alpaca数据集上进行微调训练而成,该数据集由Cabrita的作者翻译为葡萄牙语。此模型可用于葡萄牙语的自然语言处理任务,如文本生成、自动翻译、文本摘要等。开发BODE的目的是解决葡萄牙语大语言模型稀缺的问题。经典模型(如LLaMa)虽能响应葡萄牙语提示,但存在大量语法错误,有时还会生成英语回复。目前,免费使用的葡萄牙语模型较少,据我们所知,尚无专门使用葡萄牙语数据训练的、具有130亿或更多参数的模型。
点击论文,了解更多关于BODE的信息。
本页面提供的BODE模型版本是使用Recogna高级研究实验室的内部资源训练的。在获得必要的授权后,我们将尽快发布在Santos Dumont上训练的原始模型版本。
🚀 快速开始
我们强烈建议在配备GPU的Kaggle平台上使用本模型。你可以借助HuggingFace的Transformers库轻松使用BODE。不过,你需要获得访问LLaMa 2的授权。我们还在Google Colab上提供了一个Jupyter Notebook,点击此处即可访问。
✨ 主要特性
- 专为葡萄牙语设计:解决了葡萄牙语大语言模型稀缺的问题,能有效处理葡萄牙语自然语言处理任务。
- 基于Llama 2微调:在Alpaca数据集上进行微调,提升了模型在葡萄牙语任务上的性能。
📦 安装指南
!pip install transformers
!pip install einops accelerate bitsandbytes
!pip install sentence_transformers
!pip install git+https://github.com/huggingface/peft.git
💻 使用示例
基础用法
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
from peft import PeftModel, PeftConfig
llm_model = 'recogna-nlp/bode-7b-alpaca-pt-br'
hf_auth = 'HF_ACCESS_KEY'
config = PeftConfig.from_pretrained(llm_model)
model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path, trust_remote_code=True, return_dict=True, load_in_8bit=True, device_map='auto', token=hf_auth)
tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path, token=hf_auth)
model = PeftModel.from_pretrained(model, llm_model)
model.eval()
def generate_prompt(instruction, input=None):
if input:
return f"""以下是一个描述任务的指令,以及一个提供更多上下文的输入。请编写一个合适的回复来完成请求。
### 指令:
{instruction}
### 输入:
{input}
### 回复:"""
else:
return f"""以下是一个描述任务的指令。请编写一个合适的回复来完成请求。
### 指令:
{instruction}
### 回复:"""
generation_config = GenerationConfig(
temperature=0.2,
top_p=0.75,
num_beams=2,
do_sample=True
)
def evaluate(instruction, input=None):
prompt = generate_prompt(instruction, input)
inputs = tokenizer(prompt, return_tensors="pt")
input_ids = inputs["input_ids"].cuda()
generation_output = model.generate(
input_ids=input_ids,
generation_config=generation_config,
return_dict_in_generate=True,
output_scores=True,
max_length=300
)
for s in generation_output.sequences:
output = tokenizer.decode(s)
print("回复:", output.split("### 回复:")[1].strip())
evaluate("详细回答:什么是山羊?")
🔧 技术细节
模型详情
属性 |
详情 |
模型类型 |
Llama 2 |
训练数据 |
Alpaca |
语言 |
葡萄牙语 |
可用版本
训练与数据
BODE模型是基于Llama 2模型,通过在葡萄牙语Alpaca数据集(一个基于指令的数据集)上进行微调训练得到的。最初的训练是在LNCC的超级计算机Santos Dumont上进行的,项目编号为Fundunesp 2019/00697 - 8。本页面提供的版本是在Recogna内部环境中使用相同数据和参数训练的副本。
评估结果
指标 |
值 |
平均值 |
53.21 |
ENEM挑战(无图像) |
34.36 |
BLUEX(无图像) |
28.93 |
OAB考试 |
30.84 |
Assin2 RTE |
79.83 |
Assin2 STS |
43.47 |
FaQuAD NLI |
67.45 |
HateBR Binary |
85.06 |
葡萄牙语仇恨言论二分类 |
65.73 |
tweetSentBR |
43.25 |
详细结果可查看此处。
📄 许可证
本项目采用MIT许可证。
📖 引用
如果您在研究中使用BODE模型,可以引用这篇论文,具体引用格式如下:
@misc{bode2024,
title={Introducing Bode: A Fine-Tuned Large Language Model for Portuguese Prompt-Based Task},
author={Gabriel Lino Garcia and Pedro Henrique Paiola and Luis Henrique Morelli and Giovani Candido and Arnaldo Cândido Júnior and Danilo Samuel Jodas and Luis C. S. Afonso and Ivan Rizzo Guilherme and Bruno Elias Penteado and João Paulo Papa},
year={2024},
eprint={2401.02909},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
🤝 贡献
欢迎对本模型进行改进的贡献。您可以自由地提出问题和提交拉取请求。
🙏 致谢
感谢巴西国家科学计算实验室(LNCC/MCTI)提供超级计算机SDumont的CAD资源。