🌟 Summary (single-line synopsis)
v8.3.251 improves training/integration reliability by initializing Trainer callbacks earlier (so Ultralytics HUB/Platform sees the original data input like ul://...) while also polishing profiling accuracy, tuning stability, and device/dataset/docs support 🧩🚀
📊 Key Changes
- Earlier Trainer callback initialization (PR #23155, @glenn-jocher) 🧠
on_pretrain_routine_startnow runs before dataset resolution (get_dataset()), keeping the originalargs.dataintact (e.g.,ul://URIs).- DDP/world-size detection is computed earlier to ensure integrations start at the right time.
- Platform/Ultralytics HUB training logging made safer for concurrent runs 🧵
- Platform callback state moved from global variables to per-trainer fields, reducing cross-talk when multiple trainings run in the same process.
- Training events now capture cleaner “trainArgs” and can attach a returned
modelIdfor better event correlation.
- Better support for
ul://weights loading 🛰️YOLO(...)._load()now recognizesul://as a valid remote source prefix (alongsidehttp(s)://,rtsp://, etc.).
- More accurate FLOPs/profiling and benchmark reporting 📏
model.info()now accepts animgszargument, and benchmarks use it so FLOPs reflect the actual input size (not always 640).
- Tuner stability improvements 🎛️
Tunernow passessave_dirinto subprocess runs to ensure consistent output paths.- Plotting warns and safely exits if there are no valid fitness values (instead of failing).
- Removed unreachable code in Ray Tune helper (
run_ray_tune) 🧹
- Edge-hardware compatibility tweak: improved Rockchip detection 📟
is_rockchip()now handles SoC strings with suffixes likerk3588-..., improving detection on more boards.
- Docs and dataset quality updates 📚
- New NVIDIA DGX Spark guide for running YOLO11 (including TensorRT tips + benchmarks) 🖥️⚡
- VOC docs add an embedded training video 🎥
- Kaggle docs fix code-block formatting and clarity
- TT100K dataset YAML and conversion script improved (better structure, metadata, and more stable class mapping)
🎯 Purpose & Impact
- More reliable Ultralytics HUB/Platform tracking & reproducibility 🛰️
- Integrations can now record the true dataset reference (like
ul://user/datasets/name) before it’s resolved/rewritten—improving traceability and “training_started” metadata accuracy.
- Integrations can now record the true dataset reference (like
- Fewer issues when running multiple trainings in one environment 🧵
- Per-trainer logging state reduces interference between runs (important for notebooks, orchestration systems, or multi-experiment workflows).
- More trustworthy model profiling numbers 📊
- FLOPs and benchmark tables better match real-world settings when you profile with non-default
imgsz.
- FLOPs and benchmark tables better match real-world settings when you profile with non-default
- Smoother tuning workflows 🔁
- More consistent output directories across subprocess tuning + fewer plotting failures when trials don’t produce valid results.
- Better out-of-the-box experience on specific platforms 🧩
- Improved Rockchip detection and new DGX Spark guidance help users deploy YOLO11 more confidently on edge devices and compact workstations.
What's Changed
- SimpleNameSpace task arg fix by @glenn-jocher in #23148
- Fix code blocks by @glenn-jocher in #23149
- Remove dead code in
run_ray_tuneby @raimbekovm in #23147 - Improve
is_rockchipfunction to handle more device variants by @lakshanthad in #23153 - Respect imgsz in ProfileModels FLOPs calculation by @artest08 in #23151
- Add https://youtu.be/yrHzL8RyY6g to docs by @RizwanMunawar in #23154
- docs: 📝 Add NVIDIA DGX Spark guide to documentation by @onuralpszr in #23144
ultralytics 8.3.251Earlier trainer callback init by @glenn-jocher in #23155
New Contributors
Full Changelog: v8.3.250...v8.3.251