模型简介
模型特点
模型能力
使用案例
🚀 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



