🚀 新版本发布:cerbero-7b-openchat,我们基于 openchat3.5 开发的最新 SOTA 模型,性能达到甚至超越 ChatGPT 3.5!
🔥 揭秘 cerbero-7b 背后技术的研究论文现已在 arXiv 上线!
📢 cerbero-7b 是首个100% 免费且开源的意大利语大语言模型(LLM),可直接用于研究或商业应用。
在线演示体验 点击这里(CPU 运行的量化演示版本,性能远低于原始 cerbero-7b)
基于 mistral-7b 构建,该模型在所有基准测试中均优于 Llama2 13B,并在多项指标上超越 Llama1 34B。
cerbero-7b 专为填补意大利人工智能领域的空白而精心打造。
意大利语语言模型的**“寒武纪大爆发”** 对于构建能够满足民众多样化需求的先进 AI 架构至关重要。
cerbero-7b 与 Camoscio、Fauno 等伙伴模型一道,旨在助力意大利启动这场革命,开创一个先进AI 解决方案能够无缝交互并理解意大利语复杂精妙之处的时代,从而推动各行业的创新,并加深技术与其服务的民众之间的联系。
cerbero-7b 采用宽松的 Apache 2.0 许可证发布,允许无限制使用,包括商业应用。
cerbero-7b 模型已通过多项基准测试进行严格评估,以证明其在理解和生成意大利语文本方面的能力。以下是展示其性能的汇总结果:
意大利语版斯坦福问答数据集(SQuAD-it)用于评估模型的阅读理解和问答能力。下表展示了 F1 分数和精确匹配(EM)指标:
| 模型 | F1 分数 | 精确匹配(EM) |
|---|---|---|
| cerbero-7b-openchat | 74.09% | 56.0% |
| cerbero-7b | 72.55% | 55.6% |
| Fauno | 44.46% | 0.00% |
| Camoscio | 37.42% | 0.00% |
| mistral-7b | 15.55% | 8.50% |
EVALITA 基准测试评估模型在毒性检测、反讽检测和情感分析等任务上的表现。下表显示了这些任务的 F1 分数:
| 模型 | 毒性检测 | 反讽检测 | 情感分析 |
|---|---|---|---|
| cerbero-7b-openchat | 63.33% | 69.16% | 66.89% |
| cerbero-7b | 63.04% | 48.51% | 61.80% |
| Fauno | 33.84% | 39.17% | 12.23% |
| Camoscio | 38.18% | 39.65% | 13.33% |
| mistral-7b | 34.16% | 34.16% | 12.14% |
“Cerbero” 这个名字的灵感来源于希腊神话中守护冥界大门的三头犬,它浓缩了我们模型的核心 essence,其力量源自三大支柱:
基础模型:mistral-7b 🏗️ cerbero-7b 以强大的 mistral-7b 作为其基础模型。这一选择确保了坚实的基础,充分利用了尖端语言模型的强大能力。
数据集:Cerbero Dataset 📚 Cerbero Dataset 是一个开创性的数据集,专门为提升 cerbero-7b 理解和生成意大利语文本的能力而精心策划。该数据集是结合动态自我对话机制与先进的大型语言模型(LLM)技术的创新方法的产物。更多详情请参考 论文。
许可:Apache 2.0 🕊️ cerbero-7b 在 宽松的 Apache 2.0 许可证 下发布,促进了开放性和协作。这一许可选择赋予开发者不受限制地使用的自由,培养了一种社区驱动的方法,以推动意大利及其他地区的人工智能发展。
cerbero-7b 提供多种版本,每种版本均针对特定应用和使用场景进行了优化。下表列出了这些版本及其各自的训练数据集和基础模型:
| 模型名称 | 训练数据集 | 基础模型 | Modelers 模型 | Llama.cpp 及量化模型 |
|---|---|---|---|---|
| cerbero-7b | Cerbero Dataset | mistral-7b | link | [link] |
| cerbero-7b-openchat | Cerbero Dataset | openchat3.5 | [link] | [link] |
这些模型各具独特优势,使 cerbero-7b 成为意大利语 AI 领域中适用于研究与商业应用的多功能工具。
我们致力于不断增强 cerbero-7b。随着 7b SOTA(最先进技术)的发展,我们的团队计划持续训练并发布新模型。这将确保 cerbero-7b 始终处于 AI 技术前沿,在意大利语 AI 领域提供最先进、最高效的解决方案。
如果您的 RAM 不足以容纳 float32 模型(例如在使用 Colab 时),我们为每个模型提供了 float16 版本,可通过 revision="float16" 参数获取。
model = AutoModelForCausalLM.from_pretrained("galatolo/cerbero-7b", revision="float16")cerbero-7b 是一款全量微调的大型语言模型(LLM),与 LORA 或 QLORA 微调方式相比具有显著差异。 该模型在一个广泛的意大利语大型语言模型基础上进行训练,所使用的合成数据集是通过在 8192 tokens 的大上下文窗口上进行动态自我对话生成的。
📢 Cerbero 数据集的详细信息即将更新!
cerbero-7b 的训练在 NVIDIA DGX H100 上进行:
模型训练了1 个 epoch,确保知识的融会贯通以及处理多样化语言任务的熟练能力。
cerbero-7b 是在完整对话基础上训练的,采用以下提示词格式:
[|Umano|] First human message
[|Assistente|] First AI reply
[|Umano|] Second human message
[|Assistente|] Second AI reply在编写提示词时,请确保以 [|Assistente|] 标签结尾,以此指示 AI 生成回复。
将 [|Umano|] 用作停止词。
例如:
[|Umano|] Come posso distinguere un AI da un umano?
[|Assistente|]虽然你可以在提示词开头添加简短的系统消息,但请记住,cerbero-7b的训练数据不包含此类系统消息。因此,为了获得最佳模型性能,建议尽量减少或避免使用系统消息。
你可以使用[🤗transformers]加载cerbero-7b(或cerbero-7b-openchat)
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("galatolo/cerbero-7b")
tokenizer = AutoTokenizer.from_pretrained("galatolo/cerbero-7b")
prompt = """Questa è una conversazione tra un umano ed un assistente AI.
[|Umano|] Come posso distinguere un AI da un umano?
[|Assistente|]"""
input_ids = tokenizer(prompt, return_tensors='pt').input_ids
with torch.no_grad():
output_ids = model.generate(input_ids, max_new_tokens=128)
generated_text = tokenizer.decode(output_ids[0], skip_special_tokens=True)
print(generated_text)如果您在研究中使用cerbero-7b,请引用我们的论文:
@article{galatolo2023cerbero,
title={Cerbero-7B: A Leap Forward in Language-Specific LLMs Through Enhanced Chat Corpus Generation and Evaluation},
author={Galatolo, Federico A and Cimino, Mario GCA},
journal={arXiv preprint arXiv:2311.15698},
year={2023}
}cerbero-7b 是一款全量微调的大型语言模型(LLM),与 LORA 或 QLORA 微调方式相比具有显著差异。 该模型基于一个广泛的意大利语大型语言模型(LLM)进行训练,训练数据为通过动态自我对话在8192 tokens的大上下文窗口上生成的合成数据集。
📢 Cerbero 数据集的详细信息将很快更新!
cerbero-7b 在 NVIDIA DGX H100 上进行训练:
模型训练了1 个 epoch,确保知识的融会贯通以及处理多样化语言任务的能力。
您可以使用 [🤗transformers] 加载 cerbero-7b。
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("galatolo/cerbero-7b")
tokenizer = AutoTokenizer.from_pretrained("galatolo/cerbero-7b")
prompt = """Questa è una conversazione tra un umano ed un assistente AI.
[|Umano|] Come posso distinguere un AI da un umano?
[|Assistente|]"""
input_ids = tokenizer(prompt, return_tensors='pt').input_ids
with torch.no_grad():
output_ids = model.generate(input_ids, max_new_tokens=128)
generated_text = tokenizer.decode(output_ids[0], skip_special_tokens=True)
print(generated_text)📢 注意:已发布的
cerbero-7b版本与论文中使用的版本略有不同。已发布模型的训练数据集是使用garage-bAInd/Platypus2-70B-instruct生成的,而非meta-llama/Llama-2-7b-chat-hf,这是因为 Platypus2 模型的许可证(CC-BY-NC 4.0)更为宽松。我们的测试表明,这两个模型生成的数据集质量相当,由此得到的微调模型表现也几乎没有差异。