ultralytics 8.3.245 2026 Docs footer and System metrics updates (#23095)

Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>
This commit is contained in:
Glenn Jocher 2026-01-01 02:40:02 +01:00 committed by GitHub
parent 4bd9a71329
commit a77cae6b76
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 14 additions and 2 deletions

View file

@ -70,7 +70,7 @@ theme:
# - search.suggest
# Customization
copyright: <a href="https://www.ultralytics.com/" target="_blank">© 2025 Ultralytics Inc.</a> All rights reserved.
copyright: <a href="https://www.ultralytics.com/" target="_blank">© 2026 Ultralytics Inc.</a> All rights reserved.
extra: # version:
homepage: https://www.ultralytics.com/
# provider: mike # version drop-down menu

View file

@ -1,6 +1,6 @@
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
__version__ = "8.3.244"
__version__ = "8.3.245"
import importlib
import os

View file

@ -90,11 +90,18 @@ def _upload_model_async(model_path, project, name):
def _get_environment_info():
"""Collect comprehensive environment info using existing ultralytics utilities."""
import shutil
import psutil
import torch
from ultralytics import __version__
from ultralytics.utils.torch_utils import get_cpu_info, get_gpu_info
# Get RAM and disk totals
memory = psutil.virtual_memory()
disk_usage = shutil.disk_usage("/")
env = {
"ultralyticsVersion": __version__,
"hostname": socket.gethostname(),
@ -105,6 +112,8 @@ def _get_environment_info():
"cpuCount": os.cpu_count() or 0,
"cpu": get_cpu_info(),
"command": " ".join(sys.argv),
"totalRamGb": round(memory.total / (1 << 30), 1), # Total RAM in GB
"totalDiskGb": round(disk_usage.total / (1 << 30), 1), # Total disk in GB
}
# Git info using cached GIT singleton (no subprocess calls)
@ -258,7 +267,9 @@ def on_train_end(trainer):
# Upload best model (blocking to ensure it completes)
model_path = None
model_size = None
if trainer.best and Path(trainer.best).exists():
model_size = Path(trainer.best).stat().st_size
model_path = _upload_model(trainer.best, project, name)
# Send training complete
@ -270,6 +281,7 @@ def on_train_end(trainer):
"bestEpoch": getattr(trainer, "best_epoch", trainer.epoch),
"bestFitness": trainer.best_fitness,
"modelPath": model_path or str(trainer.best) if trainer.best else None,
"modelSize": model_size,
}
},
project,