<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic ML Training low File I/O and Throughout in Machine Learning</title>
    <link>https://community.databricks.com/t5/machine-learning/ml-training-low-file-i-o-and-throughout/m-p/165843#M4665</link>
    <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I have an image-based deep learning workload running on Azure Databricks, while the training dataset must remain in AWS S3 due to some constraints. We cannot move or replicate the dataset to Azure.&lt;BR /&gt;Our current architecture is roughly:&lt;BR /&gt;&lt;STRONG&gt;AWS S3 (images) → Unity Catalog Volume → Azure Databricks GPU compute → PyTorch training&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;The main issue we're seeing is very high file &lt;STRONG&gt;I/O latency and relatively low training throughput&lt;/STRONG&gt;. Since the dataset contains a large number of individual image files, reading the images through the UC Volume appears to involve significant network overhead and many individual file reads.&lt;BR /&gt;I initially expected &lt;STRONG&gt;Mosaic Streaming / StreamingDatase&lt;/STRONG&gt;t to improve this because the dataset can be converted into MDS shards and the shards can be downloaded progressively to local storage while training continues.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;However, interestingly, in our testing:&lt;BR /&gt;Direct image loading from the &lt;STRONG&gt;UC Volume is currently faster than Mosaic Streaming.&lt;/STRONG&gt;&lt;BR /&gt;I'm trying to understand whether we are missing an important configuration or whether the cross-cloud architecture itself is the primary bottleneck.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;STRONG&gt;A few questions&lt;/STRONG&gt;:&lt;BR /&gt;1. What is the recommended architecture for training on S3 data from Azure Databricks when the data cannot be moved to Azure?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;2. For Mosaic Streaming, what are the recommended values/strategies for:&lt;BR /&gt;shard size&lt;BR /&gt;num_workers&lt;BR /&gt;predownload&lt;BR /&gt;cache_limit&lt;BR /&gt;shuffle configuration&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;3. Is there an optimal MDS shard size for image datasets to minimize S3/network overhead?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;4. Would increasing DataLoader workers and prefetching significantly improve throughput in this cross-cloud scenario?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;5. Would it be better to use local caching of UC Volume files instead of Mosaic Streaming for a multi-epoch image training workload?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;6. Are there any Databricks-recommended approaches for measuring whether the bottleneck is S3 → Azure network bandwidth, file-level latency, CPU image decoding, or GPU starvation?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Our main objective is to maximize GPU utilization and training throughput without moving the source dataset out of S3.&lt;BR /&gt;Any recommendations, benchmarks, or reference architectures for this type of cross-cloud training setup would be greatly appreciated&lt;/P&gt;</description>
    <pubDate>Mon, 17 Aug 2026 18:55:08 GMT</pubDate>
    <dc:creator>aswinkks</dc:creator>
    <dc:date>2026-08-17T18:55:08Z</dc:date>
    <item>
      <title>ML Training low File I/O and Throughout</title>
      <link>https://community.databricks.com/t5/machine-learning/ml-training-low-file-i-o-and-throughout/m-p/165843#M4665</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I have an image-based deep learning workload running on Azure Databricks, while the training dataset must remain in AWS S3 due to some constraints. We cannot move or replicate the dataset to Azure.&lt;BR /&gt;Our current architecture is roughly:&lt;BR /&gt;&lt;STRONG&gt;AWS S3 (images) → Unity Catalog Volume → Azure Databricks GPU compute → PyTorch training&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;The main issue we're seeing is very high file &lt;STRONG&gt;I/O latency and relatively low training throughput&lt;/STRONG&gt;. Since the dataset contains a large number of individual image files, reading the images through the UC Volume appears to involve significant network overhead and many individual file reads.&lt;BR /&gt;I initially expected &lt;STRONG&gt;Mosaic Streaming / StreamingDatase&lt;/STRONG&gt;t to improve this because the dataset can be converted into MDS shards and the shards can be downloaded progressively to local storage while training continues.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;However, interestingly, in our testing:&lt;BR /&gt;Direct image loading from the &lt;STRONG&gt;UC Volume is currently faster than Mosaic Streaming.&lt;/STRONG&gt;&lt;BR /&gt;I'm trying to understand whether we are missing an important configuration or whether the cross-cloud architecture itself is the primary bottleneck.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;STRONG&gt;A few questions&lt;/STRONG&gt;:&lt;BR /&gt;1. What is the recommended architecture for training on S3 data from Azure Databricks when the data cannot be moved to Azure?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;2. For Mosaic Streaming, what are the recommended values/strategies for:&lt;BR /&gt;shard size&lt;BR /&gt;num_workers&lt;BR /&gt;predownload&lt;BR /&gt;cache_limit&lt;BR /&gt;shuffle configuration&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;3. Is there an optimal MDS shard size for image datasets to minimize S3/network overhead?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;4. Would increasing DataLoader workers and prefetching significantly improve throughput in this cross-cloud scenario?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;5. Would it be better to use local caching of UC Volume files instead of Mosaic Streaming for a multi-epoch image training workload?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;6. Are there any Databricks-recommended approaches for measuring whether the bottleneck is S3 → Azure network bandwidth, file-level latency, CPU image decoding, or GPU starvation?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Our main objective is to maximize GPU utilization and training throughput without moving the source dataset out of S3.&lt;BR /&gt;Any recommendations, benchmarks, or reference architectures for this type of cross-cloud training setup would be greatly appreciated&lt;/P&gt;</description>
      <pubDate>Mon, 17 Aug 2026 18:55:08 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/ml-training-low-file-i-o-and-throughout/m-p/165843#M4665</guid>
      <dc:creator>aswinkks</dc:creator>
      <dc:date>2026-08-17T18:55:08Z</dc:date>
    </item>
    <item>
      <title>Re: ML Training low File I/O and Throughout</title>
      <link>https://community.databricks.com/t5/machine-learning/ml-training-low-file-i-o-and-throughout/m-p/165846#M4666</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/151734"&gt;@aswinkks&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;The core issue is clear: cross-cloud file-level I/O (AWS S3 → Azure compute) with many small files is the worst-case scenario for training throughput.&lt;/STRONG&gt;&lt;SPAN&gt; Here's a structured breakdown addressing each of your questions.&lt;/SPAN&gt;&lt;/P&gt;&lt;H3&gt;&lt;SPAN&gt;&lt;STRONG&gt;1. Recommended Architecture for S3 Data from Azure Databricks&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/H3&gt;&lt;P&gt;&lt;SPAN&gt;Your current path S3 → UC Volume (external, read-only) → FUSE mount → Training adds multiple latency layers: cross-cloud network hop (~50-150ms per request), FUSE overhead, and per-file request amplification.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Recommended approaches (best → acceptable):&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE border="1" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="33.333333333333336%"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Strategy&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Latency&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Complexity&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="33.333333333333336%"&gt;&lt;SPAN&gt;Pre-convert to large MDS/WebDataset shards, stage to Azure ADLS, read locally&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;&lt;SPAN&gt;Lowest&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;&lt;SPAN&gt;Medium (one-time ETL&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="33.333333333333336%"&gt;&lt;SPAN&gt;Pre-convert to MDS shards on S3, use Mosaic Streaming with aggressive local caching&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;&lt;SPAN&gt;Medium&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;&lt;SPAN&gt;Medium&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="33.333333333333336%"&gt;&lt;SPAN&gt;UCVolumeDataset with local caching (Databricks AI Runtime)&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;&lt;SPAN&gt;Medium-High (1st epoch), Low (subsequent)&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;&lt;SPAN&gt;Lowest&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="33.333333333333336%"&gt;&lt;SPAN&gt;Direct UC Volume reads (no caching)&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;&lt;SPAN&gt;Highest&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="33.333333333333336%"&gt;&lt;SPAN&gt;Lowest&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;If you truly cannot replicate data to Azure&lt;/STRONG&gt;, option B (MDS shards on S3 + Mosaic Streaming + local cache) or option C (UCVolumeDataset) are your best bets. The key insight is: &lt;STRONG&gt;you must amortize the cross-cloud transfer across epochs via local caching.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;HR /&gt;&lt;H3&gt;&lt;SPAN&gt;&lt;STRONG&gt;2 &amp;amp; 3. Mosaic Streaming Configuration for Cross-Cloud Image Datasets&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/H3&gt;&lt;P&gt;&lt;SPAN&gt;The reason Mosaic Streaming may be slower in your tests is likely &lt;STRONG&gt;shard size too small&lt;/STRONG&gt; and/or &lt;STRONG&gt;predownload too low&lt;/STRONG&gt;, meaning the pipeline stalls waiting for cross-cloud downloads.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Recommended settings for cross-cloud image workloads:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;import streaming

# --- Writing MDS shards ---
# Target 128-256 MB per shard for images (larger = fewer cross-cloud round trips)
# Default is 67 MB — too small for high-latency links
writer = streaming.MDSWriter(
    out="s3://your-bucket/mds-dataset",
    columns={"image": "jpeg", "label": "int"},
    size_limit=256 * 1024 * 1024,  # 256 MB per shard
)
# --- Reading / Training ---
dataset = streaming.StreamingDataset(
    remote="s3://your-bucket/mds-dataset",      # remote source
    local="/local_disk0/mds-cache",              # LOCAL SSD cache (critical!)
    shuffle=True,
    shuffle_block_size=262144,                   # 256K samples per shuffle block
    predownload=16,                              # download 16 batches ahead (increase for high latency!)
    cache_limit="100gb",                         # keep shards locally across epochs
    num_canonical_nodes=None,                    # auto
    batch_size=64,
)
dataloader = streaming.StreamingDataLoader(
    dataset,
    batch_size=64,
    num_workers=8,          # match to CPU cores available for I/O
    prefetch_factor=4,      # each worker prefetches 4 batches
    pin_memory=True,
    persistent_workers=True,  # avoid re-fork overhead between epochs
)&lt;/LI-CODE&gt;&lt;HR /&gt;&lt;H3&gt;&lt;SPAN&gt;&lt;STRONG&gt;4. DataLoader Workers and Prefetching Impact&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/H3&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Yes — significantly&lt;/STRONG&gt;, but only if paired with local caching. Without caching, more workers just amplify the cross-cloud request volume, potentially hitting S3 rate limits or saturating bandwidth without reducing latency.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;With local caching:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN&gt;num_workers=6-8&lt;/SPAN&gt; + &lt;SPAN&gt;prefetch_factor=4&lt;/SPAN&gt; is the Databricks-recommended starting point (from the AI Runtime DataLoader defaults)&lt;/LI&gt;&lt;LI&gt;This overlaps GPU compute with data fetch/decode, hiding I/O latency&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;pin_memory=True&lt;/SPAN&gt; + &lt;SPAN&gt;persistent_workers=True&lt;/SPAN&gt; eliminate per-batch allocation and per-epoch fork overhead&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;If using Databricks Serverless GPU (AI Runtime 5+):&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;from serverless_gpu.data import UCVolumeDataset, DataLoader
# Automatic local caching + optimized prefetch (num_workers=6, prefetch_factor=4 by default)
path_dataset = UCVolumeDataset("/Volumes/catalog/schema/volume/images")
loader = DataLoader(path_dataset, batch_size=64)&lt;/LI-CODE&gt;&lt;P&gt;&lt;SPAN&gt;This is Databricks' purpose-built solution for exactly your scenario — it caches each file to local NVMe on first access and serves from cache for all subsequent reads.&lt;/SPAN&gt;&lt;/P&gt;&lt;HR /&gt;&lt;H3&gt;&lt;SPAN&gt;&lt;STRONG&gt;5. Local Caching vs. Mosaic Streaming for Multi-Epoch Image Training&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/H3&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;For multi-epoch training, local caching wins after epoch 1.&lt;/STRONG&gt; Here's the tradeoff:&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE border="1" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="25%"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Approach&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="25%"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Epoch 1&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="25%"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Epoch 2+&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="25%"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Memory-efficient shuffle&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%"&gt;&lt;SPAN&gt;Mosaic Streaming (MDS)&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="25%"&gt;&lt;SPAN&gt;Moderate (sequential shard download)&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="25%"&gt;&lt;SPAN&gt;Fast (if cache_limit retains shards)&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="25%"&gt;&lt;SPAN&gt;Yes (built-in)&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%"&gt;&lt;SPAN&gt;UCVolumeDataset + local cache&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="25%"&gt;&lt;SPAN&gt;Slower (per-file cross-cloud fetch)&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="25%"&gt;&lt;SPAN&gt;Very fast (local NVMe)&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="25%"&gt;&lt;SPAN&gt;No (must implement)&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="25%"&gt;&lt;SPAN&gt;Manual shutil.copytree upfront&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="25%"&gt;&lt;SPAN&gt;Slowest start (copies everything)&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="25%"&gt;&lt;SPAN&gt;Fastest (fully local)&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="25%"&gt;&lt;SPAN&gt;No&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Recommendation:&lt;/STRONG&gt; If your dataset fits on local disk — use UCVolumeDataset (simplest, no format conversion). If it doesn't fit — use Mosaic Streaming with a generous cache_limit and LRU eviction.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The reason your tests showed UC Volume faster than Mosaic Streaming is likely because:&lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;UC Volume FUSE has internal read-ahead/prefetch that partially hides latency for sequential access&lt;/LI&gt;&lt;LI&gt;Mosaic Streaming's shard download + decompression adds overhead that only pays off when shards are large and &lt;SPAN&gt;predownload&lt;/SPAN&gt; is tuned high&lt;/LI&gt;&lt;LI&gt;If MDS shards were small (default 67 MB), you're making just as many cross-cloud requests but with added decompression cost&lt;/LI&gt;&lt;/OL&gt;&lt;H3&gt;&lt;SPAN&gt;&lt;STRONG&gt;6. Diagnosing the Bottleneck&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/H3&gt;&lt;P&gt;&lt;SPAN&gt;Run these in parallel during training to identify the chokepoint:&lt;/SPAN&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;# === GPU Utilization (should be &amp;gt;90% if data pipeline is healthy) ===
# In a separate cell or terminal:
# !nvidia-smi dmon -s u -d 2  # GPU util every 2 sec

# === DataLoader timing (insert around your training loop) ===
import time
for epoch in range(num_epochs):
    data_time_total = 0
    compute_time_total = 0
    t0 = time.perf_counter()
    for batch in dataloader:
        data_time = time.perf_counter() - t0
        data_time_total += data_time
        
        # --- GPU forward/backward ---
        t1 = time.perf_counter()
        loss = model(batch)
        loss.backward()
        optimizer.step()
        compute_time = time.perf_counter() - t1
        compute_time_total += compute_time
        t0 = time.perf_counter()
    
    print(f"Epoch {epoch}: data_load={data_time_total:.1f}s, "
          f"compute={compute_time_total:.1f}s, "
          f"ratio={data_time_total/(data_time_total+compute_time_total)*100:.1f}% Waiting on data")&lt;/LI-CODE&gt;&lt;H3&gt;&lt;SPAN&gt;&lt;STRONG&gt;Summary: Recommended Action Plan&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/H3&gt;&lt;OL&gt;&lt;LI&gt;&lt;STRONG&gt;Quick win:&lt;/STRONG&gt; Switch to &lt;SPAN&gt;UCVolumeDataset&lt;/SPAN&gt; + &lt;SPAN&gt;serverless_gpu.data.DataLoader&lt;/SPAN&gt; (if on Serverless GPU) or manually pre-copy a subset to &lt;SPAN&gt;/local_disk0/&lt;/SPAN&gt; before training&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Medium-term:&lt;/STRONG&gt; Convert images to MDS with &lt;SPAN&gt;size_limit=256MB&lt;/SPAN&gt;, tune &lt;SPAN&gt;predownload=16&lt;/SPAN&gt;, set &lt;SPAN&gt;cache_limit&lt;/SPAN&gt; to fill local SSD&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Long-term:&lt;/STRONG&gt; If budget allows, stage the MDS shards to an Azure ADLS location (even if the raw images must stay in S3, derived MDS shards might be allowed?) — this eliminates the cross-cloud hop entirely&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;SPAN&gt;The fundamental law here: &lt;STRONG&gt;with cross-cloud access, you're paying ~100ms per request vs ~1ms for local storage. The only real fix is to minimize the number of remote requests (large shards) and cache aggressively (avoid re-fetching across epochs).&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;If my answer was helpful, please consider marking it as accepted solution!&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Aug 2026 19:28:14 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/ml-training-low-file-i-o-and-throughout/m-p/165846#M4666</guid>
      <dc:creator>GabFernandes</dc:creator>
      <dc:date>2026-08-17T19:28:14Z</dc:date>
    </item>
    <item>
      <title>Re: ML Training low File I/O and Throughout</title>
      <link>https://community.databricks.com/t5/machine-learning/ml-training-low-file-i-o-and-throughout/m-p/165872#M4667</link>
      <description>&lt;P&gt;The best and the most detailed explanation on Mosaic Streaming. Thank you&lt;/P&gt;</description>
      <pubDate>Tue, 18 Aug 2026 06:53:45 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/ml-training-low-file-i-o-and-throughout/m-p/165872#M4667</guid>
      <dc:creator>aswinkks</dc:creator>
      <dc:date>2026-08-18T06:53:45Z</dc:date>
    </item>
    <item>
      <title>Re: ML Training low File I/O and Throughout</title>
      <link>https://community.databricks.com/t5/machine-learning/ml-training-low-file-i-o-and-throughout/m-p/165877#M4668</link>
      <description>&lt;P class=""&gt;Yes according to my understanding the cross cloud architecture is the creating the issue,but there is one more noticeable&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;thing &lt;STRONG&gt;Mosaic Streaming is not automatically faster than UC Volume access&lt;/STRONG&gt;.&lt;/P&gt;&lt;P class=""&gt;In your particular workload, I would actually test&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;UC Volume → local NVMe cache → PyTorch&lt;/STRONG&gt; as the primary architecture before investing further in Mosaic Streaming.&lt;/P&gt;&lt;P class=""&gt;&amp;nbsp;&lt;/P&gt;&lt;P class=""&gt;Databricks' current Azure guidance is quite aligned with that. For unstructured data such as images, Databricks recommends &lt;SPAN class=""&gt;UCVolumeDataset&lt;/SPAN&gt;, which copies files from the UC Volume to local storage on first access and serves subsequent epochs from the local cache. Databricks explicitly notes that &lt;SPAN class=""&gt;/Volumes&lt;/SPAN&gt; access is network-bandwidth limited and recommends local caching for multi-epoch training.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 18 Aug 2026 07:31:16 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/ml-training-low-file-i-o-and-throughout/m-p/165877#M4668</guid>
      <dc:creator>snehamore811</dc:creator>
      <dc:date>2026-08-18T07:31:16Z</dc:date>
    </item>
    <item>
      <title>Re: ML Training low File I/O and Throughout</title>
      <link>https://community.databricks.com/t5/machine-learning/ml-training-low-file-i-o-and-throughout/m-p/165964#M4669</link>
      <description>&lt;P&gt;I’d first check whether the bottleneck is S3/network latency or image decoding. For multi-epoch training, local caching + larger MDS shards might help, but the cross-cloud setup could still be the main issue.&lt;/P&gt;</description>
      <pubDate>Wed, 19 Aug 2026 08:37:40 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/ml-training-low-file-i-o-and-throughout/m-p/165964#M4669</guid>
      <dc:creator>ThiamLee</dc:creator>
      <dc:date>2026-08-19T08:37:40Z</dc:date>
    </item>
  </channel>
</rss>

