【问题标题】:Disk I/O extremely slow on P100-NC6s-V2P100-NC6s-V2 上的磁盘 I/O 非常慢
【发布时间】:2019-09-17 09:50:01
【问题描述】:

我正在 azure ML 管道上训练图像分割模型。在测试步骤中,我将模型的输出保存到关联的 blob 存储中。然后我想找到计算输出和基本事实之间的 IOU(联合交集)。这两组图像都位于 blob 存储上。但是,IOU 计算非常慢,而且我认为它是磁盘绑定的。在我的 IOU 计算代码中,我只是加载了两个图像(注释掉了其他代码),但每次迭代需要将近 6 秒,而训练和测试速度足够快。

这种行为正常吗?如何调试这一步?

【问题讨论】:

    标签: tensorflow azure-machine-learning-service


    【解决方案1】:

    有关 AzureML 远程运行可用的驱动器的几点说明:

    这是我在远程运行时运行df 时看到的(在这一次中,我通过as_mount() 使用blob Datastore):

    Filesystem                             1K-blocks     Used  Available Use% Mounted on
    overlay                                103080160 11530364   86290588  12% /
    tmpfs                                      65536        0      65536   0% /dev
    tmpfs                                    3568556        0    3568556   0% /sys/fs/cgroup
    /dev/sdb1                              103080160 11530364   86290588  12% /etc/hosts
    shm                                      2097152        0    2097152   0% /dev/shm
    //danielscstorageezoh...-620830f140ab 5368709120  3702848 5365006272   1% /mnt/batch/tasks/.../workspacefilestore
    blobfuse                               103080160 11530364   86290588  12% /mnt/batch/tasks/.../workspaceblobstore
    

    有趣的项目是overlay/dev/sdb1//danielscstorageezoh...-620830f140abblobfuse

    1. overlay/dev/sdb1 都是机器上本地 SSD 的挂载(我使用的是具有 100GB SSD 的 STANDARD_D2_V2)。
    2. //danielscstorageezoh...-620830f140ab 是包含项目文件(您的脚本等)的 Azure 文件共享 的挂载。它也是您运行的当前工作目录
    3. blobfuse 是我在执行运行时请求安装在 Estimator 中的 blob 存储。

    我很好奇这 3 种驱动器之间的性能差异。我的迷你基准测试是下载并解压这个文件:http://download.tensorflow.org/example_images/flower_photos.tgz(它是一个 220 MB 的 tar 文件,包含大约 3600 个 jpeg 鲜花图像)。

    结果如下:

    Filesystem/Drive         Download_and_save       Extract
    Local_SSD                               2s            2s  
    Azure File Share                        9s          386s
    Premium File Share                     10s          120s
    Blobfuse                               10s          133s
    Blobfuse w/ Premium Blob                8s          121s
    

    总而言之,在网络驱动器上写入小文件要慢得多,因此如果您要写入较小的文件,强烈建议使用 /tmp 或 Python tempfile

    作为参考,这里是我跑来测量的脚本:https://gist.github.com/danielsc/9f062da5e66421d48ac5ed84aabf8535

    这就是我运行它的方式:https://gist.github.com/danielsc/6273a43c9b1790d82216bdaea6e10e5c

    【讨论】:

    • 谢谢。我移动磁盘以提取并写入 /tmp,这有助于我发现代码中的另一个错误。
    猜你喜欢
    • 1970-01-01
    • 2019-12-07
    • 2014-05-20
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    相关资源
    最近更新 更多