<#425 Build: Docker layer granularity optimization...
# flyte-github
a
#425 Build: Docker layer granularity optimization plan - 1 Pull request opened by yuhuan130 ## What This Does Optimizes Docker build cache by separating heavy ML dependencies (torch, tensorflow) into their own layers, so adding lightweight packages doesn't trigger full rebuilds. ## Performance ### Heavy Benchmark (torch, tensorflow, transformers) | Metric | Without Optimization | With Optimization | Result | | ---------- | -------------------- | ----------------- | --------------- | | Build Time | 310. 3s (5.2 min) | 8.7s (0.14 min) | 35. 9× faster | ### Standard Benchmark (torch, numpy, pandas) | Metric | Without Optimization | With Optimization | Result | | ---------- | -------------------- | ----------------- | -------------- | | Build Time | 249.7s (4.2 min) | 7.7s | 32.3× faster | ## How It Works
Copy code
BEFORE:  Any change rebuilds everything
┌─────────────────────────────────────┐
│ ALL packages together               │
└─────────────────────────────────────┘

AFTER: Heavy deps cached separately  
┌─────────────────────────────────────┐
│ Heavy:  torch, tensorflow (cached)  │ ← Rarely changes
├─────────────────────────────────────┤
│ Other: pandas, httpx, etc.          │ ← Changes more often
├─────────────────────────────────────┤
│ PythonWheels (bottom layer)         │ ← Compiled once, cached
└─────────────────────────────────────┘
## Key Changes •
image_builder.py
: Added
_optimize_image_layers()
method • Heavy deps list: tensorflow, torch, scikit-learn, etc. • New flag:
optimize_layers=True
(enabled by default, can disable) • 3 benchmark examples showing 32-36× speedup • PythonWheels → Separate bottom layer for faster builds ## Files Changed •
src/flyte/_internal/imagebuild/image_builder.py
•
src/flyte/_image.py
•
tests/flyte/test_image.py
•
examples/image_layer_optimize/
(3 new benchmark files) Total: 6 files modified ## Screenshots [Screenshot 2025-12-30 at 17 57 18](https://private-user-images.githubusercontent.com/115371007/530956688-daf66e9a-d854-4386-97cb-4f73636d10fb.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjcwOTI4ODUsIm5iZiI6MTc2NzA5MjU4NSwicGF0aCI6Ii8xMTUzNzEwMDcvNTMwOTU2Njg4LWRhZjY2ZTlhLWQ4NTQtNDM4Ni05N2NiLTRmNzM2MzZkMTBmYi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUxMjMwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MTIzMFQxMTAzMDVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lM2E3ZmUyMTQ5NDQ4YTljYTgxYjU2OThhNjg5ZWI1OTA3YmE2NDc2M2Y0ZDdmNzQ1YzFmM2Q3NzFlNTM0NTk5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.muSYCIdSvWFhFL_KF8ElkrtF5OJrBsBrwtvpV9yg0Z4) [Screenshot 2025-12-30 at 18 13 42](https://private-user-images.githubusercontent.com/115371007/530956696-ecec7e5f-2d87-431c-b757-235e99ec45b5.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjcwOTI4ODUsIm5iZiI6MTc2NzA5MjU4NSwicGF0aCI6Ii8xMTUzNzEwMDcvNTMwOTU2Njk2LWVjZWM3ZTVmLTJkODctNDMxYy1iNzU3LTIzNWU5OWVjNDViNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUxMjMwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MTIzMFQxMTAzMDVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jZGZkMWNjNmMxYWUyNzc1YzM5OTk2YzI5MjQ1ZDUyYmUxYjNjZjhiM2Q0YWNhMzdiNjQyYjhiMWE3OGUwMGVlJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.aLOQQGwtBVNUxoK8JPFwcUay2pvs2ZavZ4n-pBTArJU) Replaces #422 with cleaner git history flyteorg/flyte-sdk