掌握大型语言模型的指南

大型语言模型精通指南

引言

近年来,大型语言模型(LLM)在自然语言处理和人工智能领域取得了巨大成功,从聊天机器人到搜索引擎再到创意写作辅助,LLM正在推动各行各业的尖端应用。然而,要构建有用的LLM产品,需要专业的技能和知识。本指南将为您提供全面而易于理解的概述,介绍有效利用LLM巨大潜力的关键概念、架构模式和实用技能。

什么是大型语言模型,为什么它们很重要?

LLM是一类深度学习模型,在大量文本语料库上进行预训练,使其能够生成类人的文本并以前所未有的水平理解自然语言。与传统依赖规则和注释的NLP模型不同,LLM如GPT-3通过预测句子中的掩蔽词以无监督、自我监督的方式学习语言技能。它们的基础性质使它们可以针对广泛的下游NLP任务进行微调。

LLM代表了AI的一个范式转变,并使像聊天机器人、搜索引擎和文本生成器这样的应用成为可能,这些应用在以前是无法实现的。例如,聊天机器人现在可以使用LLM如Anthropic的Claude进行自由形式的对话,而不是依赖脆弱的手工编码规则。LLM的强大功能源自三个关键创新:

  • 数据规模:LLM在包含数十亿单词的互联网规模语料库上进行训练,例如GPT-3看到了45TB的文本数据。这提供了广泛的语言覆盖。
  • 模型大小:LLM如GPT-3有1750亿个参数,使它们能够吸收所有这些数据。大型模型容量是泛化的关键。
  • 自我监督:LLM通过自我监督目标进行训练,这些目标从原始文本创建“伪标记”数据,而不是昂贵的人工标记。这使大规模预训练成为可能。
    掌握微调和部署LLM的知识和技能将使您能够创新新的NLP解决方案和产品。

应用LLM的关键概念

虽然LLM开箱即用具有惊人的能力,但有效地将它们用于下游任务需要理解关键概念,如提示、嵌入、注意力和语义检索。

提示

LLM不是通过输入和输出,而是通过提示来控制——为任务设置上下文的指令。例如,要总结一段文本,我们会提供如下示例:

“Passage: Summary:”

然后模型在其输出中生成一个摘要。提示工程对于有效地引导LLM至关重要。

嵌入

词嵌入将词表示为编码语义意义的密集向量,允许进行数学运算。LLM利用嵌入来理解词的上下文。

Word2Vec和Bert等技术创建可以重复使用的嵌入模型。Word2Vec通过预测相邻词来学习嵌入,开创了使用浅层神经网络学习嵌入的先河。Bert通过掩蔽词并基于双向上下文预测它们来产生深层上下文嵌入。

最近的研究已经发展了嵌入,以捕捉更多的语义关系。Google的MUM模型使用VATT转换器来产生对实体敏感的BERT嵌入。Anthropic的Constitutional AI学习对社交环境敏感的嵌入。多语言模型如mT5通过在100多种语言上同时进行预训练来产生跨语言嵌入。

注意力

注意力层允许LLM在生成文本时关注相关上下文。多头自注意力是转换器分析长文本中词关系的关键。

例如,一个问答模型可以学会为找到答案的相关输入词分配更高的注意力权重。视觉注意力机制关注图像的相关区域。

最近的变体如稀疏注意力通过减少冗余的注意力计算来提高效率。模型如GShard使用专家混合注意力以获得更大的参数效率。通用转换器引入了深度递归,使建模长期依赖关系成为可能。

理解注意力创新可以洞察扩展模型功能。

检索

大型向量数据库(称为语义索引)存储嵌入,以便在文档上进行高效的相似性搜索。检索通过允许大量外部上下文来增强LLM。

强大的近似最近邻算法如HNSW、LSH和PQ即使在数十亿文档的情况下也能实现快速语义搜索。例如,Anthropic的Claude LLM使用HNSW在500百万文档索引上进行检索。

混合检索结合了密集嵌入和稀疏关键词元数据以提高召回率。模型如REALM直接通过双编码器优化嵌入以进行检索目标。

最近的工作还探索了文本、图像和视频之间的跨模态检索,使用共享的多模态向量空间。掌握语义检索为新的应用打开了大门,如多媒体搜索引擎。

这些概念将在接下来的架构模式和技能中反复出现。

架构模式

虽然模型训练仍然复杂,但使用经过验证的架构模式可以更容易地应用预训练的LLM:

文本生成管道

利用LLM进行生成性文本应用:

  • 提示工程来构建任务
    • LLM生成原始文本
    • 安全过滤器来捕获问题
    • 后处理格式化
      例如,一个论文写作辅助会使用定义论文主题的提示,从LLM生成文本,过滤合理性,然后对输出进行拼写检查。

搜索和检索

构建语义搜索系统:

  • 将文档语料库索引到向量数据库中,以便进行相似性搜索
    • 接受搜索查询,并通过近似最近邻查找找到相关命中
    • 将命中作为上下文提供给LLM以总结和合成答案
      这利用了在规模上检索文档,而不是仅仅依赖LLM的有限上下文。

多任务学习

不是训练单个LLM专家,而是多任务模型允许通过以下方式教一个模型多个技能:

  • 为每个任务构建提示
    • 跨任务联合微调
    • 在LLM编码器上添加分类器以进行预测
      这提高了整体模型性能并减少了训练成本。

混合AI系统

结合LLM和更符号AI的优势:

  • LLM处理开放式语言任务
    • 规则为基础的逻辑提供约束
    • 结构化知识在KG中表示
    • LLM和结构化数据相互丰富,形成“良性循环”
      这结合了神经方法的灵活性和符号方法的稳健性。

应用LLM的关键技能

考虑到这些架构模式,我们现在深入探讨应用LLM的实用技能:

提示工程

有效地提示LLM是应用的关键。关键技能包括:

  • 将任务构造成自然语言指令和示例
    • 控制提示的长度、具体性和语气
    • 根据模型输出迭代改进提示
    • 围绕客户支持等域策划提示集合
    • 研究人机交互原则
      提示既是艺术又是科学——期望通过经验逐步改进。

编排框架

使用LangChain、Cohere等框架简化LLM应用开发,这些框架使模型链入管道、集成数据源并抽象基础设施变得容易。

LangChain提供模块化架构,用于将提示、模型、预/后处理器和数据连接器组合成可定制的流程。Cohere提供了一个工作室,用于使用GUI、REST API和Python SDK自动化LLM工作流程。

这些框架使用技术如:

  • 转换器分片,将上下文分割到GPU上以处理长序列
    • 异步模型查询以获得高吞吐量
    • 缓存策略如最近最少使用以优化内存使用
    • 分布式跟踪以监控管道瓶颈
    • A/B测试框架以运行比较评估
    • 模型版本控制和发布管理以进行实验
    • 在云平台如AWS SageMaker上扩展弹性容量
    • AutoML工具如Spell优化提示、超参数和模型架构。AI Economist为API消费调整定价模型。

评估和监控

在部署之前,评估LLM性能至关重要:

  • 通过准确性、流畅性和一致性指标测量整体输出质量
    • 使用包含NLU/NLG数据集的基准,如GLUE、SuperGLUE
    • 使用scale.com和LionBridge等框架启用人工评估
    • 使用Weights & Biases等工具监控训练动态
    • 使用技术如LDA主题建模分析模型行为
    • 使用FairLearn和WhatIfTools等库检查偏见
    • 持续运行针对关键提示的单元测试
    • 使用WhyLabs等工具跟踪真实世界模型日志和漂移
    • 应用TextAttack和Robustness Gym等库进行对抗性测试
      最近的研究通过平衡配对和子集选择算法提高了人工评估的效率。模型如DELPHI使用因果图和梯度掩蔽来对抗对抗性攻击。负责任的AI工具仍然是一个活跃的创新领域。

多模态应用

除了文本,LLM在多模态智能方面开辟了新的领域:

  • 在图像、视频、语音和其他模态上条件LLM
    • 统一的多模态转换器架构
    • 跨媒体类型的跨模态检索
    • 生成字幕、视觉描述和摘要
    • 多模态一致性和常识
      这扩展了LLM的语言范围,使其能够推理物理世界。

总结

大型语言模型代表了AI能力的一个新时代。掌握它们的关键概念、架构模式和实用技能将使您能够创新新的智能产品和服

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/764352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode,chrome,edge 远程桌面软件界面冻结卡死的情况处理

最近一致使用远程界面,有些情况需要使用家里的电脑。 说起来也奇怪,以前一直也没发现什么问题。好好的(1920*1080)分辨率下。 最近升级了屏幕到4K,就有点奇怪的问题。公司的电脑是1920*1080的,很多时候连上去,桌面上…

ChatGPTGPT4科研应用、数据分析与机器学习、论文高效写作、AI绘图技术教程

原文链接:ChatGPTGPT4科研应用、数据分析与机器学习、论文高效写作、AI绘图技术教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247598506&idx2&sn14f96667bfbeba5f51366a1f019e3d64&chksmfa82004dcdf5895bba2784ba10f6715f6f5e4c59c9b1…

C++标准库中提供的用于处理正则表达式的类std::regex

std 是 C 标准库的命名空间,包含了大量标准的 C 类、函数和对象。这些类和函数提供了广泛的功能,包括输入输出、容器、算法、字符串处理等。 通常,为了使用标准库中的对象和函数,需在代码中包含相应的头文件,比如 #in…

【MySQL】3.2MySQL事务和存储引擎

MySQL事务 一、MySQL事物的概念 事务是一种机制,包含了一件事的完整的一个过程 ●事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么…

后端项目中构建前端模块问题记录

后端项目中在登陆页面使用jsp,后端项目会通过接口返回给前端几个js的路径,这几个js呢,是由后端先构建好,然后返回给前端路径的,前端通过这个路径访问js执行。。。 总之,很奇怪的项目。。 1、首先要安装no…

java中对象创建过程

【详细图解】一个 Java 对象是如何被创建的?_java创建对象的完整过程-CSDN博客

JSqlParser的使用

简介 JSqlParse是一款很精简的sql解析工具,它可以将常用的sql文本解析成具有层级结构的语法树,我们可以针对解析后的节点进行处理(增加、移除、修改等操作),从而生成符合我们业务要求的sql,比如添加过滤条件等等 JSqlParse采用访问者模式 项…

全智能深度演进,一键成片让视频创作颠覆式提效

全智能一键成片,让内容创作的「边际成本」逼近于零。 大模型和AIGC技术的发展,可以用“日新月异”来形容,其迭代速度史无前例,涌现出的各类垂直应用模型,也使得音视频行业的应用场景更加广泛和多样化。 然而&#xff…

Linux动态库和静态库的制作和使用

一、什么是动态库跟静态库? 程序函数库分为3种类型:静态函数库(stasic libraries)、共享函数库(shared libraries)、动态加载函数库(dynamically loaded libraries); 1.静态函数库 在程序执行(编译)前就加入到目标程序中去。 …

如何从零开始拆解uni-app开发的vue项目(三)

前言:前两篇文章我们讲解了如何拆解uni-app开发的项目结构、实现前台数据的动态加载,今天讲一篇如何实现动态加载功能列表,以及美化界面。话不多说,直接先看源码: 在用户成功登录后,会跳转到menu.vue菜单, 再次点击点检功能时,会进入点检的具体功能跳转菜单,我们的点…

在Linux/Debian/Ubuntu上通过 Azure Data Studio 管理 SQL Server 2019

Microsoft 提供 Azure Data Studio,这是一种可在 Linux、macOS 和 Windows 上运行的跨平台数据库工具。 它提供与 SSMS 类似的功能,包括查询、脚本编写和可视化数据。 要在 Ubuntu 上安装 Azure Data Studio,可以按照以下步骤操作&#xff1…

Flink1.18 如何配置算子级别的TTL

1. 解释 从 Flink 1.18 开始,Table API & SQL 支持配置细粒度的状态 TTL 来优化状态使用,可配置粒度为每个状态算子的入边数。具体而言,OneInputStreamOperator 可以配置一个状态的 TTL,而 TwoInputStreamOperator&#xff0…

Sphinx + Readthedocs 避坑速通指南

博主在学习使用 Sphinx 和 Read the docs 的过程中, 碰到了许多奇葩的 bug, 使得很简单的任务花费了很长的时间才解决,现在在这里做一个分享,帮助大家用更少的时间高效上线文档的内容。 总的来说, 任务分为两个部分: …

UE5制作推箱子动作时获取物体与角色朝向的角度及跨蓝图修改变量

就是脑残死磕,你们如果有更好的方法一定要留言啊~~独乐乐不如众乐乐。 做推箱子的时候需要考虑脸是不是面对着箱子,不是必须90度,可以有一个-45~45度的范围。 摸索了一下,有几种做法和几个小白坑,这里列出来。 一、准…

python 创建word并添加文字和统计图

在Python中,可以使用python-docx库来创建Word文档,并添加文本和统计图。以下是一个简单的例子,演示如何创建一个Word文档,添加标题、文本和一个简单的统计图(这里以条形图为例)。 首先,安装所需…

mysql 索引原理为什么用b+树而不用二叉树

在数据库中,索引是一种数据结构,它能够快速定位到存储在数据库表中特定行的数据。MySQL等数据库管理系统通常使用B树作为索引的数据结构,而不使用二叉树,主要基于以下几个原因: 高度平衡:B树是一种多路搜索…

Ubuntu 下conda创建环境失败报错相关问题

(1) env |grep -i proxyunset http_proxy unset https_proxy unset no_proxy unset HTTP_PROXY unset HTTPS_PROXY unset NO_PROXY(2) vim ~/.condarc将里面内容替换为: channels:- https://mirrors.tuna.tsinghua.…

软件推荐 篇三十七:开源免费无广告的在线音乐免费播放 | MusicFree纯净无广告体验-小众冷门推荐

引言 自从QQ音乐没了杰伦、某云开始收费,除了各种广告弹窗导致电脑卡的要死,打工人就靠这点音乐背景熬夜了,木有办法,得有个开源免费的听歌软件吧,一搜github,软件一大堆,作为一个打工仔&#…

【前端寻宝之路】学习和总结HTML表格的实现和合并

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-IWDj0gWiFt6IMq3x {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

LeetCode的LRU缓存实现

LRU是什么意思 LRU是操作系统底层的一个页面置换算法,当空间不够需要换出最长时间没有使用的页面,在本题中的意思就是当到达容量上限的时候要换出最长时间没有被访问过的节点。 如何实现 LRU的实现可以使用链表的方式,参照MySQL的实现&…