模型概述
模型特點
模型能力
使用案例
🚀 fLlama 2 - 支持函數調用的Llama 2
fLlama 2為Hugging Face的Llama 2模型增添了函數調用能力,模型響應會返回帶有函數名和參數的結構化JSON參數。
🚀 快速開始
LLama 2 支持函數調用的版本 2 已發佈,可點擊此處查看。
✨ 主要特性
- fLlama 2 擴展了Hugging Face的Llama 2模型,使其具備函數調用能力。
- 模型以結構化的JSON參數響應,包含函數名和參數。
📦 安裝指南
使用Google Colab和HuggingFace進行推理
- GPTQ-trained(快速 + 最佳準確率) - 本倉庫 其他模型均採用bitsandbytes NF4訓練,而此模型專門使用GPTQ方法進行訓練。由於它是一個適配器模型,目前運行起來較為複雜。可嘗試以下操作:
!pip install -q git+https://github.com/SunMarc/transformers.git@gptq_integration
!pip install -q git+https://github.com/SunMarc/optimum.git@add-gptq-marc
!pip install -q git+https://github.com/SunMarc/peft.git@peft_gptq
!pip install -q git+https://github.com/fxmarty/AutoGPTQ.git@patch-act-order-exllama # 可能可以通過使用輪子來加速,目前需要5分鐘。
import transformers
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig, pipeline
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
from auto_gptq.nn_modules.qlinear.qlinear_cuda_old import QuantLinear
# 如果使用適配器,加載模型的腳本
model_name_or_path = "ybelkada/llama-7b-GPTQ-test"
model = AutoModelForCausalLM.from_pretrained(model_name_or_path, device_map="auto") # 必須是auto,不能是cpu
adapter_model_name = 'Trelis/Llama-2-7b-chat-hf-function-calling-GPTQ-trained-adapters'
- GPTQ(快速 + 良好準確率) 可通過保存此支持函數調用的聊天機器人的副本開始使用。如果選擇GPU運行時,就可以使用免費的Colab筆記本進行推理。更多詳細信息請查看筆記本。
- Bits and Bytes NF4(推理速度最慢) 可嘗試此筆記本fLlama_Inference notebook。
- GGML(最適合在筆記本電腦上運行,對Mac尤為友好)
要運行此模型,需要從github上的ggerganov處安裝llamaccp。
- 從上述可用模型下的GGML鏈接下載ggml文件。
- 建議運行如下命令:
./server -m fLlama-2-7b-chat.ggmlv3.q3_K_M.bin -ngl 32 -c 2048
此命令可讓你在瀏覽器中運行聊天機器人。-ngl
參數將層卸載到Mac的GPU上,可獲得非常好的令牌生成速度。
💻 使用示例
基礎用法
要進行函數調用,輸入應按以下格式進行格式化:
<s>[INST] <<SYS>>
你是一位樂於助人的研究助手。以下是一些可用的函數,可用於獲取更多數據以回答用戶問題(若相關):
{
"function": "search_bing",
"description": "在Bing上搜索網絡內容。這允許用戶在網上搜索內容。",
"arguments": [
{
"name": "query",
"type": "string",
"description": "搜索查詢字符串"
}
]
}
{
"function": "search_arxiv",
"description": "在ArXiv上搜索研究論文。在查詢中適當使用AND、OR和NOT運算符來組合術語。",
"arguments": [
{
"name": "query",
"type": "string",
"description": "搜索查詢字符串"
}
]
}
要調用函數,請立即且僅以以下格式的JSON對象進行響應:
{
"function": "function_name",
"arguments": {
"argument1": "argument_value",
"argument2": "argument_value"
}
}
<</SYS>>
查找關於高壓批量反滲透的論文 [/INST]
請注意,functionMetadata
應為JSON對象的字符串表示形式,如下所示:
"functionMetaData": {
"function": "search_bing",
"description": "在Bing上搜索網絡內容。這允許用戶在網上搜索內容。",
"arguments": [
{
"name": "query",
"type": "string",
"description": "搜索查詢字符串"
}
]
}
語言模型應按以下格式的JSON對象進行響應:
{
"function": "function_name",
"arguments": {
"argument1": "argument_value",
"argument2": "argument_value"
}
}
建議處理以下情況:
- 響應中沒有JSON對象。
- 響應中除JSON響應外還包含文本。
📚 詳細文檔
可用模型
- fLlama-7B (bitsandbytes NF4) - 免費
- fLlama-7B-chat (bitsandbytes NF4), (GGML), (GPTQ), (GPTQ-trained) - 免費
- fLlama-13B-chat (bitsandbytes NF4), (GPTQ) - 付費
許可和使用
- fLlama-7B:遵循Llama 2許可。
- fLlama-13B:
- 用於在函數調用上實現更高的精度。
- 可在此處購買訪問權限:fLlama-13b:每位用戶/座位19.99歐元。
- 許可證不可轉讓給其他用戶/實體。
- 如需更大模型的商業許可證,請發郵件至ronan [at] trelis [dot] com。
- fLlama模型的使用還需遵守Meta許可證中的條款。
數據集
用於訓練此模型的數據集可在Trelis Function Calling Extended Dataset中找到。
🔧 技術細節
訓練過程
訓練期間使用了以下bitsandbytes
量化配置:
- quant_method: gptq
- bits: 4
- tokenizer: None
- dataset: None
- group_size: 128
- damp_percent: 0.01
- desc_act: False
- sym: True
- true_sequential: True
- use_cuda_fp16: False
- model_seqlen: None
- block_name_to_quantize: None
- module_name_preceding_first_block: None
- batch_size: 1
- pad_token_id: None
- disable_exllama: True
框架版本
- PEFT 0.5.0.dev0
📄 許可證
fLlama模型許可
- fLlama-7B遵循Llama 2許可。
- fLlama-13B需付費購買訪問權限,許可證不可轉讓,商業許可證可按需獲取。使用fLlama模型需遵守Meta許可證中的條款。
Llama 2模型許可
使用此模型受Meta許可證的約束。要下載模型權重和分詞器,請訪問網站,接受許可後再在此處請求訪問。自定義商業許可證可在https://ai.meta.com/resources/models-and-libraries/llama-downloads/獲取。
Llama 2模型相關信息
模型詳情
Llama 2是一系列預訓練和微調的生成式文本模型,參數規模從70億到700億不等。這是7B微調模型的倉庫,針對對話用例進行了優化,並轉換為Hugging Face Transformers格式。其他模型的鏈接可在底部索引中找到。
屬性 | 詳情 |
---|---|
模型開發者 | Meta |
變體 | Llama 2有多種參數規模,包括7B、13B和70B,以及預訓練和微調的變體。 |
輸入 | 模型僅接受文本輸入。 |
輸出 | 模型僅生成文本。 |
模型架構 | Llama 2是一種自迴歸語言模型,採用了優化的Transformer架構。微調版本使用監督微調(SFT)和基於人類反饋的強化學習(RLHF)來符合人類對有用性和安全性的偏好。 |
訓練數據 | 新的公開在線數據組合 |
訓練時間 | 2023年1月至2023年7月 |
狀態 | 這是一個基於離線數據集訓練的靜態模型。隨著我們根據社區反饋改進模型安全性,未來將發佈微調模型的新版本。 |
研究論文 | "Llama-2: Open Foundation and Fine-tuned Chat Models" |
預期用途
- 預期用例:Llama 2旨在用於英語的商業和研究用途。微調模型適用於類似助手的聊天場景,而預訓練模型可用於各種自然語言生成任務。要獲得聊天版本的預期功能和性能,需要遵循特定的格式,包括
INST
和<<SYS>>
標籤、BOS
和EOS
令牌,以及其間的空格和換行符(建議對輸入調用strip()
以避免雙空格)。詳情請參閱github上的參考代碼:chat_completion
。 - 超出範圍的用途:以任何違反適用法律法規(包括貿易合規法律)的方式使用。使用英語以外的語言。以Llama 2的可接受使用政策和許可協議禁止的任何其他方式使用。
硬件和軟件
模型 | 時間(GPU小時) | 功耗(W) | 碳排放(tCO₂eq) |
---|---|---|---|
Llama 2 7B | 184320 | 400 | 31.22 |
Llama 2 13B | 368640 | 400 | 62.44 |
Llama 2 70B | 1720320 | 400 | 291.42 |
總計 | 3311616 | - | 539.00 |
預訓練期間使用了類型為A100 - 80GB(TDP為350 - 400W)的硬件,累計進行了330萬GPU小時的計算。估計總排放量為539 tCO₂eq,其中100%由Meta的可持續發展計劃進行了抵消。
訓練數據
- 概述:Llama 2在來自公開來源的2萬億個令牌數據上進行了預訓練。微調數據包括公開可用的指令數據集,以及超過100萬個新的人工標註示例。預訓練和微調數據集均不包含Meta用戶數據。
- 數據新鮮度:預訓練數據截止到2022年9月,但部分微調數據更新至2023年7月。
評估結果
模型 | 規模 | 代碼 | 常識推理 | 世界知識 | 閱讀理解 | 數學 | MMLU | BBH | AGI評估 |
---|---|---|---|---|---|---|---|---|---|
Llama 1 | 7B | 14.1 | 60.8 | 46.2 | 58.5 | 6.95 | 35.1 | 30.3 | 23.9 |
Llama 1 | 13B | 18.9 | 66.1 | 52.6 | 62.3 | 10.9 | 46.9 | 37.0 | 33.9 |
Llama 1 | 33B | 26.0 | 70.0 | 58.4 | 67.6 | 21.4 | 57.8 | 39.8 | 41.7 |
Llama 1 | 65B | 30.7 | 70.7 | 60.5 | 68.6 | 30.8 | 63.4 | 43.5 | 47.6 |
Llama 2 | 7B | 16.8 | 63.9 | 48.9 | 61.3 | 14.6 | 45.3 | 32.6 | 29.3 |
Llama 2 | 13B | 24.5 | 66.9 | 55.4 | 65.8 | 28.7 | 54.8 | 39.4 | 39.1 |
Llama 2 | 70B | 37.5 | 71.9 | 63.6 | 69.4 | 35.2 | 68.9 | 51.2 | 54.2 |
模型 | TruthfulQA | Toxigen |
---|---|---|
Llama 1 7B | 27.42 | 23.00 |
Llama 1 13B | 41.74 | 23.08 |
Llama 1 33B | 44.19 | 22.57 |
Llama 1 65B | 48.71 | 21.77 |
Llama 2 7B | 33.29 | 21.25 |
Llama 2 13B | 41.86 | 26.10 |
Llama 2 70B | 50.18 | 24.60 |
模型 | TruthfulQA | Toxigen |
---|---|---|
Llama-2-Chat 7B | 57.04 | 0.00 |
Llama-2-Chat 13B | 62.18 | 0.00 |
Llama-2-Chat 70B | 64.14 | 0.01 |
倫理考慮和侷限性
Llama 2是一項新技術,使用時存在風險。到目前為止的測試均使用英語進行,且無法涵蓋所有場景。因此,與所有大語言模型一樣,無法提前預測Llama 2的潛在輸出,在某些情況下,模型可能會對用戶提示產生不準確、有偏見或其他令人反感的響應。因此,在部署Llama 2的任何應用程序之前,開發人員應針對模型的特定應用進行安全測試和調整。請參閱負責任使用指南。
報告問題
請通過以下方式之一報告模型的任何軟件“漏洞”或其他問題:
- 報告模型問題:github.com/facebookresearch/llama
- 報告模型生成的有問題內容:developers.facebook.com/llama_output_feedback
- 報告漏洞和安全問題:facebook.com/whitehat/info
Llama模型索引
模型 | Llama2 | Llama2-hf | Llama2-chat | Llama2-chat-hf |
---|---|---|---|---|
7B | Link | Link | Link | Link |
13B | Link | Link | Link | Link |
70B | Link | Link | Link | Link |



