服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

零拷贝技术升级,V6D 让数据传输更高效

日期: 来源:InfoQ收集编辑:Sabri Bolkar

作者 | Sabri Bolkar
译者 | 刘雅梦
策划 | 丁晓昀

零拷贝和内存数据管理器 Vineyard(v6d) 最近发布了 0.13.2 版本,为 Python/C++ 开发和 Kubernetes 部署带来了改进的功能。它是作为 CNCF 沙箱项目 来进行维护的,并提供了分布式操作符,可用于在集群节点内或跨集群节点共享不可变数据。V6d 特别适用于大型(分片)数据集上(例如大语言和图模型)的深度网络训练。它的开发目前由阿里巴巴的一个工程团队领导。

零拷贝 和 内存 数据分布是许多实时应用程序的核心问题。从图像处理管道到深度学习模型,如 LLM 和图挖掘算法等,许多数据处理应用程序都需要从许多独立的进程中获取大量数据。在机器学习工程中,随着深度网络变得越来越大,模型参数的分布要求访问共享状态和数据,这一瓶颈变得越来越明显了。作为一个早期项目,V6d 旨在为此类用例提供一个高级 API。

实时应用程序的架构通常利用内存中的键 - 值存储 / 缓存(例如 etcd、Memcached、Redis)来存储和交换频繁访问的数据。根据服务类型,工程团队必须考虑这些工具带来的相关权衡。V6d 由两个主要组件组成:Apache Arrow Plasma 派生共享内存数据管理器(在一个节点内)和由 etcd 支持的元数据服务器(在不同节点之间)。虽然 Plasma 派生服务允许零拷贝数据传输,但 etcd 服务处理数据属性的全局分布(可能是分区的)。

V6d 将自己置于 Python 社区中。在某种程度上,可以考虑将 Python 原生的多进程 shared_memory 扩展到多台机器,以实现不可变的 blob。V6d 提供了两个不同的 Python 客户端接口 IPCClient 和 RPCClient,分别用于操作本地和远程对象。两个客户端 API 都允许基于对象 ID 的统一数据插入和检索模式。然而,v6d 不会在集群节点之间自动移动数据,除非被指示这样做,因为这种操作的高网络成本很高。

我们可以提供了一个可以在本地机器上运行的简单示例,让我们先从创建本地 v6d 实例开始:

python -m vineyard --socket /tmp/vineyard.sock --size 16733650944

作为第一步,让我们展示如何利用 Python 的原生 API。为此,我们将使用 NumPy 创建一个 10k 分辨率的虚拟 RGB 图像,并使用 shared_memory() 接口来快速共享它:

import numpy as npfrom multiprocessing import shared_memoryshape_, dtype_ = (3, 10000, 10000), np.uint8array_to_share = np.random.randint(0, high=255, size=shape_, dtype=dtype_)# 创建共享内存shm = shared_memory.SharedMemory(create=True, size=array_to_share.nbytes)array_shm = np.ndarray(shape_, dtype=array_to_share.dtype, buffer=shm.buf)array_shm[:] = array_to_share[:] # Here we need to copy as we use existing array# 在另一个过程中使用共享内存名称、大小和类型信息来检索数据existing_shm = shared_memory.SharedMemory(name=shm.name)array_retrieved = np.ndarray(shape=shape_, dtype=dtype_, buffer=existing_shm.buf)

在这里,我们可以使用 v6d 执行相同的操作:

import vineyardclient = vineyard.connect('/tmp/vineyard.sock')array_id = client.put(array_to_share)# 在另一个进程中检索之前的 array_to_sharearray_retrieved = client.get(array_id)

如上所示,该 API 非常易于使用,并将数据类型和数组形状传播到检索到的对象中。由于是通用 数组协议(又名缓冲协议),NumPy 接口还接受对 PyTorch、TensorFlow 和 MxNet 张量的零拷贝操作。除此之外,v6d 在 Pandas/Arrow 数据框架上进行了相同的操作。有关该库集成的更多详细信息,请访问 相关的文档页面。也可以在 网页中 找到机器学习培训教程的示例。

对于多节点设置,V6d 允许通过 Python API 和 Helm 图表在 Kubernetes 集群上部署 vineyard 操作。官方文档中还提供了更详细的架构概述。

原文链接:

https://www.infoq.com/news/2023/03/zero-copy-v6d/

声明:本文为 InfoQ 翻译,未经许可禁止转载。

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

今日好文推荐

十年“屎山”终重构,但 QQ选用了微软 Teams 放弃的 Electron

开源巨星红帽裁员、瞄准“昂贵”老员工,CEO:最艰难的决定,被裁员工将获得超高额遣散费

ChatGPT写21个程序,16个有漏洞:离取代程序员还远着呢!

华为投入数千人实现自主可控ERP;SpaceX星舰爆炸了,马斯克:祝贺!谷歌合并两大人工智能部门,加速力战ChatGPT|Q资讯

相关阅读

  • 腾讯刷新世界纪录:8.14亿次/分钟!

  • 这是一条蓝色的“丝滑”数据线。它的横坐标是时间,纵坐标是每分钟交易处理数。这条平稳、丝滑、顺溜的线条,显示了腾讯云数据库TDSQL性能刷新世界记录,达到了每分钟8.14亿交易
  • 华为:数字化转型与绿色发展,构建智慧城轨

  • 【山东,青岛,2022年4月27日】4月27日,北京-青岛国际城市轨道交通展览会暨高峰论坛(以下简称:北京-青岛轨道展)在青岛拉开帷幕,华为公司副总裁、机场与轨道军团CEO李俊风受邀出席此
  • 2条地铁今日开工!

  • 2023年4月28日,在仓丰东路站,伴随着大型设备的轰鸣运转,石家庄市轨道交通6号线一期、1号线三期工程拉开建设帷幕。这也意味着石家庄市轨道交通二期规划线路全部实现开工建设,石
  • 福州地铁&株洲中车时代电气联合体签约

  • 4月27日第三届中国国际数字产品博览会国有企业签约仪式在福州海峡国际会展中心2号馆论坛举行签约仪式上,福州地铁集团有限公司副总经理胡玉柳、宁波中车时代电气设备有限公司
  • 出发前必看!这些东西不能带上火车

  • 这个假期,你有没有出行的计划?你的行李箱里准备装点啥?香烟、酒、打火机、食用油、充电宝、化妆品、海鲜……这些物品能不能进站上火车?赶紧对照这份清单↓↓资料/中国铁路编辑/

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四
  • 美国对华2000亿关税清单,到底影响有多大?

  • 1 今天A股大跌,上证最大跌幅超过2%。直接导火索是美国证实计划对华2000亿美元产品加征25%关税。 听起来,2000亿美元数目巨大,我们来算笔账。 2000亿美元,按现在人民币汇率

最新文章

  • 杭州市创业项目第十期入库项目名单

  • 近期,杭州市创业项目入库评审第10期专家评审会在杭州网尚创业陪跑空间举办。来自新材料、元宇宙、数字科技、生物医药、新餐饮等多个领域的37个创业项目报名本期评审会,其中18
  • 零拷贝技术升级,V6D 让数据传输更高效

  • 作者 | Sabri Bolkar 译者 | 刘雅梦 策划 | 丁晓昀 零拷贝和内存数据管理器 Vineyard(v6d) 最近发布了 0.13.2 版本,为 Python/C++ 开发和 Kubernetes 部署带来了改进的
  • 全省人社宣传工作座谈会在南京召开

  • 4月27日至28日,全省人力资源和社会保障宣传工作座谈会在南京召开,总结交流2022年全省人社宣传工作情况,研究分析当前形势任务,部署今年重点工作。省人社厅副厅长顾潮参加会议并