Netflix开源面向稀疏数据优化的轻量级神经网络库Vectorflow

简介: 在Netflix公司,我们的机器学习科学家在多个不同的领域处理着各种各样的问题:从根据你的爱好来定制电视和推荐电影,到优化编码算法。我们有一小部分问题涉及到处理极其稀疏的数据;手头问题的总维度数很容易就能达到数千万个特征,即使每次要看的可能只是少数的非零项。
+关注继续查看

1.png

介绍

随着过去几年来深度学习库和软件创新的蓬勃发展,研究机器学习是一个激动人心的时刻。大多数机器学习的库都是从相当专业的计算代码演变而来的,这些计算代码一般用于解决大密集度问题,例如为稀疏模型提供边缘支持的基于神经网络的图像分类通用框架。

在Netflix公司,我们的机器学习科学家在多个不同的领域处理着各种各样的问题:从根据你的爱好来定制电视和推荐电影,到优化编码算法。我们有一小部分问题涉及到处理极其稀疏的数据;手头问题的总维度数很容易就能达到数千万个特征,即使每次要看的可能只是少数的非零项。对于这些情况,我们认为需要有一个经过专门优化的轻量级的库,这个库用于在单一设备、多核环境下对稀疏数据进行浅层前馈神经网络的训练。我们想要一些小巧而又易用的工具,所以我们构建了Vectorflow,它是目前机器学习科学家使用的众多工具之一。

设计注意事项

  • 敏捷性。我们希望数据科学家能够在完全自主的情况下轻松地运行和迭代他们的模型。所以我们用D语言写了Vectorflow。D语言是一种并不难学的现代系统语言,它具备快速的编译器和函数编程功能,为初学者提供了类似Python的使用体验,但在运行时通常具有多个数量级的性能提升,同时让经验丰富的开发人员能够利用其优秀的模板引擎、编译时功能和低级别特性(C接口、内联汇编器、手动内存管理、自动向量化等等)。Vectorflow没有任何第三方的依赖,从而简化了其部署。它提供了一个基于回调的API,可轻松接入自定义的损失函数来进行训练。
  • 稀疏感知。在设计稀疏数据库与浅层架构库的过程中,运行时瓶颈往往是在IO方面:例如,与大密集度矩阵上的卷积层不同,其运行每一行的操作极少。Vectorflow能够尽可能地避免在正向与反向传递过程中的内存复制或分配操作。矩阵向量操作同时拥有稀疏与密集两种实现方式,其中密集型是SIMD向量化的。Vectorflow还提供了一种在处理稀疏输出梯度时进行稀疏反向传递的方式。
  • IO未知。如果是IO绑定,那么根据定义,训练器的运行速度由IO层的速度决定。Vectorflow对底层数据模式的要求非常宽松(仅需提供一个具有“features”属性的行迭代器),以便可以根据数据源编写高效的数据适配器,以及在使用同一编程语言的时候避免任何预处理或数据转换步骤。这样,你就能根据数据来移动代码,而不是根据代码移动数据。
  • 单一设备。分布式系统难以调试,而且还会引入固定成本,例如作业调度。基于新型机器学习技术的分布式优化则更加困难。因此,我们基于单机设置建立了一个高效的解决方案,以此来降低了建模的迭代时间,并且不会牺牲中小规模任务(1亿行)的可扩展性。我们选择使用Hogwild的通用异步SGD解算器作为免锁定方案,以使得在没有通信成本的情况下将负载分散到各个不同的内核上。只要数据足够稀疏,这就适用于大多数的线性或浅层网络模型。由于从用户的角度来看,所有的一切都运行在非分布式的环境下,这样就避免了在算法分布方面花过多的精力。

应用程序

在项目启动后的几个月里,我们看到了很多基于该库的用例,同时也有多个研究项目及生产系统开始利用Vectorflow进行因果推论、生存回归、密度估算和推荐排名算法。事实上,我们正在使用 Vectorflow对Netflix主页的部分用户体验进行测试。Vectorflow也被包含在Netflix机器学习从业者所使用的基础实例内的默认工具箱中。

例如,我们基于Netflix在营销工作当中遇到的一项宣传问题对该库的性能进行了调查。在这个案例中,我们要用生存指数分布执行加权最大似然估计。要实现这个目标,需要向Vectorflow传递出以下自定义的回调函数:

2.png

利用此回调进行训练,我们可以轻松比较这三种模型:

  • 模型 1:基于小型稀疏特征的线性模型(需要学习约 500 个参数)
  • 模型 2:基于大型稀疏特征的线性模型(需要学习 100 万个参数)
  • 模型 3:基于稀疏特征的浅层神经网络(需要学习 1000 万个参数),训练数据量翻倍

5.png

3.png

这里的数据源是存储在S3上的一个Hive表,其中的列式数据格式是Parquet。另外,我们通过将该数据流传入c4.4xlarge实例并构建内存内训练集的方式进行直接训练。结果如下所示:

4.png

解压缩和特征编码都是在单线程上实现的,因此这还有改进的空间,但根据其端到端的运行时来看,并不需要使用针对中等规模稀疏数据集和浅层架构的分布式解决方案。请注意,训练时间与数据的稀疏度以及行数存在线性关系。阻止线性可扩展性的一个原因是,当多个异步SGD线程的权重相同时,CPU存储器内在结构创建的缓存将会无效,因此如果模型参数访问模式不够稀疏的话,会破坏Hogwild的理论结果(详细内容请参见这篇文章)。

未来的工作

接下来,除了简单线性、多项式或者前馈架构之外,我们计划进一步开发更加专业的层以扩大拓扑支持能力,并在维持Vectorflow项目“极简”设计理念的前提下探索新的并行策略。

文章原标题《Introducing Vectorflow》,作者:Benoît Rostykus, Netflix Technology,译者:夏天,审校:主题曲哥哥。

文章为简译,更为详细的内容,请查看原文

相关文章
|
3月前
|
算法 物联网 人工智能
StableDiffusion流行模型介绍
本篇文章介绍市面上流行的Stable Diffusion模型,并且给出推荐的提示词和配置信息
5025 5
|
4月前
|
机器学习/深度学习 并行计算 算法
轻量级的深度学习框架Tinygrad
Tinygrad是一个轻量级的深度学习库,它提供了一种简化和直观的方法来理解和实现神经网络。在本文中,我们将探讨Tinygrad及其主要功能,以及它如何成为那些开始深度学习之旅的人的有价值的工具。
253 0
|
5月前
|
机器学习/深度学习 SQL 人工智能
基于PyTorch、易上手,细粒度图像识别深度学习工具库Hawkeye开源
基于PyTorch、易上手,细粒度图像识别深度学习工具库Hawkeye开源
110 0
|
7月前
|
机器学习/深度学习 人工智能 负载均衡
【推理引擎:核心原理】系列来啦!从入门到昇腾!
《AI推理引擎:核心原理》这个系列的内容:从推理系统整体架构开始,然后到模型小型化、模型压缩,在真正推理之前需要进行模型转换和图优化,最后到kernel和runtime优化。
565 0
【推理引擎:核心原理】系列来啦!从入门到昇腾!
|
8月前
|
机器学习/深度学习 算法 PyTorch
GitHub趋势榜第一:超强PyTorch目标检测库Detectron2,训练更快,支持更多任务
Detectron2是在PyTorch里从零开始写成的,团队希望这种做法,能让用户享受PyTorch做深度学习的思路。社区更活跃的话,PyTorch也会变得更好。
GitHub趋势榜第一:超强PyTorch目标检测库Detectron2,训练更快,支持更多任务
|
机器学习/深度学习 存储 并行计算
一篇就够:高性能推理引擎理论与实践 (TensorRT)
本文分享了关于 NVIDIA 推出的高性能的深度学习推理引擎 TensorRT 的背后理论知识和实践操作指南。
3696 3
一篇就够:高性能推理引擎理论与实践 (TensorRT)
|
JSON 自然语言处理 数据处理
Pytext实战-构建一个文本分类器有多快
Pytext实战-构建一个文本分类器有多快
71 0
Pytext实战-构建一个文本分类器有多快
|
机器学习/深度学习 自然语言处理 算法
EasyCV开源|开箱即用的视觉自监督+Transformer算法库
EasyCV是阿里巴巴开源的基于Pytorch,以自监督学习和Transformer技术为核心的 all-in-one 视觉算法建模工具。EasyCV在阿里巴巴集团内支撑了搜索、淘系、优酷、飞猪等多个BU业务,同时也在阿里云上服务了若干企业客户,通过平台化组件的形式,满足客户自定定制化模型、解决业务问题的需求。
EasyCV开源|开箱即用的视觉自监督+Transformer算法库
|
机器学习/深度学习 缓存 PyTorch
【PyTorch基础教程10】构建模型基础(学不会来打我啊)
PyTorch中神经网络构造一般是基于 Module 类的模型来完成的,它让模型构造更加灵活。Module 类是 nn 模块里提供的一个模型构造类,是所有神经网络模块的基类,我们可以继承它来定义我们想要的模型。
84 0
【PyTorch基础教程10】构建模型基础(学不会来打我啊)
|
机器学习/深度学习 人工智能 自然语言处理
简单易用高性能!一文了解开源迁移学习框架EasyTransfer
近日,阿里云正式开源了深度迁移学习框架EasyTransfer,这是业界首个面向NLP场景的深度迁移学习框架。该框架由阿里云机器学习PAI团队研发,让自然语言处理场景的模型预训练和迁移学习开发与部署更加简单和高效。本文将对EasyTransfer进行深度解读。开源地址:https://github.com/alibaba/EasyTransfer
4269 0
简单易用高性能!一文了解开源迁移学习框架EasyTransfer
相关产品
机器翻译
推荐文章
更多