写点什么

LinkedIn 开源 Avro2TF: TensorFlow 的开源特性转换引擎

  • 2019-04-29
  • 本文字数:1688 字

    阅读完需:约 6 分钟

LinkedIn开源Avro2TF: TensorFlow的开源特性转换引擎

2019 年 4 月 4 日,我们宣布开源一个新的项目Avro2TF。该项目提供了一种可伸缩的基于spark的机制,可以有效地将数据转换为供TensorFlow使用的格式。使用这种技术,开发人员可以更专注于构建模型而不是转换数据,从而提高生产率。

LinkedIn 的深度学习数据管道

在 LinkedIn,深度学习已成功应用于多个与推荐和搜索相关的人工智能系统。我们从这个项目中学到的重要经验之一是深深地感受到提供良好的深度学习平台的重要性,这有助于我们的建模工程师变得更加高效和多产。Avro2TF 是为了降低数据处理复杂性和提高高级建模速度这个目标做出的努力。除了推进深度学习技术,LinkedIn 多年来一直在分享很多领域关于机器学习(ML)方面的创新(例如,推荐系统、可伸缩的机器学习系统等)。因为效率和准确性至上,所以我们有许多不同的 ML 方法来处理每天产生的大量的数据。


为了有效地支持深度学习和推进机器学习民主化的愿景(通过Pro-ML这样的项目),我们必须首先解决数据处理步骤的问题。我们的 ML 算法(例如 LinkedIn 的大规模个性化引擎Photon-ML)使用的大部分数据集都是 Avro 格式的。Avro 数据集中的每个记录本质上都是一个稀疏向量,并且可以被大多数现代分类器轻松使用。然而,领先的深度学习库 TensorFlow 无法直接使用 Avro 这种格式。主要的阻碍因素是稀疏向量的格式与 TensorFlow 所期望的格式不同。我们相信这不是 LinkedIn 独有的问题。许多公司拥有大量类似稀疏向量格式的 ML 数据,而 Tensor(张量)格式对许多公司来说仍然相对较新。


LinkedIn 的数据通常很大,格式也与传统的深度学习库不同。这就带来了重大的挑战,因为许多管道都包含混合的数据处理逻辑和建模逻辑。它影响了构建新的深度学习模型的灵活性。根据用户对 LinkedIn ML 垂直团队的反馈,我们需要一个可伸缩的解决方案,专注于可伸缩的数据转换。更具体地说,我们需要一个将 LinkedIn 数据类型(例如稀疏向量、密集向量等)转换为深度学习格式(即张量)的机制。



Avro2TF 弥补了这一差距,为 ML 工程师提供了一个不错的解决方案,让他们可以专注于不同的深度学习算法。它为建模者提供了一个简单的配置,以便从现有的训练数据中获取张量。张量数据本身不是自包含的。为了加载到 TensorFlow,张量数据需要携带元数据。为了弥补这一差距,Avro2TF 还提供分布式元数据收集工作。在 LinkedIn 内部,Avro2TF 是一个名为 TensorFlowIn 的系统的组成部分,该系统可以帮助用户轻松地将数据输入到 TensorFlow 建模过程中。



TensorFlowIn 是一个与TonY、TensorFlow 和 Spark 兼容的深度学习训练库。它包含端到端训练相关的实用程序和框架。上面的图给出了 TensorFlowIn 的高级概览。由于大规模的数据处理是一个重要的步骤,这不仅对许多 LinkedIn 应用程序至关重要,而且对更大的人工智能社区也很有用,所以我们在收到积极的内部反馈后决定开放这个引擎的源代码。

Avro2TF 项目细节

下面简要介绍 Avro2TF 的一些实现特性。


  • 输入数据要求:我们支持 Spark 可以读取的所有数据格式,包括 LinkedIn、Avro 和 ORC 中最流行的格式。对于分类或稀疏特性,我们要求它们以 NTV (name-term-value)格式表示。

  • 输出张量支持的数据类型:在 Avro2TF 中,输出张量支持的数据类型(dtype)为:int、long、float、double、string、boolean 和 bytes。我们还提供了一个特殊的数据类型 sparseVector 来表示分类/稀疏特性。一个 sparseVector 的张量类型有两个字段:索引和值。

  • Avro2TF 配置:在顶层,配置文件包含关于张量的信息,这些张量将提供给深度学习训练框架使用。对于每个指定的张量,它包含两种信息:

  • 输入特征信息,判断应该使用哪些现有特征来构造张量。

  • 输出张量信息,包括期望输出张量的名称、类型和形状。


Avro2TF 数据管道:它处理特征提取、特征转换(在 LinkedIn,这仅在 Pro-ML 不涉及的有限用例中)、张量元数据和特征映射生成、将字符串转换为数值索引和张量序列化。

Avro2TF 现在是开源的

在 LinkedIn 成功使用 Avro2TF 之后,我们已经将该技术作为开源软件发布。你可以在这里找到 Avro2TF 的官方 GitHub 页面。


我们还发布了 Avro2TF 的官方教程,可以在项目wiki页面上找到。



2019-04-29 08:086404
用户头像

发布了 124 篇内容, 共 45.2 次阅读, 收获喜欢 176 次。

关注

评论 1 条评论

发布
用户头像
开源,让全世界的工程师抛弃文化等因素,去协作完成一个项目。
2019-08-02 10:42
回复
没有更多了
发现更多内容

模块4作业

Geek_2e7dd7

架构训练

架构实战营模块4作业

En wei

架构实战营

perf + 火焰图用法 小结

hashyong

程序员 架构 5月日更 perf

《Redis入门指南(第 2 版)》读后感

codists

redis

一文看懂 slice

Rayjun

Go 语言

重学Scrum三大支柱 《Scrum指南》重读有感(1)

Bruce Talk

Scrum 敏捷 随笔 Agile

架构师实战营 模块四作业(设计千万级学生管理系统的考试试卷存储方案)

代廉洁

架构实战营

架構實戰營 - 模塊 4 作業

Frank Yang

架构实战营

想要做网页游戏怎么办 ?PixiJs 篇(四)

空城机

JavaScript 大前端 游戏 pixi 5月日更

架构师实战营 模块四作业(设计千万级学生管理系统的考试试卷存储方案)

代廉洁

架构实战营

小谈音视频质量检测

箭上有毒

音视频 5月日更

我的Serverless实战—玩转腾讯云Wordpress

liuzhen007

Serverless 5月日更

学会这12个Java开发框架轻松拿到30K+

北游学Java

Java spring Netty mybatis 框架

【LeetCode】数组中两个数的最大异或值Java题解

Albert

算法 LeetCode 5月日更

行车数据上链,国产汽车很上道

CECBC

10年后,区块链的世界将会变成什么样子?

CECBC

架构实战训练营 - 模块4 - 作业

Presley

没有发生GC也进入了安全点?这段关于安全点的JVM源码有点意思!

CoderW

Java 源码分析 JVM GC

这5个浏览器工具,让你的上网舒适度提升150%

彭宏豪95

效率 工具 浏览器 脚本 5月日更

大数据中的工作流调度

五分钟学大数据

大数据 5月日更

用 Python 打印九九乘法表 - DAY7

Qien Z.

Python 5月日更

利用Nginx流量镜像,优雅的接入waf

运维研习社

nginx WEB安全 waf 5月日更

cri-o技术探秘3

xumc

Docker 容器 cri-o pinns

SaaS的前世、今生与未来[下篇]

LigaAI

SaaS

Python 之父爆料:明年至少令 Python 提速 1 倍!

Python猫

Python

数据挖掘从入门到放弃(三):朴素贝叶斯

数据社

机器学习 5月日更

<精益创业>读后感

Bruce Talk

敏捷 随笔 Agile

zstd c++ string 压缩&解压

hashyong

c++ 程序员 架构 5月日更 zstd

Impala架构剖析

大数据技术指南

大数据 5月日更

高耦合:为何代码一直被绑架?

Jxin

架构师实战营 模块四总结

代廉洁

架构实战营

LinkedIn开源Avro2TF: TensorFlow的开源特性转换引擎_AI&大模型_Xuhong Zhang_InfoQ精选文章