第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

廣告技術(shù)中的深度學(xué)習(xí)服務(wù)實戰(zhàn)

標(biāo)簽:
深度學(xué)習(xí)

照片由Nastya Dulhiier拍摄,来自Unsplash

每秒处理千万级请求的模型推理扩展

机器学习模型是这个生态系统的核心部分,在这个生态系统中,应用和网站通过展示广告来获取收入,而广告商则购买广告位以促进转化。在移动应用生态系统中,AdTech推动用户获取和应用变现,这些关键参与者通过使用深度学习模型来获得竞争优势。移动DSP(需求方平台)包括Moloco、Liftoff、Applovin 和Aarki 分享了他们在AdTech领域使用深度学习方法的细节。

深度学习可以应用于AdTech中的多种任务,包括转化率预测(例如,如点击和安装预测等针对移动应用的预测)、排名(例如,选择广告活动和创意)以及pacing。通常会为这些任务使用不同的模型架构,例如使用DCN V2进行转化率预测,以及使用Two Towers进行排名任务。无论采用何种架构,都需要应对两个关键挑战:延迟和吞吐量。AdTech系统需要每秒处理超过1百万次请求(QPS),并且需要在100毫秒内完成回应广告交易所的请求。这些要求对不同深度学习模型服务方法的可行性有重大影响。

使用 Python 训练深度学习模型,并在这些模型上提供服务,这在运行不同语言(如 Go、Rust 或 Java)的生产系统中很常见。我喜欢按照两个维度来分类实现这种互操作性的方法。

  1. 模型序列化
    你是否将模型存储在特定库的格式还是便携格式中?
  2. 模型服务
    你是直接运行模型还是调用一个端点?

最适合您的用例的方法将根据多种因素而有所不同,包括您的部署环境、对GPU硬件加速的需求以及低延迟需求。首先,我们将概述这个领域的工具情况,然后讨论各种方法的利弊。

首先需要考虑的是如何保存你的深度学习模型。如果你使用的是TensorFlow或PyTorch,这些库都提供了序列化模型的格式,比如TensorFlow的SavedModel格式。另一种选择是使用一种跨库的序列化格式,如ONNX,它被多种编程语言所支持。

第二个要考虑的问题是,你是否希望直接在生产系统中嵌入模型,或者调用一个单独的端点来执行模型推理。通常后者更为常见,但这并不适合所有部署场景。

在两个维度方面提供了选项:(Image by Author)

上面的图表展示了为AdTech服务深度学习模型的可用工具,并根据这两个考量进行排列。虽然嵌入式和端点的方法在模型服务上存在明显区分,但在序列化层面上,由于例如Vertex AI这样的工具支持TensorFlow和ONNX模型,因此界限变得不那么明确。我们将详细介绍这些领域。

直接通过库格式嵌入服务
也许最直接的方式是在生产服务器上通过库格式嵌入服务来提供深度学习模型服务的方式。如果你使用的是TensorFlow模型且用Rust作为运行时,你可以使用TensorFlow Rust,如果用Golang作为运行时,你可以使用tfgo。如果你使用的是PyTorch且用Rust提供服务,你可以使用tch-rs。这些库提供了框架的C++ API绑定,而各个项目的支持和维护情况各不相同。

当模型规模较小且所有内容都能放入内存中,批量大小较小时,这种方法可以很好地发挥作用,使得基于CPU的推理成为可能。这种方法适用于较小的倾向模型和排序模型,但是,这种方法限制了你能提供的模型的复杂程度。生产服务器通常没有GPU,因此这种方法在大型模型中的实际应用范围有限。

这种方法的主要缺点之一是,将深度学习框架添加到生产服务器上可能会给原本轻量级的过程增加显著的依赖关系。TensorFlow 因其提供的众多功能而变得复杂,但其中许多功能可能对于您的服务需求来说是多余的。Candle 由 Hugging Face 开发,旨在为深度学习模型提供轻量级的运行时环境,同时兼容 PyTorch 模型的运行。

提供一个嵌入式模型

嵌入式服务与便携格式
随着多个深度学习框架的流行,一种无库依赖的模型服务方式的需求日益增长。其中一个提议是 ONNX(开放神经网络交换),它为不同机器学习库训练的模型提供了标准化的运行时环境。因为它主要专注于模型服务,这一运行时环境非常轻量。这解决了库依赖模型服务方式的一个主要问题。

便携的模型服务格式通过定义一种新的模型序列化格式,来提供互操作性功能,该格式规定了如何为深度学习模型运行计算图。比如下面的图所示,部署选项之一是使用Python和TensorFlow训练一个TensorFlow模型,使用tf2onnx将其转换为ONNX格式,然后使用Rust中的ort库来在进程中提供TF模型。ort库是ONNX Runtime的封装,它提供了高效的模型服务。ONNX提供了多个执行提供器,使框架能够在可用的情况下利用硬件加速。

这种方法与库格式方法有很多相同的限制,最适合能够在CPU上高效运行的较小的模型。除了ONNX之外,还有包括Apache TVM(提供深度学习模型的定制编译器)和DL4J(可以导入TensorFlow、PyTorch和ONNX模型的Deeplearning4J)在内的工具归入此类。

采用库格式的端点服务
实现Rust等系统语言与在Python中训练的模型之间的互操作性的一种常见方法是使用Python来服务模型,并提供一个端点来向模型发送请求。这种模式非常普遍,以至于TensorFlow和PyTorch都通过TF ServingTorchServe在其生态系统中提供了这种功能。通过这种方法,您将训练模型并以库格式保存它们,并通过REST API提供服务。除了这些框架提供的选项外,您还可以使用诸如FastAPI之类的库来部署模型。

这种方法的一个关键优势是生产服务器不需要将深度学习模型加载到内存中,因为它们将模型请求路由到不同的服务器。生产服务器负责将输入特征重塑为模型端点所需的张量格式,该格式是TF Serving所需的JSON格式。另一个优势是模型端点服务器可以与生产服务器使用不同的实例类型,比如可能还包括用于加速硬件的GPU。

这种方法的主要权衡之一是它会给模型服务引入额外的延迟,因为生产服务器需要向模型端点发出网络请求,而不是在进程中评估模型。如果模型端点与生产服务器位于同一位置或非常接近,这种延迟通常很小,可以忽略不计。通常认为这种权衡是值得的,因为它允许更灵活的实例配置,从而使部署更为自由,将模型部署与生产服务器的部署解耦,并使开发运营(DevOps)和机器学习运营(MLOps)团队之间的职责分离更加清晰。

通过模型端点来提供服务 (图片来源:作者)

端点服务采用便携格式
随着模型端点服务在深度学习模型中的流行,公共云提供商开始提供此类能力的托管服务,如GCP上的Vertex AI和AWS上的SageMaker。此外,该领域还包括其他工具,如NVidia Tritonseldon-core。ONNX是一种流行的端点服务便携格式,而像TensorRT这样的格式则侧重于高性能推理。您也可以使用像FastAPI这样的库来封装运行于ONNX运行时的模型。

使用这种方法时,你以与内置方法相同的方式创建一个ONNX模型。主要的不同之处在于,生产服务器不再将模型加载到内存中,而是向模型端点发送预测请求,如上图所示。

这种方法可以是让您的模型达到最佳吞吐量的绝佳方案。例如,Vertex AI 提供了一个优化的 TensorFlow 运行时,批量处理预测请求,并通过 gRPC 接口减少延迟和请求负载。但是,托管平台也伴随着成本,这种成本在大规模广告技术应用中可能变得非常高。

结论
有许多工具可以应用于AdTech领域来部署深度学习模型。对于简单的模型,最好的方法可能是直接使用深度学习框架来部署嵌入模型,但如果需要处理更大规模的模型或需要支持多个平台,则可能需要采取不同的方法。端点方法是最灵活的,既有自托管也有托管的选项,但这也为你的系统增加了一个额外的网络跳转,可能会增加延迟。无论你使用哪种方法来部署深度学习模型,专注于MLOps中的可观测性实践,确保可以快速捕获并解决生产中的问题。

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消