GenAI 的产品:快速行动,但失败

2022 年秋季,我正在做一个很酷的项目。是的,你猜对了——使用公司特定的数据对预先训练的 LLM(Bert)进行微调。

然而,很快 ChatGPT 就发布了,并席卷了全世界。既然已经有一门非常强大的 LLM 了,我再去微调它又有什么意义呢?

我一直是 Bert 的忠实粉丝,所以当 ChatGPT 发布时,我也陷入了这种热潮中。我的意思是,谁不会呢?人工智能的前景就像一个闪亮的新玩具,我迫不及待地想玩它。在本文中,我想分享我作为一名(NLP)数据科学家的旅程,他渴望通过 GenAI 产生影响。

2023 年初,当大老板想用这项新技术做点什么时,我开始参与 GenAI 项目。我意识到我是多么幸运,并不是每个高管都愿意探索 GenAI 的前沿。很快,我们就加入了 AzureOpenAI 的用户名单,派对正式开始了 💃。

制作炫酷的演示很容易

使用 OpenAI 模型的方法有 14 亿种,但我需要让它符合公司的技术堆栈和安全策略。

对于一个项目,我必须为 AI 应用程序开发前端解决方案。一周内,我需要学习 10 亿件事情。我必须在 Azure 上部署一个模型端点,以便将其用于我的应用程序。在前端方面,我学会了使用 Streamlit 构建应用程序。这相对容易。仅用一天时间,我就可以在本地启动并运行一个应用程序。

现在应用程序已经构建完成,是时候向世界展示它了。

说实话,这并不容易。我需要确保应用程序遵循公司的安全策略。我们没有部署应用程序的标准工作流程,所以我必须自己弄清楚很多事情。我需要学习如何使用 yml 文件进行 Azure 管道并通过 Azure 的 Web 应用服务部署本地应用程序。我的日子也充满了弄清楚正确的访问管理、将数据存储在 Azure blob 存储中或在 Hive 存储中管理用户数据。这是一个陡峭的、有时令人不知所措的学习曲线。

Langchain、Streamlit、Azure OpenAI 和 Azure 应用服务的组合效果非常好。仅用了一周时间,我就完成了一个演示,可以与大家分享。它看起来很酷,至少乍一看是这样。我得到了赞赏,感觉自己就像一个正在创造影响力的技术奇才。是的,影响力。这就是我渴望的。

然而,这种感觉并没有持续太久。事实上,很快我就意识到,仅仅调用模型和提示是不够的。这只是冰山一角。

原型就是原型。它们可以进行大规模的改进。

很快,问题就来了

第一个问题叫做 Token Limit。

GenAI 的产品:快速行动,但失败

代币限制问题。图片来自作者。

如果您使用 LLM 模型,迟早您会遇到麻烦,因为模型会返回错误,并说您已超出模型的最大上下文长度!您可以争辩说,没问题,GPT-4 提供了 128k 的上下文长度,瞧,问题解决了。

嗯,事实并非如此。

像 GPT 这样的语言模型在长时间对话中保持上下文的方式是通过“上下文压缩”。这意味着,当模型获得超出其上下文窗口大小的新输入时,它必须丢弃最旧的输入以腾出空间给新的输入。在此过程中,它通过其内部状态跟踪先前的上下文,内部状态是丢弃信息的一种压缩摘要。

GenAI 的产品:快速行动,但失败

照片由Unsplash上的Ludovic Charlet拍摄

随着对话时间变长,“上下文凝聚”的质量会下降,导致所谓的上下文漂移,即模型可能开始忘记关键细节或对话的整体思路。

因此,增加上下文长度并不能解决问题。而且在某些时候,你会再次达到令牌限制。

我需要学习如何解决这个问题。这是当务之急,否则人们就无法继续下去。我写了另一篇关于处理模型上下文长度的文章;请随意在这里看看。

幻觉与事实

然后,幻觉与事实发生了冲突。ChatGPT 很神奇,但也没有那么神奇。

人们说你必须写出好的提示,这是千真万确的。有了好的提示,你可以看到输出结果的巨大改进。同时,即使有了你能想到的最好的提示,它仍然会给你错误的答案。不幸的是,当你希望它产生幻觉最少的时候,它却产生了最多的幻觉。当你问难题时,它肯定会出错。

你开始质疑——模型到底理解了什么?如果理解了,它就不会犯这些错误了。

也许现在是时候相信事情并没有那么神奇了。至少不是一直如此。

GenAI 的产品:快速行动,但失败

踏上前往月球的漫长旅程。图片由作者提供。

而且因为 chatGPT 本质上是一个概率模型(我在另一篇文章中已经详细解释过了),它可以预测下一个 token 出现的概率,所以每个 token 预测的一点点错误都会累积起来,等到模型在路径上创建了许多 token 时,它可能就会产生无意义的结果。

这就像坐在火箭里飞往月球。一开始,稍微偏离一点似乎没什么大不了,但经过漫长的旅程,你最终会错过月球并迷失在太空中。

幸运的是,诸如温度和 top_p 采样之类的参数是控制 Chat-GPT 系列模型行为的强大工具,可以在进行 API 调用时使用。通过调整这些参数,您可以实现不同级别的随机性和控制。问题是,尝试设置这些超参数也需要时间。

GenAI 的产品:快速行动,但失败

来源:OpenAI API

可重复性

祝你好运。

对于一个项目,我需要分析各国央行的讲话。输出结果将用于预测模型。对于这个项目,获得稳健且可重复的输出至关重要。

然而,ChatGPT 的输出并不总是可重现的。聊天完成默认是不确定的,这意味着模型输出可能因请求而异。

ChatGPT 建立在 Transformer 架构之上,该架构在 Transformer 层之上包含一个线性层。线性层将 Transformer 层的输出转换为一组分数,以预测句子中的下一个单词/标记。每个可能的下一个标记都会获得一个分数。然后,这些分数通过 SoftMax 函数获得概率。概率最高的单词被选为预测。我还有另一篇文章解释了 ChatGPT 的工作原理,请随意查看。

GenAI 的产品:快速行动,但失败

“turns” 后面的下一个词可能是“back”,也可能是“left”。图片由作者提供。

由于接下来可能出现的单词有很多,因此模型响应的方式具有随机性。

我对这个项目真的心有余悸,因为每次调用模型时,我都不知道我到底会得到什么回报。这让我很害怕。

幸运的是,您可以通过调整某些模型设置(例如温度)来最大限度地降低这种风险。最近,OpenAI 已经实现了种子变量以实现可重复性。开发人员现在可以seed在聊天完成请求中指定参数以实现一致的完成。呼!

这是一个过程。我们需要制作原型、收集反馈、评估和迭代

随着我的 AI 应用程序的部署和测试,我收到了许多反馈。例如,一些用户表示,分块策略的输出似乎效果不佳。该模型往往会跳过重要的细节。另一位用户评论说,该模型的输出波动太大。

GenAI 是一个新事物,我也刚刚开始学习。从这些反馈中,我有了一些提高输出质量的想法。

例如,小样本学习也是一种有用的技术。它使预先训练的人工智能模型能够从少量示例中学习,并将学习应用于新的、未见过的数据。就我而言,这在处理央行演讲中的复杂主题时非常有用。

或者像思维链提示这样的高级提示工程技术似乎没有得到应有的关注。

GenAI 的产品:快速行动,但失败

少量样本学习的例子。

然而,由于我同时在运行多个项目——是的,这应该怪我,我觉得只要添加一个功能,就会有新的功能请求,无论是来自同一个项目还是不同的项目。没有足够的时间来调整我已经开发的东西。这就像一个循环。每次我添加完一个新功能,就会有其他事情发生。

首先,必须解决代币限制问题。

接下来,它需要能够读取更多文件格式。

我们还创建一个实时反馈功能来跟踪模型的性能。

评价怎么办?

或者“您能以格式良好的 PDF 形式返回输出吗?”

人们可以继续要求一个闪亮的新功能,例如“你能让它像 chat.openai.com 一样吗”?

这感觉就像做了一顿大餐,却没有时间坐下来吃。所以这不是一个好主意。

这就像早上 8 点喝一杯龙舌兰酒开始新的一天。—— Bill Inmon

与此同时,我必须向用户解释为什么当前的输出效果不是很好。这并不总是一场轻松的对话。人们想要他们想要的东西。如果你不能满足他们的要求,无论问题是什么都无济于事。

换句话说,我开发了很多个初始版本,但无法对它们进行调整,也没有一个能让产品脱颖而出。我感觉自己正在失去信誉。

GenAI 以用户为中心

人工智能素养并不在于如何微调预先训练的人工智能模型或从头开始构建新的人工智能模型,而在于如何恰当地使用人工智能。

这是因为 GenAI 以用户为中心。

举个例子。我开发了一个 MVP 应用,允许用户上传文档并具有聊天界面。其中一位用户来找我,说该应用不再接收文档了。

原来用户问的是:“你能看到附件吗?”

该模型的回答是:“作为一个人工智能语言模型,我无法看到或感知文档……”

GenAI 的产品:快速行动,但失败

显然,我设置的方式是,用户可以上传文档,然后我从上传的文档中提取文本并将其提取到 chatGPT。也就是说,该模型只能“看到”文本,它无法以传统意义上“看到”附加文档,就像我们人类在屏幕上看到它一样。考虑到我设置该工具的方式,提出了一个错误的问题。

如果您要求提供摘要或回答问题,它可以很好地发挥作用。

我记得我查看过用户对原型的反馈,但反馈并不令人满意。事实上,用户给该工具打了 1 分(满分 5 分),说它无法接收文件。真可悲 🥲。

这就是为什么我认为 GenAI 项目也应该注重教育人们如何使用 AI,从高层次理解 GenAI 的工作原理到不同的提示策略。

GenAI 输出评估

评估 GenAI 模型的输出至关重要且具有挑战性。

在 GenAI 时代之前,您只需将数据分成训练/测试/验证集 – 在训练集上训练模型,并在验证和测试集上评估性能。在监督学习中,我们使用 R 平方、准确率、召回率或 F 平方来评估性能。如何评估大型语言模型?在生成新文本时,基本事实是什么?

如果不评估模型的输出,我们怎么能确信它在做它应该做的事情呢?人类的判断确实起着至关重要的作用,但如果每个人工智能的输出都需要人类的评估,那么我们只不过是用一项手动任务换了另一项,无法实现使用人工智能节省时间的目的。

GenAI 的产品:快速行动,但失败

使用 ROUGE 分数评估模型摘要任务输出的示例。图片由作者提供。

在撰写本文时,我正在尝试不同的评估策略。以文本摘要为例,最常见的指标之一是使用 ROUGE 分数,请参阅语言模型的整体评估。在以后的文章中,我将撰写有关评估 LLM 输出的不同技术的文章。

管理期望——GenAI 并非针对特定问题而量身定制

我记得看过吴恩达 (Andrew Ng) 的一个演讲,他提到快进到今天,人工智能格局已经发生了巨大的变化。

在过去,数据团队需要先构建和部署机器学习模型,然后才能构建和部署人工智能应用程序,这可能需要数月甚至一年的时间。

借助 ChatGPT 或 Bard 等现成的大型语言模型,您可以使用基于提示的 AI 工作流程在很短的时间内部署应用程序,它看起来可能如下所示:

GenAI 的产品:快速行动,但失败

基于提示的 AI 工作流程。图片由作者提供。

恕我直言,我希望这是真的如果你的目标只是展示酷炫的演示和使用人工智能为你的项目获得更多资金的潜力,当然,去做吧。但对于一个真正有影响力的产品?我非常怀疑这是否那么容易。GenAI 模型是通用的,并不针对特定的业务问题进行量身定制。

GenAI 的产品:快速行动,但失败

Hugging face 的快照。模型是为特定任务构建的,例如文本分类、翻译、摘要……等。

过去,机器学习模型一直是为了解决特定问题而构建的。你可以构建推荐系统,推荐在亚马逊上购买哪些产品或在 Netflix 上观看哪些电影。自 2018 年 Bert 首次开发以来,语言模型主要用于特定任务,并且它们在这些狭窄的任务中表现良好。例如,你总是需要针对特定​​任务(例如 POS 标记、问答或情绪分析)微调预先训练的通用 Bert 模型。例如,如果我微调一个专门用于理解可持续性主题的 BERT 模型,我不会期望它是理解金融或法律文本的专家。

鉴于人工智能行业的炒作,期望管理是关键。

商业经验

有一件事我可以肯定地说,用“总结文档”这样的标准提示来调用 OpenAI 的模型不足以构建最终产品。

像 ChatGPT 这样的预训练 GenAI 模型是通用模型,可以做很多事情。但是,它们并不是针对特定业务问题量身定制的。如果您想要一款能够改变业务的最终产品,那么GenAI 必须被视为一个真正的项目。它必须首先从了解痛点开始,并针对您期望该产品带来什么以及您愿意投入的资源设定明确的目标。

GenAI 项目需要合适的人才才能取得成功。它不仅需要一位有远见卓识、能洞察 GenAI 潜力的领导者,还需要一支集多种技能于一身的团队。它需要了解业务用户的痛点和需求。它需要了解模型工作原理的数据科学家、机器学习工程师/云平台工程师和 IT 故障排除人员来帮助管理、部署和维护 AI 应用程序。显然,它需要风险人员的参与,以减轻潜在风险。

为实验设定时间限制。分配一个固定的时间段来探索规定的时间范围内的 AI 功能。制作原型、收集反馈、评估和迭代。这种方法有助于明确实验结束时要做出的决定。

我想以阿瑟·克拉克的一句话作为结束语:

当一位杰出但年长的科学家说某事是可能的,他几乎肯定是对的。当他说某事是不可能的,他很可能是错的。

GenAI 的产品:快速行动,但失败

话虽如此,我不会押注人工智能会失败。我认为这样做是不明智的。就像所有成熟的职业一样,一开始,每个职业都曾不成熟。人工智能也是如此。但我们生活在一个变革的时代。在过去十年中,我们看到深度学习取得了许多突破,而且这种变革不会很快停止。每隔几年,就会有人发明一些疯狂的东西,让你完全重新考虑什么是可能的。老实说,我对 ChatGPT 或 Bard 感到非常高兴。我认为他们很棒。关键问题不是是否应该接受人工智能,而是如何接受。由于 GenAI 是一个新事物,我们仍需要解决许多不确定因素。GenAI 方法应该支持逐步采用该技术,同时最大限度地降低风险并促进学习。

 欢迎前往我们的公众号,资讯

创作不易,觉得不错的话,点个赞吧!!!

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

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

相关文章

ARM——驱动——inmod加载内核模块

在上一篇文章的代码上添加出错处理 #include <linux/init.h> // 包含初始化宏和函数 #include <linux/kernel.h> // 包含内核函数和变量 #include <linux/fs.h> // 包含文件操作的结构和函数 #include <linux/kdev_t.h> /…

PyTorch——transforms

接着上一篇&#xff0c;我们这一篇讲transforms 1、什么是transform 首先transform是来自PyTorch的一个扩展库——【torchvision】&#xff0c;【torchvision】这个库提供了许多计算机视觉相关的工具和功能&#xff0c;能够在神经网络中&#xff0c;将图像、数据集、预处理模型…

【系统架构设计】软件架构设计(1)

【系统架构设计】软件架构设计&#xff08;1&#xff09; 软件架构概述架构需求与软件质量属性软件架构风格数据流风格批处理序列管道-过滤器2者风格比较 仓库风格--黑板系统 层次系统架构风格二层及三层C/S架构风格MVCMVP 面向服务的架构 软件架构概述 基于架构的软件开发模型…

网络通信tcp

一、udp案例 二、基于tcp: tcp //c/s tcp 客户端: 1.建立连接 socket bind connect 2.通信过程 read write close tcp服务器: 1.建立连接 socket bind listen accept 2.通信过程 read write close connect函数 int connect(int sockfd, con…

postgresql 集群文档

https://www.cnblogs.com/Alicebat/p/14148933.html [命令] Pacemaker 命令 pcs cluster &#xff08;管理节点&#xff09; – Eternal Center PostgreSQL实战之物理复制和逻辑复制&#xff08;五&#xff09;_postgresql 流复制和物理复制-CSDN博客 https://jingyan.baidu…

【Windows】深度学习环境部署

引言 1 Windows环境准备 1.1 VSCode Visual Studio Code&#xff08;简称 VSCode&#xff09;是一款由微软开发的开源代码编辑器。它非常受开发者欢迎&#xff0c;因为它功能强大、扩展性好&#xff0c;并且支持多种编程语言。VSCode 尤其适合 Python 开发&#xff0c;特别是…

网络 通信

一、客户端接收(也可以bind) 1. socket socket 函数 用于创建一个套接字&#xff08;socket&#xff09;&#xff0c;这是网络通信的基础。 它的原型如下&#xff1a;int socket(int domain, int type, int protocol); 参数&#xff1a; domain&#xff1a;指定协议族&…

虚幻5|AI视力系统,听力系统,预测系统(3)预测系统

虚幻5|AI视力系统&#xff0c;听力系统&#xff0c;预测系统&#xff08;2&#xff09;听力系统-CSDN博客 一&#xff0c;添加一个AI预感感官配置 1.选中我们的AIPerception,右侧细节添加一个AI预感感官配置&#xff0c;然后我们把所有感官的年龄都调成5&#xff0c;是所有 2…

全网最简单的Java设计模式【九】策略模式-实战中最常用的设计模式之一

策略模式是一种行为设计模式&#xff0c;它允许你定义一系列的算法&#xff0c;把它们一个个封装起来&#xff0c;并且使它们可以相互替换。该模式让算法的变化独立于使用算法的客户。在实际开发中&#xff0c;策略模式可以帮助我们减少大量的 if-else 或 switch 条件判断语句&…

premiere2023暴力压缩视频

目录 1. 需求说明2. 压缩流程 1. 需求说明 要将三段视频拼接起来&#xff0c;时长超过了1h&#xff0c;然后压缩到200M以内的视频。 这是三段视频的信息&#xff1a; 合并三个视频文件意味着总时长增加了。较长的视频文件通常也会更大&#xff0c;即使比特率相同。 当我把三段…

vscode 阅读linux内核(vscode+clangd)

此插件曾在vim里用过&#xff0c;非常好用。 首先先在vscode 里下载clangd插件 这只是客户端&#xff0c;还需下载个服务器&#xff08;这在coc插件里也有说明&#xff09; sudo apt install clangd 下载完后可以 clangd --version 查看版本信息&#xff0c;如果能查看&#x…

UE5 日期时间蓝图变量 加减节点

参考链接&#xff1a;Having troubles with DateTime in UE5 - General / Feedback & Requests - Epic Developer Community Forums (unrealengine.com) 直接粘贴到UE5蓝图图表可用。&#xff08;反之相加&#xff0c;用负号操作一下&#xff09; 减号蓝图节点&#xff08;…

8.22-docker的部署及其使用

docker 1.docker环境部署以及语法 [rootdocker ~]# cat << EOF | tee /etc/modules-load.d/k8s.conf> overlay> br_netfilter> EOFoverlaybr_netfilter[rootdocker ~]# modprobe overlay[rootdocker ~]# modprobe br_netfilter[rootdocker ~]# cat /etc/module…

AI绘画工具 Stable Diffusion【插画转绘】:建筑 | 风景| 人像照片的插画转绘制作教程,照片秒变插画风格图片!

大家好&#xff0c;我是画画的小强 关于Stable Diffusion 的插画转绘&#xff0c;今天给大家分享一种制作方法。我们先看一下效果图。 一. 图片转插画的制作方法 本期教程我们将使用AI绘画工具Stable Diffusion&#xff0c;关于SD的安装和入门使用可以看看我的往期入门教程…

122-域信息收集应用网络凭据CS插件AdfindBloodHound

参考&#xff1a;【内网安全】域信息收集&应用网络凭据&CS插件&Adfind&BloodHound_ladon adfinder bloodhound-CSDN博客 工作组和域环境 我的理解&#xff1a; 工作组就是还是局域网一样只是大一点里面的电脑很多&#xff0c;每个电脑还是都是单独的电脑没有…

解决arcmap发布影像切片,注册传输数据慢的问题

1、本地服务器进行切片步骤&#xff1a; 开发环境按照正常方案发布影像切片。 2、生产环境切片步骤 a、使用范文等同影像文件范围的矢量面数据&#xff0c;作为切片数据发布切片服务 重点&#xff1a;【服务名称必须一致】 b、获取开发环境切片的切片方案文件conf.xml 重点&am…

SSL/TLS协议信息泄露漏洞修复

概述&#xff1a;CVE-2016-2183 是一个涉及 SSL/TLS 协议信息泄露的漏洞&#xff0c;也被称为 "SWEET32" 攻击。该漏洞利用了某些对称加密算法&#xff08;如 3DES&#xff09;的弱点&#xff0c;攻击者可以通过捕获和分析大量的加密流量&#xff0c;可能会恢复明文数…

矩阵--旋转图像

给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 &#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&a…

数据结构——算法和算法分析

目录 算法和算法分析 算法 算法设计的要求 算法效率的度量 算法的存储空间需求 算法和算法分析 算法 算法是对特定问题求解步骤的一种描述&#xff0c;它是指令的有限序列&#xff0c;其中每一条指令表示一个或多个操作。 一个算法具有下列5个重要的特性&#xff1a; &…

Python3:多行文本内容转换为标准的cURL请求参数值

背景 在最近的工作中&#xff0c;经常需要处理一些接口请求的参数&#xff0c;参数来源形式很多&#xff0c;可能是Excel、知识库文档等&#xff0c;有些数据形式比较复杂&#xff0c;比如多行或者包含很多不同的字符&#xff0c;示例如下&#xff1a; **客服质检分析指引** …