模型简介
模型特点
模型能力
使用案例
🚀 Meta-Llama-3-70B-Instruct-GGUF
本项目包含 Meta-Llama-3-70B-Instruct 模型的 GGUF 格式文件,GGUF 是 llama.cpp 团队引入的新格式,支持多种客户端和库,方便用户使用该模型进行文本生成任务。
🚀 快速开始
本仓库提供了 Meta-Llama-3-70B-Instruct 模型的 GGUF 格式文件。以下是使用这些文件的基本步骤:
- 选择合适的客户端或库,如 LM Studio、LoLLMS Web UI、Faraday.dev 等,它们可以自动下载模型。
- 若使用
text-generation-webui
,可在下载模型时指定仓库和文件名进行下载。 - 若手动下载,可使用
huggingface-cli
命令。 - 下载完成后,根据不同的使用场景(如
llama.cpp
、text-generation-webui
、Python 代码等)进行配置和运行。
✨ 主要特性
- 多种客户端支持:支持 llama.cpp、text-generation-webui、Ollama、KoboldCpp 等多种客户端和库。
- 量化方法多样:提供多种量化方法,如 GGML_TYPE_Q2_K、GGML_TYPE_Q3_K 等,满足不同用户需求。
- 性能优化:使用优化的变压器架构,在常见行业基准测试中表现出色。
- 安全保障:采取了一系列措施限制模型的滥用和危害,提供了安全工具和最佳实践指南。
📦 安装指南
下载 GGUF 文件
自动下载
以下客户端/库会自动为你下载模型,并提供可用模型列表供选择:
- LM Studio
- LoLLMS Web UI
- Faraday.dev
在 text-generation-webui
中下载
在“Download Model”下,输入模型仓库 LiteLLMs/Meta-Llama-3-70B-Instruct-GGUF
,并在下方输入具体文件名,如 Q4_0/Q4_0-00001-of-00009.gguf
,然后点击“Download”。
命令行下载
推荐使用 huggingface-hub
Python 库:
pip3 install huggingface-hub
然后使用以下命令下载单个模型文件到当前目录:
huggingface-cli download LiteLLMs/Meta-Llama-3-70B-Instruct-GGUF Q4_0/Q4_0-00001-of-00009.gguf --local-dir . --local-dir-use-symlinks False
安装依赖库
使用 llama-cpp-python
根据系统运行以下命令之一:
# 无 GPU 加速的基础 ctransformers
pip install llama-cpp-python
# 支持 NVidia CUDA 加速
CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install llama-cpp-python
# 支持 OpenBLAS 加速
CMAKE_ARGS="-DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS" pip install llama-cpp-python
# 支持 CLBLast 加速
CMAKE_ARGS="-DLLAMA_CLBLAST=on" pip install llama-cpp-python
# 支持 AMD ROCm GPU 加速(仅 Linux)
CMAKE_ARGS="-DLLAMA_HIPBLAS=on" pip install llama-cpp-python
# 支持 macOS 系统的 Metal GPU 加速
CMAKE_ARGS="-DLLAMA_METAL=on" pip install llama-cpp-python
# 在 Windows 中,在 PowerShell 中设置变量 CMAKE_ARGS,例如支持 NVidia CUDA:
$env:CMAKE_ARGS = "-DLLAMA_OPENBLAS=on"
pip install llama-cpp-python
💻 使用示例
在 llama.cpp
中运行
确保使用 d0cee0d 或更新版本的 llama.cpp
:
./main -ngl 35 -m Q4_0/Q4_0-00001-of-00009.gguf --color -c 8192 --temp 0.7 --repeat_penalty 1.1 -n -1 -p "<PROMPT>"
-ngl 32
:设置要卸载到 GPU 的层数,若无 GPU 加速可移除该参数。-c 8192
:设置所需的序列长度,较长的序列长度需要更多资源,可根据情况调整。- 若要进行聊天式对话,将
-p <PROMPT>
参数替换为-i -ins
。
在 text-generation-webui
中运行
更多说明可参考 text-generation-webui 文档。
使用 Python 代码运行
使用 llama-cpp-python 库加载模型:
from llama_cpp import Llama
# 设置要卸载到 GPU 的层数,若无 GPU 加速则设置为 0
llm = Llama(
model_path="./Q4_0/Q4_0-00001-of-00009.gguf", # 先下载模型文件
n_ctx=32768, # 最大序列长度,较长的序列长度需要更多资源
n_threads=8, # CPU 线程数,根据系统和性能调整
n_gpu_layers=35 # 要卸载到 GPU 的层数,若有 GPU 加速可用
)
# 简单推理示例
output = llm(
"<PROMPT>", # 提示信息
max_tokens=512, # 生成最多 512 个令牌
stop=["</s>"], # 示例停止令牌,使用前请检查是否适用于该模型
echo=True # 是否回显提示信息
)
# 聊天完成 API
llm = Llama(model_path="./Q4_0/Q4_0-00001-of-00009.gguf", chat_format="llama-2") # 根据使用的模型设置聊天格式
llm.create_chat_completion(
messages = [
{"role": "system", "content": "You are a story writing assistant."},
{
"role": "user",
"content": "Write a story about llamas."
}
]
)
使用 LangChain
以下是使用 llama-cpp-python 和 ctransformers 与 LangChain 结合的指南:
📚 详细文档
模型详情
- 开发者:Meta
- 变体:Llama 3 有 8B 和 70B 参数两种大小,分为预训练和指令调优变体。
- 输入:仅接受文本输入。
- 输出:仅生成文本和代码。
- 模型架构:采用优化的变压器架构的自回归语言模型,调优版本使用监督微调(SFT)和基于人类反馈的强化学习(RLHF)来符合人类对有用性和安全性的偏好。
属性 | 详情 |
---|---|
模型类型 | Llama 3 是一个大语言模型家族,包括 8B 和 70B 参数的预训练和指令调优版本。 |
训练数据 | 新的公开可用在线数据混合,微调数据包括公开可用的指令数据集和超过 1000 万个手动标注的示例。 |
参数数量 | 8B 和 70B |
上下文长度 | 8k |
GQA | 是 |
令牌计数 | 超过 15 万亿 |
知识截止日期 | 8B 模型为 2023 年 3 月,70B 模型为 2023 年 12 月 |
预期用途
- 预期用例:Llama 3 用于英语的商业和研究用途。指令调优模型用于类似助手的聊天,预训练模型可用于各种自然语言生成任务。
- 超出范围:违反适用法律法规(包括贸易合规法律)的使用;违反可接受使用政策和 Llama 3 社区许可证的使用;非英语语言的使用。
使用方法
使用 Transformers
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3-70B-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device="auto",
)
messages = [
{"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
{"role": "user", "content": "Who are you?"},
]
prompt = pipeline.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
terminators = [
pipeline.tokenizer.eos_token_id,
pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = pipeline(
prompt,
max_new_tokens=256,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,
)
print(outputs[0]["generated_text"][len(prompt):])
使用 llama3
请遵循 仓库 中的说明。下载原始检查点可使用以下命令:
huggingface-cli download meta-llama/Meta-Llama-3-70B-Instruct --include "original/*" --local-dir Meta-Llama-3-70B-Instruct
硬件和软件
- 训练因素:使用自定义训练库、Meta 的研究超级集群和生产集群进行预训练,微调、标注和评估在第三方云计算上进行。
- 碳足迹:预训练使用了 770 万个 H100 - 80GB GPU 小时的计算,估计总排放量为 2290 tCO2eq,全部由 Meta 的可持续发展计划抵消。
模型 | 时间(GPU 小时) | 功耗(W) | 碳排放(tCO2eq) |
---|---|---|---|
Llama 3 8B | 130 万 | 700 | 390 |
Llama 3 70B | 640 万 | 700 | 1900 |
总计 | 770 万 | - | 2290 |
训练数据
- 概述:Llama 3 在超过 15 万亿个公开可用来源的令牌上进行预训练,微调数据包括公开可用的指令数据集和超过 1000 万个手动标注的示例,预训练和微调数据集均不包含 Meta 用户数据。
- 数据新鲜度:预训练数据的截止日期分别为 8B 模型 2023 年 3 月和 70B 模型 2023 年 12 月。
基准测试
基础预训练模型
类别 | 基准测试 | 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 |
责任与安全
- 负责任的使用:更新了 负责任使用指南,提供了 Meta Llama Guard 2 和 Code Shield 等安全工具,鼓励开发者根据需要调整和部署这些工具。
- Llama 3 - Instruct:
- 安全性:对指令调优模型进行了广泛的红队测试、对抗性评估和安全缓解技术实施,以降低残留风险,但仍建议开发者根据具体用例评估风险。
- 拒绝回答:改进了微调,减少了模型错误拒绝回答提示的可能性。
- 负责任的发布:采取了额外措施防止滥用和关键风险,使用 Llama 3 需同意可接受使用政策。
- 社区:积极参与开源联盟,鼓励社区采用安全评估标准,开源了 Purple Llama 工具,欢迎社区贡献。
伦理考虑和限制
Llama 3 的核心价值观是开放性、包容性和有用性,但作为新技术,其潜在输出无法提前预测,可能会产生不准确、有偏见或其他令人反感的响应。开发者在部署应用前应进行安全测试和调优,并建议将 Purple Llama 解决方案纳入工作流程。
引用说明
@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; ......(完整列表请参考原文)
🔧 技术细节
GGUF 格式说明
GGUF 是 llama.cpp 团队在 2023 年 8 月 21 日引入的新格式,用于替代不再受 llama.cpp 支持的 GGML 格式。以下是已知支持 GGUF 的部分客户端和库:
- llama.cpp:GGUF 的源项目,提供命令行界面(CLI)和服务器选项。
- text-generation-webui:最广泛使用的 Web UI,具有众多功能和强大的扩展,支持 GPU 加速。
- Ollama:轻量级和可扩展的框架,用于在本地构建和运行语言模型。
- KoboldCpp:全面的 Web UI,支持所有平台和架构的 GPU 加速,尤其擅长讲故事。
- GPT4All:免费开源的本地 GUI,支持 Windows、Linux 和 macOS,具有全 GPU 加速。
- LM Studio:适用于 Windows 和 macOS(Silicon)的直观强大的本地 GUI,支持 GPU 加速。
- LoLLMS Web UI:具有各种独特功能的 Web UI,包括全面的模型库,便于选择模型。
- Faraday.dev:适用于 Windows 和 macOS(Silicon 和 Intel)的有吸引力、用户友好的基于角色的聊天 GUI,支持 GPU 加速。
- llama-cpp-python:配备 GPU 加速、LangChain 支持和 OpenAI 兼容 API 服务器的 Python 库。
- candle:基于 Rust 的机器学习框架,注重性能,包括 GPU 支持,设计易于使用。
- ctransformers:具有 GPU 加速、LangChain 支持和 OpenAI 兼容 AI 服务器的 Python 库。
- localGPT:开源项目,支持与文档进行私密对话。
量化方法解释
点击查看详情
新的量化方法如下: - GGML_TYPE_Q2_K:“type - 1” 2 位量化,超级块包含 16 个块,每个块有 16 个权重。块尺度和最小值用 4 位量化,最终每个权重有效使用 2.5625 位(bpw)。 - GGML_TYPE_Q3_K:“type - 0” 3 位量化,超级块包含 16 个块,每个块有 16 个权重。尺度用 6 位量化,最终使用 3.4375 bpw。 - GGML_TYPE_Q4_K:“type - 1” 4 位量化,超级块包含 8 个块,每个块有 32 个权重。尺度和最小值用 6 位量化,最终使用 4.5 bpw。 - GGML_TYPE_Q5_K:“type - 1” 5 位量化,与 GGML_TYPE_Q4_K 具有相同的超级块结构,最终使用 5.5 bpw。 - GGML_TYPE_Q6_K:“type - 0” 6 位量化,超级块有 16 个块,每个块有 16 个权重。尺度用 8 位量化,最终使用 6.5625 bpw。📄 许可证
本项目遵循 Llama 3 社区许可证,使用 Llama 3 需同意该许可证的条款和条件。
⚠️ 重要提示
使用 Llama 3 需遵守适用法律法规和可接受使用政策,不得用于任何违法或违反道德的用途。
开发者在使用 Llama 3 模型时,应注意模型可能产生不准确、有偏见或其他令人反感的响应,建议进行安全测试和调优,并使用额外的安全工具。
💡 使用建议
选择适合自己需求的量化方法和客户端/库,以获得最佳性能。
在使用模型时,根据系统资源调整参数,如序列长度、GPU 层数等。
参考 Responsible Use Guide 和相关安全工具,确保模型的安全使用。



