🚀 刻耳柏洛斯-7B 意大利大语言模型
刻耳柏洛斯-7B(cerbero-7b)是首个 100% 免费且开源的意大利大语言模型(LLM),可用于研究或商业应用。它基于强大的 米斯特拉尔-7B(mistral-7b) 构建,在多个基准测试中表现出色,能很好地理解和生成意大利语文本。此外,基于 OpenChat3.5 的 刻耳柏洛斯-7B-OpenChat 最新模型也已发布,性能可与甚至超越 ChatGPT 3.5。
点击此处进行在线演示(量化演示在 CPU 上运行,性能远低于原始的刻耳柏洛斯-7B)
✨ 主要特性
- 填补空白:专门为填补意大利人工智能领域的空白而设计,助力构建能满足不同人群需求的先进人工智能架构。
- 多版本选择:提供多种版本,每个版本都针对特定应用和用例进行了优化,适用于意大利语人工智能领域的研究和商业应用。
- 持续改进:团队致力于持续改进刻耳柏洛斯-7B,会随着 7B 最优技术的进步不断训练和发布新模型。
- 宽松许可:采用宽松的 Apache 2.0 许可证,允许无限制使用,包括商业应用。
📦 安装指南
文档未提及具体安装步骤,可参考后续使用示例部分加载模型。
💻 使用示例
基础用法
你可以使用 🤗transformers 加载 刻耳柏洛斯-7B(或 刻耳柏洛斯-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)
高级用法
如果你的内存不足以容纳 float32
模型(例如在使用 Colab 时),可以使用 revision="float16"
参数加载 float16
版本:
model = AutoModelForCausalLM.from_pretrained("galatolo/cerbero-7b", revision="float16")
📚 详细文档
模型评估结果 📈
刻耳柏洛斯-7B
模型在多个基准测试中进行了严格评估,以展示其在理解和生成意大利语文本方面的能力。以下是总结的性能结果:
SQuAD-it 评估
意大利语的斯坦福问答数据集(SQuAD-it)用于评估模型的阅读理解和问答能力。下表展示了 F1 分数和精确匹配(EM)指标:
模型 |
F1 分数 |
精确匹配(EM) |
刻耳柏洛斯-7B-OpenChat |
74.09% |
56.0% |
刻耳柏洛斯-7B |
72.55% |
55.6% |
Fauno |
44.46% |
0.00% |
Camoscio |
37.42% |
0.00% |
米斯特拉尔-7B |
15.55% |
8.50% |
EVALITA 基准测试结果
EVALITA 基准测试评估模型在毒性检测、反讽检测和情感分析等任务中的性能。下表显示了这些任务的 F1 分数:
模型 |
毒性检测 |
反讽检测 |
情感分析 |
刻耳柏洛斯-7B-OpenChat |
63.33% |
69.16% |
66.89% |
刻耳柏洛斯-7B |
63.04% |
48.51% |
61.80% |
Fauno |
33.84% |
39.17% |
12.23% |
Camoscio |
38.18% |
39.65% |
13.33% |
米斯特拉尔-7B |
34.16% |
34.16% |
12.14% |
为什么叫刻耳柏洛斯?🤔
“刻耳柏洛斯”这个名字灵感来源于希腊神话中守卫冥界大门的三头犬,体现了模型的三个核心支柱:
- 基础模型:米斯特拉尔-7B 🏗️:基于强大的 米斯特拉尔-7B 构建,确保了模型的强大基础。
- 数据集:刻耳柏洛斯数据集 📚:该数据集是专门为提高刻耳柏洛斯-7B 在理解和生成意大利语文本方面的能力而精心策划的。它结合了动态自对话机制和先进的大语言模型(LLM)技术。更多细节请参考 论文。
- 许可协议:Apache 2.0 🕊️:采用宽松的 Apache 2.0 许可证,促进开放和协作,开发者可以自由无限制地使用。
模型版本 🧬
刻耳柏洛斯-7B 有多种版本,每个版本都针对特定应用和用例进行了优化。以下是这些版本及其各自的训练数据集和基础模型:
模型名称 |
训练数据集 |
基础模型 |
Huggingface 模型 |
Llama.cpp 和量化模型 |
刻耳柏洛斯-7B |
刻耳柏洛斯数据集 |
米斯特拉尔-7B |
链接 |
链接 |
刻耳柏洛斯-7B-OpenChat |
刻耳柏洛斯数据集 |
OpenChat3.5 |
链接 |
链接 |
训练细节 🚀
刻耳柏洛斯-7B 是一个 完全微调 的大语言模型,与 LORA 或 QLORA 微调不同。该模型在一个庞大的意大利大语言模型上进行训练,使用通过动态自对话在 8192 个标记 的大上下文窗口中生成的合成数据集。
数据集组成 📊
📢 刻耳柏洛斯数据集 的详细信息将尽快更新!
训练设置 ⚙️
刻耳柏洛斯-7B 在 NVIDIA DGX H100 上进行训练:
- 硬件:使用 8 个 H100 GPU,每个 GPU 具有 80 GB VRAM。 🖥️
- 并行性:采用 DeepSpeed Zero 阶段 1 并行性,以实现最佳训练效率。✨
模型训练了 1 个 epoch,确保了在处理各种语言任务时的知识收敛和熟练程度。
提示格式
刻耳柏洛斯-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|]
虽然可以在提示开头包含简短的系统消息,但请记住,刻耳柏洛斯-7B 的训练数据 不包含 此类 系统消息。因此,为了获得最佳模型性能,建议尽量减少或避免包含它们。
GGUF 和 llama.cpp
刻耳柏洛斯-7B 与 llama.cpp 完全 兼容。
你可以在 此处 找到 原始 和 量化 版本的 gguf
格式的 刻耳柏洛斯-7B:
from llama_cpp import Llama
from huggingface_hub import hf_hub_download
llm = Llama(
model_path=hf_hub_download(
repo_id="galatolo/cerbero-7b-gguf",
filename="ggml-model-Q4_K.gguf",
),
n_ctx=4086,
)
llm.generate("""Questa è una conversazione tra un umano ed un assistente AI.
[|Umano|] Come posso distinguere un AI da un umano?
[|Assistente|]""")
与论文的差异
📢 注意:发布的 刻耳柏洛斯-7B
版本与论文中使用的版本略有不同。发布模型的训练数据集是使用 garage-bAInd/Platypus2-70B-instruct
而不是 meta-llama/Llama-2-7b-chat-hf
生成的,因为 Platypus2 模型的许可证(CC-BY-NC 4.0)更宽松。我们的测试表明,这两个模型生成的数据集质量相当,微调后的模型性能几乎没有区别。
📄 许可证
刻耳柏洛斯-7B 采用 Apache 2.0 许可证发布,允许无限制使用,包括商业应用。
📖 引用
如果你在研究中使用了 刻耳柏洛斯-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}
}