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



