0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用ElasticDL和社区Keras模型库实现大量小众预估场景

Tensorflowers 来源:TensorFlow 作者:TensorFlow 2020-11-19 09:21 次阅读

在互联网行业里有很多需要利用深度学习模型预估点击率的场景,比如广告系统、推荐系统,和搜索引擎。有些重要的场景背后是很大的用户流量,体验了重要的商业价值,所以有数十人甚至数百人的团队在不断优化预估效能。这些团队为了优化自己负责的场景甚至专门研发深度学习工具链。

同时,大量小众的预估场景对应着不小的流量,但是无法配置专门的团队,更不可能开发专门的工具。这类场景因为数量众多,所以总体商业价值毫不弱于上述主流场景,甚至符合长尾分布的 20/80 比例 —— 其总体商业价值数倍于主流场景。

在我们研发和推广 ElasticDL 的过程里,接触到了很多负责此类小众场景的用户们。比如蚂蚁集团的各种大促活动,以及饿了么和菜鸟等业务的营销推荐活动。这些业务场景中,通常是一个算法工程师需要负责多个场景的建模。这就带来一个重要需求 —— 提供一套通用工具以提高大量小众预估场景下算法工程师的建模效率。另外,小众场景里的训练数据可不小 —— 本文梳理的场景都需要分布式训练。

之前的文章《ElasticDL:同时提升集群利用率和研发效率的分布式深度学习框架》里我们介绍过 ElasticDL 通过 Kubernetes-native 的弹性调度能力,提升机群资源利用率到 >90%。同时,作为一个 Keras 模型的分布式训练系统,ElasticDL 只需要用户提供模型定义,不需要用户定义训练循环 (training loop),更不需要用户开发分布式训练循环。实际上,由于 TensorFlow 社区贡献了很多 Keras 模型,比如 tf.keras.applications 里有很多 CV 领域的模型,DeepCTR 库里有很多 CTR 预估相关的模型,用户可以直接使用的。所以实际上 ElasticDL 在小众场景中的使用可以完全不需要用户 coding。这样的易用性在推广过程中得到了用户的好评。

tf.keras.applications
https://tensorflow.google.cn/api_docs/python/tf/keras/applications?hl=zh-cn

DeepCTR
https://github.com/shenweichen/DeepCTR

基于 no-code 的特点,ElasticDL 团队的主力工程师王勤龙为蚂蚁的可视化建模平台 PAI 增加了 ElasticDL 组件,使得大量用户可以通过在 Web 页面里拖拽和配置组件的方式实现 AI 训练。此文基于蚂蚁、饿了么、和飞猪的同事们的反馈梳理,为大家解释 TensorFlow 社区累积的 Keras 模型对中小 AI 场景的价值,以及如何经由 ElasticDL 实现这些价值。

小众预估场景对模型研发效率的期待

小众预估场景具有如下特点:

应用周期短,可能是应用在某个短时间的大促营销活动。所以算法工程师也需要在短时间内能完成预估模型的开发。

业务场景复杂多样,比如商品推荐的点击预估、营销活动的目标人群预估、优惠券的核销预估等,一个算法工程有可能会同时负责不同场景的预估建模,不同场景所使用的特征和模型可能区别很大,所说提高小众场景的预估模型的开发效率十分重要。

样本数据量大。虽然是小众场景,但是在大数据时代,公司都会积累了很多历史样本数据。训练的数据越多,有助于提升预估模型精度。所以在分布式集群上加速预估模型的训练对生产应用十分重要。

小众预估场景的这些特点不仅需要提高建模效率,也给集群管理系统带来了挑战。由于此类场景数量众多,在集群上给每个场景单独划分资源是不切合实际的。同时小众场景的训练作业时多时少,给其调度资源时既要考虑是否满足训练任务的需求,也要考虑集群资源利用率。前者决定了用户的模型训练效率,后者决定了公司成本。

使用 Keras 提高预估模型编程效率

使用 ElasticDL 来做分布式训练,用户主要需要使用 Keras API 来定义一个 Keras Model,如下所示:

import tensorflow as tf def forward(): inputs = tf.keras.layers.Input(shape=(4, 1), name="input") x = tf.keras.layers.Flatten()(inputs) outputs = tf.keras.layers.Dense(3, name="output")(x) return tf.keras.Model(inputs=inputs, outputs=outputs, name="simple-model")

深度学习预估模型一般包含两个部分:

样本特征预处理定义。将原始特征数据转换成适合深度学习使用的数据,比如标准化、分箱等变换。

深度学习网络结构定义。定义网络结构来拟合数据分布,提供模型预估精度。

在特征预处理上,TensorFlow 在其最新版本中提供了很多 preprocessing layers 来方便用户做特征预处理。使用这些 preprocessing layer,用户可以很方便地将特征预处理计算逻辑与模型网络结构结合在一起构造一个完整的 Keras 模型。

preprocessing layers
https://keras.io/api/layers/preprocessing_layers/

但是很多预估场景的特征数量很大,可能涉及用户属性、商品属性、地理位置等特征。对每个特征都手动编程定义预处理逻辑,也是件繁琐的事。同时特征预处理定义还需要一些样本特征的统计信息来保证特征变换的准确性,比如标准化操作需要特征的均值和标准差,分箱需要特征值的分布信息来确定分箱边界。在阿里巴巴集团,大多数预估场景的数据都是以结构化表形式存储在阿里云的 MaxCompute 中。针对此类数据,我们结合 MaxCompute 的大数据计算能力开发了自动生成预处理 Layer 功能。用户只需要选择使用的特征列,就可以自动完成特征统计并根据统计结果生成预处理的 Layer,用户只需关心模型的深度学习网络结构的定义。

在预估模型的网络结构定义上,DeepCTR模型库提供了很多前沿的 CTR 预估模型。用户可以很方便地调用这些模型来构造自己的预估模型。针对常用的 CTR 深度学习预估模型,我们在蚂蚁集团的 PAI 平台上封装了一个 ElasticDL-DeepCTR 组件,该组件能根据数据集自动生成特征预处理逻辑,并预置了 Wide&Deep、DeepFM、xDeepFM等算法,用户只需配置参数即可进行分布式模型训练。

弹性调度提升训练效率

小众预估场景所使用的样本数量一般也很大,几百万到几千万条不等,单机训练很慢满足模型的训练效率,往往需要在分布式集群上来加速模型训练。因为小众预估场景的数量多,单独给每个场景划分资源训练模型无疑会大幅增加集群管理员的工作。但是资源划分少会影响训练速度,划分过多则可能造成资源浪费。所以通常的做法是,这些小众预估场景的模型训练共享一个资源池。但是共享一个资源池很难同时兼顾用户体验和集群资源利用率。小众预估场景的模型训练作业往往时多时少。作业少的时候,资源池空闲造成资源浪费;作业多的时候,后面提交的任务需要排队等待。

ElasticDL 的弹性训练则能很好地解决了这个问题。通常一个 Kubernetes 集群上的资源是多个租户共用的,这些租户可能运行着各种不同的计算任务,比如在线服务任务、数据计算任务等。为了保证不同租户的 Service-Level Objective (SLO),集群管理者会给各租户分配资源配额。每个租户有高优先级使用自己的资源配额来执行计算任务,如果配置内的资源有空闲,其他租户则能用低优先级使用该租户配额里空闲的资源。如果使用过程中,原有租户计算任务增加,则其他租户需要归还使用的资源。由于集群中不同租户的使用峰值和低谷一般是错开的,所以集群中经常存在空闲资源。模型训练的租户使用 ElasticDL 则能以低优先级方式借调其他组租户的空闲资源来训练模型。就算训练过程中 ElasticDL 作业的 worker 被原有租户抢占了,训练作业不会终止失败。ElasticDL 会在集群里寻找其他租户的空闲资源来启动新的 worker,并将新 worker 加入训练作业。

在蚂蚁集团,几十个租户同时使用一个 Kubernetes 集群,我们在集群上只划分了很少的资源来启动 ElasticDL 作业的 master 和 PS 进程,而资源需求大且数量多的 worker 进程则全部使用低优先级的资源来运行。这样只要集群有空闲资源,训练作业就能快速开始,从而提升了这些小众预估模型的训练效率,也同时提升了集群资源利用率。

应用案例

以下我们简述几个阿里经济体内使用 ElasticDL 提升模型研发效能的小众场景。

蚂蚁财富的理财活动推荐

支付宝 818 金选理财节活动,新发基金策略(用于某债基带货)和黄金雨活动策略(用于促活跃)需要使用 CTR 预估来提升活动效果。该场景积累了几百万样本数据,且样本中包含用户属性、理财产品属性等很多特征。使用 ElasticDL 预估方案,非常方便地将 DeepFM 使用到了此次活动中。相比之前使用的规则策略,活动期间,页面的点击率有明显提升。

饿了么补贴投放预估

饿了么 C 端补贴(天降红包/高温补贴券包项目)是通过对用户发放红包以撬动用户下单的目的进行发放的,因此在不同门槛/面额组合下对用户核销/下单概率的预估是将平台收益最大化(ROI 最大化)的必要条件。类似逻辑同样适用在 B 端补贴上(百亿补贴项目),只不过 B 端补贴需要叠加用户对门店属性的适应/偏好/LBS限制/物流限制等更复杂的情况。ElasticDL 提供的 CTR 预估方案非常简单易用,训练的 xDeepFM 模型上线后效果很好。为后续的核销率拟合/ROI 优化提供了坚实有力的基础。

小结

针对 Keras 模型,ElasticDL 利用 TensorFlow 的 Eager execution 在 Kubernetes 上实现了弹性分布式训练,让用户只需提供 Keras 模型定义就可以提交分布式训练作业。同时由于 TensorFlow 社区拥有丰富的 Keras 模型库,用户可以做到 no-code 就能完成一个预估模型的应用。

由于 ElasticDL 在阿里经济体内部的展示的应用价值,ElasticDL 的另一位主力工程师齐俊在配合阿里云团队,争取尽快让阿里经济体之外的用户可以在阿里云上使用 ElasticDL。这项对接工作结束之后,我们再为大家带来更新。

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模型
    +关注

    关注

    1

    文章

    3255

    浏览量

    48897
  • 大数据
    +关注

    关注

    64

    文章

    8894

    浏览量

    137502
  • 深度学习
    +关注

    关注

    73

    文章

    5505

    浏览量

    121250

原文标题:案例分享 | No-Code AI:用 ElasticDL 和社区 Keras 模型库实现大量小众预估场景

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    KerasHub统一、全面的预训练模型库

    深度学习领域正在迅速发展,在处理各种类型的任务中,预训练模型变得越来越重要。Keras 以其用户友好型 API 和对易用性的重视而闻名,始终处于这一动向的前沿。Keras 拥有专用的内容
    的头像 发表于 12-20 10:32 111次阅读

    开源AI模型库是干嘛的

    开源AI模型库是指那些公开源代码、允许自由访问和使用的AI模型集合。这些模型通常经过训练,能够执行特定的任务。以下,是对开源AI模型库的详细介绍,由AI部落小编整理。
    的头像 发表于 12-14 10:33 200次阅读

    如何使用Python构建LSTM神经网络模型

    构建一个LSTM(长短期记忆)神经网络模型是一个涉及多个步骤的过程。以下是使用Python和Keras构建LSTM模型的指南。 1. 安装必要的
    的头像 发表于 11-13 10:10 420次阅读

    TNIA-TI做全差分THS4121芯片瞬态仿真时,输入Vin+和Vin-存在共模震荡的原因?

    ,详细仿真情况,请查看附件,THS4121 TINA-TI仿真模型库是从TI官网上下载的,现怀疑芯片震荡是否真的存在,还是芯片仿真模型库有问题?
    发表于 08-20 08:00

    AI算法/模型/框架/模型库的含义、区别与联系

    在人工智能(Artificial Intelligence,简称AI)的广阔领域中,算法、模型、框架和模型库是构成其技术生态的重要基石。它们各自承担着不同的角色,但又紧密相连,共同推动着AI技术的不断发展。以下是对这四者含义、区别与联系的详细阐述。
    的头像 发表于 07-17 17:11 4076次阅读

    深度学习模型有哪些应用场景

    深度学习模型作为人工智能领域的重要分支,已经在多个应用场景中展现出其巨大的潜力和价值。这些应用不仅改变了我们的日常生活,还推动了科技进步和产业升级。以下将详细探讨深度学习模型的20个主要应用
    的头像 发表于 07-16 18:25 2021次阅读

    keras模型转tensorflow session

    在这篇文章中,我们将讨论如何将Keras模型转换为TensorFlow session。 Keras和TensorFlow简介 Keras是一个高级神经网络API,它提供了一种简单、快
    的头像 发表于 07-05 09:36 558次阅读

    keras的模块结构介绍

    Keras是一个高级深度学习,它提供了一个易于使用的接口来构建和训练深度学习模型Keras是基于TensorFlow、Theano或CNTK等底层计算
    的头像 发表于 07-05 09:35 383次阅读

    如何使用Tensorflow保存或加载模型

    TensorFlow是一个广泛使用的开源机器学习,它提供了丰富的API来构建和训练各种深度学习模型。在模型训练完成后,保存模型以便将来使用或部署是一项常见的需求。同样,加载已保存的
    的头像 发表于 07-04 13:07 1583次阅读

    导入keras或者onnx模型到cubeai进行分析,为什么会报错?

    请问我导入keras或者onnx模型到cubeai进行分析,为什么会报错,而且没有报错内容,cubeai版本9.0.0。换成8.1.0版本后报错内容是invalid network。该怎么入手解决。
    发表于 07-03 07:55

    基于stm32h743IIK在cubeai上部署keras模型模型输出结果都是同一组概率数组,为什么?

    基于stm32h743IIK,在cubeai上部署keras模型模型输出结果都是同一组概率数组,一点也搞不明白,看社区也有相同的问题,但没有解决方案
    发表于 05-20 08:18

    鸿蒙OS开发学习:【第三方调用】

    在Stage模型中,如何调用已经上架到[三方中心]的社区和项目内创建的本地
    的头像 发表于 04-14 11:34 926次阅读
    鸿蒙OS开发学习:【第三方<b class='flag-5'>库</b>调用】

    cube AI导入Keras模型出错怎么解决?

    我尝试过cube AI的version7.1.0、6.0.0、5.1.2、4.1.0,导入Keras都是这个报错,求解答 E010(InvalidModelError): Couldn&
    发表于 03-18 06:39

    全志V851s做了一个魔法棒,使用Keras训练手势识别模型控制一切电子设备

    功能是如何做到的。 1、软件构成 使用Keras训练手势识别模型,转为 TFlite 模型。 再通过谷歌提供的 TFlite C API 运行模型。 2、代码仓库 代码仓库顺序如下:
    发表于 02-04 10:44

    基于TensorFlow和Keras的图像识别

    ,让我们先花点时间来了解一些术语。TensorFlow/KerasTensorFlow是GoogleBrain团队创建的一个Python开源,它包含许多算法和模型
    的头像 发表于 01-13 08:27 840次阅读
    基于TensorFlow和<b class='flag-5'>Keras</b>的图像识别