P100-NC6s-V2 上的磁盘 I/O 极慢

Sag*_*eEx 1 tensorflow azure-machine-learning-service

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

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

Dan*_*der 6

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

以下是我df在远程运行时看到的内容(在本次运行中,我使用的是 blob Datastorevia as_mount()):

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
Run Code Online (Sandbox Code Playgroud)

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

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

我很好奇这三种类型的驱动器之间的性能差异。我的迷你基准测试是下载并解压此文件: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
Run Code Online (Sandbox Code Playgroud)

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

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

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