Merge branch 'main' into exp

exp-a
Laughing-q 12 months ago
commit 1118de06eb
  1. 2
      docs/en/integrations/neural-magic.md
  2. 2
      docs/en/integrations/paddlepaddle.md
  3. 2
      docs/en/yolov5/tutorials/neural_magic_pruning_quantization.md
  4. 2
      ultralytics/__init__.py
  5. 2
      ultralytics/engine/model.py
  6. 33
      ultralytics/hub/session.py

@ -13,7 +13,7 @@ This guide shows you how to deploy YOLOv8 using Neural Magic's DeepSparse, how t
## Neural Magic’s DeepSparse
<p align="center">
<img width="640" src="https://docs.neuralmagic.com/archive/docs/source/infographics/deepsparse.png" alt="Neural Magic’s DeepSparse Overview">
<img width="640" src="https://docs.neuralmagic.com/assets/images/nm-flows-55d56c0695a30bf9ecb716ea98977a95.png" alt="Neural Magic’s DeepSparse Overview">
</p>
[Neural Magic’s DeepSparse](https://neuralmagic.com/deepsparse/) is an inference run-time designed to optimize the execution of neural networks on CPUs. It applies advanced techniques like sparsity, pruning, and quantization to dramatically reduce computational demands while maintaining accuracy. DeepSparse offers an agile solution for efficient and scalable neural network execution across various devices.

@ -80,7 +80,7 @@ Before diving into the usage instructions, it's important to note that while all
model = YOLO('yolov8n.pt')
# Export the model to PaddlePaddle format
model.export(format=''paddle'') # creates '/yolov8n_paddle_model'
model.export(format='paddle') # creates '/yolov8n_paddle_model'
# Load the exported PaddlePaddle model
paddle_model = YOLO('./yolov8n_paddle_model')

@ -52,7 +52,7 @@ Sparse networks with compressed computation, executed depth-wise in cache, allow
Neural Magic's open-source model repository, SparseZoo, contains pre-sparsified checkpoints of each YOLOv5 model. Using SparseML, which is integrated with Ultralytics, you can fine-tune a sparse checkpoint onto your data with a single CLI command.
[Checkout Neural Magic's YOLOv5 documentation for more details](https://docs.neuralmagic.com/use-cases/object-detection/sparsifying).
[Checkout Neural Magic's YOLOv5 documentation for more details](https://docs.neuralmagic.com/computer-vision/object-detection/).
## DeepSparse Usage

@ -1,6 +1,6 @@
# Ultralytics YOLO 🚀, AGPL-3.0 license
__version__ = "8.1.29"
__version__ = "8.1.30"
from ultralytics.data.explorer.explorer import Explorer
from ultralytics.models import RTDETR, SAM, YOLO, YOLOWorld

@ -124,7 +124,7 @@ class Model(nn.Module):
# Check if Ultralytics HUB model from https://hub.ultralytics.com
if self.is_hub_model(model):
# Fetch model from HUB
checks.check_requirements("hub-sdk>0.0.2")
checks.check_requirements("hub-sdk>=0.0.5")
self.session = self._get_hub_session(model)
model = self.session.model_file

@ -170,10 +170,19 @@ class HUBTrainingSession:
return api_key, model_id, filename
def _set_train_args(self, **kwargs):
"""Initializes training arguments and creates a model entry on the Ultralytics HUB."""
def _set_train_args(self):
"""
Initializes training arguments and creates a model entry on the Ultralytics HUB.
This method sets up training arguments based on the model's state and updates them with any additional
arguments provided. It handles different states of the model, such as whether it's resumable, pretrained,
or requires specific file setup.
Raises:
ValueError: If the model is already trained, if required dataset information is missing, or if there are
issues with the provided training arguments.
"""
if self.model.is_trained():
# Model is already trained
raise ValueError(emojis(f"Model is already trained and uploaded to {self.model_url} 🚀"))
if self.model.is_resumable():
@ -182,26 +191,16 @@ class HUBTrainingSession:
self.model_file = self.model.get_weights_url("last")
else:
# Model has no saved weights
def get_train_args(config):
"""Parses an identifier to extract API key, model ID, and filename if applicable."""
return {
"batch": config["batchSize"],
"epochs": config["epochs"],
"imgsz": config["imageSize"],
"patience": config["patience"],
"device": config["device"],
"cache": config["cache"],
"data": self.model.get_dataset_url(),
}
self.train_args = self.model.data.get("train_args") # new response
self.train_args = get_train_args(self.model.data.get("config"))
# Set the model file as either a *.pt or *.yaml file
self.model_file = (
self.model.get_weights_url("parent") if self.model.is_pretrained() else self.model.get_architecture()
)
if not self.train_args.get("data"):
raise ValueError("Dataset may still be processing. Please wait a minute and try again.") # RF fix
if "data" not in self.train_args:
# RF bug - datasets are sometimes not exported
raise ValueError("Dataset may still be processing. Please wait a minute and try again.")
self.model_file = checks.check_yolov5u_filename(self.model_file, verbose=False) # YOLOv5->YOLOv5u
self.model_id = self.model.id

Loading…
Cancel
Save