🚀 刻耳柏洛斯-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}
}