🌟 Summary
This release introduces automatic selection of the most idle GPUs for training, making it easier and smarter to utilize hardware in multi-GPU environments. It also brings improvements to documentation, logging, and code compatibility. 🚀🖥️
📊 Key Changes
- Idle GPU Auto-Selection:
- You can now set
device=-1(ordevice=[-1, -1]) to automatically use the least busy GPU(s) for training. - A new
GPUInfoutility monitors GPU usage, memory, temperature, and power to pick the best GPUs.
- You can now set
- Documentation Enhancements:
- Training docs now explain and show examples for idle GPU selection.
- Added a new reference page for the
autodeviceutility. - Device selection options are clarified in configuration and argument docs.
- Testing & Code Improvements:
- CUDA-related tests now use the new idle GPU selection logic.
- Logging of function arguments is now sorted alphabetically for easier reading.
- Improved compatibility for custom progress bars and device type hints.
🎯 Purpose & Impact
- Smarter Hardware Usage:
- Automatically finds and uses the most available GPUs, saving time and effort—especially helpful on shared servers or when running multiple jobs.
- Easier Training Setup:
- No need to manually check which GPUs are free; just use
device=-1and let Ultralytics handle it.
- No need to manually check which GPUs are free; just use
- Better Documentation & Usability:
- Clearer guides and examples make it easier for all users to take advantage of new features.
- Improved Developer Experience:
- More readable logs and better code compatibility make debugging and development smoother.
Overall, this update makes training with Ultralytics models more efficient, user-friendly, and robust—whether you're a beginner or an expert! 💡✨
What's Changed
- Sorted args alphabetically by @ambitious-octopus in #15989
- Fix
collections.IterableTQDM Warning by @glenn-jocher in #20475 ultralytics 8.3.126CUDA idledeviceauto-assignment by @glenn-jocher in #20451
Full Changelog: v8.3.125...v8.3.126