模型简介
模型特点
模型能力
使用案例
🚀 函数调用微调版Llama 3指令模型
本模型针对函数调用进行了微调,适用于商业用途,遵循Llama 3社区许可协议。
🚀 快速开始
服务器快速设置
可使用Runpod一键TGI模板进行部署,点击此处。
推理脚本
完整的推理脚本可在此处购买:
- 支持TGI、vLLM和Llama.cpp。
- 可自动捕获、处理和链接函数调用。
提示格式
使用tokenizer.apply_chat_template
为了更方便地应用提示,可按以下方式设置(注意,以下对话是完整的,即如果要将对话输入模型,需要删除助手消息):
设置messages
:
[
{
"role": "function_metadata",
"content": "FUNCTION_METADATA"
},
{
"role": "user",
"content": "What is the current weather in London?"
},
{
"role": "function_call",
"content": "{\n \"name\": \"get_current_weather\",\n \"arguments\": {\n \"city\": \"London\"\n }\n}"
},
{
"role": "function_response",
"content": "{\n \"temperature\": \"15 C\",\n \"condition\": \"Cloudy\"\n}"
},
{
"role": "assistant",
"content": "The current weather in London is Cloudy with a temperature of 15 Celsius"
}
]
FUNCTION_METADATA
如下:
[
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "This function gets the current weather in a given city",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "The city, e.g., San Francisco"
},
"format": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "The temperature unit to use."
}
},
"required": ["city"]
}
}
},
{
"type": "function",
"function": {
"name": "get_clothes",
"description": "This function provides a suggestion of clothes to wear based on the current weather",
"parameters": {
"type": "object",
"properties": {
"temperature": {
"type": "string",
"description": "The temperature, e.g., 15 C or 59 F"
},
"condition": {
"type": "string",
"description": "The weather condition, e.g., 'Cloudy', 'Sunny', 'Rainy'"
}
},
"required": ["temperature", "condition"]
}
}
}
]
然后应用聊天模板以获取格式化的提示:
tokenizer = AutoTokenizer.from_pretrained('Trelis/Meta-Llama-3-8B-Instruct-function-calling', trust_remote_code=True)
prompt = tokenizer.apply_chat_template(prompt, tokenize=False, add_generation_prompt=True)
如果使用的是受限模型,需要先运行:
pip install huggingface_hub
huggingface-cli login
手动提示
<|begin_of_text|><|start_header_id|>function_metadata<|end_header_id|>
[
{
"type": "function",
"function": {
"name": "get_stock_price",
"description": "Get the stock price of an array of stocks",
"parameters": {
"type": "object",
"properties": {
"names": {
"type": "array",
"items": {
"type": "string"
},
"description": "An array of stocks"
}
},
"required": [
"names"
]
}
}
},
{
"type": "function",
"function": {
"name": "get_big_stocks",
"description": "Get the names of the largest N stocks by market cap",
"parameters": {
"type": "object",
"properties": {
"number": {
"type": "integer",
"description": "The number of largest stocks to get the names of, e.g. 25"
},
"region": {
"type": "string",
"description": "The region to consider, can be \"US\" or \"World\"."
}
},
"required": [
"number"
]
}
}
}
]<|eot_id|><|start_header_id|>user<|end_header_id|>
Get the names of the five largest stocks by market cap<|eot_id|><|start_header_id|>assistant<|end_header_id|>
Generated Response:
{
"name": "get_big_stocks",
"arguments": {
"number": 5,
"region": "US"
}
}<|eot_id|>
✨ 主要特性
- 该模型针对函数调用进行了微调,适用于商业用途,遵循Llama 3社区许可协议。
- 提供了多种推理脚本和提示格式,方便用户使用。
- 支持TGI、vLLM和Llama.cpp等多种推理方式。
📦 安装指南
本仓库包含Meta-Llama-3-8B的两个版本,分别用于transformers和原始llama3
代码库。
使用transformers
以下是使用Transformers的代码片段:
>>> import transformers
>>> import torch
>>> model_id = "meta-llama/Meta-Llama-3-8B"
>>> pipeline = transformers.pipeline(
"text-generation", model=model_id, model_kwargs={"torch_dtype": torch.bfloat16}, device_map="auto"
)
>>> pipeline("Hey how are you doing today?")
使用llama3
请遵循仓库中的说明。
要下载原始检查点,请参考以下使用huggingface-cli
的示例命令:
huggingface-cli download meta-llama/Meta-Llama-3-8B --include "original/*" --local-dir Meta-Llama-3-8B
对于Hugging Face支持,建议使用transformers或TGI,但类似的命令也适用。
💻 使用示例
基础用法
# 使用transformers库进行文本生成
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3-8B"
pipeline = transformers.pipeline(
"text-generation", model=model_id, model_kwargs={"torch_dtype": torch.bfloat16}, device_map="auto"
)
pipeline("Hey how are you doing today?")
高级用法
# 这里可以根据具体的高级场景进行代码编写
# 例如,结合更多的参数进行文本生成
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3-8B"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="auto",
max_length=200, # 设置最大生成长度
temperature=0.7 # 设置生成温度
)
pipeline("Hey how are you doing today?")
📚 详细文档
模型详情
Meta开发并发布了Meta Llama 3系列大语言模型(LLM),这是一组包含80亿和700亿参数的预训练和指令微调生成文本模型。Llama 3指令微调模型针对对话用例进行了优化,在常见行业基准测试中表现优于许多可用的开源聊天模型。此外,在开发这些模型时,我们非常注重优化其有用性和安全性。
属性 | 详情 |
---|---|
模型开发者 | Meta |
变体 | Llama 3有80亿和700亿参数两种版本,包括预训练和指令微调变体 |
输入 | 模型仅接受文本输入 |
输出 | 模型仅生成文本和代码 |
模型架构 | Llama 3是一种自回归语言模型,使用了优化的Transformer架构。微调版本使用监督微调(SFT)和基于人类反馈的强化学习(RLHF)来符合人类对有用性和安全性的偏好 |
训练数据 | 新的公开可用在线数据组合 |
参数 | 80亿和700亿 |
上下文长度 | 8k |
GQA | 是 |
标记数量 | 15T+ |
知识截止日期 | 80亿参数模型为2023年3月,700亿参数模型为2023年12月 |
模型发布日期 | 2024年4月18日 |
状态 | 这是一个基于离线数据集训练的静态模型。随着我们根据社区反馈改进模型安全性,未来将发布微调模型的新版本 |
许可证 | 可在此处获取自定义商业许可证 |
预期用途
- 预期用例:Llama 3旨在用于英语商业和研究用途。指令微调模型适用于类似助手的聊天,而预训练模型可用于各种自然语言生成任务。
- 超出范围:以任何违反适用法律法规(包括贸易合规法律)的方式使用。以《可接受使用政策》和《Llama 3社区许可证》禁止的任何其他方式使用。使用英语以外的语言。
⚠️ 重要提示
开发者可以根据《Llama 3社区许可证》和《可接受使用政策》对Llama 3模型进行微调,以支持英语以外的语言。
硬件和软件
- 训练因素:我们使用自定义训练库、Meta的研究超级集群和生产集群进行预训练。微调、标注和评估也在第三方云计算平台上进行。
- 碳足迹:预训练在H100 - 80GB(TDP为700W)类型的硬件上累计使用了770万个GPU小时的计算资源。估计总排放量为2290吨二氧化碳当量,其中100%由Meta的可持续发展计划进行了抵消。
模型 | 时间(GPU小时) | 功耗(W) | 碳排放(tCO2eq) |
---|---|---|---|
Llama 3 8B | 130万 | 700 | 390 |
Llama 3 70B | 640万 | 700 | 1900 |
总计 | 770万 | - | 2290 |
训练数据
- 概述:Llama 3在超过15万亿个来自公开可用来源的标记数据上进行了预训练。微调数据包括公开可用的指令数据集,以及超过1000万个手动标注的示例。预训练和微调数据集均不包含Meta用户数据。
- 数据新鲜度:预训练数据的截止日期分别为80亿参数模型的2023年3月和700亿参数模型的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 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 |
责任与安全
我们认为,开放的人工智能方法可以带来更好、更安全的产品,加速创新,并扩大整体市场。我们致力于负责任地开发人工智能,并采取了一系列措施来限制滥用和危害,支持开源社区。
基础模型是一种功能广泛的技术,旨在用于各种应用。它们并非旨在满足所有开发者对所有用例的安全级别偏好,因为这些偏好本质上会因不同应用而异。
相反,负责任的大语言模型应用部署是通过在应用开发的整个过程中实施一系列安全最佳实践来实现的,从模型预训练、微调,到部署包含保障措施的系统,以根据具体用例和受众定制安全需求。
作为Llama 3发布的一部分,我们更新了《负责任使用指南》,以概述开发者为其应用实施模型和系统级安全的步骤和最佳实践。我们还提供了一系列资源,包括Meta Llama Guard 2和Code Shield保障措施。这些工具已被证明可以在保持高度有用性的同时,大幅降低大语言模型系统的残余风险。我们鼓励开发者根据自身需求调整和部署这些保障措施,并提供了一个参考实现供您参考。
Llama 3-Instruct
正如《负责任使用指南》中所述,模型的有用性和对齐性之间可能存在一定的权衡。开发者应根据具体用例和受众,谨慎权衡对齐性和有用性的好处。在使用Llama模型时,开发者应注意残余风险,并根据需要利用额外的安全工具,以达到适合其用例的安全标准。
- 安全:对于我们的指令微调模型,我们进行了广泛的红队测试、对抗性评估,并实施了安全缓解技术,以降低残余风险。与任何大语言模型一样,残余风险可能仍然存在,我们建议开发者在其用例的背景下评估这些风险。同时,我们正在与社区合作,使人工智能安全基准标准更加透明、严格和可解释。
- 拒绝回答:除了残余风险,我们非常重视模型对良性提示的拒绝回答问题。过度拒绝不仅会影响用户体验,在某些情况下甚至可能有害。我们听取了开发者社区的反馈,并改进了微调过程,以确保Llama 3比Llama 2更不可能错误地拒绝回答提示。我们建立了内部基准测试并开发了缓解措施,以限制错误拒绝,使Llama 3成为我们迄今为止最有用的模型。
负责任的发布
除了上述负责任使用考虑因素外,我们遵循了严格的流程,在发布决策之前,我们会采取额外措施来防范滥用和关键风险。
- 滥用:如果您访问或使用Llama 3,即表示您同意《可接受使用政策》。该政策的最新版本可在此处查看。
- 关键风险
- CBRNE(化学、生物、放射性、核和高当量爆炸物):我们对模型在这方面的安全性进行了双重评估:在模型训练期间进行迭代测试,以评估与CBRNE威胁和其他对抗性风险相关的响应安全性;邀请外部CBRNE专家进行提升测试,评估模型准确提供专家知识的能力,并参考使用网络搜索(不使用模型)所能达到的水平,降低潜在CBRNE滥用的障碍。
- 网络安全:我们使用Meta的网络安全评估套件CyberSecEval对Llama 3进行了评估,测量了Llama 3作为编码助手时建议不安全代码的倾向,以及它响应协助进行网络攻击请求的倾向,其中攻击由行业标准MITRE ATT&CK网络攻击本体定义。在我们的不安全编码和网络攻击有用性测试中,Llama 3的表现与具有同等编码能力的模型相当或更安全。
- 儿童安全:我们使用专家团队进行了儿童安全风险评估,以评估模型产生可能导致儿童安全风险输出的能力,并通过微调提供必要和适当的风险缓解建议。我们利用这些专家红队测试来扩展我们在Llama 3模型开发过程中的评估基准覆盖范围。对于Llama 3,我们使用基于目标的方法进行了新的深入测试,以评估模型在多个攻击向量上的风险。我们还与内容专家合作进行红队测试,评估潜在违规内容,同时考虑市场特定的细微差别或经验。
社区
生成式人工智能安全需要专业知识和工具,我们相信开放社区的力量可以加速其发展。我们积极参与开放联盟,包括AI Alliance、Partnership in AI和MLCommons,积极为安全标准化和透明度做出贡献。我们鼓励社区采用MLCommons概念验证评估等分类法,以促进安全和内容评估的合作与透明度。我们的Purple Llama工具已开源供社区使用,并广泛分发给包括云服务提供商在内的生态系统合作伙伴。我们鼓励社区为我们的GitHub仓库做出贡献。
最后,我们建立了一系列资源,包括输出报告机制和漏洞赏金计划,以在社区的帮助下不断改进Llama技术。
伦理考虑和局限性
Llama 3的核心价值观是开放性、包容性和有用性。它旨在为所有人服务,并适用于广泛的用例。因此,它的设计旨在让不同背景、经验和观点的人都能使用。Llama 3以用户的实际需求为出发点,不插入不必要的判断或规范性内容,同时认识到即使在某些情况下可能存在问题的内容,在其他情况下也可能有其价值。它尊重所有用户的尊严和自主权,特别是在推动创新和进步的自由思想和表达价值观方面。
但Llama 3是一项新技术,与任何新技术一样,其使用存在风险。到目前为止的测试均使用英语进行,且无法涵盖所有场景。因此,与所有大语言模型一样,Llama 3的潜在输出无法提前预测,在某些情况下,模型可能会对用户提示产生不准确、有偏见或其他令人反感的响应。因此,在部署Llama 3模型的任何应用之前,开发者应针对其具体应用进行安全测试和调整。正如《负责任使用指南》中所述,我们建议将Purple Llama解决方案纳入您的工作流程,特别是Llama Guard,它提供了一个基础模型来过滤输入和输出提示,在模型级安全的基础上增加系统级安全。
请参阅《负责任使用指南》。
引用说明
@article{llama3modelcard,
title={Llama 3 Model Card},
author={AI@Meta},
year={2024},
url = {https://github.com/meta-llama/llama3/blob/main/MODEL_CARD.md}
}
贡献者
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
📄 许可证
本模型遵循Apache 2.0许可证,自定义商业许可证可在此处获取。



