New Release: Ultralytics v8.3.228

Ultralytics v8.3.228 is live :tada:

Quick summary: This release makes CLIP/MobileCLIP tokenization safer by default with a new truncate option to prevent crashes on long prompts, improves tqdm progress-bar readability for slow loops, upgrades the docs chat/search experience, polishes augmentation docs, and increases ARM CI reliability. :rocket:

Highlights

  • Safer CLIP/MobileCLIP tokenization with truncate=True by default to avoid RuntimeError on long prompts.
  • Clearer tqdm output on slow iterations using seconds-per-iteration formatting (e.g., 1.5s/it).
  • Faster, unified Ultralytics Docs chat + search with theme sync and keyboard shortcut (Cmd/Ctrl + K).
  • Augmentation docs now include the augmentations argument for custom Albumentations pipelines, plus a small typo fix.
  • Cleaner Raspberry Pi CI runners for more reliable ARM builds.

New Features and Improvements

  • CLIP/MobileCLIP tokenization now handles overlength text gracefully by default, while still allowing strict validation with truncate=False for debugging and exact checks.
  • Progress updates are easier to interpret on slower hardware or large models, thanks to smarter tqdm rate formatting.
  • Documentation UX is improved with a native chat widget, theme syncing, a keyboard shortcut for instant access, and a header search button.
  • Augmentation docs cover custom augmentations in the macro table, enabling advanced Albumentations pipelines across detect/segment/pose/obb tasks.
  • Self-hosted ARM CI runners are cleaned pre-build to reduce flakiness and speed up contributor feedback loops.

What’s Changed (PRs and authors)

  • Introduced the native Ultralytics Chat widget in the docs in PR #22639 by glenn-jocher.
  • Documented the augmentations argument for custom Albumentations pipelines in PR #22615 by onuralpszr.
  • Corrected an HSV saturation typo in augmentation docs in PR #22645 by picsalex.
  • Removed the chat.js API URL from extra.js in PR #22648 by glenn-jocher.
  • Updated mkdocs.yml to the latest chat.js configuration in PR #22652 by glenn-jocher.
  • Improved tqdm rate format readability for slow iterations in PR #22660 by fcakyon.
  • Cleaned self-hosted GitHub runners before initial run to reduce flakiness in PR #22654 by lakshanthad.
  • Fixed CLIP token truncation with a safe default truncate=True in PR #22650 by h13-0.

You can review the complete diff by browsing the compare view in the v8.3.227 β†’ v8.3.228 changelog and read the full notes on the v8.3.228 release page.

Example: Safe vs strict tokenization

from ultralytics.nn.text_model import CLIP, MobileCLIPTS

clip_model = CLIP(size="ViT-B/32", device="cpu")
safe_tokens = clip_model.tokenize("a very long caption ...", truncate=True)     # default: avoids errors
strict_tokens = clip_model.tokenize("a very long caption ...", truncate=False)  # strict mode: may raise on overflow

mobileclip = MobileCLIPTS(device="cpu")
tokens = mobileclip.tokenize(["caption 1", "caption 2"])  # safely truncated by default

Upgrade and try it

  • Update with pip install -U ultralytics.
  • Reminder: YOLO11 is our latest stable and recommended model across detection, segmentation, pose, classification, and OBB.

We’d love your feedback

Tell us how the new tokenization defaults and progress-bar readability feel in your workflows, and share suggestions or issues in Ultralytics Discussions. Your feedback helps the community and the team keep improving.