硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

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

  • 2023-04-27
    北京
  • 本文字数:1512 字

    阅读完需:约 5 分钟

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

零拷贝和内存数据管理器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 客户端接口IPCClientRPCClient,分别用于操作本地和远程对象。两个客户端 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 APIHelm图表在 Kubernetes 集群上部署 vineyard 操作。官方文档中还提供了更详细的架构概述。


原文链接:

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


相关阅读:

2023-04-27 08:002700

评论

发布
暂无评论
发现更多内容

UltraEdit for Mac:专业级文本与代码编辑器的全能之选

春天的风暖暖的

使用 YashanDB 实现高效的数据同步与备份

数据库砖家

如何利用YashanDB进行数据分析与可视化

数据库砖家

如何利用YashanDB不同区域之间的数据同步高效

数据库砖家

如何利用YashanDB数据库实现智能数据分析

数据库砖家

VSD Viewer for mac(Visio绘图文件阅读器)

春天的风暖暖的

如何进行YashanDB数据库的性能评估与监控

数据库砖家

如何利用YashanDB实现弹性扩展与负载均衡

数据库砖家

利用 YashanDB 实现实时数据处理

数据库砖家

如何利用YashanDB数据库实现跨平台兼容性

数据库砖家

如何利用YashanDB开展实时数据监控

数据库砖家

如何利用YashanDB数据库实现多租户架构

数据库砖家

iWall for Mac(最好用的动态桌面壁纸软件)

春天的风暖暖的

如何借助YashanDB提升企业业务连续性保障

数据库砖家

如何利用YashanDB筹备和实施数据迁移

数据库砖家

如何利用YashanDB实现数据驱动的决策

数据库砖家

如何利用YashanDB进行高效的数据备份与恢复

数据库砖家

如何利用YashanDB进行数据仓库构建

数据库砖家

如何利用YashanDB满足GDPR合规需求

数据库砖家

Dash for Mac(最好用的API文档工具)

春天的风暖暖的

TG Pro for mac(Mac硬件温度检测工具)

春天的风暖暖的

600多个mindmanager模板素材(思维导图模板合集)

春天的风暖暖的

PTGui Pro for Mac:专业级全景图像拼接与优化利器

春天的风暖暖的

如何快速上手YashanDB数据库进行数据分析开发

数据库砖家

如何利用YashanDB数据库实现数据集成与共享

数据库砖家

如何利用YashanDB实现数据安全和合规管理

数据库砖家

如何利用YashanDB实现数据湖与数据仓库集成

数据库砖家

如何利用YashanDB实现智能决策

数据库砖家

如何利用YashanDB数据库实现多租户数据隔离

数据库砖家

实现 YashanDB 高可用集群设计

数据库砖家

Reflector 3 for Mac:多平台无线投屏与录制的全能工具

春天的风暖暖的

零拷贝技术升级,V6D让数据传输更高效_大数据_Sabri Bolkar_InfoQ精选文章