写点什么

当我想要构建一款 LLM 应用时:关于技术栈、省钱和游戏规则

  • 2023-09-20
    北京
  • 本文字数:5015 字

    阅读完需:约 16 分钟

当我想要构建一款 LLM 应用时:关于技术栈、省钱和游戏规则

“虽然在 2012 年到 2015 年间,深度学习在图像识别领域获得了巨大成功,但要达到通用人工智能,还需要时间。”这是读研究生时刘小洋的老教授告诉他的。


自然语言理解是走向通用人工智能的关键,但当时整个行业没能迈出这一步。机器学习框架 TensorFlow 曾一度名声大噪,“当年很多人都学习 Tensorflow,但是我从头到尾没有学过,因为我的一些朋友特别是学术圈的朋友认为,它已经是过去式了,不会再有什么前途。”


如今,刘小洋已经是哥伦比亚大学电子工程系研究员。这么多年过去,时间终于给出如何走向通用人工智能的答案:ChatGPT。ChatGPT 的意外突破让包括刘小洋在内的学者们和企业里的研发人员看到了希望。“我不想落后,”刘小洋随后便投入了自己的开源模型创建中,而他的这句话也道出了众人的心声:是的,没人想在这场竞赛中落后。

让人感受到了“温度”


真正影响深远的技术突破并不出现在 ChatGPT 引领的这次浪潮中,而是在五年前。2017 年,谷歌发表了划时代的论文:Attention Is All You Need,创新性地提出了神经网络架构 Transformer,Transformer 后来成了许多模型的主导架构,包括我们熟知的 GPT。


OpenAI 基于 Transformer 从 GPT-1 开始做起,但直到 GPT-3,普通大众才看到了 GPT 的强大能力。OpenAI 的关键突破在于 GPT-3 让人机对话变得更有“温度”,人们开始将人工智能应用看作有情感、有理解能力的“生命体”。


具体来看,ChatGPT 的学习流程主要分三个步骤:第一步,训练监督调优模型,主要收集数据、训练有监督的策略模型;第二步,训练奖励模型,人类标注者对监督调优模型的输出打分,这个分数反映了被选定人类标注者的偏好,这个偏好多数情况下是符合人类共同认知的;第三步,使用近端策略优化模型微调监督调优模型。这其中的关键在于用人类反馈来强化学习不断提升效果,最后让用户感觉“就像在跟人对话”。


这种优化后的对话体验促进了人与计算机交互方式的发展,即从 GUI(Graphical User Interface,图形用户界面)变为了 LUI(Language User Interface,语言用户界面),用户可以用自然语言表达需要,而不需要记住特定的命令或点击特定的图标。


交互方式的改变意味着用户习惯的改变,进而可能导致与 IT 有关的各行各业都或多或少受到冲击。对开发技术栈的一个显著影响就是,应用将以某个庞大的通用模型为基础设施。就如李彦宏所说,人工智能时代,IT 技术栈发生的根本性改变是从原来的芯片、操作系统和应用三层架构,变成了芯片、框架、模型、应用四层架构。LLM(Large Language Model,大型语言模型)成为了人工智能时代的操作系统,所有应用都将基于 LLM 开发。


具体来看,之前的 NLP(Natural Language Processing,自然语言处理) 技术栈相对较浅,假设需要对一段文本进行词向量表示,要先将这段文本转化为词向量,然后将向量数据输入到模型中处理,最后模型输出结果。整个过程可以看作是由输入端到输出端的多个阶段组成,一个小团队就可以完成架构搭建。虽然这种技术栈有助于保持一致性,但对于 LLM 来说,这种方式能力差强人意,还不够“性感”。


对于新的 LLM 应用技术栈,目前流传较广、也较为全面的是硅谷风投公司 Andreessen Horowitz 发布的下面这张图,图中涵盖了数据管道、API 插件、存储、LLMOps、日志等方方面面。



而 LLM 应用理念的基本组件有四个:数据源、数据工程、LLM 和应用程序。其中,数据源层是管道的起点,负责协调从各种来源获取大量数据;数据工程层专注 NLP 数据的实时处理;LLM 层是核心,包括各种微调方法等;应用层则面向个人用户,提供咨询、程序开发等不同的服务。

LLM 应用开发,更简单


目前,业内将 LLM 分为两类:通用模型和行业模型。通用模型面向各种通用功能设计,通常由资源丰富的大公司主导,如 OpenAI、Google 和 Meta。但在电商、客服和辅助教学等特定行业场景下,通用模型并不完全适用,同时个人或小型企业在业务规模较小时也没有足够的资源支撑通用模型,这时的另一个可选项就是用特定场景数据对通用模型微调得到的行业模型。


在这种分类影响下,LLM 应用主要有两种:基于通用模型构建的应用和基于特定行业模型的应用。


对于前者,开发者在通用模型的支持下,直接调用 API(Application Programming Interface,应用程序编程接口)就能够构建很多应用。许多企业会选择直接购买通用模型提供商发布的 API,如 OpenAI 提供的 GPT-4 接口,并在上面进行 UI(User Interface,用户界面)开发。开发过程中,开发者输入自然语言就可以实现开发操作,这个过程更像是一种交流,而不是僵硬的执行。


与此同时,企业还会开发很多功能不同的插件集成到应用中,让应用变得更加丰富和灵活。插件模式在国内得到了广泛应用,无论是要开发一个新的应用,还是嵌入到现有的像 Slack、微信等平台,插件模式都具有极强的渗透力。


这种使用 API 的开发模式会让 LLM 应用在未来很长一段时间里趋于标准化。不过,这种模式主要依赖大公司发布通用模型进行更新和迭代,企业用户虽然可以更方便地使用通用模型,但很容易跟不上大公司的迭代速度。


对于后者,企业可以通过微调拥有自己的行业模型,进而构建相应的应用。模型微调具备少数据、少参数、强任务的泛化能力,具体实现方法很多,不少企业开发者都在尝试。


据悉,30B 参数以上规模的 LLM 比较适合用来构建应用:能力足够强,显存需求最低但还有扩展空间。开发者可以根据场景特点做取舍,比如金融领域的量化表达应用不必是 32 位或 64 位浮点数,8 位就足够好,但不能再降低否则性能会大幅下降。内存方面,8 位浮点数至少要 10G 左右,移动端还可以考虑用通信换存储。


目前,中美 LLM 应用的软件技术栈存在一些区别。美国更倾向于水平分层的结构,即某些公司如 OpenAI 位于通用模型的层级上方,并给下游公司提供接口,下游公司再将服务提供给最终用户。


相比之下,国内更多采用垂直分层的结构。国内企业目前在生成式人工智能技术上处于相对劣势的位置,如果做不出高度先进的通用模型,那就会将精力放在寻找大量合适的应用场景上,这些企业能够自行训练开源的通用模型得到自己的行业模型,并直接服务于特定的垂直领域。


事实上,业内人士普遍认为,国内的机会就在于行业模型。行业模型拥有行业数据优势,只需要修改开源通用模型代码、投喂特定的行业数据,并服务于已有的用户来优化体验,就可以达到降本增效的目的。因此,紧密贴合具体应用场景的行业模型,像金融、医疗、教育等在数据方面有独特优势的 LLM 项目备受风投们青睐。


“当前比较流行的通用模型 ChatGPT 和 Llama2 已经做得很好,OpenAI、Meta 早期投入了巨额 GPU 算力成本、训练了海量数据,也提供了比较好的产品体验,如今大量用户涌入又提供了新的数据帮助企业优化模型,已经形成了‘强者恒强’的趋势。”Chainfir Capital CEO 田大超表示。另外,基于通用模型的应用还存在大量技术不成熟的地方,风投们认为过早投入这一领域的风险太高,很难形成规模效应。

构建 LLM 应用的省钱之道


都知道做 LLM“烧钱”,但到底能“烧”多少?我们可以姑且看下 Bloomberg 训练出来的金融大语言模型 BloombergGPT。


BloombergGPT 参数规模高达 500 亿,使用了包含 3630 亿 token 的金融领域数据集以及 3450 亿 token 的通用数据集。虽然测试中这个模型在金融方面表现不俗,但 BloombergGPT 有着密集的计算需求,使用了大约 130 万 GPU 小时进行训练,以亚马逊云科技 2.3 美元的费率计算,每次训练成本已经接近惊人的 300 万美元了。可以说,一般企业承担不起这样的费用。


开源是现在大家降本的基本解法。比如与 BloombergGPT 相比,同为开源金融模型的 FinGPT 通过专注于顶级开源 LLMs 的轻量级改编,提供更容易访问的解决方案,可以让训练成本大幅下降,每次训练费用不到 300 美元,成本下降了 1 万倍。


在训练 LLM 的时候,业内也会通过给 LLM“瘦身”的方式降低成本。比如对于 7B、13B 的 Llama 2,开发者首先可以做一定的限制,如将其调整为 Int8 类型以减小模型尺寸。接下来,开发者可以对模型进行低复杂度微调,具体做法是将原本线性的 QKV(Query,Key,Value)层设计简化成更为精简的结构,即将权重矩阵分解成多个小矩阵,从而大幅减小 LLM 的规模。



示意图,来源:https://arxiv.org/pdf/2205.05638.pdf


刘小洋团队研发的开源金融模型 FinGPT 就是通过使用 LoRA(Low-Rank Adaptation of Large Language Models),将可训练参数数量从 61.7 亿减少到仅有 367 万。整体下来,该模型在显存方面的需求从 38G 降低到了大约 13G,而且微调所需的时间也被显著缩短,通常在 8 个 GPU 小时内就可以完成,有时甚至只需要 6 个小时,而费用则保持在 1000 元以下,甚至低至 600 元。与此同时,FinGPT 的性能提升了 30%。


以上数据显示出了企业在利用开源大型模型进行微调时可以拥有的强大成本优势。在进行 LLM 微调时,通常需要直接调整模型的权重,而那些提供基础模型 API 的企业则更多是提供接口服务,如果购买模型的权重,费用将会高得多,并且可能需要签署保密协议,预计花费可达在 2000 万人民币左右。


另外一项不可忽视的成本就是人力。田大超以这段时间爆火的妙鸭相机为例道,这样一款产品的开发周期实际上很短,起初团队也就 7 个人左右,就是他们内部被称为“AIGC 破壁行动小组”的一个以张月光为 leader 的小团队,也就用了 6 个月左右的时间就做出来了。这样一款 LLM 应用总投入成本大概是小几百万人民币,其中人工成本占大头,其次是租用算力的成本和调用 API 的成本。

LLM 应用,终归还是生态游戏


目前生成式人工智能领域的上下游关系已经逐渐建立起来了:上游是芯片厂商,如英伟达;中游是通用级别的大模型公司,如 OpenAI;中下游是细分领域的大模型厂商,如 Bloomberg;下游就是一些 LLM 应用,如 Midjourney。普通用户最能感知到的就是面向 C 端的各种 LLM 应用,比如 AI 绘画工具 Midjourney、Stable Diffusion,AI 音频生成工具 Forever Voice 等。


一方面,现在 LLM 应用的研发方式决定了“生态”的重要性。比如,使用 OpenAI GPT 模型的用户自成一个生态,使用开源 Llama 模型的用户又自成另一个生态,最后开发者选择哪一种研发方式本质上就是选择进入哪个生态。


另一方面,以搜索为例,将 ChatBot 整合到搜索引擎这样的大型平台中,需要足够庞大的搜索引擎用户基础,这样才能够迅速解决可能出现的问题。开发者必须具备全网范围内思考的能力,了解全球用户的搜索习惯,对信息检索有充分的理解。然而,并非所有人都能做到这一点。因此,“整合”游戏说到底还是生态游戏。


LLM 应用的本质还是商业产品,营收模式还是以用户付费购买服务为主,比如妙鸭相机要付费后才给用户改变形象后的照片,这与美图秀秀收会员费类似。这种模式与过去各种应用的商业逻辑是一样的,即用户流量为王。


用户在谁家,谁才能笑到最后。就像刘小洋说的,在 IT 行业,有许多第一批实践者最后成为炮灰的案例,能否走到最后取决于用户选择哪家公司、用户对什么产品感兴趣。广大用户构成最终市场,这个市场进而支撑起大模型的更新迭代。


当前,行业模型发展的关键已经不是模型本身的能力如何,而是它们在某一领域的专业知识、专业数据的积累,专业能力多强,它们未来的壁垒就有多高。


未来短期内,通用模型和各领域的行业模型赛道,最后可能分别只有一两家企业能够脱颖而出。而长期看,做得好的通用模型可能会创造巨头公司。同时,随着通用模型的专业度越来越高,通用模型会掌握大多数垂直领域的专业知识,不排除未来行业模型被通用模型替代的可能。

结束语


LLM 应用刚起步不久,如果要长期发展下去,每个环节都面临着不同的问题:在算力方面,电子芯片的能耗太高,70% 的能耗被用在散热上,这造成了巨大的能源浪费,行业急需出现效能更高的芯片;在算法方面,人工智能发展到一定阶段后可能会面临数学领域最高深问题,算法也需要不断提高和优化;在数据方面,隐私、数据所有权等问题亟待解决,尤其随着人工智能的快速发展,政府、机构、公司和个人都极其关心自己的敏感数据是否会泄露,数据处理变得十分重要。


可以看出,LLM 应用行业未来需要努力的地方还有很多,但这也是留给后来者的机会。现在处在技术前沿、风光无限的企业未来未必一定成功。如今竞赛才刚刚开始,入局的开发者们如何能在这条路上一直走下去,还需要时间给出答案。


采访嘉宾简介:


刘小洋,哥伦比亚大学电子工程系研究员,伦斯勒理工学院计算机系讲师,开源项目 FinGPT、FinRL 和 ElegantRL 的主创


田大超,Chainfir Capital CEO


2023-09-20 17:235709

评论

发布
暂无评论
发现更多内容

Windoes下安装配置flutter环境

坚果

flutter windows 安装 11月日更

如何成为一名合格的CRUD工程师?

博文视点Broadview

深入剖析 RocketMQ 源码 - 消息存储模块

vivo互联网技术

RocketMQ 微服务 中间件 消息队列

OBCE首位认证 实力与颜值并存 | 90后技术宅郑皓嘉的通关之路

OceanBase 数据库

分布式数据库 认证 oceanbase OBCE

你以为委派模式很神秘,其实你每天都在用

Tom弹架构

Java 架构 设计模式

白码低代码/无代码开发平台功能及作用

低代码小观

低代码 开发工具 开发平台 无代码 企业服务

架构训练营毕业总结

SAKIN

Vue进阶(幺柒零):应用 rem/em 实现字体自适应

No Silver Bullet

Vue 自适应 11月日更

写入、读取均优于InfluxDB,TDengine在智慧水务系统中的应用

TDengine

数据库 tdengine 后端

【Flutter 专题】14 图解 ListView 不同样式 item 及 Widget 显隐性

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 11月日更

Flink 的状态管理实践

五分钟学大数据

flink 11月日更

在IntelliJ IDEA中,开发一个摸鱼看书插件

小傅哥

Java 小傅哥 IDEA idea插件

OceanBase 源码解读(六):存储引擎详解

OceanBase 数据库

数据库 开发者 高性能 资源隔离 租户

【LeetCode】键盘行Java题解

Albert

算法 LeetCode 11月日更

爬虫120例之第17例,用Python面向对象的思路,采集各种精彩句子

梦想橡皮擦

11月日更

一文了解如何使用移动应用安全组件Soot和Flowdroid

华为云开发者联盟

移动应用 安全 Soot Flowdroid APK

ODC V3.2.0 新版本发布 | 着重用户体验,挑战权限管控业务场景

OceanBase 数据库

数据库 开发者 稳定性 应用场景 新功能

这场蝴蝶效应,从“丝滑”的双11开始

脑极体

dart系列之:dart语言中的函数

程序那些事

flutter 后端 dart 程序那些事 11月日更

Hive SQL优化思路

大数据技术指南

11月日更

解放重复劳动丨华为云IoT API Explorer对接小程序实现系统化应用

华为云开发者联盟

小程序 App IoT 华为云 API Explorer

CSS页面设计稿构思与实现(一)

Augus

CSS 11月日更

如何快速应对井喷下的OCR需求?

鲸品堂

OCR

为何我中断执行的线程不起作用,Why

华为云开发者联盟

Java 线程 对象 中断

腾讯云发布容器安全白皮书

腾讯安全云鼎实验室

容器 云安全 白皮书

MapReduce Service更换集群外部时钟源,仅需10步

华为云开发者联盟

大数据 FusionInsight ntp 时钟同步 MapReduce Service

Sentinel-Go 源码系列(二)|初始化流程和责任链设计模式

捉虫大师

sentinel Go 语言 sentinel-go

Flink 实践教程-入门(5):写入 ClickHouse

腾讯云大数据

流计算 Oceanus

正向代理和反向代理

liuzhen007

11月日更

TDSQL | 在整个技术解决方案中HTAP对应的混合交易以及分析系统应该如何实现?

腾讯云数据库

tdsql 国产数据库

IOS技术分享| WebRTC iOS源码下载&编译

anyRTC开发者

ios 音视频 WebRTC 实时通信 视频直播

当我想要构建一款 LLM 应用时:关于技术栈、省钱和游戏规则_生成式 AI_褚杏娟_InfoQ精选文章