Ultralytics v8.3.251 is live!
Quick overview: v8.3.251 improves training + integration reliability by initializing Trainer callbacks earlier (so Ultralytics Platform logging can see your original data input like ul://...), while also polishing profiling accuracy, tuning stability, and device/dataset/docs support ![]()
![]()
Update now with pip install -U ultralytics ![]()
New Features & Highlights
Earlier Trainer callback initialization (better integrations + traceability)
Callbacks now start before dataset resolution (get_dataset()), keeping the original args.data intact (e.g. ul:// URIs) and computing DDP/world-size earlier so integrations start at the right time.
Merged in PR #23155 by @glenn-jocher ![]()
Safer Platform logging for concurrent runs
Training callback state moved from global variables to per-trainer fields, reducing cross-talk when multiple trainings run in the same process (notebooks/orchestrators/multi-experiment workflows). Events also capture cleaner trainArgs and can attach a returned modelId for better correlation.
Included in PR #23155 by @glenn-jocher
Better support for ul:// weights loading
YOLO(...)._load() now recognizes ul:// as a valid remote source prefix (alongside http(s)://, rtsp://, etc.).
Included in PR #23155 by @glenn-jocher
Improvements
More accurate FLOPs/profiling + benchmark reporting
model.info() now accepts an imgsz argument, and benchmarks use it so FLOPs reflect the actual input size (not always 640).
Merged in PR #23151 by @artest08
(first contribution!)
Tuner stability improvements
Tunernow passessave_dirinto subprocess runs for consistent output paths- Plotting warns and safely exits if no valid fitness values exist
- Removed unreachable code in Ray Tune helper (
run_ray_tune)
Merged via PR #23147 by @raimbekovm
Edge hardware compatibility: improved Rockchip detection
is_rockchip() now handles SoC strings with suffixes like rk3588-..., improving detection across more boards.
Merged in PR #23153 by @lakshanthad
Docs & Dataset Updates

New NVIDIA DGX Spark guide for running Ultralytics YOLO11 (TensorRT tips + benchmarks) in PR #23144 by @onuralpszr
VOC docs add an embedded training video in PR #23154 by @RizwanMunawar
Kaggle docs code-block formatting/clarity improvements in PR #23149 by @glenn-jocher
TT100K dataset YAML + conversion script improvements (structure/metadata/stable class mapping) included in this release
SimpleNamespace task arg fix in PR #23148 by @glenn-jocher
Bug Fixes / Maintenance
- Removed dead code in
run_ray_tunevia PR #23147 by @raimbekovm
Release Links
Check the GitHub release notes in the official Ultralytics v8.3.251 release, and browse all diffs in the full changelog from v8.3.250 β v8.3.251.
Try it and share feedback
If you run training in notebooks, orchestration systems, or multiple concurrent experiments, this release should feel noticeably more reliable ![]()
![]()
Drop your results, regressions, or questions in the threadβcommunity feedback helps us keep Ultralytics YOLO11 tooling sharp for everyone.