生成式AI - 基于大模型的应用架构与方案

news2024/11/19 11:31:08

这篇文章探讨了使用文档加载器、嵌入、向量存储和提示模板构建基于语言模型(LLM)应用程序的过程。由于其生成连贯且上下文相关的文本的能力,LLM在自然语言处理任务中变得越来越受欢迎。本文讨论了LLM的重要性,比较了微调和上下文注入方法,介绍了LangChain,并提供了构建LLM应用程序的逐步过程。在适用的情况下,包括了Python代码片段。

 

语言是人类交流和表达思想和想法的主要媒介。理解和处理人类语言一直是人工智能领域的基本挑战。随着自然语言处理(NLP)的进步,复杂语言模型的发展为各种NLP任务带来了重大突破。

基于语言模型的学习(LLM)已成为解决这些挑战的强大方法。LLM利用深度学习技术来建模和理解人类语言的复杂模式和结构。这些模型在生成连贯且上下文相关的文本方面表现出了非凡的能力,使它们能够在文本生成、摘要、翻译和问答系统等任务中表现出色。

大模型在自然语言处理任务中应用

LLM在自然语言处理任务中的集成,彻底改变了我们与文本数据互动的方式。这些模型可以从大量的文本信息中学习,捕捉单词、短语和概念之间的复杂关系。通过利用这种知识,LLM可以生成符合给定上下文的类似人类的文本。

LLM的关键优势之一是其生成连贯且上下文相关的文本的能力。与传统的基于规则或统计的方法不同,LLM具有生成遵循语法规则、保留上下文并展示深刻语义关系能力的文本的能力。这使得应用程序,如文本摘要成为可能,其中LLM可以通过从给定文档中提取关键信息来生成简洁而有信息的摘要。

此外,LLM已应用于机器翻译系统中,学习将输入文本从一种语言映射到另一种语言,产生高质量的翻译。这些模型表现出令人印象深刻的性能,优于先前的机器翻译方法,并弥合了语言之间的差距。

文本生成

LLMs能够生成连贯且上下文相关的文本,这是由于它们在大量多样化的文本数据上进行了训练。这些模型从数据中捕捉模式、依赖关系和上下文线索,使它们能够生成与输入上下文相一致的文本。

例如,在文本补全任务中,LLMs可以生成给定句子最可能的后续内容,确保生成的文本连贯且与前文相关。这在自动补全功能中有实际应用,其中LLMs可以根据用户输入预测下一个单词或短语,并提供实时建议。

此外,LLMs已被应用于聊天机器人系统中,使得对话代理能够生成类似人类的响应。这些模型从对话数据集中学习并生成上下文相关的响应,考虑对话历史以保持整个对话的连贯性和相关性。

LLMs在自然语言处理任务中变得非常宝贵,能够生成连贯且上下文相关的文本。深度学习技术的进步以及大规模的训练数据为LLMs在文本生成、摘要、翻译和对话系统等任务中的卓越表现铺平了道路。利用LLMs的力量打开了自动化语言相关任务和创建更具交互性和智能应用程序的新可能性。

微调大模型

Fine-tuning是一种在LLM开发中流行的方法,涉及将预训练的语言模型调整为执行特定任务。微调始于利用已预训练的LLM,该模型已在大量通用语言数据上进行过训练。预训练阶段使模型能够学习丰富的语言表示并捕捉自然语言的统计模式。

为了微调一个特定的LLM以执行某个任务,我们从预训练模型开始,并进一步在其上针对特定任务的数据集上进行训练。这个数据集包含与目标任务相关的标记示例。在微调过程中,模型的参数会调整以优化其在特定任务上的性能。

Python代码用于微调LLM通常涉及几个步骤:

加载预训练的LLM模型

准备特定任务的数据集

对输入数据进行分词

微调模型

from transformers import TFAutoModelForSequenceClassification, TFAutoTokenizer

model_name = "bert-base-uncased"  # Example pre-trained model
model = TFAutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = TFAutoTokenizer.from_pretrained(model_name)

task_dataset = ...  # Load or preprocess the task-specific dataset

tokenized_data = tokenizer(task_dataset["text"], padding=True, truncation=True, max_length=128)

model.compile(optimizer="adam", loss="binary_crossentropy")
model.fit(tokenized_data, task_dataset["labels"], epochs=3)

微调提供了许多优势。首先,它允许更快的开发,因为它利用了预训练模型的语言理解能力。其次,与从头开始训练相比,微调需要相对较少的任务特定训练示例,因此在标记数据有限的场景中是一种实用的选择。最后,微调后的模型通常比从头开始训练的模型在下游任务上表现出更好的性能。

然而,微调可能会非常耗费计算资源,因为整个模型需要在任务特定的数据集上进行训练。此外,微调可能会受到一种称为灾难性遗忘的现象的影响,在该过程中,模型在微调过程中忘记了之前学到的知识。

LLMs中的上下文注入(Context Injection)

上下文注入(Context Injection),也称为提示工程,是一种利用预训练LLMs而不进行大量微调的替代方法。与微调整个模型不同,上下文注入涉及将特定的上下文或提示注入到预训练的LLM中,以指导其特定任务的输出生成。

提示工程相对于微调提供了灵活性和更快的迭代周期。开发人员可以设计包含所需输入-输出行为的提示,并编码特定的任务指令。通过仔细设计提示,可以在不进行大量重新训练的情况下从预训练的LLM生成特定于任务的输出。

上下文注入的Python代码包括以下步骤:

加载预训练的LLM模型。定义提示基于提示生成文本评估生成的输出。


from transformers import GPT2LMHeadModel, GPT2Tokenizer

model_name = "gpt2"  # Example pre-trained model
model = GPT2LMHeadModel.from_pretrained(model_name)
tokenizer = GPT2Tokenizer.from_pretrained(model_name)

prompt = "Translate the following English text to French: "

input_text = prompt + "Hello, how are you?"  # Example input text
input_ids = tokenizer.encode(input_text, return_tensors="pt")
output = model.generate(input_ids)
decoded_output = tokenizer.decode(output[0], skip_special_tokens=True)

print(decoded_output)

上下文注入通过提示提供明确的指令,使生成的文本具有细粒度的控制。开发人员可以通过试验不同的提示并快速迭代来实现特定任务所需的期望输出。上下文注入的一个挑战是设计有效的提示。提示应该仔细制作以引导期望的响应,同时保持连贯性和语境。这需要对LLM的能力以及手头的任务有深刻的理解,才能设计出产生高质量输出的提示。

比较微调与上下文注入

微调和上下文注入都有其优点和权衡。微调提供的优势是可以专门针对任务训练LLM,从而获得更好的性能。然而,它需要特定于任务的标记数据,并且计算成本可能很高。

另一方面,上下文注入可以实现更快的迭代周期并利用预训练的LLM知识。通过注入特定于任务的上下文,它提供了更多的灵活性来指导输出生成。然而,当需要广泛的任务适应时,它可能无法达到与微调相同的性能水平。

在微调和上下文注入之间进行选择取决于任务的具体要求、标记数据的可用性、计算资源以及在性能和开发时间之间的期望权衡。

 

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

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

相关文章

集团公司管控的三种模式:财务管控、运营管控、战略管

集团管控是集团公司通过对子公司采用层级的管理控制、资源的协调分配等策略和方式,使集团的组织架构和业务流程达到最佳运作效率的管理体系。 不同的集团管控模式决定了不同的财务管控方式。但不论采取何种管控模式,集团对财务的管理与控制都是其最为核心…

2023简单好用的信息化管理平台,赋能中小生产企业信息化转型升级-亿发

随着信息技术的快速进步和产业互联网的兴起,传统企业正面临着日益迫切的信息化转型升级需求。数字化转型是指企业利用信息技术和互联网思维,对其业务模式、组织结构和运营流程进行改造,以提高生产效率和加强市场竞争力。在本文中,…

自然语言处理---Transformer机制详解之Transformer结构

1 Encoder模块 1.1 Encoder模块的结构和作用 经典的Transformer结构中的Encoder模块包含6个Encoder Block.每个Encoder Block包含一个多头自注意力层,和一个前馈全连接层. 1.2 Encoder Block 在Transformer架构中,6个一模一样的Encoder …

AUTOSAR 包 MC-ISAR 安装指南

安装程序和Tresos配置概念适用于所有AURIX产品。 一、安装包命名规则 二、安装包定义 三、名词缩写 四、安装过程 以 BASE package 安装过程为例。 1、运行MC-ISAR_AS<xxx>_AURIX_TC<con>_<Step>_PB_BASE_V<nnn>.exe。 对于TC29x版本&#xff1a;运…

多维评测指标解读第17届MSU世界编码器大赛全高清10bit赛道结果

超高清视频纤毫毕现的关键一环。 01 主要指标多项第一&#xff0c;带宽节省48% 近日&#xff0c;第17届MSU世界编码器大赛全高清10bit赛道成绩揭晓&#xff0c;阿里自研的H.266/VVC编码器Ali266在该赛道最高效的1fps档次上获得两项冠军&#xff0c;相较大赛基准编码器x265可节…

VR全景平台应该具备哪些功能,怎样选择VR全景平台

引言&#xff1a; 虚拟现实&#xff08;VR&#xff09;技术在不断发展&#xff0c;为企业和消费者提供了全新的交互体验。VR全景平台是一个关键的组成部分&#xff0c;它必须具备一系列重要的功能来吸引用户、提供内容和实现商业成功。那么VR全景平台应该具备哪些功能&#xf…

Ubuntu22.04系统 Cgroup v2 切换成v1

使用v1导致docker容器启动失败 Failed to mount cgroup at /sys/fs/cgroup/systemd: Operation not permitted Issue #4072 lxc/lxc GitHub https://github.com/lxc/lxc/issues/4072 原因&#xff1a;ubuntu自21.04版本后的版本&#xff08;不包含21.04&#xff09;linux内…

DS200DCFBG1BLC IS220PAICH1A 构建人工智能能力背后的紧迫性

DS200DCFBG1BLC IS220PAICH1A 构建人工智能能力背后的紧迫性 2023年9月12日可安装文件系统全球云企业软件公司发布了第一批研究结果&#xff0c;研究技术在企业向服务化业务模式转变的过程中&#xff0c;在实现业务优势和推动价值方面所扮演的角色。该研究调查了美国、英国、…

【网络安全】网络安全基础必备技能

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

Speech | 语音中的风格迁移论文及总结[20231023更新版]

2018_Style Tokens: Unsupervised Style Modeling, Control and Transfer in End-to-End Speech Synthesis 1.样式标记&#xff1a;端到端语音合成中的无监督样式建模、控制和传输 paper&#xff1a;Style Tokens: Unsupervised Style Modeling, Control and Transfer in End-t…

OSPF的网络类型

1.3配置OSPF的网络类型 1.3.1实验3&#xff1a;配置P2P网络类型 实验需求 实现单区域OSPF的配置实现通过display命令查看OSPF的网络类型 实验拓扑 实验拓扑如图1-11所示 图1-11 配置P2P网络类型 实验步骤 步骤1&#xff1a;[1] 配置IP地址 路由器R1[2] 的配置 <Huawe…

基于SpringBoot的学生班级考勤管理系统

基于SpringBootVue的学生班级考勤管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 管理员界面 课程管理 班级管理 学生管理 学生界面 考勤管理 摘要 学生…

Deployments

Deployments 一个 Deployment 为 Pod 和 ReplicaSet 提供声明式的更新能力。 你负责描述 Deployment 中的目标状态&#xff0c;而 Deployment 控制器&#xff08;Controller&#xff09; 以受控速率更改实际状态&#xff0c; 使其变为期望状态。你可以定义 Deployment 以创建新…

项目快讯|深汕特别合作区气膜羽毛球馆正式开工

“永不坍塌”的气膜运动馆 “安全”是每个行业可持续发展的核心原则、是每个企业长久生存的重要底线、是每个人追求幸福生活的基本保障。 任何新行业、新技术、新材料、新工艺的发展都需要逐步规范化的企业标准、行业标准、国家标准。 气承膜技术发展的初期&#xff0c;面临行业…

代码随想录 Day26 贪心算法01 中 LeetCode T376 摆动序列

LeetCode T376 摆动序列 题目链接:376. 摆动序列 - 力扣&#xff08;LeetCode&#xff09; 前言 这题我们看到可以删除数组中的元素也可以不删除可能就吓到了,其实是这道题可以用动态规划或者贪心的策略去解决问题,这里我们还是用贪心的解法去解决问题,具体动态规划的思路可以…

【LittleXi】地址空间三题

【LittleXi】地址空间三题 问题 给定这个结构体 struct {bool s;short b;const char *str "AABB";int i; } a[2];计算这三个输出 printf("%d\n", (char *)(&(a[0].i)) - (char *)(&(a[0].s))); printf("%x\n", (&(a[1].i)) - (…

为什么红黑树比AVL树效率高?

文章目录 前言红黑树的提出都知道的几个定义理解红黑树的高效总结 前言 红黑树为什么这么火呢&#xff1f;大家应该都很清楚&#xff0c;面试的时候不管三七二十一&#xff0c;就问你&#xff1a;什么是红黑树&#xff0c;为什么要用红黑树&#xff1f;就好像他很懂&#xff0…

Modeling Deep Learning Accelerator Enabled GPUs

Modeling Deep Learning Accelerator Enabled GPUs 发表在 ISPASS 2019 上。文章研究了 NVIDIA 的 Volta 和 Turing 架构中张量核的设计&#xff0c;并提出了 Volta 中张量核的架构模型。 基于 GPGPU-Sim 实现该模型&#xff0c;并且支持 CUTLASS 运行。发现其性能与硬件非常吻…

git log 命令详解

测试仓库 asdf 常用参数 查询指定目录 git -C /Users/yanlp/workspace/asdf log 限制显示提交数量 git log -n 3 限制提交人|邮箱 git log --authorEdwin Kofler | git log --authoredwinkofler.dev 限制一个月内的提交git log --since1.month.ago | git log --since2023-0…

1024程序员狂欢节特辑 | ELK+ 协同过滤算法构建个性化推荐引擎,智能实现“千人千面”

专栏集锦&#xff0c;大佬们可以收藏以备不时之需 Spring Cloud实战专栏&#xff1a;https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏&#xff1a;https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏&#xff1a;https:/…