Llama 3.1 8B Instruct GGUF
モデル概要
モデル特徴
モデル能力
使用事例
🚀 Llama-3.1-8B-Instruct GGUFモデル
このモデルは、超低ビット量子化技術を用いた革新的な多言語大規模言語モデルです。様々なハードウェア環境での使用に最適化されており、商用や研究用途に幅広く活用できます。
🚀 クイックスタート
このリポジトリには、Meta-Llama-3.1-8B-Instructの2つのバージョンが含まれており、transformers
と元のllama
コードベースで使用することができます。
transformersでの使用
transformers >= 4.43.0
以降では、Transformersのpipeline
抽象化を使用するか、generate()
関数を持つAutoクラスを活用して、会話型推論を実行することができます。
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3.1-8B-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="auto",
)
messages = [
{"role": "system", "content": "あなたは常に海賊の言葉で応答する海賊チャットボットです!"},
{"role": "user", "content": "あなたは誰ですか?"},
]
outputs = pipeline(
messages,
max_new_tokens=256,
)
print(outputs[0]["generated_text"][-1])
モデルをローカルで使用する方法、torch.compile()
を使用する方法、支援付き生成、量子化などの詳細なレシピは、huggingface-llama-recipes
で確認できます。
transformersでのツール使用
LLaMA-3.1は、複数のツール使用形式をサポートしています。プロンプトフォーマットの完全なガイドはこちらで確認できます。
# まず、ツールを定義します
def get_current_temperature(location: str) -> float:
"""
指定された場所の現在の温度を取得します。
引数:
location: 温度を取得する場所。「City, Country」の形式で指定します。
戻り値:
指定された場所の現在の温度を浮動小数点数で返します。
"""
return 22. # 実際の関数では、温度を取得する必要があります!
# 次に、チャットを作成し、チャットテンプレートを適用します
messages = [
{"role": "system", "content": "あなたは天気クエリに応答するボットです。"},
{"role": "user", "content": "こんにちは、今のパリの気温は何度ですか?"}
]
inputs = tokenizer.apply_chat_template(messages, tools=[get_current_temperature], add_generation_prompt=True)
この入力から通常通りテキストを生成することができます。モデルがツール呼び出しを生成した場合、以下のようにチャットに追加する必要があります。
tool_call = {"name": "get_current_temperature", "arguments": {"location": "Paris, France"}}
messages.append({"role": "assistant", "tool_calls": [{"type": "function", "function": tool_call}]})
そして、ツールを呼び出し、結果を「tool」ロールでチャットに追加します。
messages.append({"role": "tool", "name": "get_current_temperature", "content": "22.0"})
その後、generate()
を再度呼び出して、モデルがツールの結果をチャットで使用できるようにします。これはツール呼び出しの簡単な紹介にすぎません。詳細については、LLaMAのプロンプトフォーマットドキュメントとTransformersのツール使用ドキュメントを参照してください。
llama
での使用
リポジトリの指示に従ってください。
元のチェックポイントをダウンロードするには、以下の例のようにhuggingface-cli
を使用します。
huggingface-cli download meta-llama/Meta-Llama-3.1-8B-Instruct --include "original/*" --local-dir Meta-Llama-3.1-8B-Instruct
✨ 主な機能
- IQ-DynamicGateによる超低ビット量子化(1 - 2ビット):最新の量子化方法で、超低ビットモデル(1 - 2ビット)に対して精度適応型量子化を導入し、高精度を維持しつつ、極限のメモリ効率を実現します。
- 多言語対応:英語、ドイツ語、フランス語、イタリア語、ポルトガル語、ヒンディー語、スペイン語、タイ語をサポートします。
- 複数のモデル形式:BF16、F16、量子化モデル(Q4_K、Q6_K、Q8など)、極低ビット量子化(IQ3_XS、IQ3_S、IQ3_M、Q4_K、Q4_0)など、様々なモデル形式を提供し、ハードウェア能力とメモリ制約に合わせた選択が可能です。
📦 インストール
pip install --upgrade transformers
でtransformers
のインストールを更新してください。
💻 使用例
基礎的な使用法
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3.1-8B-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="auto",
)
messages = [
{"role": "system", "content": "あなたは常に海賊の言葉で応答する海賊チャットボットです!"},
{"role": "user", "content": "あなたは誰ですか?"},
]
outputs = pipeline(
messages,
max_new_tokens=256,
)
print(outputs[0]["generated_text"][-1])
高度な使用法
# まず、ツールを定義します
def get_current_temperature(location: str) -> float:
"""
指定された場所の現在の温度を取得します。
引数:
location: 温度を取得する場所。「City, Country」の形式で指定します。
戻り値:
指定された場所の現在の温度を浮動小数点数で返します。
"""
return 22. # 実際の関数では、温度を取得する必要があります!
# 次に、チャットを作成し、チャットテンプレートを適用します
messages = [
{"role": "system", "content": "あなたは天気クエリに応答するボットです。"},
{"role": "user", "content": "こんにちは、今のパリの気温は何度ですか?"}
]
inputs = tokenizer.apply_chat_template(messages, tools=[get_current_temperature], add_generation_prompt=True)
📚 ドキュメント
- 生成パラメータやLlama 3.1をアプリケーションで使用するためのレシピに関するより技術的な情報については、こちらを参照してください。
- プロンプトフォーマットの完全なガイドはこちらで確認できます。
- モデルに関する質問やコメントを送る場所については、モデルのREADMEにフィードバックやコメントを提供する方法の説明があります。
🔧 技術詳細
量子化技術
私たちの最新の量子化方法では、超低ビットモデル(1 - 2ビット)に対して精度適応型量子化を導入しており、Llama-3-8Bでのベンチマークで実証された改善が見られます。このアプローチでは、ネットワーク層ごとに最適な量子化戦略を採用することで、高精度を維持しつつ、極限のメモリ効率を実現します。
ベンチマークの詳細
すべてのテストはLlama-3-8B-Instructを対象に、以下の条件で行われました:
- 標準的なパープレキシティ評価パイプライン
- 2048トークンのコンテキストウィンドウ
- すべての量子化において同じプロンプトセットを使用
方法
- 動的精度割り当て:
- 最初と最後の25%の層 → IQ4_XS(選択された層)
- 中央の50% → IQ2_XXS/IQ3_S(効率向上)
- 重要コンポーネント保護:
- 埋め込み層/出力層はQ5_Kを使用
- 標準的な1 - 2ビット量子化と比較して、誤差伝播を38%削減
量子化性能比較(Llama-3-8B)
量子化方式 | 標準PPL | DynamicGate PPL | ΔPPL | 標準サイズ | DGサイズ | Δサイズ | 標準速度 | DG速度 |
---|---|---|---|---|---|---|---|---|
IQ2_XXS | 11.30 | 9.84 | -12.9% | 2.5GB | 2.6GB | +0.1GB | 234秒 | 246秒 |
IQ2_XS | 11.72 | 11.63 | -0.8% | 2.7GB | 2.8GB | +0.1GB | 242秒 | 246秒 |
IQ2_S | 14.31 | 9.02 | -36.9% | 2.7GB | 2.9GB | +0.2GB | 238秒 | 244秒 |
IQ1_M | 27.46 | 15.41 | -43.9% | 2.2GB | 2.5GB | +0.3GB | 206秒 | 212秒 |
IQ1_S | 53.07 | 32.00 | -39.7% | 2.1GB | 2.4GB | +0.3GB | 184秒 | 209秒 |
キー:
- PPL = パープレキシティ(低いほど良い)
- ΔPPL = 標準からDynamicGateへのパープレキシティの変化率
- 速度 = 推論時間(CPU avx2、2048トークンコンテキスト)
- サイズの差分は混合量子化によるオーバーヘッドを反映
主要な改善点:
- 🔥 IQ1_Mでは、パープレキシティが大幅に43.9%改善(27.46 → 15.41)
- 🚀 IQ2_Sでは、0.2GBの僅かなサイズ増でパープレキシティが36.9%削減
- ⚡ IQ1_Sでは、1ビット量子化にもかかわらず、精度が39.7%向上
トレードオフ:
- すべてのバリアントで僅かなサイズの増加(0.1 - 0.3GB)
- 推論速度は同等で(5%未満の差)
モデル情報
属性 | 详情 |
---|---|
モデル開発者 | Meta |
モデルアーキテクチャ | Llama 3.1は、最適化されたトランスフォーマーアーキテクチャを使用した自己回帰型言語モデルです。微調整されたバージョンは、教師付き微調整(SFT)と人間フィードバックによる強化学習(RLHF)を使用して、有用性と安全性に関する人間の好みに合わせて調整されています。 |
学習データ | Llama 3.1は、公開されているソースからの約15兆トークンのデータで事前学習されました。微調整データには、公開されている命令データセットと、2500万件以上の合成生成サンプルが含まれています。 |
パラメータ数 | 80億、700億、4050億 |
入力モダリティ | 多言語テキスト |
出力モダリティ | 多言語テキストとコード |
コンテキスト長 | 128k |
GQA | はい |
トークン数 | 15T以上 |
知識カットオフ | 2023年12月 |
サポート言語 | 英語、ドイツ語、フランス語、イタリア語、ポルトガル語、ヒンディー語、スペイン語、タイ語 |
モデル公開日 | 2024年7月23日 |
ステータス | これはオフラインデータセットで学習された静的モデルです。将来的には、コミュニティのフィードバックを元にモデルの安全性を改善した微調整モデルのバージョンが公開される予定です。 |
ライセンス | カスタム商用ライセンスであるLlama 3.1コミュニティライセンスは、こちらで入手できます。 |
📄 ライセンス
Llama 3.1コミュニティライセンスは、こちらで入手できます。
LLAMA 3.1 コミュニティライセンス契約
Llama 3.1 バージョン公開日: 2024年7月23日
「契約」とは、本書に定めるLlama素材の使用、複製、配布、改変に関する条件を意味します。
「ドキュメント」とは、Metaがhttps://llama.meta.com/doc/overview で配布するLlama 3.1に付随する仕様書、マニュアル、ドキュメントを意味します。
「ライセンシー」または「あなた」とは、あなた自身、あるいはあなたが所属する雇用主または他の個人もしくは団体(あなたが当該個人または団体を代表して本契約に署名する場合)を意味し、適用法令で必要とされる年齢に達し、法的同意が可能で、かつあなたが彼らを代表して本契約に署名する場合には、雇用主または当該他の個人もしくは団体を拘束する法的権限を有する者を指します。
「Llama 3.1」とは、Metaがhttps://llama.meta.com/llama-downloads で配布する基礎的な大規模言語モデル、ソフトウェア、アルゴリズムで、機械学習モデルコード、学習済みモデルの重み、推論を可能にするコード、学習を可能にするコード、ファインチューニングを可能にするコード、およびそれらに関連する他の要素を含みます。
「Llama素材」とは、総称して、本契約の下で利用可能となるMetaの独自のLlama 3.1およびドキュメント(それらの一部を含む)を意味します。
「Meta」または「私たち」とは、あなたが欧州経済地域(EEA)またはスイスに所在する場合、またはあなたが団体であり、その主たる事業場所がEEAまたはスイスにある場合はMeta Platforms Ireland Limitedを、それ以外の場合はMeta Platforms, Inc.を意味します。
- ライセンス権利と再配布 a. 権利の付与。あなたには、Metaが所有する知的財産権またはその他の権利の下で、Llama素材に関して非排他的、世界規模、非譲渡的、無償の制限付きライセンスが付与され、Llama素材の使用、複製、配布、コピー、二次創作物の作成、および改変が許可されます。 b. 再配布と使用 i. あなたがLlama素材(またはその二次創作物)、またはそれらを含む製品もしくはサービス(他のAIモデルを含む)を配布または提供する場合、(A)当該Llama素材とともに本契約のコピーを提供し、(B)関連するウェブサイト、ユーザーインターフェース、ブログ記事、概要ページ、または製品ドキュメントに、目立つように「Built with Llama」と表示する必要があります。あなたがLlama素材またはその出力や結果を使用して、配布または提供されるAIモデルを作成、学習、ファインチューニング、またはその他の改善を行う場合、当該AIモデルの名称の冒頭に「Llama」を含める必要があります。 ii. あなたが統合されたエンドユーザー製品の一部として、ライセンシーからLlama素材またはその二次創作物を受け取った場合、本契約の第2条はあなたには適用されません。 iii. あなたが配布するLlama素材のすべてのコピーには、以下の帰属表示を「Notice」というテキストファイルとして配布する必要があります:「Llama 3.1 is licensed under the Llama 3.1 Community License, Copyright © Meta Platforms, Inc. All Rights Reserved.」 iv. あなたのLlama素材の使用は、適用法令(貿易規制法令を含む)を遵守し、Llama素材の許容使用ポリシー(https://llama.meta.com/llama3_1/use-policy で入手可能)に準拠する必要があり、このポリシーは本契約に援用されます。
- 追加の商業条項。Llama 3.1バージョンの公開日において、ライセンシーまたはライセンシーの関連会社が提供する製品またはサービスの月間アクティブユーザー数が、前月のカレンダー月で7億人を超える場合、あなたはMetaからライセンスを申請する必要があり、Metaは独自の判断で許可する場合があります。Metaが明示的に許可するまで、本契約に基づくいかなる権利も行使することはできません。
- 保証の否認。適用法令により要求されない限り、Llama素材およびそれから得られるすべての出力や結果は「現状のまま」提供され、いかなる種類の保証もなく、Metaはすべての明示および黙示の保証を否認します。これには、無制限に、所有権、非侵害、商品性、または特定の目的への適合性に関する保証が含まれます。あなたは、Llama素材の使用または再配布の適切性を独自に判断し、Llama素材の使用およびその出力や結果に関連するすべてのリスクを負う責任があります。
- 責任の制限。いかなる場合も、Metaまたはその関連会社は、契約、不法行為、過失、製品責任、またはその他の理論に基づいて、本契約に起因するいかなる利益損失、または間接的、特別な、結果的、偶発的、例示的、または懲罰的損害に対しても責任を負いません。たとえMetaまたはその関連会社がそれらの可能性を知っていたとしても同様です。
- 知的財産 a. 本契約の下で商標ライセンスは付与されません。Llama素材に関連して、Metaまたはライセンシーは、相手方またはその関連会社が所有するまたは関連するいかなる名称または標章も、Llama素材の説明および再配布における合理的かつ慣習的な使用に必要な場合、または本条5(a)に定める場合を除き、使用することはできません。Metaは、あなたに「Llama」(「標章」)を、第1.b.iの最後の文に準拠するためにのみ使用するライセンスを付与します。あなたは、Metaのブランドガイドライン(現在はhttps://about.meta.com/brand/resources/meta/company-brand/ で入手可能)に準拠する必要があります。あなたが標章を使用することによって生じるすべての信頼性は、Metaの利益に帰属します。 b. MetaによるLlama素材およびその二次創作物の所有権に関して、あなたが作成したLlama素材の二次創作物および改変については、あなたとMetaの間で、あなたがそれらの所有者となり、将来も所有者となります。 c. あなたが、Llama素材またはLlama 3.1の出力や結果、またはそれらの一部が、あなたが所有またはライセンスできる知的財産権またはその他の権利を侵害していると主張して、Metaまたは他の団体に対して訴訟またはその他の手続きを提起した場合、本契約の下であなたに付与されたすべてのライセンスは、当該訴訟または請求が提起された日から終了します。あなたは、Llama素材の使用または配布に起因する、または関連するいかなる第三者による請求から、Metaを弁護し、損害から保護する責任があります。
- 契約期間と終了。本契約の期間は、あなたが本契約を受諾した時点、またはLlama素材にアクセスした時点から開始し、本契約の条件に基づいて終了するまで有効です。あなたが本契約のいずれかの条項または条件に違反した場合、Metaは本契約を終了することができます。本契約が終了した場合は、あなたはLlama素材を削除し、使用を停止する必要があります。第3条、第4条、および第7条は、本契約の終了後も有効です。
- 準拠法と管轄。本契約は、カリフォルニア州の法律に基づいて管轄され、解釈されます。法の選択の原則は考慮されません。国際商品売買契約に関する国際連合条約は、本契約には適用されません。本契約に起因するあらゆる紛争については、カリフォルニア州の裁判所が排他的な管轄権を有します。
Llama 3.1 許容使用ポリシー
Metaは、Llama 3.1を含むツールや機能の安全で公正な使用の促進に取り組んでいます。あなたがLlama 3.1にアクセスまたは使用する場合、この許容使用ポリシー(「ポリシー」)に同意することになります。このポリシーの最新版はhttps://llama.meta.com/llama3_1/use-policyで確認できます。
禁止されている使用
私たちは、誰もがLlama 3.1を安全かつ責任を持って使用することを望んでいます。あなたは、Llama 3.1を以下の目的で使用しないこと、または他の人に使用させないことに同意します。
- 法律または他人の権利を侵害すること、以下を含む:
- 違法または不合法な活動またはコンテンツに関与し、促進し、生成し、寄与し、助長し、計画し、扇動し、またはそれを助けること。例えば:
- 暴力またはテロリズム
- 子供の搾取または危害。子供の搾取コンテンツの勧誘、作成、取得、または配布、または児童性虐待資料の通報を怠ること
- 人身売買、搾取、および性的暴力
- 未成年者への違法な情報または素材の配布。猥褻な素材を含む。または、当該情報または素材に関連する法定の年齢制限を適用しないこと
- 性的な勧誘
- その他の犯罪活動
- 個人または個人グループに対する嫌がらせ、虐待、脅迫、またはいじめに関与し、促進し、扇動し、またはそれを助けること
- 雇用、雇用福利厚生、信用、住宅、その他の経済的利益、またはその他の重要な商品やサービスの提供における差別またはその他の違法または有害な行為に関与し、促進し、扇動し、またはそれを助けること
- 金融、法律、医療/健康、または関連する専門職の無許可または無ライセンスの実践に関与すること。但し、これに限定されない
- 適用法令で必要とされる権利と同意なしに、個人に関する健康、人口統計、またはその他の敏感な個人情報またはプライベート情報を収集、処理、開示、生成、または推論すること
- 第三者の権利を侵害し、盗用し、またはその他の方法で違反するいかなる行動またはコンテンツを行い、または生成すること。Llama素材を使用した製品またはサービスの出力や結果を含む
- 悪意のあるコード、マルウェア、コンピューターウイルスを作成、生成、または助けること、またはウェブサイトまたはコンピューターシステムの適切な動作、整合性、操作、または外観を無効化、過負荷、妨害、または損なうこと
- 違法または不合法な活動またはコンテンツに関与し、促進し、生成し、寄与し、助長し、計画し、扇動し、またはそれを助けること。例えば:
- 個人に死亡または身体的危害のリスクをもたらす活動の計画または開発に関与し、促進し、扇動し、助け、または支援すること。以下に関連するLlama 3.1の使用を含む:
- 軍事、戦争、原子力産業または用途、諜報活動。米国務省が維持する国際兵器輸出規制(ITAR)の対象となる素材または活動の使用
- 銃器および違法な武器(武器開発を含む)
- 違法薬物および規制/管理物質
- 重要インフラストラクチャ、輸送技術、または大型機械の運用
- 自傷または他人への危害。自殺、切断行為、および摂食障害を含む
- 個人に対する暴力、虐待、または身体的危害を扇動または促進する目的のコンテンツ
- 他の人を意図的に欺瞞または誤解させること。以下に関連するLlama 3.1の使用を含む:
- 詐欺を生成、促進、または助長すること、または虚偽情報の作成または促進
- 中傷的なコンテンツを生成、促進、または助長すること。中傷的な声明、画像、または他のコンテンツの作成を含む
- スパムを生成、促進、またはさらに配布すること
- 同意、許可、または法的権利なしに他人をなりすますこと
- Llama 3.1の使用または出力が人間によって生成されたものと表現すること
- 偽のオンラインエンゲージメントを生成または助けること。偽のレビューや他の偽のオンラインエンゲージメント手段を含む
- エンドユーザーに対して、あなたのAIシステムの既知の危険性を適切に開示しないこと
このポリシーの違反、ソフトウェアの「バグ」、またはこのポリシーの違反につながる可能性のあるその他の問題は、以下のいずれかの方法で報告してください: * モデルの問題を報告する: https://github.com/meta-llama/llama-models/issues * モデルによって生成された危険なコンテンツを報告する: developers.facebook.com/llama_output_feedback * バグおよびセキュリティ上の懸念を報告する: facebook.com/whitehat/info * 許容使用ポリシーの違反またはMeta Llama 3の無許可使用を報告する: LlamaUseReport@meta.com



