DeltaTorch允许使用PyTorch从DeltaLake表加载训练数据以训练深度学习模型
项目描述
deltatorch
概念
deltatorch
允许用户直接使用DeltaLake
表作为PyTorch训练的数据源。使用deltatorch
,用户可以创建PyTorch的DataLoader
来加载训练数据。我们还支持使用PyTorch DDP进行分布式训练。
为什么还需要另一个数据加载框架?
- 许多深度学习项目都在努力解决高效数据加载的问题,尤其是在表格数据集或包含大量小图像的数据集上。
- 经典的Big Data格式,如Parquet,可以解决这方面的问题,但其操作难度较大。
- 写者可能会阻塞读者。
- 写入失败可能会使整个数据集无法读取。
- 更复杂的项目可能需要在训练过程中始终接收数据。
Delta Lake存储格式解决了所有这些问题,但PyTorch没有对DeltaLake
数据集的直接支持。deltatorch
引入了这种支持,并允许用户使用PyTorch训练深度学习模型时使用DeltaLake
。
使用方法
要求
- Python版本 > 3.8
pip
或conda
安装
- 使用
pip
pip install git+https://github.com/delta-incubator/deltatorch
创建PyTorch DataLoader以读取我们的DeltaLake表
首先,我们需要一个包含我们用于训练PyTorch深度学习模型的训练数据的DeltaLake表。有一个要求:此表必须有一个自增ID字段。该字段由deltatorch
用于加载的分区和并行化。之后,我们可以使用create_pytorch_dataloader
函数创建PyTorch DataLoader,它可以直接在训练中使用。以下是一个为以下表模式创建DataLoader的示例:
CREATE TABLE TRAINING_DATA
(
image BINARY,
label BIGINT,
id INT
)
USING delta LOCATION 'path'
表准备就绪后,我们可以使用create_pytorch_dataloader
函数创建PyTorch DataLoader
from deltatorch import create_pytorch_dataloader
from deltatorch import FieldSpec
def create_data_loader(path:str, batch_size:int):
return create_pytorch_dataloader(
# Path to the DeltaLake table
path,
# Autoincrement ID field
id_field="id",
# Fields which will be used during training
fields=[
FieldSpec("image",
# Load image using Pillow
load_image_using_pil=True,
# PyTorch Transform
transform=transform),
FieldSpec("label"),
],
# Number of readers
num_workers=2,
# Shuffle data inside the record batches
shuffle=True,
# Batch size
batch_size=batch_size,
)
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装软件包的信息。
源分布
deltatorch-0.0.3.tar.gz (7.4 kB 查看散列值)
构建分布
deltatorch-0.0.3-py3-none-any.whl (8.2 kB 查看散列值)