模型概述
模型特點
模型能力
使用案例
🚀 Llama-3 8B Gradient Instruct 1048k
本項目的模型將 Llama-3 8B 的上下文長度從 8k 擴展到了 1040K 以上,展示了通過適當調整 RoPE theta,SOTA 大語言模型可以在最少的訓練下學會處理長上下文。此外,還對模型進行了進一步微調,以增強其類似助手的聊天能力。
🚀 快速開始
加入我們的自定義代理和長上下文(262k - 1M+)等待列表:點擊加入。
如果您希望構建自定義 AI 模型或代理,請發送郵件至 contact@gradient.ai。更多信息請參閱我們的 自定義大語言模型和 AI 系統的端到端開發服務。
✨ 主要特性
- 擴展上下文長度:將 Llama-3 8B 的上下文長度從 8k 擴展到 1040K 以上。
- 微調增強能力:進一步微調模型,增強其類似助手的聊天能力。
- 高效訓練:藉助 EasyContext Blockwise RingAttention 庫,在 Crusoe Energy 高性能 L40S 集群上可擴展且高效地訓練長達 1048k 令牌的上下文。
- 評估表現出色:在檢索和問答任務中僅次於 GPT - 4 和 Yi,是整體排名前 7 中參數最小的模型。
📦 安裝指南
文檔未提及具體安裝步驟,故跳過此章節。
💻 使用示例
基礎用法
使用 Transformers 庫的 pipeline 進行推理
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):])
使用 Transformers 庫的 AutoModelForCausalLM 進行推理
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 和 70B 大小的預訓練和指令微調生成文本模型。Llama 3 指令微調模型針對對話用例進行了優化,在常見行業基準測試中優於許多可用的開源聊天模型。
屬性 | 詳情 |
---|---|
模型開發者 | Meta |
變體 | Llama 3 有 8B 和 70B 參數兩種大小,包括預訓練和指令微調變體 |
輸入 | 模型僅接受文本輸入 |
輸出 | 模型僅生成文本和代碼 |
模型架構 | Llama 3 是一個自迴歸語言模型,使用優化的 Transformer 架構。微調版本使用監督微調(SFT)和基於人類反饋的強化學習(RLHF)來符合人類對有用性和安全性的偏好 |
訓練數據 | 新的公開在線數據混合 |
參數 | 8B 和 70B |
上下文長度 | 8k |
GQA | 是 |
令牌計數 | 15T+ |
知識截止日期 | 8B 模型為 2023 年 3 月,70B 模型為 2023 年 12 月 |
模型發佈日期 | 2024 年 4 月 18 日 |
狀態 | 這是一個基於離線數據集訓練的靜態模型。隨著我們根據社區反饋改進模型安全性,未來將發佈微調模型的新版本 |
許可證 | 可在 此處 獲取自定義商業許可證 |
預期用途
- 預期用例:Llama 3 旨在用於英語商業和研究用途。指令微調模型適用於類似助手的聊天,而預訓練模型可用於各種自然語言生成任務。
- 超出範圍的使用:以任何違反適用法律法規(包括貿易合規法律)的方式使用。以《可接受使用政策》和 Llama 3 社區許可證禁止的任何其他方式使用。使用英語以外的語言。
⚠️ 重要提示
開發者可以在遵守 Llama 3 社區許可證和《可接受使用政策》的前提下,對 Llama 3 模型進行微調以支持英語以外的語言。
硬件和軟件
- 訓練因素:使用自定義訓練庫、Meta 的研究超級集群和生產集群進行預訓練。微調、標註和評估也在第三方雲計算上進行。
- 碳足跡:預訓練在 H100 - 80GB 類型的硬件上累計使用了 770 萬 GPU 小時的計算資源(TDP 為 700W)。估計總排放量為 2290 tCO2eq,其中 100% 由 Meta 的可持續發展計劃抵消。
模型 | 時間(GPU 小時) | 功耗(W) | 碳排放(tCO2eq) |
---|---|---|---|
Llama 3 8B | 130 萬 | 700 | 390 |
Llama 3 70B | 640 萬 | 700 | 1900 |
總計 | 770 萬 | - | 2290 |
訓練數據
- 概述:Llama 3 在超過 15 萬億令牌的公開可用數據源上進行了預訓練。微調數據包括公開可用的指令數據集以及超過 1000 萬個人工標註示例。預訓練和微調數據集均不包含 Meta 用戶數據。
- 數據新鮮度:7B 模型的預訓練數據截止日期為 2023 年 3 月,70B 模型為 2023 年 12 月。
基準測試
在本節中,報告了 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 英語 (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
- 安全:對於指令微調模型,進行了廣泛的紅隊測試、對抗性評估並實施了安全緩解技術以降低殘留風險。建議開發者在其用例背景下評估這些風險。同時,正在與社區合作,使 AI 安全基準標準透明、嚴格且可解釋。
- 拒絕回答:除了殘留風險,還非常重視模型對良性提示的拒絕回答情況。過度拒絕不僅會影響用戶體驗,在某些情況下甚至可能有害。已根據開發者社區的反饋改進了微調,確保 Llama 3 比 Llama 2 更不可能錯誤地拒絕回答提示。
負責任的發佈
除了上述負責任使用考慮因素外,在做出發佈決定之前,遵循了嚴格的流程,採取了額外措施來防止濫用和應對關鍵風險。
- 濫用:如果訪問或使用 Llama 3,需同意《可接受使用政策》。該政策的最新版本可在 此處 查看。
- 關鍵風險:
- CBRNE(化學、生物、放射、核和高當量爆炸物):對模型在該領域的安全性進行了雙重評估:在模型訓練期間進行迭代測試,評估與 CBRNE 威脅和其他對抗性風險相關的響應安全性;邀請外部 CBRNE 專家進行提升測試,評估模型準確提供專家知識並減少潛在 CBRNE 濫用障礙的能力。
- 網絡安全:使用 Meta 的網絡安全評估套件 CyberSecEval 對 Llama 3 進行了評估,測量了 Llama 3 在用作編碼助手時建議不安全代碼的傾向,以及 Llama 3 響應協助進行網絡攻擊請求的傾向。在不安全編碼和網絡攻擊協助測試中,Llama 3 的表現與 同等編碼能力 的模型處於相同範圍或更安全。
- 兒童安全:使用專家團隊進行了兒童安全風險評估,以評估模型產生可能導致兒童安全風險輸出的能力,並通過 Llama 3 模型開發過程中的微調提供必要和適當的風險緩解建議。在 Llama 3 開發過程中,通過基於目標的方法進行了新的深入評估,以評估模型在多個攻擊向量上的風險。還與內容專家合作進行紅隊測試,評估潛在違規內容,同時考慮特定市場的細微差別或經驗。
社區
生成式 AI 安全需要專業知識和工具,相信開放社區的力量能夠加速其發展。是多個開放聯盟的活躍成員,包括 AI 聯盟、AI 合作組織和 MLCommons,積極為安全標準化和透明度做出貢獻。鼓勵社區採用 MLCommons 概念驗證評估等分類法,以促進安全和內容評估的協作與透明度。Purple Llama 工具已開源供社區使用,並廣泛分發到包括雲服務提供商在內的生態系統合作伙伴。鼓勵社區為 GitHub 倉庫 做出貢獻。
最後,設置了一系列資源,包括 輸出報告機制 和 漏洞賞金計劃,以在社區的幫助下不斷改進 Llama 技術。
倫理考量與侷限性
Llama 3 的核心價值觀是開放、包容和有用。旨在為所有人服務,適用於廣泛的用例。因此,設計為對不同背景、經驗和觀點的人都可訪問。Llama 3 以用戶的實際情況和需求為出發點,不插入不必要的判斷或規範性內容,同時認識到即使在某些情況下可能存在問題的內容,在其他情況下也可能有價值。尊重所有用戶的尊嚴和自主權,特別是在推動創新和進步的自由思想和表達價值觀方面。
然而,Llama 3 是一項新技術,與任何新技術一樣,其使用存在風險。迄今為止進行的測試均使用英語,且無法涵蓋所有場景。因此,與所有大語言模型一樣,Llama 3 的潛在輸出無法提前預測,在某些情況下,模型可能會對用戶提示產生不準確、有偏見或其他令人反感的響應。因此,在部署 Llama 3 模型的任何應用程序之前,開發者應針對其特定應用進行安全測試和調整。如《負責任使用指南》所述,建議將 Purple Llama 解決方案納入工作流程,特別是 Llama Guard,它提供了一個基礎模型,用於過濾輸入和輸出提示,在模型級安全之上增加系統級安全。
請參閱《負責任使用指南》,可在 此處 查看。
🔧 技術細節
方法
- 以 meta-llama/Meta-Llama-3-8B-Instruct 為基礎。
- 使用 NTK 感知插值 [1] 初始化 RoPE theta 的最佳調度,然後進行經驗性 RoPE theta 優化。
- 類似於 Large World Model [2],在不斷增加的上下文長度上進行漸進式訓練。
基礎設施
基於 EasyContext Blockwise RingAttention 庫 [3],在 Crusoe Energy 高性能 L40S 集群上可擴展且高效地訓練長達 1048k 令牌的上下文。值得注意的是,在 Ring Attention 之上採用了分層並行性,並使用自定義網絡拓撲,以在設備之間傳遞許多 KV 塊時更好地利用大型 GPU 集群,從而在模型訓練中實現了 33 倍的加速。
數據
訓練數據通過擴充 SlimPajama 生成了長上下文。還基於 UltraChat [4] 在聊天數據集上進行了微調,採用了與 [2] 類似的數據擴充方法。
漸進式訓練細節
65K | 262K | 524k | 1048k | |
---|---|---|---|---|
初始化來源 | LLaMA - 3 8B | 65K | 262K | 524k |
序列長度 2^N | 16 | 18 | 19 | 20 |
RoPE theta | 15.3 M | 207.1 M | 1.06B | 2.80B |
批量大小 | 1 | 1 | 16 | 8 |
梯度累積步數 | 32 | 16 | 1 | 1 |
步數 | 30 | 24 | 50 | 50 |
總令牌數 | 62914560 | 100663296 | 419430400 | 838860800 |
學習率 | 2.00E - 05 | 2.00E - 05 | 2.00E - 05 | 2.00E - 05 |
GPU 數量 | 8 | 32 | 512 | 512 |
GPU 類型 | NVIDIA L40S | NVIDIA L40S | NVIDIA L40S | NVIDIA L40S |
訓練時間(分鐘) | 202 | 555 | 61 | 87 |
評估
EVAL_MAX_CONTEXT_LENGTH=1040200
EVAL_MIN_CONTEXT_LENGTH=100
EVAL_CONTEXT_INTERVAL=86675
EVAL_DEPTH_INTERVAL=0.2
EVAL_RND_NUMBER_DIGITS=8
HAYSTACK1:
EVAL_GENERATOR_TOKENS=25
HAYSTACK2:
EVAL_CONTEXT_INTERVAL=173350
EVAL_GENERATOR_TOKENS=150000
HAYSTACK3:
EVAL_GENERATOR_TOKENS=925000
Haystack 1 和 3 中未顯示的所有框的準確率均為 100%。Haystacks 1、2 和 3 的更多詳細信息見 此博客文章。
量化
- Crusoe 的 GGUF。注意,需要在 llama.cpp 中添加 128009 作為特殊令牌。
- MLX - 4bit
- Ollama
- vLLM Docker 鏡像,建議通過
--max-model-len 32768
加載。 - 如果對託管版本感興趣,請發送郵件至下方郵箱。
📄 許可證
本項目使用 llama3 許可證。
引用說明
@misc{gradientlongcontextllama3,
title={Llama 3 Gradient: A series of long context models},
author={Leonid Pekelis and Michael Feil and Forrest Moret and Mark Huang and Tiffany Peng},
year={2024},
url = {https://gradient.ai/blog/scaling-rotational-embeddings-for-long-context-language-models},
doi = { 10.57967/hf/3372 },
}
參考文獻
[1] Peng, Bowen, et al. "Yarn: Efficient context window extension of large language models." arXiv preprint arXiv:2309.00071 (2023).
[2] Liu, Hao, et al. "World Model on Million-Length Video And Language With RingAttention." arXiv preprint arXiv:2402.08268 (2024).
[3] https://github.com/jzhang38/EasyContext
[4] Ning Ding, Yulin Chen, Bokai Xu, Yujia Qin, Zhi Zheng, Shengding Hu, Zhiyuan Liu, Maosong Sun, and Bowen Zhou. Enhancing chat language models by scaling high-quality instructional conversations. arXiv preprint arXiv:2305.14233, 2023.
梯度 AI 團隊
Gradient 正在加速各行業的 AI 變革。其 AI 鑄造廠整合用戶數據,部署自主助手,為企業的關鍵運營提供支持。
聯繫我們
如有任何問題,請發送郵件至 contact@gradient.ai。
貢獻者
Aaditya Singh; Aaron Grattafiori; Abhimanyu Dubey; Abhinav Jauhri; Abhinav Pandey; Abhishek Kadian; Adam Kelsey; Adi Gangidi; Ahmad Al-Dahle; Ahuva Goldstand; Aiesha Letman; Ajay Menon; Akhil Mathur; Alan Schelten; Alex Vaughan; Amy Yang; Andrei Lupu; Andres Alvarado; Andrew Gallagher; Andrew Gu; Andrew Ho; Andrew Poulton; Andrew Ryan; Angela Fan; Ankit Ramchandani; Anthony Hartshorn; Archi Mitra; Archie Sravankumar; Artem Korenev; Arun Rao; Ashley Gabriel; Ashwin Bharambe; Assaf Eisenman; Aston Zhang; Aurelien Rodriguez; Austen Gregerson; Ava Spataru; Baptiste Roziere; Ben Maurer; Benjamin Leonhardi; Bernie Huang; Bhargavi Paranjape; Bing Liu; Binh Tang; Bobbie Chern; Brani Stojkovic; Brian Fuller; Catalina Mejia Arenas; Chao Zhou; Charlotte Caucheteux; Chaya Nayak; Ching-Hsiang Chu; Chloe Bi; Chris Cai; Chris Cox; Chris Marra; Chris McConnell; Christian Keller; Christoph Feichtenhofer; Christophe Touret; Chunyang Wu; Corinne Wong; Cristian Canton Ferrer; Damien Allonsius; Daniel Kreymer; Daniel Haziza; Daniel Li; Danielle Pintz; Danny Livshits; Danny Wyatt; David Adkins; David Esiobu; David Xu; Davide Testuggine; Delia David; Devi Parikh; Dhruv Choudhary; Dhruv Mahajan; Diana Liskovich; Diego Garcia-Olano; Diego Perino; Dieuwke Hupkes; Dingkang Wang; Dustin Holland; Egor Lakomkin; Elina Lobanova; Xiaoqing Ellen Tan; Emily Dinan; Eric Smith; Erik Brinkman; Esteban Arcaute; Filip Radenovic; Firat Ozgenel; Francesco Caggioni; Frank Seide; Frank Zhang; Gabriel Synnaeve; Gabriella Schwarz; Gabrielle Lee; Gada Badeer; Georgia Anderson; Graeme Nail; Gregoire Mialon; Guan Pang; Guillem Cucurell; Hailey Nguyen; Hannah Korevaar; Hannah Wang; Haroun Habeeb; Harrison Rudolph; Henry Aspegren; Hu Xu; Hugo Touvron; Iga Kozlowska; Igor Molybog; Igor Tufanov; Iliyan Zarov; Imanol Arrieta Ibarra; Irina-Elena Veliche; Isabel Kloumann; Ishan Misra; Ivan Evtimov; Jacob Xu; Jade Copet; Jake Weissman; Jan Geffert; Jana Vranes; Japhet Asher; Jason Park; Jay Mahadeokar; Jean-Baptiste Gaya; Jeet Shah; Jelmer van der Linde; Jennifer Chan; Jenny Hong; Jenya Lee; Jeremy Fu; Jeremy Teboul; Jianfeng Chi; Jianyu Huang; Jie Wang; Jiecao Yu; Joanna Bitton; Joe Spisak; Joelle Pineau; Jon Carvill; Jongsoo Park; Joseph Rocca; Joshua Johnstun; Junteng Jia; Kalyan Vasuden Alwala; Kam Hou U; Kate Plawiak; Kartikeya Upasani; Kaushik Veeraraghavan; Ke Li; Kenneth Heafield; Kevin Stone; Khalid El-Arini; Krithika Iyer; Kshitiz Malik; Kuenley Chiu; Kunal Bhalla; Kyle Huang; Lakshya Garg; Lauren Rantala-Yeary; Laurens van der Maaten; Lawrence Chen; Leandro Silva; Lee Bell; Lei Zhang; Liang Tan; Louis Martin; Lovish Madaan; Luca Wehrstedt; Lukas Blecher; Luke de Oliveira; Madeline Muzzi; Madian Khabsa; Manav Avlani; Mannat Singh; Manohar Paluri; Mark Zuckerberg; Marcin Kardas; Martynas Mankus; Mathew Oldham; Mathieu Rita; Matthew Lennie; Maya Pavlova; Meghan Keneally; Melanie Kambadur; Mihir Patel; Mikayel Samvelyan; Mike Clark; Mike Lewis; Min Si; Mitesh Kumar Singh; Mo Metanat; Mona Hassan; Naman Goyal; Narjes Torabi; Nicolas Usunier; Nikolay Bashlykov; Nikolay Bogoychev; Niladri Chatterji; Ning Dong; Oliver Aobo Yang; Olivier Duchenne; Onur Celebi; Parth Parekh; Patrick Alrassy; Paul Saab; Pavan Balaji; Pedro Rittner; Pengchuan Zhang; Pengwei Li; Petar Vasic; Peter Weng; Polina Zvyagina; Prajjwal Bhargava; Pratik Dubal; Praveen Krishnan; Punit Singh Koura; Qing He; Rachel Rodriguez; Ragavan Srinivasan; Rahul Mitra; Ramon Calderer; Raymond Li; Robert Stojnic; Roberta Raileanu; Robin Battey; Rocky Wang; Rohit Girdhar; Rohit Patel; Romain Sauvestre; Ronnie Polidoro; Roshan Sumbaly; Ross Taylor; Ruan Silva; Rui Hou; Rui Wang; Russ Howes; Ruty Rinott; Saghar Hosseini; Sai Jayesh Bondu; Samyak Datta; Sanjay Singh; Sara Chugh; Sargun Dhillon; Satadru Pan; Sean Bell; Sergey Edunov; Shaoliang Nie; Sharan Narang; Sharath Raparthy; Shaun Lindsay; Sheng Feng; Sheng Shen; Shenghao Lin; Shiva Shankar; Shruti Bhosale; Shun Zhang; Simon Vandenhende; Sinong Wang; Seohyun Sonia Kim; Soumya Batra; Sten Sootla; Steve Kehoe; Suchin Gururangan; Sumit Gupta; Sunny Virk; Sydney Borodinsky; Tamar Glaser; Tamar Herman; Tamara Best; Tara Fowler; Thomas Georgiou; Thomas Scialom; Tianhe Li; Todor Mihaylov; Tong Xiao; Ujjwal Karn; Vedanuj Goswami; Vibhor Gupta; Vignesh Ramanathan; Viktor Kerkez; Vinay Satish Kumar; Vincent Gonguet; Vish Vogeti; Vlad Poenaru; Vlad Tiberiu Mihailescu; Vladan Petrovic; Vladimir Ivanov; Wei Li; Weiwei Chu; Wenhan Xiong; Wenyin Fu; Wes Bouaziz; Whitney Meers; Will Constable; Xavier Martinet; Xiaojian Wu; Xinbo Gao; Xinfeng Xie; Xuchao Jia; Yaelle Goldschlag; Yann LeCun; Yashesh Gaur; Yasmine Babaei; Ye Qi; Yenda Li; Yi Wen; Yiwen Song; Youngjin Nam; Yuchen Hao; Yuchen Zhang; Yun Wang; Yuning Mao; Yuzi He; Zacharie Delpierre Coudert; Zachary DeVito; Zahra Hankir; Zhaoduo Wen; Zheng Yan; Zhengxing Chen; Zhenyu Yang; Zoe Papakipos



