模型概述
模型特點
模型能力
使用案例
🚀 函數調用微調版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許可證,自定義商業許可證可在此處獲取。



