PRF
tensorflow
resource_error
ai_generated
partial
ResourceExhaustedError: Failed to allocate memory for prefetch queue
ID: tensorflow/resource-exhausted-dataset-prefetch
80%Fix Rate
84%Confidence
1Evidence
2024-02-20First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| tensorflow 2.14.0 | active | — | — | — |
| tensorflow 2.16.0 | active | — | — | — |
Root Cause
The tf.data pipeline's prefetch buffer consumes too much memory, often due to large dataset elements or excessive prefetch size.
generic中文
tf.data管道的预取缓冲区消耗过多内存,通常是由于数据集元素过大或预取大小过大。
Official Documentation
https://www.tensorflow.org/guide/data_performanceWorkarounds
-
85% success Reduce prefetch buffer size: dataset = dataset.prefetch(buffer_size=tf.data.AUTOTUNE) or set a fixed small value like 1.
Reduce prefetch buffer size: dataset = dataset.prefetch(buffer_size=tf.data.AUTOTUNE) or set a fixed small value like 1.
-
80% success Use dataset.cache() to store processed elements on disk instead of memory.
Use dataset.cache() to store processed elements on disk instead of memory.
-
75% success Reduce element size by batching smaller or using lower-resolution images.
Reduce element size by batching smaller or using lower-resolution images.
中文步骤
Reduce prefetch buffer size: dataset = dataset.prefetch(buffer_size=tf.data.AUTOTUNE) or set a fixed small value like 1.
Use dataset.cache() to store processed elements on disk instead of memory.
Reduce element size by batching smaller or using lower-resolution images.
Dead Ends
Common approaches that don't work:
-
70% fail
Increasing overall GPU memory limit doesn't target prefetch buffer specifically.
-
50% fail
Using more CPU cores for mapping can increase memory usage.