モデル概要
モデル特徴
モデル能力
使用事例
🚀 alokabhishek/Meta-Llama-3-8B-Instruct-bnb-8bitモデルカード
このリポジトリには、Meta社のMeta-Llama-3-8B-Instructモデルの8ビット量子化バージョン(bitsandbytesを使用して量子化)が含まれています。このモデルは、テキスト生成タスクで優れた性能を発揮し、ユーザーに効率的かつ正確なテキスト出力を提供します。
🚀 クイックスタート
以下のコードを使用すると、このモデルをすぐに使い始めることができます。
import transformers
import torch
model_id = "alokabhishek/Meta-Llama-3-8B-Instruct-bnb-8bit"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="auto",
)
prompt_instruction = "You are a virtual assistant with advanced expertise in a broad spectrum of topics, equipped to utilize high-level critical thinking, cognitive skills, creativity, and innovation. Your goal is to deliver the most straightforward and accurate answer possible for each question, ensuring high-quality and useful responses for the user. "
user_prompt = "Why is Hulk always angry?"
chat_messages = [
{"role": "system", "content": str(prompt_instruction)},
{"role": "user", "content": str(user_prompt)},
]
prompt = pipeline.tokenizer.apply_chat_template(
chat_messages,
tokenize=False,
add_generation_prompt=True
)
terminators = [
pipeline.tokenizer.eos_token_id,
pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
output = pipeline(
prompt,
do_sample=True,
max_new_tokens=1024,
temperature=1,
top_k=50,
top_p=1,
num_return_sequences=1,
pad_token_id=text_generation_pipeline.tokenizer.pad_token_id,
eos_token_id=terminators,
)
print(output[0]["generated_text"][len(prompt):])
✨ 主な機能
- 8ビット量子化:bitsandbytesライブラリを使用してモデルを8ビット量子化し、メモリ使用量を削減しながら高い性能を維持します。
- 効率的な推論:Transformersライブラリのpipelineを使用した効率的な推論をサポートし、Autoクラスと
generate()
関数を使用してカスタム推論も可能です。 - 多様なシーンでの使用:商業および研究分野の英語テキスト生成タスク、会話型チャットや自然言語生成などに適しています。
📦 インストール
このリポジトリには、Meta-Llama-3-8B-Instructモデルの2つのバージョンが含まれており、それぞれTransformersライブラリと元のllama3
コードベースと組み合わせて使用できます。
Transformersライブラリを使用する場合
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="auto",
)
messages = [
{"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
{"role": "user", "content": "Who are you?"},
]
prompt = pipeline.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
terminators = [
pipeline.tokenizer.eos_token_id,
pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = pipeline(
prompt,
max_new_tokens=256,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,
)
print(outputs[0]["generated_text"][len(prompt):])
元のllama3
コードベースを使用する場合
このリポジトリの説明に従って操作してください。 元のモデルチェックポイントをダウンロードする例は次のとおりです。
huggingface-cli download meta-llama/Meta-Llama-3-8B-Instruct --include "original/*" --local-dir Meta-Llama-3-8B-Instruct
💻 使用例
基本的な使用法
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="auto",
)
messages = [
{"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
{"role": "user", "content": "Who are you?"},
]
prompt = pipeline.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
terminators = [
pipeline.tokenizer.eos_token_id,
pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = pipeline(
prompt,
max_new_tokens=256,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,
)
print(outputs[0]["generated_text"][len(prompt):])
高度な使用法
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
messages = [
{"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
{"role": "user", "content": "Who are you?"},
]
input_ids = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
return_tensors="pt"
).to(model.device)
terminators = [
tokenizer.eos_token_id,
tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = model.generate(
input_ids,
max_new_tokens=256,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,
)
response = outputs[0][input_ids.shape[-1]:]
print(tokenizer.decode(response, skip_special_tokens=True))
📚 ドキュメント
モデルの詳細
- モデルの作成者:Meta
- 元のモデル:Meta-Llama-3-8B-Instruct
bitsandbytesを使用した8ビット量子化について
- QLoRA:量子化大規模言語モデルの効率的な微調整:arXiv - QLoRA: Efficient Finetuning of Quantized LLMs
- Hugging Faceブログ記事:bitsandbytesを使用した8ビット行列乗算について:A Gentle Introduction to 8-bit Matrix Multiplication for transformers at scale using Hugging Face Transformers, Accelerate and bitsandbytes
- bitsandbytesのGitHubリポジトリ:bitsandbytes github repo
想定される用途
- 想定される使用例:Llama 3は英語の商業および研究用途に適しています。指令によって微調整されたモデルは、アシスタントのようなチャットシナリオに適しており、事前学習モデルはさまざまな自然言語生成タスクに使用できます。
- 想定外の使用:適用される法律および規制(貿易コンプライアンス法律を含む)に違反する方法での使用は禁止されています。許容使用ポリシーおよびLlama 3コミュニティライセンスで禁止されている他の方法での使用も禁止されています。英語以外の言語での使用も禁止されています。
ハードウェアとソフトウェア
- 学習要因:カスタム学習ライブラリ、Metaの研究用スーパークラスターおよび本番クラスターを使用して事前学習を行いました。微調整、アノテーション、評価もサードパーティのクラウドコンピューティングプラットフォームで行われました。
- 二酸化炭素排出量:事前学習では、合計770万時間のH100-80GB GPU(TDP 700W)の計算リソースが使用されました。総排出量は約2290トンの二酸化炭素相当と推定され、その100%がMetaの持続可能な開発プログラムによって相殺されています。
学習データ
- 概要:Llama 3は、15兆を超える公開データソースのトークンで事前学習されています。微調整データには、公開されている指令データセットと100万を超える手動アノテーションされた例が含まれています。事前学習および微調整データセットには、Metaのユーザーデータは含まれていません。
- データの新鮮さ:事前学習データの截止日は、それぞれ2023年3月(7Bモデル)と2023年12月(70Bモデル)です。
ベンチマークテスト
このセクションでは、Llama 3モデルの標準的な自動ベンチマークテストの結果を報告します。すべての評価は、私たちの内部評価ライブラリを使用して行われました。方法の詳細については、こちらを参照してください。
基本事前学習モデル
カテゴリ | ベンチマーク | Llama 3 8B | Llama2 7B | Llama2 13B | Llama 3 70B | Llama2 70B |
---|---|---|---|---|---|---|
汎用 | MMLU (5-shot) | 66.6 | 45.7 | 53.8 | 79.5 | 69.7 |
汎用 | AGIEval English (3 - 5 shot) | 45.9 | 28.8 | 38.7 | 63.0 | 54.8 |
汎用 | CommonSenseQA (7-shot) | 72.6 | 57.6 | 67.6 | 83.8 | 78.7 |
汎用 | Winogrande (5-shot) | 76.1 | 73.3 | 75.4 | 83.1 | 81.8 |
汎用 | BIG-Bench Hard (3-shot, CoT) | 61.1 | 38.1 | 47.0 | 81.3 | 65.7 |
汎用 | ARC-Challenge (25-shot) | 78.6 | 53.7 | 67.6 | 93.0 | 85.3 |
知識推論 | TriviaQA-Wiki (5-shot) | 78.5 | 72.1 | 79.6 | 89.7 | 87.5 |
読解 | SQuAD (1-shot) | 76.4 | 72.2 | 72.1 | 85.6 | 82.6 |
読解 | QuAC (1-shot, F1) | 44.4 | 39.6 | 44.9 | 51.1 | 49.4 |
読解 | BoolQ (0-shot) | 75.7 | 65.5 | 66.9 | 79.0 | 73.1 |
読解 | DROP (3-shot, F1) | 58.4 | 37.9 | 49.8 | 79.7 | 70.2 |
指令微調整モデル
ベンチマーク | Llama 3 8B | Llama 2 7B | Llama 2 13B | Llama 3 70B | Llama 2 70B |
---|---|---|---|---|---|
MMLU (5-shot) | 68.4 | 34.1 | 47.8 | 82.0 | 52.9 |
GPQA (0-shot) | 34.2 | 21.7 | 22.3 | 39.5 | 21.0 |
HumanEval (0-shot) | 62.2 | 7.9 | 14.0 | 81.7 | 25.6 |
GSM-8K (8-shot, CoT) | 79.6 | 25.7 | 77.4 | 93.0 | 57.5 |
MATH (4-shot, CoT) | 30.0 | 3.8 | 6.7 | 50.4 | 11.6 |
責任と安全性
私たちは、オープンなAIアプローチが、より良く、より安全な製品を生み出し、イノベーションを加速し、全体的な市場を拡大することができると信じています。私たちは、責任あるAI開発に取り組み、乱用や危害を制限し、オープンソースコミュニティをサポートするための一連の措置を講じています。
Llama 3-Instruct
- 安全性:指令によって微調整されたモデルについて、広範なレッドチームテスト、敵対的評価を行い、残留リスクを低減するための安全対策技術を実装しています。他の大規模言語モデルと同様に、残留リスクが残る可能性があり、開発者は使用シナリオにおいてこれらのリスクを評価することをお勧めします。
- 回答拒否:残留リスクに加えて、モデルが良性なプロンプトに対して回答を拒否する問題にも非常に注意を払っています。過度な回答拒否はユーザー体験に影響を与え、場合によっては有害になる可能性があります。開発者コミュニティからのフィードバックを受け、微調整プロセスを改善して、Llama 3がLlama 2よりも誤ってプロンプトに回答を拒否する可能性を低くしています。
責任あるリリース
上記の責任ある使用に関する考慮事項に加えて、私たちは厳格なプロセスに従い、リリース決定を行う前に、乱用や重要なリスクを防ぐための追加措置を講じています。
コミュニティ
生成AIの安全性には専門知識とツールが必要であり、私たちはオープンコミュニティの力がその開発を加速することができると信じています。私たちは、AIアライアンス、人工知能協力組織、MLCommonsなどの複数のオープンな同盟の積極的なメンバーであり、その発展に積極的に貢献しています。
🔧 技術詳細
- モデルアーキテクチャ:Llama 3は、最適化されたTransformerアーキテクチャを採用した自己回帰型言語モデルです。微調整されたバージョンでは、教師付き微調整(SFT)と人間のフィードバックに基づく強化学習(RLHF)を使用して、モデルを有用性と安全性に関する人間の嗜好に合わせています。
- 8ビット量子化:bitsandbytesライブラリを使用してモデルを8ビット量子化し、モデルパラメータの格納ビット数を減らすことでメモリ使用量を削減し、高い推論性能を維持します。
📄 ライセンス
カスタム商用ライセンスは、こちらから入手できます。 モデルに関する質問やコメントは、モデルのREADMEを参照してください。生成パラメータやLlama 3をアプリケーションで使用する方法に関する詳細な技術情報については、こちらを参照してください。



