gpt4 book ai didi

python - Azure ML 文件数据集 mount() 速度慢且下载数据两次

转载 作者:行者123 更新时间:2023-12-02 07:53:34 26 4
gpt4 key购买 nike

我使用 Azure ML python API 创建了一个 Fie 数据集。所讨论的数据是驻留在跨多个分区的 Azure Data Lake Gen 2 中的一堆 parquet 文件(约 10K parquet 文件,每个文件大小为 330 KB)。然后,我尝试将数据集挂载到 AML 计算实例中。在此安装过程中,我观察到每个 parquet 文件已在计算实例的/tmp 目录下下载两次,并在控制台日志中打印以下消息:

Downloaded path: /tmp/tmp_3qwqu9u/c2c69fd1-9ded-4d69-b75a-c19e1694b7aa/<blob_path>/20211203.parquet is different from target path: /tmp/tmp_3qwqu9u/c2c69fd1-9ded-4d69-b75a-c19e1694b7aa/<container_name>/<blob_path>/20211203.parquet

为数据集一​​部分的每个 Parquet 文件打印此日志消息。

此外,安装数据集的过程非常慢:大约 10K 个 parquet 文件(每个文件大小为 330 KB)需要 44 分钟。

Jupyter Lab中的“%%time”命令显示大部分时间已用于IO过程?

CPU times: user 4min 22s, sys: 51.5 s, total: 5min 13s
Wall time: 44min 15s

注意:Data Lake Gen 2 和 Azure ML 计算实例位于同一虚拟网络下。

这是我的问题:

  1. 如何避免两次下载 parquet 文件?
  2. 如何加快安装过程?

我已经浏览过this thread ,但那里的讨论没有结束

我使用的Python代码如下:

data = Dataset.File.from_files(path=list_of_blobs, validate=True)
dataset = data.register(workspace=ws, name=dataset_name, create_new_version=create_new_version)
mount_context = None
try:
mount_context = dataset.mount(path_to_mount)
# Mount the file stream
mount_context.start()
except Exception as ex:
raise(ex)

df = pd.read_parquet(path_to_mount)

最佳答案

最可靠的选项是直接从 AzureBlobDatastore 下载。您需要知道数据存储和相对路径,这是通过打印数据集描述获得的。即

ws = Workspace.from_config()
dstore = ws.datastores.get(dstore_name)
target = (dstore, dstore_path)
with tempfile.TemporaryDirectory() as tmpdir:
ds = Dataset.File.from_files(target)
ds.download(tmpdir)
df = pd.read_parquet(tmpdir)

方便的选项是流式传输表格数据集。请注意,您无法控制文件的读取方式(Microsoft 转换器有时可能无法按您的预期工作)。这是模板:

ds = Dataset.Tabular.from_parquet_files(target)
df = ds.to_pandas_dataframe()

关于python - Azure ML 文件数据集 mount() 速度慢且下载数据两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71013850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com