模型简介
模型特点
模型能力
使用案例
🚀 Llama-3.1-70B-Instruct GGUF模型
Llama-3.1-70B-Instruct GGUF模型是Meta推出的多语言大语言模型,具有多种量化格式,适用于不同硬件和场景。它在多个基准测试中表现出色,可用于商业和研究领域,如AI网络监控等。
🚀 快速开始
安装依赖
确保你已安装transformers
库,可通过以下命令更新:
pip install --upgrade transformers
运行推理
以下是使用transformers
库进行对话推理的示例代码:
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3.1-70B-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?"},
]
outputs = pipeline(
messages,
max_new_tokens=256,
)
print(outputs[0]["generated_text"][-1])
✨ 主要特性
- 超低比特量化:采用IQ-DynamicGate方法,在超低比特(1 - 2比特)量化下仍能保持较高准确性,同时显著提高内存效率。
- 多语言支持:支持英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语等多种语言。
- 多种模型格式:提供BF16、F16、Q4_K、Q6_K、Q8_0等多种量化格式,可根据硬件和内存需求灵活选择。
- 工具调用支持:支持多种工具使用格式,可通过聊天模板实现工具调用功能。
📦 安装指南
使用transformers
库
确保你的transformers
版本在4.43.0及以上,可通过以下命令更新:
pip install --upgrade transformers
使用bitsandbytes
进行内存优化
可使用bitsandbytes
和transformers
将模型以8比特或4比特加载,示例代码如下:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from bitsandbytes.nn import BitsAndBytesConfig
model_id = "meta-llama/Meta-Llama-3.1-70B-Instruct"
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
quantized_model = AutoModelForCausalLM.from_pretrained(
model_id, device_map="auto", torch_dtype=torch.bfloat16, quantization_config=quantization_config)
tokenizer = AutoTokenizer.from_pretrained(model_id)
input_text = "What are we having for dinner?"
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
output = quantized_model.generate(**input_ids, max_new_tokens=10)
print(tokenizer.decode(output[0], skip_special_tokens=True))
若要以4比特加载,只需将load_in_8bit=True
改为load_in_4bit=True
。
使用llama
代码库
请遵循仓库中的说明进行操作。可使用以下命令下载原始检查点:
huggingface-cli download meta-llama/Meta-Llama-3.1-70B-Instruct --include "original/*" --local-dir Meta-Llama-3.1-70B-Instruct
💻 使用示例
基础用法
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3.1-70B-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?"},
]
outputs = pipeline(
messages,
max_new_tokens=256,
)
print(outputs[0]["generated_text"][-1])
高级用法 - 工具调用
# 定义工具
def get_current_temperature(location: str) -> float:
"""
Get the current temperature at a location.
Args:
location: The location to get the temperature for, in the format "City, Country"
Returns:
The current temperature at the specified location in the specified units, as a float.
"""
return 22. # A real function should probably actually get the temperature!
# 创建聊天并应用聊天模板
messages = [
{"role": "system", "content": "You are a bot that responds to weather queries."},
{"role": "user", "content": "Hey, what's the temperature in Paris right now?"}
]
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3.1-70B-Instruct")
inputs = tokenizer.apply_chat_template(messages, tools=[get_current_temperature], add_generation_prompt=True)
# 生成文本
import torch
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("meta-llama/Meta-Llama-3.1-70B-Instruct", torch_dtype=torch.bfloat16, device_map="auto")
output = model.generate(inputs, max_new_tokens=256)
print(tokenizer.decode(output[0], skip_special_tokens=True))
# 处理工具调用
tool_call = {"name": "get_current_temperature", "arguments": {"location": "Paris, France"}}
messages.append({"role": "assistant", "tool_calls": [{"type": "function", "function": tool_call}]})
messages.append({"role": "tool", "name": "get_current_temperature", "content": "22.0"})
# 再次生成文本
inputs = tokenizer.apply_chat_template(messages, tools=[get_current_temperature], add_generation_prompt=True)
output = model.generate(inputs, max_new_tokens=256)
print(tokenizer.decode(output[0], skip_special_tokens=True))
📚 详细文档
模型信息
属性 | 详情 |
---|---|
模型开发者 | Meta |
模型架构 | Llama 3.1是一个自回归语言模型,使用优化的Transformer架构。微调版本使用监督微调(SFT)和基于人类反馈的强化学习(RLHF)来符合人类对有用性和安全性的偏好。 |
支持语言 | 英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语 |
模型发布日期 | 2024年7月23日 |
状态 | 这是一个基于离线数据集训练的静态模型。随着我们根据社区反馈改进模型安全性,未来将发布微调模型的新版本。 |
许可证 | 自定义商业许可证,Llama 3.1社区许可证,可在此处获取。 |
模型格式选择
模型格式 | 精度 | 内存使用 | 设备要求 | 最佳用例 |
---|---|---|---|---|
BF16 | 最高 | 高 | 支持BF16的GPU/CPU | 高速推理且减少内存使用 |
F16 | 高 | 高 | 支持FP16的设备 | 当BF16不可用时的GPU推理 |
Q4_K | 中低 | 低 | CPU或低VRAM设备 | 内存受限环境的最佳选择 |
Q6_K | 中 | 中等 | 内存较多的CPU | 量化模型中准确性较好的选择 |
Q8_0 | 高 | 中等 | 有足够VRAM的CPU或GPU | 量化模型中准确性最高的选择 |
IQ3_XS | 非常低 | 非常低 | 超低内存设备 | 极致内存效率但准确性低 |
Q4_0 | 低 | 低 | ARM或低内存设备 | llama.cpp可针对ARM设备进行优化 |
包含文件及详情
文件名 | 说明 |
---|---|
Llama-3.1-70B-Instruct-bf16.gguf |
模型权重保存为BF16格式。如果需要将模型重新量化为其他格式,可使用此文件。适用于支持BF16加速的设备。 |
Llama-3.1-70B-Instruct-f16.gguf |
模型权重保存为F16格式。适用于支持FP16的设备,尤其是BF16不可用时。 |
Llama-3.1-70B-Instruct-bf16-q8_0.gguf |
输出和嵌入层保持为BF16格式,其他层量化为Q8_0。适用于支持BF16且需要量化版本的设备。 |
Llama-3.1-70B-Instruct-f16-q8_0.gguf |
输出和嵌入层保持为F16格式,其他层量化为Q8_0。 |
Llama-3.1-70B-Instruct-q4_k.gguf |
输出和嵌入层量化为Q8_0,其他层量化为Q4_K。适用于内存有限的CPU推理。 |
Llama-3.1-70B-Instruct-q4_k_s.gguf |
最小的Q4_K变体,以牺牲准确性为代价减少内存使用。适用于极低内存环境。 |
Llama-3.1-70B-Instruct-q6_k.gguf |
输出和嵌入层量化为Q8_0,其他层量化为Q6_K。 |
Llama-3.1-70B-Instruct-q8_0.gguf |
完全量化为Q8格式的模型,准确性更高,但需要更多内存。 |
Llama-3.1-70B-Instruct-iq3_xs.gguf |
采用IQ3_XS量化,针对极致内存效率进行优化。适用于超低内存设备。 |
Llama-3.1-70B-Instruct-iq3_m.gguf |
采用IQ3_M量化,提供中等块大小以提高准确性。适用于低内存设备。 |
Llama-3.1-70B-Instruct-q4_0.gguf |
纯Q4_0量化,针对ARM设备进行优化。适用于低内存环境。建议使用IQ4_NL以获得更好的准确性。 |
测试AI网络监控
如果你觉得这些模型有用,请点击“点赞”!同时,帮助测试AI网络监控助手,进行量子就绪安全检查: 免费网络监控
测试方法
- 点击任意页面右下角的聊天图标。
- 选择AI助手类型:
TurboLLM
(GPT-4-mini)FreeLLM
(开源)TestLLM
(仅支持CPU的实验性模型)
测试内容
- 针对实时网络服务进行函数调用。
- 探索模型在处理以下任务时的最小规模:
- 自动化Nmap扫描
- 量子就绪检查
- Metasploit集成
不同助手介绍
- TurboLLM:使用
gpt-4-mini
进行实时网络诊断和自动化渗透测试(Nmap/Metasploit)。可通过下载免费网络监控代理获得更多令牌。 - HugLLM:使用约80亿参数的开源模型,提供比TurboLLM多2倍的令牌,支持AI日志分析,运行在Hugging Face推理API上。
- TestLLM:当前的实验性模型(llama.cpp在6个CPU线程上运行),零配置设置,加载时间30秒(推理速度慢但无API成本)。如果你对边缘设备AI感兴趣,欢迎合作!
示例AI命令
"Give me info on my websites SSL certificate"
"Check if my server is using quantum safe encyption for communication"
"Run a quick Nmap vulnerability test"
🔧 技术细节
超低比特量化方法
基准测试背景
所有测试均在Llama-3-8B-Instruct上进行,使用标准困惑度评估管道、2048令牌上下文窗口和相同的提示集。
方法
- 动态精度分配:
- 前/后25%的层采用IQ4_XS(选定层)。
- 中间50%的层采用IQ2_XXS/IQ3_S以提高效率。
- 关键组件保护:
- 嵌入层/输出层使用Q5_K,与标准1 - 2比特量化相比,可将误差传播降低38%。
量化性能比较(Llama-3-8B)
量化方式 | 标准PPL | DynamicGate PPL | Δ PPL | 标准大小 | DG大小 | Δ大小 | 标准速度 | DG速度 |
---|---|---|---|---|---|---|---|---|
IQ2_XXS | 11.30 | 9.84 | -12.9% | 2.5G | 2.6G | +0.1G | 234s | 246s |
IQ2_XS | 11.72 | 11.63 | -0.8% | 2.7G | 2.8G | +0.1G | 242s | 246s |
IQ2_S | 14.31 | 9.02 | -36.9% | 2.7G | 2.9G | +0.2G | 238s | 244s |
IQ1_M | 27.46 | 15.41 | -43.9% | 2.2G | 2.5G | +0.3G | 206s | 212s |
IQ1_S | 53.07 | 32.00 | -39.7% | 2.1G | 2.4G | +0.3G | 184s | 209s |
训练信息
训练因素
使用自定义训练库、Meta定制的GPU集群和生产基础设施进行预训练。微调、标注和评估也在生产基础设施上进行。
训练计算资源
训练共使用了3930万GPU小时的H100 - 80GB(TDP 700W)类型硬件。训练时间是每个模型训练所需的总GPU时间,功耗是每个GPU设备的峰值功率容量,并根据功率使用效率进行调整。
训练温室气体排放
估计基于位置的总温室气体排放量为11390吨CO2eq。自2020年以来,Meta在全球运营中保持净零温室气体排放,并使用100%的可再生能源匹配其电力使用,因此基于市场的总温室气体排放量为0吨CO2eq。
模型 | 训练时间(GPU小时) | 训练功耗(W) | 基于位置的训练温室气体排放(吨CO2eq) | 基于市场的训练温室气体排放(吨CO2eq) |
---|---|---|---|---|
Llama 3.1 8B | 146万 | 700 | 420 | 0 |
Llama 3.1 70B | 700万 | 700 | 2040 | 0 |
Llama 3.1 405B | 3084万 | 700 | 8930 | 0 |
总计 | 3930万 | - | 11390 | 0 |
基准测试分数
基础预训练模型
类别 | 基准测试 | # 样本 | 指标 | Llama 3 8B | Llama 3.1 8B | Llama 3 70B | Llama 3.1 70B | Llama 3.1 405B |
---|---|---|---|---|---|---|---|---|
通用 | MMLU | 5 | macro_avg/acc_char | 66.7 | 66.7 | 79.5 | 79.3 | 85.2 |
通用 | MMLU-Pro (CoT) | 5 | macro_avg/acc_char | 36.2 | 37.1 | 55.0 | 53.8 | 61.6 |
通用 | AGIEval English | 3 - 5 | average/acc_char | 47.1 | 47.8 | 63.0 | 64.6 | 71.6 |
通用 | CommonSenseQA | 7 | acc_char | 72.6 | 75.0 | 83.8 | 84.1 | 85.8 |
通用 | Winogrande | 5 | acc_char | - | 60.5 | - | 83.3 | 86.7 |
通用 | BIG-Bench Hard (CoT) | 3 | average/em | 61.1 | 64.2 | 81.3 | 81.6 | 85.9 |
通用 | ARC-Challenge | 25 | acc_char | 79.4 | 79.7 | 93.1 | 92.9 | 96.1 |
知识推理 | TriviaQA-Wiki | 5 | em | 78.5 | 77.6 | 89.7 | 89.8 | 91.8 |
阅读理解 | SQuAD | 1 | em | 76.4 | 77.0 | 85.6 | 81.8 | 89.3 |
阅读理解 | QuAC (F1) | 1 | f1 | 44.4 | 44.9 | 51.1 | 51.1 | 53.6 |
阅读理解 | BoolQ | 0 | acc_char | 75.7 | 75.0 | 79.0 | 79.4 | 80.0 |
阅读理解 | DROP (F1) | 3 | f1 | 58.4 | 59.5 | 79.7 | 79.6 | 84.8 |
指令微调模型
类别 | 基准测试 | # 样本 | 指标 | Llama 3 8B Instruct | Llama 3.1 8B Instruct | Llama 3 70B Instruct | Llama 3.1 70B Instruct | Llama 3.1 405B Instruct |
---|---|---|---|---|---|---|---|---|
通用 | MMLU | 5 | macro_avg/acc | 68.5 | 69.4 | 82.0 | 83.6 | 87.3 |
通用 | MMLU (CoT) | 0 | macro_avg/acc | 65.3 | 73.0 | 80.9 | 86.0 | 88.6 |
通用 | MMLU-Pro (CoT) | 5 | micro_avg/acc_char | 45.5 | 48.3 | 63.4 | 66.4 | 73.3 |
通用 | IFEval | - | - | 76.8 | 80.4 | 82.9 | 87.5 | 88.6 |
推理 | ARC-C | 0 | acc | 82.4 | 83.4 | 94.4 | 94.8 | 96.9 |
推理 | GPQA | 0 | em | 34.6 | 30.4 | 39.5 | 46.7 | 50.7 |
代码 | HumanEval | 0 | pass@1 | 60.4 | 72.6 | 81.7 | 80.5 | 89.0 |
代码 | MBPP ++ base version | 0 | pass@1 | 70.6 | 72.8 | 82.5 | 86.0 | 88.6 |
代码 | Multipl-E HumanEval | 0 | pass@1 | - | 50.8 | - | 65.5 | 75.2 |
代码 | Multipl-E MBPP | 0 | pass@1 | - | 52.4 | - | 62.0 | 65.7 |
数学 | GSM-8K (CoT) | 8 | em_maj1@1 | 80.6 | 84.5 | 93.0 | 95.1 | 96.8 |
数学 | MATH (CoT) | 0 | final_em | 29.1 | 51.9 | 51.0 | 68.0 | 73.8 |
工具使用 | API-Bank | 0 | acc | 48.3 | 82.6 | 85.1 | 90.0 | 92.0 |
工具使用 | BFCL | 0 | acc | 60.3 | 76.1 | 83.0 | 84.8 | 88.5 |
工具使用 | Gorilla Benchmark API Bench | 0 | acc | 1.7 | 8.2 | 14.7 | 29.7 | 35.3 |
工具使用 | Nexus (0-shot) | 0 | macro_avg/acc | 18.1 | 38.5 | 47.8 | 56.7 | 58.7 |
多语言 | Multilingual MGSM (CoT) | 0 | em | - | 68.9 | - | 86.9 | 91.6 |
多语言基准测试
类别 | 基准测试 | 语言 | Llama 3.1 8B | Llama 3.1 70B | Llama 3.1 405B |
---|---|---|---|---|---|
通用 | MMLU (5-shot, macro_avg/acc) | 葡萄牙语 | 62.12 | 80.13 | 84.95 |
通用 | MMLU (5-shot, macro_avg/acc) | 西班牙语 | 62.45 | 80.05 | 85.08 |
通用 | MMLU (5-shot, macro_avg/acc) | 意大利语 | 61.63 | 80.4 | 85.04 |
通用 | MMLU (5-shot, macro_avg/acc) | 德语 | 60.59 | 79.27 | 84.36 |
通用 | MMLU (5-shot, macro_avg/acc) | 法语 | 62.34 | 79.82 | 84.66 |
通用 | MMLU (5-shot, macro_avg/acc) | 印地语 | 50.88 | 74.52 | 80.31 |
通用 | MMLU (5-shot, macro_avg/acc) | 泰语 | 50.32 | 72.95 | 78.21 |
责任与安全
负责任的发布策略
采用三管齐下的策略管理信任与安全风险:
- 使开发者能够为目标受众和Llama支持的用例部署有用、安全和灵活的体验。
- 保护开发者免受试图利用Llama功能造成潜在危害的恶意用户的攻击。
- 为社区提供保护,防止模型被滥用。
Llama 3.1指令微调
- 微调数据:采用多方面的数据收集方法,结合供应商的人工生成数据和合成数据,以减轻潜在的安全风险。开发了许多基于大语言模型(LLM)的分类器,以精心选择高质量的提示和响应,加强数据质量控制。
- 拒绝和语气:在Llama 3的基础上,更加注重模型对良性提示的拒绝以及拒绝语气。在安全数据策略中包括了边界和对抗性提示,并修改安全数据响应以遵循语气指南。
Llama 3.1系统
大语言模型(包括Llama 3.1)不应单独部署,而应作为整体AI系统的一部分,并根据需要添加额外的安全护栏。开发者在构建代理系统时应部署系统防护措施,以实现有用性与安全性的正确对齐,并减轻系统固有的安全和风险。提供了防护措施,包括Llama Guard 3、Prompt Guard和Code Shield,参考实现演示默认包含这些防护措施。
新功能
本次发布引入了新功能,如更长的上下文窗口、多语言输入和输出以及开发者与第三方工具的可能集成。使用这些新功能时,除了通用的生成式AI最佳实践外,还需要特定的考虑。
- 工具使用:开发者负责将LLM与所选工具和服务集成,应定义明确的策略并评估第三方服务的完整性。
- 多语言支持:Llama 3.1支持英语以外的7种语言,但不建议在未进行微调或系统控制的情况下用于非支持语言的对话。
评估
对Llama模型进行了常见用例和特定功能的评估,包括构建对抗性评估数据集、进行红队测试等,以发现风险并改进基准和安全微调数据集。
关键风险领域
- CBRNE(化学、生物、放射、核和爆炸材料)有用性:评估Llama 3.1模型是否会增加恶意行为者使用这些武器进行攻击的能力。
- 儿童安全:通过专家团队评估模型输出是否会导致儿童安全风险,并通过微调进行必要的风险缓解。
- 网络攻击启用:研究LLM是否会增强人类的黑客能力,包括攻击自动化和社会工程提升。
社区支持
积极参与开源联盟,鼓励社区采用分类法进行安全和内容评估。开源了Purple Llama工具,设立了Llama Impact Grants计划,支持对社会有益的应用。还提供了输出报告机制和漏洞赏金计划,以借助社区力量不断改进Llama技术。
📄 许可证
Llama 3.1使用自定义商业许可证,即Llama 3.1社区许可证,可在此处获取。
许可证协议摘要
- 授予权利:授予非排他性、全球性、不可转让和免版税的有限许可,可使用、复制、分发、修改Llama材料。
- 再分发和使用:分发Llama材料时需提供许可证副本,并显著显示“Built with Llama”。使用Llama材料改进的AI模型名称应包含“Llama”。
- 额外商业条款:如果产品或服务的月活跃用户超过7亿,需向Meta申请许可证。
- 免责声明:Llama材料按“原样”提供,Meta不承担任何保证责任。
- 责任限制:Meta及其附属公司对任何间接、特殊、后果性损害不承担责任。
- 知识产权:未授予商标许可证,开发者对自己创建的衍生作品拥有所有权。
- 期限和终止:协议自接受或访问Llama材料时生效,Meta可因违约终止协议。
- 适用法律和管辖权:协议受加利福尼亚州法律管辖,相关纠纷由加利福尼亚州法院专属管辖。
可接受使用政策
Meta致力于促进其工具和功能(包括Llama 3.1)的安全和公平使用。使用Llama 3.1需遵守可接受使用政策,禁止用于违法、有害、欺骗等行为。
重要提示
⚠️ 重要提示
Llama 3.1是一个新的技术,其潜在输出无法提前预测,模型可能在某些情况下产生不准确、有偏见或其他令人反感的响应。因此,在部署任何Llama 3.1模型的应用程序之前,开发者应针对其特定应用进行安全测试和调整。
💡 使用建议
开发者可参考负责任使用指南、信任与安全解决方案和其他资源,了解负责任的开发方法。同时,建议为特定用例构建专用的评估数据集,以确保模型的安全性和可靠性。



