🚀 cerbero-7b イタリア語LLM
🚀 新リリース: cerbero-7b-openchat は、openchat3.5 をベースにした最新のSOTAモデルで、ChatGPT 3.5 と同等またはそれ以上の性能を発揮します!
🔥 cerbero-7b の秘密を明かす研究論文が arXiv で公開されました!
📢 cerbero-7b は、研究 や 商用アプリケーション で使用できる、最初の 100% 無料 かつオープンソースの イタリア語大規模言語モデル (LLM) です。
こちら でオンラインデモを試すことができます (CPUで動作する量子化デモで、元のcerbero-7bよりもはるかに性能が低い)
このモデルは、すべてのベンチマークでLlama2 13Bを上回り、多くの指標でLlama1 34Bを超える mistral-7b をベースに構築されています。
cerbero-7b は、イタリアのAI分野の空白を埋めるために特別に設計されています。
イタリア語モデル の 急激な進化 は、多様なニーズに対応できる高度なAIアーキテクチャを構築するために不可欠です。
cerbero-7b は、Camoscio や Fauno などのモデルとともに、イタリアにおけるこの 革命 を起爆剤とし、高度な AIソリューション がイタリア語の複雑さを理解し、シームレスに対話できる時代を迎えることを目指しています。
cerbero-7b は、制限の少ない Apache 2.0 ライセンス の下でリリースされており、商用アプリケーションを含む 無制限の使用が許可されています。
🚀 クイックスタート
🤗transformersを使用した読み込み方法
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)
GGUFとllama.cppの使用方法
cerbero-7b は llama.cpp と完全に 互換性 があります。
cerbero-7b の 元の および 量子化 バージョンを gguf
形式で ここ で見つけることができます。
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|]""")
✨ 主な機能
- 高性能: mistral-7b をベースに構築され、すべてのベンチマークでLlama2 13Bを上回り、多くの指標でLlama1 34Bを超えます。
- オープンソース: Apache 2.0ライセンスの下でリリースされており、商用アプリケーションを含む無制限の使用が許可されています。
- イタリア語特化: イタリア語の理解と生成能力を向上させるために特別に設計されたCerbero Datasetを使用してトレーニングされています。
📦 インストール
このセクションでは、モデルを使用するための依存関係のインストール方法を説明します。
pip install transformers torch llama-cpp-python huggingface-hub
💻 使用例
基本的な使用法
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)
高度な使用法
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|]""")
📚 ドキュメント
モデル評価結果 📈
SQuAD-it評価
モデル |
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ベンチマーク結果
モデル |
毒性検出 |
皮肉検出 |
感情分析 |
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? 🤔
名前「Cerbero」は、ギリシャ神話で冥界の門を守る三头犬にインスパイアされており、このモデルの本質を表しています。このモデルは、3つの基本的な柱から力を得ています。
- ベースモデル: mistral-7b 🏗️
cerbero-7bは、強力な mistral-7b をベースモデルとして構築されています。この選択により、最先端の言語モデルの力と機能を活用した強固な基盤が確保されます。
- データセット: Cerbero Dataset 📚
Cerbero Datasetは、cerbero-7bのイタリア語の理解と生成能力を向上させるために特別に作成された画期的なデータセットです。このデータセットは、動的な自己チャットメカニズムと高度な大規模言語モデル (LLM) 技術を組み合わせた革新的な方法によって生成されています。詳細は 論文 を参照してください。
- ライセンス: Apache 2.0 🕊️
制限の少ないApache 2.0ライセンス の下でリリースされているため、cerbero-7bはオープンネスと協力を促進します。このライセンスの選択により、開発者は無制限の使用が可能となり、イタリアやその他の地域でのAIの進歩に向けたコミュニティ主導のアプローチが促進されます。
モデル 🧬
cerbero-7b は、さまざまなバージョンが用意されており、それぞれ特定のアプリケーションやユースケースに合わせて調整されています。以下は、これらのバージョンとそれぞれのトレーニングデータセットおよびベースモデルを示す表です。
モデル名 |
トレーニングデータセット |
ベースモデル |
Huggingfaceモデル |
Llama.cppおよび量子化モデル |
cerbero-7b |
Cerbero Dataset |
mistral-7b |
リンク |
リンク |
cerbero-7b-openchat |
Cerbero Dataset |
openchat3.5 |
リンク |
リンク |
これらの各モデルは独自の強みを持っており、cerbero-7b をイタリア語AI分野の研究や商用アプリケーションにおける多目的ツールにしています。
プロンプト形式
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 のトレーニングデータにはこのような システムメッセージ が含まれていないことを覚えておいてください。したがって、モデルの性能を最適化するためには、システムメッセージの使用を最小限に抑えるか、避けることをお勧めします。
論文との違い
📢 注意: リリースされた cerbero-7b
のバージョンは、論文で使用されたものとわずかに異なります。リリースされたモデルのトレーニングデータセットは、meta-llama/Llama-2-7b-chat-hf
の代わりに garage-bAInd/Platypus2-70B-instruct
を使用して生成されました。これは、Platypus2モデルのライセンス (CC-BY-NC 4.0) がより制限が少ないためです。私たちのテストによると、両方のモデルが同等の品質のデータセットを生成し、結果として得られるファインチューニングされたモデルの性能はほとんど区別できません。
🔧 技術詳細
トレーニング詳細 🚀
cerbero-7b は、LORAやQLORAのファインチューニングとは異なり、完全にファインチューニングされた LLMです。
このモデルは、8192トークン の大規模なコンテキストウィンドウで動的な自己チャットによって生成された合成データセットを使用して、大規模なイタリア語大規模言語モデル (LLM) でトレーニングされています。
データセット構成 📊
📢 Cerbero Dataset の詳細は近日更新予定です!
トレーニング設定 ⚙️
cerbero-7b はNVIDIA DGX H100でトレーニングされています。
- ハードウェア: それぞれ80GBのVRAMを持つ8台のH100 GPUを使用しています。 🖥️
- 並列処理: 最適なトレーニング効率のためにDeepSpeed Zeroステージ1の並列処理を使用しています。✨
このモデルは 1エポック でトレーニングされており、多様な言語タスクを処理するための知識と能力の収束が保証されています。
📄 ライセンス
このプロジェクトは、Apache 2.0ライセンスの下でライセンスされています。詳細については、LICENSE ファイルを参照してください。
📖 引用
もしあなたが研究で 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}
}