大家好,我是施兴(花名叔宝),来自阿里云机器学习平台 PAI,关键担任产品架构。咱们团队关键担任:①搜查介绍,这是咱们较为成熟的一个畛域;②触及图像和视频多模态处置,如图像视频打标和 Stable Diffusion 文生图,文生视频等相关上班;③在大模型场景下,阿里有通义系列大模型,咱们担任通义的底层平台及相关训练推理优化上班;④启动 RAG 工程链路搭建和大模型评测,包括经常使用大模型评测大模型。
当天引见从大数据到大模型环节中,咱们的大数据平台树立,以及如何在大数据场景下运行大模型的才干。分享内容分为三大块:一是搜查介绍广告的技术架构;二是在搜查介绍场景中的工程和算法通常;三是联合大模型的一些探求及相关工程产出。
这是较为成熟的搜查介绍广告技术架构,大厂都在经常使用,未来更倾向实时运行。繁难解释一下架构:用户关上淘宝、天猫等 APP 或网站,展现的消息流是介绍系统。用户操作时,后端系统会发恳求,选择介绍什么内容。曝光恳求发送给后端的业务引擎和 A/B 系统,它们选择哪些数据启动召回、粗排、精排等操作,并经过 A/B 引擎启动分流。各大厂的算法工程师不时在优化模型和算法成果,提高点击率和购置率,这些都是经过 A/B 系统启动分流。实践的召回、排序在前面的引擎端启动。
用户在线操作数据会被存储并落入实时计算层,如 Flink 的实时规范会启动窗口函数计算,生成实时特色和样本,这些数据会积淀到离线大数据处置平台。离线平台预备 day 级别样本和特色,经过 AI 平台训练,生成特色(比如 Embedding 特色)和模型,模型用于线上推理服务。这就是整个流程。
为了允许复杂的介绍链路,阿里云的技术架构如下:最底层是资源层,蕴含 CPU、GPU 等各类配件。经过集群调度才干,把算力往外输入,例如 ODPS 飞天集群,阿里云的容器化服务,以及灵骏智能计算集群。灵骏智能计算集群关键面向大模型时代,满足高性能算力需求。
底层有少量高性能的异构计算资源,如妇孺皆知的 GPU,包括英伟达以及其余厂家提供的 GPU。还有高性能网络来撑持,由于大模型训练须要几千张卡,这就须要保障卡之间的通讯是高带宽低延时,因此须要高性能 RDMA 网络。另外,为了极速读取样本,还须要高性能的存储,否则就会糜费少量 GPU。这就是咱们最底层的资源调度层,再上一层是“大数据+ AI”一体化的 PaaS 平台。
大数据和 AI 的 PaaS 平台关键分为几局部:实时和离线一体化的大数据平台,包括 MaxCompute 和 Hologres。MaxCompute 对标开源的 Hadoop,而 Hologre 可以繁难了解为相似 Redis 的实时 OLAP 剖析工具。Flink 用于实时计算流,EMR(Elastic MapReduce)则是阿里云上对标的开源大数据平台。
在大数据平台启动数据处置后,经过 AI 平台提供多种性能。AI 平台关键包括数据标注(PAI-iTAG)、数据荡涤、特色平台(FeatureStore)等。有了这些数据后,可以启动代码开发,包括交互式开发(PAI-DSW)和可视化开发(PAI-Designer)。开发好的代码须要在数百台主机上启动散布式训练,因此有模型训练(PAI-DLC)模块。为了提高训练效率,提供数据集减速(DataSetAcc)、网络通讯优化、算子优化和配件并行减速等性能。训练成功后,经过 PAI-EAS 平台提供模型服务。这就是咱们大数据和 AI 的 PaaS 层才干。
在大数据和 AI 平台上,百炼模型服务平台是面向开发者的大模型开发平台。百炼整合了达摩院通义试验室的多项大模型才干,如图像处置的通义-万相、语音识别的通义-听悟,以及文本处置的通义-千问。此外,还包括了开源社区 ModelScope,供开发者共享和下载模型。在此之上,平台允许智能介绍、放开搜查和广告用户增长等多个场景,其余还包括传统电子商务和智慧医疗等,构成了一个片面的平台架构体系。
特色平台(FeatureStore)是一个结构化大数据治理和共享平台,用于存储、组织、治理机器学习和 AI 训练中经常使用的特色数据。传统上,每个算法工程师处置自己的特色表,没有一个一致的平台来共享这些特色。而 FeatureStore 平台允许数据从离线平台如 Hadoop 的 HDFS 和 MaxCompute 同步到 Hologres、TableStore、FeatureDB 等一些在线平台,并保障数据分歧性。
在介绍搜查算法开发中,经常会遇到离线训练模型成果好,但在线服务时成果不分歧的疑问。为此,咱们经过云上介绍处置打算型产品 PAI-REC,保障了数据的离线和在线分歧性。另外,线上特降服务也保障了稳固性,并参与了消费队列监控,照实时监控 RT/QPS 变动,以及实时特色的写入恳求队列能否存在危险和沉积等。
在大模型(多模态)时代,Embedding 特色是必无法少的,如搜查介绍的 user/item 特色,这些特色可以在 FeatureStore 平台一致治理。有了这些原始特色,须要思索如何高效开发特色消费上班。因此,咱们开发了一些基础的特色消费性能,便于特色的二次加工和生成更多的特色。
在性能上,FeatureStore 平台是为了模型推理时能在线上间接提供特色访问服务。但在某些状况下,如搜查推行场景,整个端到端的恳求须要在一两百毫秒内成功,假设跨网络失掉特色会造成延时,因此须要在每个环节都做到极致。为了减速特色失掉的速度,咱们采取了一个优化战略,即预先将数据拉到本地,应用本地内存换取期间。这也是大家在日常上班中可以参考的一个优化点。详细的流程如左边的图所示,这里就不详细开展了。
FeatureStore 平台还允许特色血统性能。在剖析特色时,假设算法工程师发现特色存在疑问,须要知道该特色是从哪些源表生成,以及被谁经常使用。这种血统相关在结构化数据中极为关键,假设最后的结果出错,须要找出疑问所在。这须要数据工程师或算法工程师投入少量精神去追踪。而有了血统图,咱们可以一眼就看出该字段是从哪些表中来,又被用在哪里,以及最后服务于哪些模型,这就是特色血统性能的作用。
在介绍搜查算法中,咱们发现每个客户会成功一些如 DeepFM 的经典算法。但是,这象征着每个客户须要一套自己的 DeepFM 代码,这参与了开发上班量。因此,咱们树立了 EasyRec 介绍算法库,繁难开发人员经常使用不同的计算资源,如 MaxCompute、Hadoop、Spark 等,甚至可以在本地设施上运转。EasyRec 允许多种数据源,如阿里云的 OSS、MaxCompute 或许 HDFS、Hive 等;还提供了 FeatureGenerator 性能,只需性能文件一样,能确保离线训练和在线推理的计算逻辑分歧,防止引入误差。EasyRec 集成了针对实践运行场景的有效算法;EasyRec 还允许智能调参(AutoML-HPO)、特色智能生成(Auto Feature)、特色智能选用(Feature Selection)、模型蒸馏(Distill)、训练减速优化、离线评价以及 Early Stop 等性能,协助算法工程师缩小开发上班量。
随着大模型和 user/item Embedding 的引入,为了谋求更佳的介绍搜查成果,模型特色和网络结构越来越复杂。原本数百维的特色收缩到数千甚至上万维,其中蕴含少量交叉特色。对应的 Embedding 日益庞大,由数十 G 扩展到上百 G 甚至 T 级别,以期失掉更强的表征才干。此外,行为序列(Sequence)长度也从原本的 50个行为扩展到上万个长度。这样的复杂性带来应战:谋求更好成果的同时,训练的资源需求和速度要求不时参与,算力严重无余。但是,复杂的推理环节也造成推理延时参与,而推理是实时恳求环节,因此推理超时严重是一个急需处置的疑问。
在搜查介绍广告场景下,咱们对训练和推理启动了两慷慨向的优化。
在训练优化上,①多级缓存和特色智能淘汰:引入特色的智能准入和淘汰机制,实时或离线训练中低频度特色会被淘汰,缩小计算资源和显存的占用。②WorkQueue 形式:将训练数据变成队列,处置不同主机和显卡处置速度不分歧的疑问,经过消费者-消费者形式提高计算效率。③特色选用与常识蒸馏:优化特色和模型结构。④通讯优化:经过单机融合和流水并行缩小通讯量,优化效率。⑤配件减速:与阿里云、英特尔、英伟达协作,经常使用 AVX/AMX 矩阵减速、AllReduce 同步训练、SOK 协作以及 Embedding 增量降级,启动实时增量模型训练。
在推理优化上,①AVX/AMX 减速:在 CPU 上减速 embedding_lookup 和 string_split。②量化减速:在 GPU 上引入 bf16+int8 量化,缩小计算耗时。③AutoPlacement:在 CPU 和 GPU 之间智能高效地调配算子。④SessionGroup:应用 GPU 的 multi stream 个性减速计算。⑤特色缓存:针对介绍场景启动特色缓存优化。咱们在电商场景的实在客户中,经过这些优化使 QPS 优化到原生 TF-Serving 的四倍左右。
这是整个推理引擎的数据链路或架构图。重点在于右侧的推理链路,包括 Feature Cache 和 Feature Generator。①Feature Cache:处置离线和实时特色,缓存后启动降级和分级存储。由于 embedding 到达百 GB 甚至 TB 级别,齐全放在内存中无法行,因此须要多级缓存。②Feature Generator:在失掉特色后,应用 Feature Generator 启动共享和计算,最后交给模型处置。最上方的图示,展现了实时特色和离线特色的计算环节,以及增量模型的降级形式。
接上去引见咱们在与协作同伴协作中,发现的搜查介绍畛域一些大言语模型带来的新场景。①电商导购,传统 query 形式无法精准输入结果,而大言语模型能助力用户选品、直播答疑,提供商品售前咨询和售后服务。②内容介绍,如用户想购置特定商品或处置某个疑问,大言语模型可以给出内容介绍。③企业常识库,每家企业都有外部文档库,新员工可经过 AI 机器人极速学习公司外部常识,而不用依赖老员工手把手指点。④教育搜题,大言语模型在教育畛域也有运行,如搜题生成答案和常识总结。这些都是客户在尝试的一些 LLM 新场景。
在搜推行场景的通常中,经典的搜推行通常由数据驱动。例如,淘宝应用用户行为和商品数据构建介绍模型,知乎则经常使用用户与内容的数据启动介绍。这种方法往往是畛域内的数据建模,淘宝无法回答知乎的疑问,知乎也无法处置淘宝的商品介绍。这造成消息茧房,介绍内容局限于外部数据,无法回答通用疑问。
此外,还触及用户和商品的冷启动疑问。关于新用户,没有任何行为数据,只能驳回经典冷启动方法。雷同,新商品颁布后,由于没有历史数据,很难极速曝光。而且介绍的多样性不够,无法跨畛域介绍。
反观通用 LLM,其常识面宽泛,能够回答各种疑问,并且常识表白才干丰盛。但是,LLM 缺乏介绍广告畛域的专有数据,也不具有序列记忆才干,无法有效处置用户的常年行为记载。最关键的是,大模型在介绍场景中性能复杂度很高,推理老本也很大。
业界通常有两种处置形式。左边这种是将介绍场景与大言语模型(LLM)联合,应用 LLM 丰盛的常识表白,将其 embedding 作为特色启动融合,而后启动在线模型服务。左边是间接经常使用 LLM,将专业畛域数据输入 LLM,让其启动介绍。这包括间接对大模型启动 fine-tuning,以及 RAG 场景。但是,间接经常使用 LLM 启动介绍搜查,会带来较高的训练推理老本,同时还须要处置数据稠密和冷启动疑问。因此,干流方法还是上图中左边这种。
咱们在阿里外部的淘宝天猫上积攒了一些阅历,特意是在 Prompt Engineering 方面。第一个通常是经常使用 LLM 启动类目搭配介绍,由于 LLM 具有少量的畛域外常识。例如,假设你给它一个类目称号“手机”,它会介绍手机壳、耳机、数据线、手机膜等相关类目。这是 LLM 应用其通用才干的一种表现。经过 Prompt 模板,给 LLM 一个类目名,它就会协助生成相关的类目。但这些生成的类目在真正用于线上时,还须要转化为实践的线上类目 ID。这是一个经常出现的运行场景。
第二个运行场景是广告搜查中的 query 改写。例如,关于 query“生娃送什么”,间接搜查难以找到详细商品,传统的 query 改写会将其改写为“儿童礼物”。而关于“买一块可以在草地上铺的布”,被曲解为“摆盘装璜”。这就是广告组买关键词时遇到的疑问,如“满月礼物”或“野餐垫”。
query 改写成果不好会造成两个关键疑问。一是改写后的 query 婚配不到广告主的关键词,造成在召回阶段就被淘汰。二是无法婚配到低价流量的准确需求,会糜费局部低价流量。比如,广告主买了“儿童礼物”,但实践搜查的是“满月礼物”。这些疑问面前的关键技术要素是,传统的方法关于长搜查词的语义了解才干有限,且在语义相关的改写词笼罩上也比拟有限。
咱们在应用 LLM 启动 Prompt Engineering 时做了一些尝试。LLM 具有举一反三的才干,可以通知 LLM 一个词,而后生成几个相关的词。例如,前往“华为手机”5 个电商近义词,保障搜查词品牌和类别与“华为手机”分歧,LLM 可以生成“华为智能手机”、“华为”、“智能手机”、“华为畅享”、“华为 Mate”。再如,前往“新款高腰微喇裤深蓝色”5 个电商近义词,LLM 输入“高腰”、“微喇裤”、“深蓝色”、“时兴”、“修身”。
一种更好的方法是经常使用同类目、同方向的相似 query 疏导模型输入。例如,把前两个 query“华为手机”与“厨房置物架”交流成“七分夏裤”与“女红色裤”,疏导LLM 输入第三个 query,生成的“高腰微喇裤”、“深蓝色新款”、“深蓝色裤”、“高腰裤”、“微喇裤”更贴近实践需求。这种方法在实践经常使用中成果更好,能极速运行于日常上班。
最后一个场景是在 RAG 上的探求,联合企业客户经常使用大模型的通常。企业有少量常识库,这些常识库文档须要分片并转化为向量,存储在向量数据库中。目前的向量数据库有 ElasticSearch、Hologres、Milvus 等。在线恳求时,用户提问经过 embedding 模型转化为向量,而后在向量数据库中检索,相似度检索结果取出 Top-K 后交给 LLM,提供高低文背景,构建 Prompt,最终生成回答。
开源名目 PAI-RAG 将 RAG 链路环节中的各个环节启动模块化设计。全体环节形象成文档抽取(Document Extraction)、索引树立(Indexing)、Pre-Retrieval(query 改写在此阶段)、Retrieval、Post-Retrieval、Generation、Evaluation 等。如何排序检索进去的结果,如何让有效的文档排在前面,或许对一切检索出的文档启动总结,以更有效地疏导 LLM 生成,最后再启动评价,构成一个完整的 RAG 链路流程。咱们目前的关键上班是使 RAG 工程链路变得更繁难适配各种场景。比如,假设数据不是 PDF 或 Word,而是 PPT,能很繁难参与读取 PPT 文件的性能。关于 Query React,可以轻松地启动二次开发加工等。
PAI-RAG 关键允许的数据类型包括多模态数据、文档的结构化示意、embedding 模型的优化等。咱们集成了 OCR 性能,并思索了文档的层级结构,允许 PDF 和 Word 等多模态的文件,包括文件中的截图。当 Embedding 模型成果不佳时,经常使用第三方的大模型来丰盛常识库,智能生成文档扩大此性能。
经常使用相似的思维来生成评价集,这关于构建 RAG 链路的企业来说十分有用。它们通常有很多文档,但没有预备很多疑问来测试 RAG 的成果。咱们经常使用大模型 RefGPT(不是咱们首创)生成评价集。此外,还允许关键字检索和混合检索。
咱们的上班还包括①评价大言语模型的优劣,比如把人工评价的上班交给另一个大模型;②允许各种量化目的,如命中率、准确率等;③在回答的品质上,思索了正确性、语义相似度、虔诚性、答案的高低文相关性等多个维度。
这是咱们在 PAI 模块化 RAG 中的一个示例图,并经常使用 Gradio 编写的前端,使得性能 RAG 链路和上行数据变得十分繁难,还可以间接启动交互测试。