【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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页面上找到。



公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

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

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

关注

评论 1 条评论

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

GIT好习惯助你成为更出色的开发者

南城FE

git 开发者 前端 后端 开发工具

一文搞懂设计模式—门面模式

Java随想录

Java 设计模式

基于OpenTelemetry实现Java微服务调用链跟踪

华为云开发者联盟

Java 微服务 Spring Boot 华为云 华为云开发者联盟

大模型开发:从数据挖掘到智能应用

百度开发者中心

自然语言处理 大模型 人工智能、

“数智乡村”数字人源码助力乡村振兴!

青否数字人

详解 JSON 文件的打开方法

Apifox

JavaScript json 程序员 前端 教程

微信小程序制作步骤,开发成本低,轻松打造

天津汇柏科技有限公司

小程序开发 开发小程序

流计算不止Flink

WuKongCoder

flink 流式计算 RisingWave

AI数字人直播系统的作用及如何搭建?

青否数字人

Java:commons-codec实现byte数组和16进制字符串转换

百度搜索:蓝易云

Java Apache Linux 运维 云服务器

GaussDB通信运维:详解stream连接池设计原理

华为云开发者联盟

数据库 华为云 华为云GaussDB 华为云开发者联盟 华为云GaussDB(DWS)

扯淡的DevOps,我们开发根本不想做运维!

京东科技开发者

JavaScript和Java:看似相似但实际上截然不同

伤感汤姆布利柏

AI数字人直播强势“出圈”24小时无限畅播!

青否数字人

数字人

Python可视化工具集合来报道(下)

小齐写代码

第十一周作业

大肚皮狒狒

Python雪花代码

百度搜索:蓝易云

Python Linux 算法 运维 云服务器

Linux系统中“sid”是什么意思?

百度搜索:蓝易云

云计算 Linux 运维 云服务器

程序员金三银四跳槽指南:时间线&经典面试16问

王中阳Go

面试技巧 金三银四 跳槽 跳槽技巧 面试攻略

文档图像大模型在智能文档处理领域中的应用

百度开发者中心

人工智能 深度学习 大模型 智能文档

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