当前位置:   article > 正文

LLMs之Llama3:Llama-3的简介、安装和使用方法、案例应用之详细攻略

llama3

LLMs之Llama3:Llama-3的简介、安装和使用方法、案例应用之详细攻略

导读:2024年4月18日,Meta 重磅推出了Meta Llama 3,本文章主要介绍了Meta推出的新的开源大语言模型Meta Llama 3。模型架构 Llama 3 是一种自回归语言模型,采用了优化的 Transformer 架构。调优版本使用了监督微调(SFT)和强化学习结合人类反馈(RLHF)来与人类偏好对齐,以提高实用性和安全性。

背景:大语言模型技术在最近几年得到了很大发展,但是大部分模型并未公开领域,给广大开发者和研究人员带来很大限制。Meta的目标是推出性能优越,且完全开源的大语言模型,以推动AI领域的开放创新。

Meta Llama 3的主要亮点和核心要点:

>> 性能突出:8B和70B参数的Llama 3模型在许多基准测试上都取得了先进水平,超过了同规模模型
>>训练数据:Llama 3 在超过 15 万亿个标记的公开可用数据上进行了预训练。微调数据包括公开可用的指令数据集,以及超过 1000 万个人工标注示例。预训练数据和微调数据均不包括 Meta 用户数据。

>> 数据规模庞大:使用超过15T的token公开文本训练数据,规模比Llama 2大7倍

>> 架构优化:采用相对标准的解码 Transformer结构,但优化了细节如token化方式等。

>> 精细化训练:利用10K级别的GPU小时进行规模化训练,提高训练效率3倍以上。

>> 指令微调:采用强化学习的方法进行安全微调,防止模型产生有害响应。

>> 全面开源:模型将在多种平台和开源库中提供,包括AWS、GF、HU等,给开发者完全开放利用。

>> 负责任开发:推出如Llama Guard安全守门员等工具,提升模型在实际应用中的安全性。

>> 功能丰富:未来将支持多语言、多模态功能,更高效率的模型将继续推出。

总之,Meta Llama 3是目前功能最强大、开放度最高的开源语言模型,其广泛应用前景广阔。Meta也在负责任开发和推广应用上下足工夫。

博主评价: Meta最早于2023年2月25日里程碑性发布最强开源模型Llama 1,过了不到半年,2023年7月18日,Meta又重磅发布Llama 2,随着类似的开源大模型—ChatGLM3等以3为开头的系列版本发布,整个业界一直在期待Llama 3会以什么姿态落地时,Llama 3时隔10个月,于2024年4月18日,终于来了,依然是保持以往的“开源”态度,依然是在开源界历史性突破,面对一点都不Open的Open AI,Meta的开源态度,真的是令整个AIGC业界和开发者感动和尊重。在这个躁动和有点浮夸的AIGC领域,博主接触了太多的大模型领域的技术人和创业者,的确存在一大部分,熙熙攘攘皆为利来,熙熙攘攘皆为利往……Llama团队,值得每一个AI从业者Respect!

目录

相关文章

LLMs之LLaMA:LLaMA的简介、安装和使用方法、案例应用之详细攻略

LLMs之LLaMA-2:LLaMA-2的简介(技术细节)、安装、使用方法(开源-免费用于研究和商业用途)之详细攻略

LLMs之Llama3:Llama 3的简介、安装和使用方法、案例应用之详细攻略

LLMs之llama3-from-scratch:llama3-from-scratch(从头开始利用pytorch来实现并解读LLaMA-3模型的每层代码)的简介、核心思路梳理

Llama 3的简介

1、Llama 3的目标

2、最先进的性能

3、开发了一个新的高质量人类评估集:包含1800个提示+涵盖12个关键用例

4、四大要素:模型架构、预训练数据、扩大预训练规模、指令微调

4.1、模型架构

4.2、训练数据

4.3、扩大预训练规模:15T个token、Llama 3的训练效率提高了约三倍、3D并并行化、16K个GPU

4.4、指令微调

5、对责任感的系统级方法

6、大规模部署Llama 3:改进的tokenizer效率+GQA

7、Llama 3的未来发展:多模态+多语言+更长窗口+更强整体能力

8、试用Meta Llama 3

9、模型卡:模型细节、预期用途、软硬件、训练数据、Benchmarks、伦理考虑与限制

Llama 3的安装和使用方法

0、模型显存大小:模型推理(需24G显卡)、模型训练(至少10G显存)

1、下载、安装、注意事项

T1、利用Hugging Face平台下载

T2、利用ModelScope平台下载:模型大小为 15 GB,下载模型大概需要1~ 2分钟

2、快速入门

3、下载数据集

可用的训练数据

指令微调的数据集格式:遵循ChatFormat格式

4、模型微调&增量训练:包括官方代码微调、官方Colab平台微调(LLaMA-Factory工具+unsloth优化框架)、LLaMA-Factory工具、unsloth工具(参照官方Colab平台)+GPT4ALL框架

T1、参照官方代码直接微调

LLMs之LLaMA3:基于中文指令格式数据集利用LoRA指令微调Llama-3-8B-Instruct实现对话生成推理——定义数据集(JSON文件,instruction-input-output)→数据预处理(分词、截断等操作,加载预分词模型并测试编码后的文本)→模型微调(创建模型并使用梯度检查点技术+配置LoRA参数并更新模型+配置训练参数+开始训练+保存模型)→模型推理(加载训练好的tokenizer、模型、lora权重+创建模板[instruct+user_input]+对输入文本进行分词+文本生成并解码ID列表)

T2、基于Colab平台(免费T4-GPU)采用LLaMA-Factory工具+unsloth优化框架实现微调:

LLMs之Llama3:基于Colab平台(免费T4-GPU)利用LLaMA-Factory的GUI界面(底层采用unsloth优化框架【加速训练5~30倍+减少50%的内存占用】)对llama-3-8b-Instruct-bnb-4bit模型采用alpaca数据集实现CLI方式/GUI傻瓜可视化方式进行LoRA指令微调→模型推理测试→CLI方式合并权重

T3、采用LLaMA-Factory工具实现微调:采用ShareGPT格式中文对话微调数据集

LLMs之Llama3:手把手教你(只需四步)基于LLaMA-Factory的GUI界面(仅支持单GPU训练)对Llama-3-8B-Instruct模型采用中文语料数据集(alpaca_zh、wikipedia_zh等)实现傻瓜式/可视化LoRA指令微调

T4、采用Colab平台+unsloth工具实现微调+GPT4ALL框架部署GUI界面并对话:参照官方代码自己实现

LLMs之LLaMA3:基于Colab平台(采用T4 GPU+至少37G)采用中文语料数据利用unsloth框架(速度更快/量化功能)并采用LoRA进行微调LLaMA-3-8b(合并原始模型和LoRA模型)同时进行4位量化(16位的hf格式→16位的gguf格式→4位的gguf格式)最后将模型导出到本地

LLMs之LLaMA3:基于GPT4ALL框架对LLaMA-3实现模型部署并推理—通过加载训练后LLaMA-3的gguf模型文件然后在GUI界面中实现对话聊天

T5、采用Firefly工具实现微调:采用firefly格式中文对话微调数据集

5、模型推理

4.1、使用预训练模型:没有为聊天或问答进行微调,但应该被提示

4.2、使用指令调整模型:可采用部署额外的分类器来过滤掉危险内容

4.3、负责任使用指南

6、模型使用:以Llama-3-8B-Instruct为例

T1、与Transformers一起使用

T1.1、Transformers pipeline:推荐使用≥24G的Nvidia显卡,比如GeForce RTX 3090-24G、GeForce RTX 4090-24G、A100-40GB、A800-40G、A40-48G、V100-32G等

T1.2、Transformers AutoModelForCausalLM

T2、与 llama3 一起使用

T3、基于LangChain 框架使用

LLMs之LLaMA3:基于LangChain框架(需要重写构造函数和 _call 函数)集成Llama-3-8B-Instruct模型实现对话生成之代码实现

7、模型部署:包括FastApi、WebDemo、LM Studio结合Lobe Chat框架、Ollama框架、GPT4ALL框架

T1、LLaMA3-8B-Instruct WebDemo 部署

创建 chatBot.py 文件并,粘贴如下代码

终端运行 demo

界面显示

 T2、采用FastApi实现部署调用

LLMs之LLaMA3:基于Llama-3-8B-Instruct模型采用FastApi实现部署调用——创建model_download.py文件下载模型→创建api.py文件实现FastAPI应用→API部署→启动API服务→测试服务响应(采用curl调用测试/采用python的requests库调用测试)

T3、基于LM Studio结合Lobe Chat框架部署

LLMs之Llama3:手把手教你(只需三步)实现Llama3模型本地部署并对话测试—基于LM Studio的GUI界面直接对话聊天或进一步结合Lobe Chat框架(更优雅的实现类似ChatGPT聊天+包括丰富Agent角色市场)

T4、基于Ollama后端框架及其WebUI界面部署、Ollama后端框架结合AnythingLLM前端框架实现RAG、基于Ollama后端框架结合Dify前端框架实现RAG

LLMs之Llama3:手把手教你(只需四步)基于ollama框架及其WebUI界面对LLaMA-3-8B模型进行Docker部署(打包依赖项+简化部署过程+提高可移植性)并测试对话和图像生成功能

LLMs之RAG:基于Ollama框架(开启服务器模式+加载LLMs)部署LLaMA3/Phi-3等大语言模型、并结合AnythingLLM框架(配置参数LLM Preference【LLM Provider-Chat Model】 /Embedding Preference/Vector Database)实现RAG功能(包括本地文档和抓取网页)实现Chat聊天以及本地知识库问答实战

LLMs之RAG:基于Ollama后端框架(配置phi3/LLaMA-3模型)结合Dify前端框架(设置知识库文件+向量化存储+应用发布)创建包括实现本地知识库问答/翻译助手等多个应用

T5、基于GPT4ALL框架及其量化后部署

LLMs之LLaMA3:基于GPT4ALL框架对LLaMA3实现模型部署并推理—通过加载训练后LLaMA-3的gguf模型文件然后在GUI界面中实现对话聊天

8、相关问题

Llama 3的增强技术

1、大窗口技术扩展到1048k达到100万

通过合并多个LoRA微调的模型将Llama-3扩展到100万/1048k上下文(仅需58行代码)

LLMs之LLaMA-3:源代码解读merge_adapters.py(仅需58行代码)合并多个PEFT模型(LoRA技术)将LLaMA-3扩展到100万/1048k上下文——解析命令行参数→在基础模型上循环加载LoRA模型→加载分词器模型→将合并后的模型以及分词器保存到指定目录或推送到模型中心

Llama 3的案例应用

1、API接口调用

2、多种在线体验方式

T1、Meta官网在线体验地址

T2、Huggingface平台在线体验地址

T3、NVIDIA平台在线体验地址

T4、replicate平台在线体验


相关文章

LLMs之LLaMA:LLaMA的简介、安装和使用方法、案例应用之详细攻略

LLMs之LLaMA:LLaMA的简介、安装和使用方法、案例应用之详细攻略_chinese_calendar每年手动更新-CSDN博客

LLMs之LLaMA-2:LLaMA-2的简介(技术细节)、安装、使用方法(开源-免费用于研究和商业用途)之详细攻略

LLMs之LLaMA-2:LLaMA-2的简介(技术细节)、安装、使用方法(开源-免费用于研究和商业用途)之详细攻略_llama2-CSDN博客

LLMs之Llama3:Llama 3的简介、安装和使用方法、案例应用之详细攻略

LLMs之Llama 3:Llama 3的简介、安装和使用方法、案例应用之详细攻略-CSDN博客

LLMs之llama3-from-scratch:llama3-from-scratch(从头开始利用pytorch来实现并解读LLaMA-3模型的每层代码)的简介、核心思路梳理

https://yunyaniu.blog.csdn.net/article/details/139078566

Llama 3的简介

2024年4月18日,Meta 重磅推出了Meta Llama 3,Llama 3是Meta最先进开源大型语言模型的下一代,包括具有80亿700亿参数的预训练指令微调的语言模型,能够支持广泛的应用场景。这一代Llama在一系列行业标准基准测试中展示了最先进的性能,并提供了新的功能,包括改进的推理能力。我们相信这些是同类中最好的开源模型,绝对如此。
Llama 3模型将很快在AWS、Databricks、Google Cloud、Hugging Face、Kaggle、IBM WatsonX、Microsoft Azure、NVIDIA NIM和Snowflake上提供,并得到AMD、AWS、Dell、Intel、NVIDIA和Qualcomm提供的硬件平台的支持。 Meta 致力于以负责任的方式开发Llama 3,并提供各种资源来帮助其他人负责任地使用它。这包括推出新的信任和安全工具,如Llama Guard 2、Code Shield和CyberSec Eval 2。
为了支持我们长期以来的开放方法,我们将Llama 3交给了社区。我们希望启动AI堆栈下一波创新——从应用到开发者工具,再到评估和推理优化等等。我们迫不及待地想看看你的作品,并期待你的反馈。
在未来几个月,Meta 预计将推出新的功能、更长的上下文窗口、额外的模型尺寸和提升的性能,并将分享Llama 3的研究论文。 利用Llama 3技术构建的Meta AI,现在是世界上最领先的AI助手之一,可以提升你的智能并减轻你的负担——帮助你学习、完成任务、创作内容并建立联系,以充分利用每一刻。你可以在这里尝试Meta AI。

官网文章Meet Your New Assistant: Meta AI, Built With Llama 3 | Meta

GitHub地址https://github.com/meta-llama/llama3

文档地址https://llama.meta.com/docs/model-cards-and-prompt-formats/meta-llama-3

在线体验地址https://llama.meta.com/llama3/

1、Llama 3的目标

Llama 3的目标是构建与当今可用的最佳专有模型相媲美的最佳开源模型。我们希望解决开发者的反馈,以提高Llama 3的整体帮助性,同时继续在负责任地使用和部署LLM方面发挥领导作用。我们采用开源精神,尽早且频繁地发布,以便在模型仍在开发时让社区能够获取这些模型。我们今天发布的基于文本的模型是Llama 3模型集的第一批。我们近期的目标是让Llama 3实现多语言和多模态,拥有更长的上下文,并继续提高核心LLM能力(如推理和编码)的整体性能。

Training DataParamsContext lengthGQAToken countKnowledge cutoff
Llama 3A new mix of publicly available online data.8B8kYes15T+2023 年 3 月
70B8kYes15T+2023 年 12 月

2、最先进的性能

我们新的80亿和700亿参数的Llama 3模型在Llama 2的基础上取得了重大飞跃,为这些规模的LLM模型建立了新的最先进水平。得益于预训练和后训练的改进,我们预训练指令微调的模型是当今存在的8B和70B参数规模的最佳模型。我们后训练程序的改进显著降低了错误拒绝率改善了模型响应的对齐性,并增加了响应的多样性。我们还看到了在推理、代码生成和遵循指令等方面的大幅能力提升,使得Llama 3更加可操纵。

请参阅计算这些评估的设置和参数的评估详细信息llama3/eval_details.md at main · meta-llama/llama3 · GitHub

3、开发了一个新的高质量人类评估集包含1800个提示+涵盖12个关键用例

在Llama 3的开发过程中,我们查看了模型在标准基准上的性能,并寻求优化现实世界的性能。为此,我们开发了一个新的高质量人类评估集。这个评估集包含1800个提示,涵盖12个关键用例:寻求建议、头脑风暴、分类、封闭式问答、编码、创意写作、提取、扮演一个角色/人物、开放式问答、推理、重写和总结。为了防止我们的模型无意中在这个评估集上过拟合,即使是我们的建模团队也没有权限访问它。下表显示了我们的评估结果与Claude Sonnet、Mistral Medium和GPT-3.5相比,在这些类别和提示上的汇总结果。
基于这个评估集的人类标注者的偏好排名突出了我们70B指令遵循模型与类似大小的竞争模型在现实世界场景中的强大性能。

4、四大要素:模型架构、预训练数据、扩大预训练规模、指令微调

为了开发一个伟大的语言模型,我们相信创新、扩展和优化简单性是重要的。我们在整个Llama 3项目中采用了这一设计理念,重点关注四个关键要素:模型架构、预训练数据、扩大预训练规模和指令微调。

4.1、模型架构

与我们的设计理念一致,我们在Llama 3中选择了相对标准的解码器-only的transformer架构。与Llama 2相比,我们做了一些关键的改进。Llama 3使用了一个拥有128K词汇量的tokenizer,更有效地编码语言,这导致模型性能大幅提升。为了提高Llama 3模型的推理效率,我们在8B和70B的模型中都采用了分组查询注意力(GQA)。我们使用8,192个token的序列训练模型,并使用mask来确保自注意力不会跨越文档边界。

4.2、训练数据

为了训练最佳的语言模型,收集一个大规模、高质量的训练数据集至关重要。与我们的设计原则一致,我们在预训练数据上投入了大量资金。Llama 3在超过15T的token上进行预训练,所有数据都来自公开可用的来源。我们的训练数据集比用于Llama 2的数据集大了七倍,并且包括了四倍的代码。为了准备即将到来的多语言用例,超过5%的Llama 3预训练数据集由高质量的非英语数据组成,覆盖了超过30种语言。然而,我们不期望在这些语言中达到与英语相同的性能水平。

为了确保Llama 3训练的数据质量最高,我们开发了一系列数据过滤管道。这些管道包括使用启发式过滤器、NSFW过滤器、语义去重方法和文本分类器来预测数据质量。我们发现,Llama的前几代在识别高质量数据方面出奇地好,因此我们使用Llama 2生成了为Llama 3提供动力的文本质量分类器的训练数据。

我们还进行了大量实验,以评估在我们的最终预训练数据集中混合不同来源数据的最佳方式。这些实验使我们能够选择一个数据混合方案,确保Llama 3在包括琐碎问题、STEM、编码、历史知识等各种用例中表现良好。

4.3、扩大预训练规模:15T个token、Llama 3的训练效率提高了约三倍、3D并并行化、16K个GPU

为了在Llama 3模型中有效利用我们的预训练数据,我们投入了大量精力来扩大预训练规模。具体来说,我们为下游基准评估开发了一系列详细的扩展法则。这些扩展法则使我们能够选择最佳数据混合方案,并就如何最佳利用我们的训练计算资源做出明智的决策。重要的是,扩展法则允许我们在实际训练模型之前预测我们最大模型在关键任务上的性能(例如,在HumanEval基准上评估的代码生成——见上文)。这帮助我们确保最终模型在各种使用场景和能力上的强劲性能。

在Llama 3的开发过程中,我们对扩展行为做出了几项新的观察。例如,虽然对于80亿参数模型来说,Chinchilla最优的训练计算量对应于约2000亿个token,但我们发现即使模型在数据量增加两个数量级后,模型性能仍然在持续提升。在我们的80亿和700亿参数模型经过高达15T个token的训练后,它们的性能继续以对数线性方式提升。大型模型可以在较少的训练计算量下匹配这些小型模型的性能,但通常更倾向于使用小型模型,因为它们在推理过程中效率更高。

为了训练我们最大的Llama 3模型,我们结合了三种类型的并行化:数据并行化、模型并行化和流水线并行化。我们最有效的实现方式在同时训练16K个GPU时,每个GPU的计算利用率超过400 TFLOPS。我们在两个定制构建的24K GPU集群上执行了训练运行。为了最大化GPU的运行时间,我们开发了一个新的高级训练堆栈,自动化了错误检测、处理和维护。我们还大大提高了硬件的可靠性和检测机制,用于静默数据损坏,并开发了新的可扩展存储系统,减少了检查点和回滚的开销。这些改进使得整体有效训练时间超过了95%。综合来看,这些改进将Llama 3的训练效率提高了约三倍,与Llama 2相比。

4.4、指令微调

为了充分释放我们预训练模型在聊天用例中的潜力,我们对指令调整方法也进行了创新。我们的后训练方法是监督式微调(SFT)、拒绝采样、近端策略优化(PPO)和直接策略优化(DPO)的组合。用于SFT的提示质量和用于PPO和DPO的偏好排名对对齐模型的性能有巨大影响。我们在模型质量上的一些最大改进来自于仔细筛选这些数据,并对人类标注者提供的多轮质量保证进行多次审查。

通过PPO和DPO从偏好排名中学习也大大提高了Llama 3在推理和编码任务上的性能。我们发现,如果你问一个模型一个它难以回答的推理问题,模型有时会产生正确的推理轨迹:模型知道如何产生正确的答案,但它不知道如何选择它。在偏好排名上进行训练使模型学会了如何选择它。

5、对责任感的系统级方法

我们设计Llama 3模型旨在最大化帮助性,同时确保在负责任地部署它们方面保持行业领先。为了实现这一点,我们采用了新的、系统级的方法来负责任地开发和部署Llama。我们设想Llama模型是一个更广泛系统的一部分,让开发者掌握主动权。Llama模型将作为开发者设计的系统的基础部分,以他们独特的最终目标为宗旨。

指令微调也在确保我们模型的安全性方面发挥着重要作用。我们的指令微调模型已经通过内部和外部努力进行了安全性红队测试(测试)。我们的红队方法利用人类专家和自动化方法生成对抗性提示,试图引出问题性响应。例如,我们应用了全面的测试来评估与化学、生物、网络安全和其他风险领域相关的误用风险。所有这些努力都是迭代的,并用于通知正在发布的模型的安全性微调。你可以在模型卡中阅读更多关于我们努力的信息。

Llama Guard模型旨在成为提示和响应安全的基础,并可以轻松地进行微调以根据应用程序需求创建新的分类法。作为起点,新的Llama Guard 2使用了最近宣布的MLCommons分类法,以支持在这一重要领域中行业标准的出现。此外,CyberSecEval 2在其前身的基础上增加了衡量LLM允许其代码解释器被滥用、具有攻击性网络安全能力和易受提示注入攻击的倾向的度量(在我们的技术论文中了解更多信息)。最后,我们推出了Code Shield,它增加了对LLMs生成的非安全代码进行推理时过滤的支持。这为非安全代码建议、代码解释器滥用预防和安全命令执行的风险提供了缓解措施。

随着生成式AI空间的发展速度,我们认为开放方法是将生态系统团结在一起并缓解这些潜在危害的重要方式。作为其中的一部分,我们正在更新我们的《负责任使用指南》(RUG),该指南为使用LLMs进行负责任开发提供了全面指导。正如我们在RUG中所概述的,我们建议所有输入和输出都应根据应用程序适当的内容指南进行检查和过滤。此外,许多云服务提供商提供内容审查API和其他工具用于负责任部署,我们鼓励开发者也考虑使用这些选项。

6、大规模部署Llama 3:改进的tokenizer效率+GQA

Llama 3很快将在包括云提供商、模型API提供商等在内的所有主要平台上可用。Llama 3将无处不在。

我们的基准测试显示,tokenizer提供了改进的token效率,与Llama 2相比,减少了多达15%的token。此外,Group Query Attention (GQA)也已经加入了Llama 3 8B。因此,尽管模型比Llama 2 7B多10亿参数,但改进的tokenizer效率和GQA有助于保持与Llama 2 7B相当的推理效率。要了解如何充分利用这些能力的示例,请查看Llama Recipes,它包含了所有我们的开源代码,可用于从微调到部署到模型评估。

7、Llama 3的未来发展:多模态+多语言+更长窗口+更强整体能力

Llama 3 8B和70B模型标志着我们计划为Llama 3发布的开始。还有更多内容即将推出。
我们的最大模型超过4000亿参数,尽管这些模型仍在训练中,但我们的团队对它们的趋势感到兴奋。在未来几个月内,我们将发布多个具有新功能的新模型,包括多模态、能够用多种语言交谈更长的上下文窗口更强的整体能力。我们还将发布一篇详细的研究论文,一旦完成Llama 3的训练。
为了给您一个这些模型当前训练状态的预览,我们想分享一些关于我们最大的LLM模型趋势的快照。请注意,这些数据是基于Llama 3仍然在训练的早期检查点,并且这些功能不包括在今天发布的模型中。

我们致力于继续增长和发展一个开放的AI生态系统,以负责任地发布我们的模型。我们长期以来一直相信,开放性会导致更好的、更安全的产品的出现,加快创新的速度,并使整体市场更加健康。这对Meta来说是好事,对社会也是好事。我们以社区为先的态度对待Llama 3,从今天开始,这些模型将在领先的云、托管和硬件平台上提供,未来还会有更多。

8、试用Meta Llama 3

我们已经将我们最新的模型整合到Meta AI中,我们相信这是世界上领先的AI助手。它现在采用了Llama 3技术,并将在我们的应用程序中更多国家提供。

您可以在Facebook、Instagram、WhatsApp、Messenger和网站上使用Meta AI来完成任务、学习、创作和与您关心的事物建立联系。您可以在这里了解更多关于Meta AI体验的信息。

访问Llama 3网站下载模型并参考入门指南,了解所有可用平台的最新列表。

您很快将能够在我们的Ray-Ban Meta智能眼镜上测试多模态的Meta AI。

如往常一样,我们期待看到您将如何使用Meta Llama 3构建所有令人惊叹的产品和体验。

使用体验Meet Your New Assistant: Meta AI, Built With Llama 3 | Meta

9、模型卡:模型细节、预期用途、软硬件、训练数据、Benchmarks、伦理考虑与限制

请参阅MODEL_CARD.md

地址llama3/MODEL_CARD.md at main · meta-llama/llama3 · GitHub

Llama 3的安装和使用方法

Meta的愿景是让开发者能够自定义Llama 3以支持相关用例,并使其更容易采用最佳实践并改善开放生态系统。随着这个版本的发布,我们提供了新的信任和安全工具,包括更新了Llama Guard 2和Cybersec Eval 2的组件,以及推出了Code Shield——一个用于过滤LLMs生成的非安全代码的推理时护栏。

我们还与torchtune共同开发了Llama 3,torchtune是一个新的PyTorch原生库,用于轻松创作、微调和实验LLMs。torchtune提供了完全用PyTorch编写的内存高效且可修改的训练配方。该库与Hugging Face、Weights & Biases、EleutherAI等流行平台集成,甚至支持Executorch,以便在广泛的移动和边缘设备上运行高效的推理。从提示工程到使用Llama 3与LangChain,我们有一个全面的入门指南,从下载Llama 3到在你的生成式AI应用程序中大规模部署,全程指导。

推荐一个针对Llama3汉化非常好的资源:Llama3 中文仓库(聚合资料,各种网友及厂商微调、魔改版本有趣权重 & 训练、推理、评测、部署教程视频 & 文档)

GitHub - CrazyBoyM/llama3-Chinese-chat: Llama3 中文仓库(聚合资料,各种网友及厂商微调、魔改版本有趣权重 & 训练、推理、评测、部署教程视频 & 文档)

0、模型显存大小:模型推理(需24G显卡)、模型训练(至少10G显存)

  • 推理

    • fp16 模式 大概占用16G显存,推荐24G显卡使用
    • int4模式 大概占用8G显存,推荐至少10G显存使用,需要修改代码中load_in_4bit=True
  • 训练

MethodBits7B13B30B70B8x7B
FullAMP120GB240GB600GB1200GB900GB
Full16位60GB120GB300GB600GB400GB
LoRA/GaLore/BAdam16位16GB32GB64GB160GB120GB
QLoRA8位10GB20GB40GB80GB60GB
QLoRA4位6GB12GB24GB48GB30GB

1、下载、安装、注意事项

Meta Llama 3 我们正在解锁大型语言模型的力量。我们最新的Llama版本现在可供个人、创作者、研究人员和所有规模的企业使用,以便他们可以负责任地实验、创新和扩展他们的想法。这个版本包括预训练指令调整的Llama 3语言模型的模型权重和起始代码——包括80亿到700亿参数的尺寸。这个仓库旨在作为一个最小示例,用于加载Llama 3模型并运行推理。对于更详细的示例,请参阅llama-recipes。

获取协议

为了下载模型权重和tokenizer,请访问Meta Llama网站并接受我们的许可协议。

一旦您的请求得到批准,您将通过电子邮件收到一个已签名的URL。然后运行download.sh脚本,在提示时传递提供的URL以开始下载。

请注意,链接在24小时后过期,并且有一定数量的下载。如果您开始看到例如403: Forbidden的错误,您总是可以重新请求链接。

安装依赖

先决条件:确保您已安装wget和md5sum。然后运行脚本:./download.sh。

注意事项

>> 将Meta-Llama-3-8B-Instruct/替换为您检查点目录的路径,将Meta-Llama-3-8B-Instruct/tokenizer.model替换为您tokenizer模型的路径。
>> –nproc_per_node应设置为您使用的模型的MP值。
>> 根据需要调整max_seq_len和max_batch_size参数。
>> 这个示例运行此仓库中的example_chat_completion.py,但您可以将其更改为不同的.py文件。

llama-recipes地址GitHub - meta-llama/llama-recipes: Scripts for fine-tuning Llama2 with composable FSDP & PEFT methods to cover single/multi-node GPUs. Supports default & custom datasets for applications such as summarization & question answering. Supporting a number of candid inference solutions such as HF TGI, VLLM for local or cloud deployment.Demo apps to showcase Llama2 for WhatsApp & Messenger

T1、利用Hugging Face平台下载

我们还在Hugging Face上提供下载,包括transformers和原生llama3格式。要从Hugging Face下载权重,请按照以下步骤操作:
>> 访问其中一个仓库,例如meta-llama/Meta-Llama-3-8B-Instruct。
>> 阅读并接受许可。一旦您的请求得到批准,您将获得访问所有Llama 3模型的权限。请注意,请求可能需要长达一个小时才能处理完毕。
>> 要下载原始原生权重以使用此仓库,请点击“文件和版本”标签,并下载原始文件夹的内容。如果您已pip安装huggingface-hub,也可以从命令行下载:

huggingface-cli download meta-llama/Meta-Llama-3-8B-Instruct --include “original/*” --local-dir meta-llama/Meta-Llama-3-8B-Instruct

>> 要使用transformers,以下管道片段将下载并缓存权重:

  1. import transformers
  2. import torch
  3. model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
  4. pipeline = transformers.pipeline(
  5. "text-generation",
  6. model="meta-llama/Meta-Llama-3-8B-Instruct",
  7. model_kwargs={"torch_dtype": torch.bfloat16},
  8. device="cuda",
  9. )

T2、利用ModelScope平台下载:模型大小为 15 GB,下载模型大概需要1~ 2分钟

  1. import torch
  2. from modelscope import snapshot_download, AutoModel, AutoTokenizer
  3. import os
  4. model_dir = snapshot_download('LLM-Research/Meta-Llama-3-8B-Instruct', cache_dir='/root/autodl-tmp', revision='master')

2、快速入门

您可以按照以下步骤快速上手Llama 3模型。这些步骤将让您在本地运行快速的推理。更多示例,请参阅Llama食谱仓库。在有PyTorch / CUDA可用的conda环境中克隆并下载此仓库。
在顶级目录中运行:

pip install -e .

访问Meta Llama网站并注册以下载模型/s。
一旦注册,您将收到一封带有下载模型URL的电子邮件。您需要这个URL来运行download.sh脚本。
一旦收到电子邮件,导航到您的下载llama仓库并运行download.sh脚本。确保授予download.sh脚本的执行权限 在这个过程中,您将需要输入电子邮件中的URL。 不要使用“复制链接”选项,而是确保手动从电子邮件中复制链接。
一旦您想要的模型/s被下载,您可以通过以下命令在本地运行模型:

  1. torchrun --nproc_per_node 1 example_chat_completion.py \
  2. --ckpt_dir Meta-Llama-3-8B-Instruct/ \
  3. --tokenizer_path Meta-Llama-3-8B-Instruct/tokenizer.model \
  4. --max_seq_len 512 --max_batch_size 6

3、下载数据集

可用的训练数据

数据集介绍
firefly-train-1.1M包含了23种常见的中文NLP任务的数据,并且构造了许多与中华文化相关的数据,如对联、作诗、文言文翻译、散文、金庸小说等。对于每个任务,由人工书写若干种指令模板,保证数据的高质量与丰富度,数据量为115万。
shareAI/CodeChat主要包含逻辑推理、代码问答、代码生成相关语料样本。
shareAI/ShareGPT-Chinese-English-90k优质中英文双语人机问答数据集,覆盖真实复杂场景下的用户提问。(包含大量多轮人机对话)
moss-003-sft-data由复旦大学MOSS团队开源的中英文多轮对话数据,包含100w中英文多轮人机对话数据
WizardLM_evol_instruct_V2_143k(纯英文)由WizardLM项目开源的英文指令微调数据集,包含143k条数据,可提升模型对复杂指令要求的遵循能力。
ruozhiba弱智吧数据问答,据说比较锻炼模型的心智能力。
school-math-0.25M由BELLE项目组开源的数学运算指令数据,包含25w条简单数学题目
DPO-EN-ZH-20k包含大量偏好对齐的问答对数据<好,差>,有助于进一步提升chat模型的对话质量,使其生成内容更加详细、适合人类偏好。
glaive-function-calling-v2-sharegpt包含大量工具函数选择、调用和具体参数数据,有助于提升模型的自主工具选择与使用能力。
Agent-FLAN(纯英文)类型同上, 包含大量工具使用数据,有助于提升模型的工具使用能力。
Agent-Instruct(纯英文)类型同上, 包含大量agent演示数据,有助于提升模型的工具使用、模拟能力。
CogVLM-sft-311K(中文) 包含带图片问答数据,可以训练模型看图问答、看图生成代码能力。
ShareGPT4-V(英文) 类型同上,包含带图片问答数据,可以训练模型看图问答、看图生成代码能力。
web-QA(纯英文) 包含大量(网页文章 -> 问题 -> 答案)数据,可以提升模型在RAG、文档问答、网页问答等垂直场景表现能力。欢迎翻译成中文进行开源
Humaneval-x(纯英文) 包含cpp、java、go、js等代码的测试数据,可以评测模型生成代码能力。
longBench(中、英文) 包含长样本问答数据,可以评测模型在输入内容比较长时候的任务能力。(长上下文)

指令微调的数据集格式:循ChatFormat格式

微调的模型是为对话应用程序而训练的。为了获得预期的特性和性能,需要遵循ChatFormat中定义的特定格式:提示以<|begin_of_text|>特殊标记开始,随后是多条消息。每个消息以<|start_header_id|>标签开头,角色系统、用户或助手,以及<|end_header_id|>标签。在双换行符\n\n之后是消息的内容。每个消息的末尾用<|eot_id|>标记。

ChatFormat地址https://github.com/meta-llama/llama3/blob/main/llama/tokenizer.py#L202

ChatFormat 类是用来格式化聊天数据的。具体格式如下:

  • 每个聊天记录开始前会有一个特殊的起始标记 <|begin_of_text|>
  • 对于每个消息,会有以下格式:
    • 消息头:由特殊标记 <|start_header_id|> 开始,接着是角色的编码(例如“用户”或“助手”),然后是特殊标记 <|end_header_id|>,最后是两个换行符的编码。
    • 消息内容:消息头之后,是消息内容的编码。
    • 每个消息结束后会有一个特殊标记 <|eot_id|>
  • 在整个对话结束后,会添加一个助手的消息头,为模型完成提供提示。
  1. {
  2. "dialog": [
  3. {
  4. "role": "user",
  5. "content": "<|begin_of_text|><|start_header_id|>user<|end_header_id|>你好!<|eot_id|>"
  6. },
  7. {
  8. "role": "assistant",
  9. "content": "<|start_header_id|>assistant<|end_header_id|>你好,有什么我可以帮助你的吗?<|eot_id|>"
  10. },
  11. {
  12. "role": "assistant",
  13. "content": "<|start_header_id|>assistant<|end_header_id|>" // 空字符串表示助手的回复尚未开始
  14. }
  15. ]
  16. }

4、模型微调&增量训练:包括官方代码微调、官方Colab平台微调(LLaMA-Factory工具+unsloth优化框架)、LLaMA-Factory工具、unsloth工具(参照官方Colab平台)+GPT4ALL框架

简介

经验总结

>> LLaMA-3没必要进行中文词表扩充但可以直接进行增量训练:LLaMA-3的词表已经包含128k词汇,而LLaMA-2仅有32k,因此可以不用去专门扩充词表,因为扩充后进行增量预训练可能会损害模型在15T数据上学习的通用能力,并且官方的SFT、PPO、DPO本身已经足够优秀。此外,根据行业早期经验,在LLaMA-2上扩充词表的尝试,其实并未带来预期的性能提升,建议应更多专注使用优质数据集进行训练。比如大型厂商的模型之所以在各种任务上表现良好,是因为他们建立了数据飞轮和优质数据的闭环,而外部研究者则过分关注于指标和理论。

● 但是,对于古诗词文学知识、古代知识、中文常识的增强,可以通过直接增量预训练和定制化微调(SFT)来实现,无需执行扩充词表这一步骤,而是应该加强这方面的知识注入。

>> LLaMA-3的中文能力实际上很强:虽然LLaMA-3在线体验不佳,主要是因为网站内部系统提示(system prompt)使用的是英文。建议用户在本地部署原版LLaMA-3模型后,使用中文提示词进行测试,比如改为”中文智者“等类似提示。

T1、参照官方代码直接微调

LLMs之LLaMA3:基于中文指令格式数据集利用LoRA指令微调Llama-3-8B-Instruct实现对话生成推理——定义数据集(JSON文件,instruction-input-output)→数据预处理(分词、截断等操作,加载预分词模型并测试编码后的文本)→模型微调(创建模型并使用梯度检查点技术+配置LoRA参数并更新模型+配置训练参数+开始训练+保存模型)→模型推理(加载训练好的tokenizer、模型、lora权重+创建模板[instruct+user_input]+对输入文本进行分词+文本生成并解码ID列表)

https://yunyaniu.blog.csdn.net/article/details/138017988

T2、基于Colab平台(免费T4-GPU)采用LLaMA-Factory工具+unsloth优化框架实现微调:

LLMs之Llama3:基于Colab平台(免费T4-GPU)利用LLaMA-Factory的GUI界面(底层采用unsloth优化框架【加速训练5~30倍+减少50%的内存占用】)对llama-3-8b-Instruct-bnb-4bit模型采用alpaca数据集实现CLI方式/GUI傻瓜可视化方式进行LoRA指令微调→模型推理测试→CLI方式合并权重

https://yunyaniu.blog.csdn.net/article/details/138143149

T3、采用LLaMA-Factory工具实现微调:采用ShareGPT格式中文对话微调数据集

LLMs之Llama3:手把手教你(只需四步)基于LLaMA-Factory的GUI界面(仅支持单GPU训练)对Llama-3-8B-Instruct模型采用中文语料数据集(alpaca_zh、wikipedia_zh等)实现傻瓜式/可视化LoRA指令微调

https://yunyaniu.blog.csdn.net/article/details/137943873

T4、采用Colab平台+unsloth工具实现微调+GPT4ALL框架部署GUI界面并对话:参照官方代码自己实现

持续更新中……

LLMs之LLaMA3:基于Colab平台(采用T4 GPU+至少37G)采用中文语料数据利用unsloth框架(速度更快/量化功能)并采用LoRA进行微调LLaMA-3-8b(合并原始模型和LoRA模型)同时进行4位量化(16位的hf格式→16位的gguf格式→4位的gguf格式)最后将模型导出到本地

https://yunyaniu.blog.csdn.net/article/details/138203824

LLMs之LLaMA3:基于GPT4ALL框架对LLaMA-3实现模型部署并推理—通过加载训练后LLaMA-3的gguf模型文件然后在GUI界面中实现对话聊天

https://yunyaniu.blog.csdn.net/article/details/138235793

T5、采用Firefly工具实现微调:采用firefly格式中文对话微调数据集

持续更新中……

5、模型推理

不同的模型需要不同的模型并行(MP)值,如下所示。所有模型都支持最多8192个token的序列长度,但我们根据max_seq_len和max_batch_size的值预先分配缓存。所以请根据您的硬件设置这些值。

ModelMP
8B1
70B8

4.1、使用预训练模型:没有为聊天或问答进行微调,但应该被提示

这些模型没有为聊天或问答进行微调。它们应该被提示,以便预期的答案是提示的自然延续。请参阅example_text_completion.py的一些示例。为了说明,请查看以下命令,使用llama-3-8b模型运行它(nproc_per_node需要设置为MP值):

  1. torchrun --nproc_per_node 1 example_text_completion.py
  2. –ckpt_dir Meta-Llama-3-8B/
  3. –tokenizer_path Meta-Llama-3-8B/tokenizer.model
  4. –max_seq_len 128 --max_batch_size 4

4.2、使用指令调整模型:可采用部署额外的分类器来过滤掉危险内容

微调的模型是为对话应用程序而训练的。为了获得预期的特性和性能,需要遵循ChatFormat中定义的特定格式:提示以<|begin_of_text|>特殊标记开始,随后是多条消息。每个消息以<|start_header_id|>标签开头,角色系统、用户或助手,以及<|end_header_id|>标签。在双换行符\n\n之后是消息的内容。每个消息的末尾用<|eot_id|>标记。
您还可以部署额外的分类器来过滤掉被认为是危险的内容。请参阅llama-recipes repo,了解如何将安全检查器添加到推理代码的输入和输出中。
使用llama-3-8b-chat的示例:

  1. torchrun --nproc_per_node 1 example_chat_completion.py
  2. –ckpt_dir Meta-Llama-3-8B-Instruct/
  3. –tokenizer_path Meta-Llama-3-8B-Instruct/tokenizer.model
  4. –max_seq_len 512 --max_batch_size 6

4.3、负责任使用指南

Llama 3是一种新技术,使用时存在潜在风险。到目前为止进行的测试并未涵盖所有场景,也根本无法涵盖所有场景。为了帮助开发者应对这些风险,我们制定了负责任使用指南。

地址https://ai.meta.com/static-resource/responsible-use-guide/

6、模型使用:以Llama-3-8B-Instruct为例

地址:https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct

该存储库包含两个版本的 Meta-Llama-3-8B-Instruct,可用于Transformers 和原始 llama3 代码库。

T1、与Transformers一起使用

您可以使用 Transformers 流水线抽象运行会话推理,或者通过利用 Auto 类与 generate() 函数。让我们看看两者的示例。

T1.1、Transformers pipeline:推荐使用≥24G的Nvidia显卡,比如GeForce RTX 3090-24G、GeForce RTX 4090-24G、A100-40GB、A800-40G、A40-48G、V100-32G等
  1. import transformers
  2. import torch
  3. torch.cuda.empty_cache()
  4. model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
  5. pipeline = transformers.pipeline(
  6. "text-generation",
  7. model=model_id,
  8. model_kwargs={"torch_dtype": torch.bfloat16},
  9. device="auto",
  10. )
  11. instruction = "You are a pirate chatbot who always responds in pirate speak!"
  12. user_input = "Who are you?"
  13. messages = [
  14. {"role": "system", "content": instruction},
  15. {"role": "user", "content": user_input},
  16. ]
  17. prompt = pipeline.tokenizer.apply_chat_template(
  18. messages,
  19. tokenize=False,
  20. add_generation_prompt=True
  21. )
  22. terminators = [
  23. pipeline.tokenizer.eos_token_id,
  24. pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
  25. ]
  26. outputs = pipeline(
  27. prompt,
  28. max_new_tokens=256,
  29. eos_token_id=terminators,
  30. do_sample=True,
  31. temperature=0.6,
  32. top_p=0.9,
  33. )
  34. print(outputs[0]["generated_text"][len(prompt):])

T1.2、Transformers AutoModelForCausalLM
  1. from transformers import AutoTokenizer, AutoModelForCausalLM
  2. import torch
  3. model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
  4. tokenizer = AutoTokenizer.from_pretrained(model_id)
  5. model = AutoModelForCausalLM.from_pretrained(
  6. model_id,
  7. torch_dtype=torch.bfloat16,
  8. device_map="auto",
  9. )
  10. messages = [
  11. {"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
  12. {"role": "user", "content": "Who are you?"},
  13. ]
  14. input_ids = tokenizer.apply_chat_template(
  15. messages,
  16. add_generation_prompt=True,
  17. return_tensors="pt"
  18. ).to(model.device)
  19. terminators = [
  20. tokenizer.eos_token_id,
  21. tokenizer.convert_tokens_to_ids("<|eot_id|>")
  22. ]
  23. outputs = model.generate(
  24. input_ids,
  25. max_new_tokens=256,
  26. eos_token_id=terminators,
  27. do_sample=True,
  28. temperature=0.6,
  29. top_p=0.9,
  30. )
  31. response = outputs[0][input_ids.shape[-1]:]
  32. print(tokenizer.decode(response, skip_special_tokens=True))

T2、与 llama3 一起使用

请按照存储库中的说明进行操作
要下载原始检查点,请参见下面的示例命令,利用 huggingface-cli:

huggingface-cli download meta-llama/Meta-Llama-3-8B-Instruct --include "original/*" --local-dir Meta-Llama-3-8B-Instruct

对于 Hugging Face 支持,我们建议使用 transformers 或 TGI,但类似的命令也可以使用。

T3、基于LangChain 框架使用

LLMs之LLaMA3:基于LangChain框架(需要重写构造函数和 _call 函数)集成Llama-3-8B-Instruct模型实现对话生成之代码实现

https://yunyaniu.blog.csdn.net/article/details/138173988

7、模型部署:包括FastApi、WebDemo、LM Studio结合Lobe Chat框架、Ollama框架、GPT4ALL框架

T1、LLaMA3-8B-Instruct WebDemo 部署

创建 chatBot.py 文件并,粘贴如下代码
  1. # 导入所需的库
  2. from transformers import AutoTokenizer, AutoModelForCausalLM
  3. import torch
  4. import streamlit as st
  5. # 在侧边栏创建标题和链接
  6. with st.sidebar:
  7. st.markdown("## LLaMA3 LLM")
  8. "[开源大模型食用指南 self-llm](https://github.com/datawhalechina/self-llm.git)"
  9. # 创建标题和副标题
  10. st.title("
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/782576
    推荐阅读
    相关标签