![]() | 这是本书的非官方存储库:大语言模型:应用和实施大型语言模型(APRESS)的策略。这本书基于此存储库的内容,但笔记本正在更新,我正在整合新的示例和章节。如果您正在寻找本书的官方存储库,则使用原始笔记本电脑,您应该访问Apress存储库,在这里您可以在书中出现时以其原始格式找到所有笔记本。在:[Amazon] [Springer] |
请注意,Github上的课程不包含书中所有信息。
关于大型语言模型及其应用程序的实际自由手是在永久发展中?完成时,我将发布不同的课程和样本。
该课程使用Openai和Hugging Face Library的模型提供了动手体验。我们将看到并使用大量工具和实践,这些工具和练习将在我们可以应用新知识的过程中成长的小型项目。
本节中涵盖的一些主题和技术包括:聊天机器人,代码生成,OpenAI API,拥抱面,矢量数据库,Langchain,微调,PEFT微调,软及时调整,柔软的及时调整,Lora,Qlora,Qlora,评估模型,知识蒸馏。
每节课都符合笔记本和文章。笔记本包含足够的信息来理解其中的代码,文章提供了有关代码和所涵盖的主题的更详细说明。
我的建议是将文章与笔记本旁边打开,然后跟随。许多文章提供了有关变体的小技巧,您可以将其介绍给笔记本。我建议跟随它们以提高概念的清晰度。
大多数笔记本电脑都托管在Colab上,而其中一些则在Kaggle上。与COLAB相比,Kaggle在免费版本中提供了更多的内存,但是我发现复制和共享笔记本在COLAB中更简单,并且并非每个人都有一个Kaggle帐户。
一些笔记本需要比COLAB免费版本提供的内存更多。当我们使用大型语言模型时,这是一个普遍的情况,如果您继续与它们合作,则会复发。您可以在自己的环境中运行笔记本,也可以选择Pro版本的Colab。
每个笔记本都有一个介质文章,其中详细说明了代码。
在课程的第一部分中,我们将学会通过创建两个小型项目与OpenAI API合作。我们将探究Openai的角色,以及如何通过提示向模型提供必要的说明,以使其按照我们的意愿行事。
第一个项目是餐厅聊天机器人,该模型将在其中接收客户订单。在此项目的基础上,我们将构建一个SQL语句生成器。在这里,我们将尝试创建一个安全的提示,该提示仅接受SQL创建命令,而无需接受。
我们将利用OpenAI GPT-3.5和面板开发一个针对快餐店量身定制的简单聊天机器人。在课程中,我们将探讨及时工程的基本面,包括了解各种OpenAI角色,操纵温度设置以及如何避免及时注射。
| 文章小组 /文章Gradio | 笔记本面板 /笔记本级 |
|---|
遵循上一篇文章中使用的相同框架来创建聊天机器人,我们进行了一些修改,以开发自然语言向SQL Translator开发。在这种情况下,需要与表结构一起提供模型,并进行调整以确保平滑功能并避免任何潜在的故障。有了这些修改,翻译人员能够将自然语言查询转换为SQL查询。 @fmquaglia已使用DBML创建了一个笔记本,以描述到目前为止的表格比原始的表。
| 文章 /文章Gradio | 笔记本 /笔记本级 /笔记本dbml |
|---|
我们将探索迅速的工程技术,以改善我们从模型中获得的结果。就像如何格式化答案并使用几个镜头样本获得结构化响应。
| 文章 | 笔记本 |
|---|
对矢量数据库的简要介绍,该技术将在整个课程中伴随着许多课程。我们将使用来自Chromadb中存储的各种新闻数据集的信息进行检索增强生成的示例。
如果在大型语言模型的世界中有一个方面的重要性,它正在探索如何利用专有信息。在本课程中,我们探讨了一种可能的解决方案,该解决方案涉及将信息存储在矢量数据库中,即Chromadb在我们的情况下,并使用它来创建丰富的提示。
| 文章 | 笔记本 |
|---|
我们通过引入语义缓存层能够确定之前是否提出过类似的问题来增强抹布系统。如果肯定,它将从使用FAISS创建的高速缓存系统中检索信息,而不是访问矢量数据库。
由于该课程:https://maven.com/boring-bot/advanced-llm/1/home来自Hamza Farooq。
| 文章 | 笔记本 |
|---|---|
| WIP | 笔记本 |
Langchain一直是大语言模型宇宙中的图书馆之一,对这次革命做出了最大的贡献。它使我们能够将呼叫链接到模型和其他系统,从而使我们能够基于大语言模型构建应用程序。在课程中,我们将多次使用它,创建日益复杂的项目。
在本课程中,我们使用Langchain来增强上一课的笔记本,在该课程中,我们使用了两个数据集中的数据来创建一个丰富的提示。这次,在Langchain的帮助下,我们建立了一条管道,该管道负责从矢量数据库中检索数据并将其传递给语言模型。该笔记本设置为使用两个不同的数据集和两个不同的模型。其中一种模型是对文本生成的培训,而另一个则经过培训用于Text2Text生成。
| 文章 | 笔记本 |
|---|
我们将使用使用Langchain建造的两种模型管道创建评论响应系统。在此设置中,第二个模型将负责调节第一个模型生成的响应。
防止我们的系统产生不需要的响应的一种有效方法是使用与用户无直接互动的第二个模型来处理响应生成。
这种方法可以降低第一个模型对用户条目产生的不希望响应的风险。
我将为此任务创建单独的笔记本。一个将涉及Openai的模型,而其他模型将利用拥抱脸提供的开源型号。在三个笔记本电脑中获得的结果非常不同。该系统在OpenAI和Llama2型号中效果更好。
| 文章 | 笔记本 |
|---|---|
| Openai文章 | Openai笔记本 |
| Llama2-7b文章 | Llama2-7b笔记本 |
| 没有文章 | GPT-J笔记本 |
代理是世界上最强大的工具之一。代理能够解释用户的请求,并使用可用的工具和库,直到达到预期结果为止。
使用Langchain代理商,我们将仅在几行中创建最简单但令人难以置信的强大代理商之一。代理将充当数据分析师助理,并帮助我们分析任何Excel文件中包含的数据。它将能够识别趋势,使用模型,进行预测。总而言之,我们将创建一个简单的代理,我们可以在日常工作中使用该代理来分析我们的数据。
| 文章 | 笔记本 |
|---|
在此示例中,以前看到的两种技术结合在一起:代理和向量数据库。医疗信息存储在Chromadb中,并创建了Langchain代理,只有在必要时才能创建丰富的提示,该提示将被发送到模型以回答用户的问题。
换句话说,创建了一个抹布系统来协助医疗聊天机器人。
注意力!!!仅以示例为例。没有人应该将靴子的建议作为真正的医生的建议。我对可能给予聊天机器人的使用不承担所有责任。我仅作为不同技术的示例构建了它。
| 文章 | 笔记本 |
|---|
用于衡量大语模型性能的指标与我们在更传统的模型中使用的指标完全不同。我们正在从准确性,F1得分或召回等指标上转移,并朝着Bleu,Rouge或流星等指标转向。
这些指标是根据分配给语言模型的特定任务量身定制的。
在本节中,我们将探讨其中几个指标的示例,以及如何使用它们来确定一种模型是否优于另一个模型,而对于给定的任务。我们将深入研究这些指标有助于我们就不同模型的性能做出明智的决定的实际情况。
BLEU是评估翻译质量的首批指标之一。在笔记本中,我们将Google翻译的质量与来自拥抱面的开源模型中的其他翻译的质量进行了比较。
| 文章WIP | 笔记本 |
|---|
我们将探讨胭脂指标的用法,以衡量语言模型产生的摘要的质量。我们将使用两种T5型号,其中一种是T5基本模型,另一个是专门设计用于创建摘要的T5基本微调。
| 文章 | 笔记本 |
|---|
在此最初的示例中,您可以观察如何使用langsmith监视组成代理的各个组件之间的流量。代理是一个抹布系统,它利用矢量数据库来构建丰富的提示并将其传递给模型。 Langsmith既捕获了代理工具的使用又捕获了模型做出的决定,并始终提供有关已发送/接收数据的信息,消耗令牌,查询的持续时间以及所有这些在真正的用户友好环境中。
| 文章 | 笔记本 |
|---|
以前在笔记本《胭脂指标:评估摘要》中,我们学会了如何使用胭脂来评估哪些最佳摘要近似于人类创建的摘要。这次,我们将使用嵌入距离和langsmith来验证哪些模型产生的摘要与参考文献更相似。
| 文章 | 笔记本 |
|---|
我们采用作为医疗助理的代理商,并合并Giskard来评估其响应是否正确。这样,不仅可以评估模型的响应,还可以评估矢量数据库中的信息检索。 Giskard是一种允许评估完整的抹布解决方案的解决方案。
| 文章 | 笔记本 |
|---|
Eleutherai的LM-Eval图书馆可轻松访问已成为行业标准的学术基准。它支持OpenAI等提供商的开源模型和API的评估,甚至允许评估使用Lora等技术创建的适配器。
在此笔记本中,我将重点介绍库的一个小而重要的特征:评估与拥抱Face的Transfereers库兼容的模型。
| 文章 - WIP | 笔记本 |
|---|
在“填充与优化”部分中,我们将探索不同的技术,例如及时的微调或洛拉,我们将使用拥抱的脸部PEFT库有效地调整大语言模型。我们将探索诸如量化之类的技术,以减少模型的重量。
在此笔记本中,使用PEFT库中的及时调整对两种型号进行了培训。该技术不仅允许我们通过修改很少的参数的权重来训练,而且还使我们能够在使用相同基础模型的内存中加载不同的专用模型。
及时调整是一种加性技术,预先训练模型的权重也没有修改。在这种情况下,我们修改的权重是我们在提示中添加的虚拟令牌的权重。
| 文章 | 笔记本 |
|---|
经过简要说明洛拉(Lora)的微调技术的运作方式,我们将从Bloom家族中微调一个模型,以教给它以构建可用于指导大型语言模型的提示。
| 文章 | 笔记本 |
|---|
我们将看到量化的简要介绍,用于减少大型大语言模型的规模。通过量化,您可以加载大型模型,以减少所需的内存资源。它也适用于微调过程,您可以在单个GPU中微调模型,而无需消耗所有资源。在简短的解释之后,我们看到了一个示例,说明如何在Google Colab上微调Bloom 7b型号INA T4 16GB GPU。
| 文章 | 笔记本 |
|---|
本节仍在建设中。目的是建立一个课程,将我们从最简单的修剪技术带入使用该领域领先公司采用的相同技术,例如Microsoft,Google,Nvidia或OpenAI来创建模型,以构建其模型。
在第一个笔记本电脑中,修剪过程将应用于Distilgpt2模型的前馈层。这意味着该模型将减少这些特定层的权重。根据其重要性得分选择修剪的神经元,我们使用其权重的L1规范来计算。对于第一个示例来说,这是一个简单的剥离,当您要创建一个模拟所有区域的基本模型的修剪模型时,可以使用。
通过更改模型的结构,必须创建一个新的配置文件,以确保其与transformers库正确合作。
| 笔记本:修剪Distilgpt2型号。 |
|---|
在第一个笔记本中,我们尝试复制与Distilgpt2模型一起使用的修剪过程,但应用于Llama模型。通过不考虑模型的特性,修剪过程会导致完全无法使用的模型。本笔记本是一种练习,以了解了解将要修剪的模型的结构是多么重要。
| 笔记本:修剪Llama3.2模型不正确的剥离。 |
|---|
第二个笔记本电脑解决了将相同的修剪过程应用于与Distilgpt2相同的修剪过程时遇到的问题。
正确的方法是将模型的MLP层视为对而不是单个层,并通过考虑两个层来计算神经元的重要性。此外,我们改用最大绝对重量来确定在修剪层中保留哪些神经元。
| 修剪Llama3文章 | 笔记本:修剪Llama3.2型号正确的侵略。 |
|---|
在本笔记本中,我们将研究深度修剪的示例,该示例涉及从模型中删除整个层。要注意的第一件事是,从变压器模型中删除整个层通常会对模型的性能产生重大影响。与上一个示例所示,与从MLP层中简单地去除神经元相比,这是一个更加巨大的建筑变化。
| 笔记本:深度修剪美洲驼模型。 |
|---|
在这个直接的初始项目中,我们将通过自然语言开发SQL发电机。我们将首先创建提示以实现两种解决方案:一种使用在Azure上运行的OpenAI模型,另一个使用带有拥抱面的开源模型。
| 文章 | 笔记本 |
|---|---|
| 为OpenAI创建NL2SQL提示 | 及时创建Openai |
| WIP | 提示为defog/sqlcoder创建 |
| 推理Azure配置。 | 使用Azure推理点 |
在这个小型项目中,我们将创建一个新的模型,将Microsoft-Phi-3模型与DPO保持一致,然后将其发布到拥抱的脸上。
| 文章 | 笔记本 |
|---|---|
| WIP | 与DPO A PHI3-3模型对齐。 |
在此初始解决方案中,我们为NL2SQL系统设计了一个能够在大型数据库上操作的架构。该系统旨在与两个或三个不同的型号一起使用。实际上,我们在示例中使用了三个模型。
这是一个实现快速项目的体系结构,仅为数据库中的几张桌子提供服务,从而使我们可以按照自己的速度添加更多桌子。
在此解决方案中,我们探讨了嵌入式和大语言模型(LLM)在金融行业中的客户风险评估和产品建议中的变革力。我们将改变我们存储客户信息的格式,因此,我们还将更改这些信息在系统中传播的方式,从而实现重要优势。
请,如果您发现任何问题,请打开问题。我会尽力尽快解决它,并给您信誉。
如果您想做出贡献或提出主题,请随时开始讨论。我很高兴收到任何意见或建议。
不要害羞,与朋友在社交网络上分享课程。在LinkedIn或Twitter上与我联系,并随时分享您想要的任何内容或提出任何问题。
将星星配给存储库。它对我有很大帮助,并鼓励我继续添加课程。这是支持这样的免费开源课程的好方法。
汤姆·科基米(Tom Kocmi),克里斯蒂安·费德曼(Christian Federmann),大型语言模型是翻译质量的最先进的评估者。用LLM评估LLM。
Pere Martra,大型语言模型的介绍与Openai
反应:在语言模型中协同推理和作用。 Langchain&Agents部分。医疗助理样本。
比例的参数效率提示调整的力量。微调与优化部分。及时调整样品。
LORA:大型语言模型的低级改编。微调与优化部分。洛拉微调样本。
QLORA:量化LLM的有效固定。微调与优化部分。 Qlora微调样本。
如何提示LLM进行文本到SQL:零射,单域和跨域设置的研究。项目。 SQL的自然语言。
Saurav Muralidharan,Sharath Turuvekere Sreenivas,Raviraj Joshi,Marcin Chochowski,Mostofa Patwary,Mohammad Shoeybi,Bryan Catanzaro,Jan Kautz,Jan Kautz,Jan Kautz,Pavlo Molchanov,pavlo Molchanov,“通过降级和知识模型进行降级和知识模型2024。