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

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!

目录

[Llama 3的简介](#Llama 3的简介)

[1、Llama 3的目标](#1、Llama 3的目标)

2、最先进的性能

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

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

4.1、模型架构

4.2、训练数据

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

4.4、指令微调

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

[6、大规模部署Llama 3:改进的tokenizer效率+GQA](#6、大规模部署Llama 3:改进的tokenizer效率+GQA)

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

[8、试用Meta Llama 3](#8、试用Meta Llama 3)

[Llama 3的安装和使用方法](#Llama 3的安装和使用方法)

1、安装

(1)、下载

[(2)、访问Hugging Face](#(2)、访问Hugging Face)

2、快速入门

3、注意事项

4、推理

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

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

4.3、负责任使用指南

5、问题

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

7、Llama-3-8B-Instruct的使用

T1、与Transformers一起使用

[T1.1、Transformers pipeline](#T1.1、Transformers pipeline)

[T1.2、Transformers AutoModelForCausalLM](#T1.2、Transformers AutoModelForCausalLM)

[T2、与 llama3 一起使用](#T2、与 llama3 一起使用)

[Llama 3的案例应用](#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博客

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 Data | Params | Context length | GQA | Token count | Knowledge cutoff |
| Llama 3 | A new mix of publicly available online data. | 8B | 8k | Yes | 15T+ | 2023 年 3 月 |
| Llama 3 | A new mix of publicly available online data. | 70B | 8k | Yes | 15T+ | 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

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应用程序中大规模部署,全程指导。

1、安装

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

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

(1)、下载

|--------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 获取协议 | 为了下载模型权重和tokenizer,请访问Meta Llama网站并接受我们的许可协议。 一旦您的请求得到批准,您将通过电子邮件收到一个已签名的URL。然后运行download.sh脚本,在提示时传递提供的URL以开始下载。 请注意,链接在24小时后过期,并且有一定数量的下载。如果您开始看到例如403: Forbidden的错误,您总是可以重新请求链接。 |
| 安装依赖 | 先决条件:确保您已安装wget和md5sum。然后运行脚本:./download.sh。 |

(2)、访问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,以下管道片段将下载并缓存权重:

python 复制代码
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
pipeline = transformers.pipeline(
  "text-generation",
  model="meta-llama/Meta-Llama-3-8B-Instruct",
  model_kwargs={"torch_dtype": torch.bfloat16},
  device="cuda",
)

2、快速入门

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

在顶级目录中运行:

python 复制代码
pip install -e .

访问Meta Llama网站并注册以下载模型/s。

一旦注册,您将收到一封带有下载模型URL的电子邮件。您需要这个URL来运行download.sh脚本。

一旦收到电子邮件,导航到您的下载llama仓库并运行download.sh脚本。确保授予download.sh脚本的执行权限 在这个过程中,您将需要输入电子邮件中的URL。 不要使用"复制链接"选项,而是确保手动从电子邮件中复制链接。

一旦您想要的模型/s被下载,您可以通过以下命令在本地运行模型:

python 复制代码
torchrun --nproc_per_node 1 example_chat_completion.py \
    --ckpt_dir Meta-Llama-3-8B-Instruct/ \
    --tokenizer_path Meta-Llama-3-8B-Instruct/tokenizer.model \
--max_seq_len 512 --max_batch_size 6

3、注意事项

>> 将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文件。

4、推理

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

Model MP
8B 1
70B 8

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

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

python 复制代码
torchrun --nproc_per_node 1 example_text_completion.py
--ckpt_dir Meta-Llama-3-8B/
--tokenizer_path Meta-Llama-3-8B/tokenizer.model
--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的示例:

python 复制代码
torchrun --nproc_per_node 1 example_chat_completion.py
--ckpt_dir Meta-Llama-3-8B-Instruct/
--tokenizer_path Meta-Llama-3-8B-Instruct/tokenizer.model
--max_seq_len 512 --max_batch_size 6 

4.3、负责任使用指南

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

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

5、问题

请通过以下方式之一报告任何软件"bug",或其他与模型相关的问题:

报告模型问题:https://github.com/meta-llama/llama3/issues 报告模型生成的危险内容:developers.facebook.com/llama_output_feedback 报告bug和安全问题:facebook.com/whitehat/info

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

请参阅MODEL_CARD.md

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

7、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
python 复制代码
import transformers
import torch

model_id = "meta-llama/Meta-Llama-3-8B-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):])
T1.2、Transformers AutoModelForCausalLM
python 复制代码
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

model_id = "meta-llama/Meta-Llama-3-8B-Instruct"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    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?"},
]

input_ids = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    return_tensors="pt"
).to(model.device)

terminators = [
    tokenizer.eos_token_id,
    tokenizer.convert_tokens_to_ids("<|eot_id|>")
]

outputs = model.generate(
    input_ids,
    max_new_tokens=256,
    eos_token_id=terminators,
    do_sample=True,
    temperature=0.6,
    top_p=0.9,
)
response = outputs[0][input_ids.shape[-1]:]
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,但类似的命令也可以使用。

Llama 3的案例应用

1、API接口调用

python 复制代码
from openai import OpenAI

client = OpenAI(
  base_url = "https://integrate.api.nvidia.com/v1",
  api_key = "$API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC"
)

completion = client.chat.completions.create(
  model="meta/llama3-70b",
  messages=[{"role":"user","content":""}],
  temperature=0.5,
  top_p=1,
  max_tokens=1024,
  stream=True
)

for chunk in completion:
  if chunk.choices[0].delta.content is not None:
    print(chunk.choices[0].delta.content, end="")

2、多种在线体验方式

T1、Meta官网在线体验地址

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

T2、Huggingface平台在线体验地址

体验地址https://huggingface.co/chat/conversation/6623131f499d70af9ab9f6cf

T3、NVIDIA 平台在线体验地址

体验地址NVIDIA NIM | llama3-70b

体验地址NVIDIA NIM | llama3-8b

T4、replicate平台在线体验

体验地址 ::meta/meta-llama-3-70b-instruct -- Run with an API on Replicate

相关推荐
deephub12 小时前
LEC: 基于Transformer中间层隐藏状态的高效特征提取与内容安全分类方法
人工智能·深度学习·transformer·大语言模型·特征提取
三月七(爱看动漫的程序员)16 小时前
LEAST-TO-MOST PROMPTING ENABLES COMPLEX REASONING IN LARGE LANGUAGE MODELS---正文
人工智能·gpt·学习·机器学习·语言模型·自然语言处理·llama
AI程序猿人1 天前
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
人工智能·pytorch·深度学习·自然语言处理·大模型·transformer·llms
码狂☆1 天前
源码编译llama.cpp for android
android·人工智能·llama
Ambition_LAO1 天前
LLaMA-Factory QuickStart 流程详解
llm·llama
流穿1 天前
WebSocket vs SSE:实时通信技术的对比与选择
网络·websocket·网络协议·大语言模型·sse
宇梵文书C1 天前
在CFFF云平台使用llama-factory部署及微调Qwen2.5-7B-Instruct
llm·llama·cfff
CSBLOG2 天前
Day27 - 大模型微调,LLaMA搭建
人工智能·深度学习·llama
python_知世3 天前
基于LLaMA-Factory微调Llama3
人工智能·深度学习·程序人生·自然语言处理·大语言模型·llama·大模型微调
handsomelky3 天前
ollama本地部署大语言模型记录
人工智能·语言模型·自然语言处理·chatgpt·llama·ollama·gemma