Ultralytics Guida operativa alla gestione dei modelli HUB-SDK
Benvenuti nella documentazione sulla gestione dei modelli di Ultralytics HUB-SDK! Che siate alle prime armi con la gestione dei modelli di apprendimento automatico o che siate dei data scientist esperti alla ricerca di istruzioni operative specifiche, siete nel posto giusto. Intraprendiamo un viaggio agevole attraverso le funzionalità di HUB-SDK, assicurandovi di acquisire il know-how necessario per gestire in modo efficiente i vostri modelli.
Recuperare un modello in base al suo identificatore univoco
Nei flussi di lavoro di apprendimento automatico, spesso è necessario accedere a un modello specifico. Con Ultralytics HUB-SDK, recuperare un modello in base al suo ID è un gioco da ragazzi. Questa funzione essenziale imposta un oggetto modello in base all'identificatore unico fornito, garantendo l'accesso completo ai dettagli e alle operazioni del modello.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
model = client.model("<Model ID>")
print(model.data) # Outputs the model's metadata and configuration
Prerequisiti del progetto Access e del set di dati
Prima di creare o addestrare un modello, è fondamentale assicurarsi della presenza di un progetto e di un set di dati. Questo semplice frammento di codice aiuta a verificare che questi componenti siano disponibili inizializzando i loro oggetti. Sebbene l'utilizzo di un progetto e di un set di dati per organizzare la formazione del modello sia vantaggioso, è importante notare che non è obbligatorio. Se manca uno dei due ID, i dati dell'oggetto (project.data
, dataset.data
) sarà vuoto.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
project = client.project("<Project ID>")
dataset = client.dataset("<Dataset ID>")
Creare un nuovo modello con configurazione personalizzata
La creazione di un nuovo modello adatto alle esigenze del progetto è semplice grazie a questa comoda funzione. È possibile specificare il nome del modello e associarlo al progetto e al set di dati. È inoltre possibile personalizzare le configurazioni in base alle proprie esigenze, ad esempio impostando la dimensione del batch o il dispositivo. Si noti che projectId
e datasetId
sono opzionali se non si è ancora pronti a collegare il modello a un progetto o a un set di dati.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
data = {
"meta": {"name": "sdk model"}, # Give your model a recognizable name
"projectId": project.id, # Associate with an existing project
"datasetId": dataset.id, # Associate with an existing dataset
"config": { # Define hyperparameters and settings
"batchSize": "-1",
"cache": "ram",
"device": "name",
"epochs": "5",
"imageSize": "640",
"patience": "5", # Stop training if validation doesn't improve
},
}
model = client.model()
model.create_model(data) # Creates the model with your specified details
Aggiornamento dei metadati o della configurazione di un modello esistente
Durante lo sviluppo dei progetti, potrebbe essere necessario aggiornare i metadati di un modello, ad esempio rinominandolo per maggiore chiarezza. L'SDK fornisce un metodo per aggiornare questi dettagli senza sforzo, riducendo al minimo gli errori manuali e risparmiando tempo prezioso.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
model = client.model("<Model ID>")
model.update({"meta": {"name": "Updated Model Name"}}) # Renames the specified model
Cancellare un modello in modo sicuro
L'eliminazione di un modello è irreversibile, quindi questa funzione deve essere usata con cautela. Quando si è sicuri di voler rimuovere un modello dal sistema, il comando seguente elimina definitivamente il modello specificato, insieme a tutti i dati associati.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
model = client.model("<Model ID>")
model.delete(hard=True) # Permanently deletes the specified model
Per impostazione predefinita, il metodo delete esegue una cancellazione morbida, contrassegnando il modello come inattivo senza rimuoverlo definitivamente. Se si vuole eseguire un'eliminazione definitiva e rimuovere il modello con i suoi dati associati in modo permanente, si può passare l'argomento hard=True
come mostrato nell'esempio precedente. Fare attenzione quando si utilizza l'opzione di cancellazione definitiva, poiché è irreversibile e comporta la rimozione completa del modello specificato dal sistema.
Elencare tutti i modelli con la paginazione
Ultralytics HUB-SDK semplifica l'operazione di recupero degli elenchi di modelli e implementa la paginazione per navigare in modo efficiente tra collezioni potenzialmente grandi di modelli. Personalizzando argomenti come page_size
È possibile adattare l'output alle proprie esigenze, anche per quanto riguarda la possibilità di visualizzare progetti pubblici e privati.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
model_list = client.model_list(page_size=10) # Fetches the first page with 10 models
print("Current result:", model_list.results) # Displays the current page's models
model_list.next() # Move to the next page of results
print("Next page result:", model_list.results) # Displays the next page's models
model_list.previous() # Return to the previous page of results
print("Previous page result:", model_list.results) # Displays the previous page's models
Caricare e visualizzare le metriche di formazione
Per tracciare e visualizzare le metriche delle prestazioni del modello durante l'intero processo di formazione, utilizzare questa funzione per caricare metriche come la perdita e la precisione. Ciò consente di monitorare costantemente i progressi dell'addestramento e semplifica la fase di analisi.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
model = client.model("<Model ID>")
# Define your metrics structure. Keys are steps, and values are JSON strings of metrics.
data = {
1: '{"loss/1": 0.5, "accuracy/1": 0.85}',
2: '{"loss/2": 0.4, "accuracy/2": 0.88}',
3: '{"loss/3": 0.3, "accuracy/3": 0.90}',
}
model.upload_metrics(data) # Uploads the specified metrics to the model
Esportazione del modello per la distribuzione o l'analisi
Esportare i modelli per vari scopi, come la distribuzione o l'analisi approfondita, non è mai stato così facile. Specificate il formato desiderato e questa funzione preparerà il modello di conseguenza. Che sia necessario un formato Tensorflow o PyTorch , l'SDK lo gestisce senza problemi.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
model = client.model("<Model ID>")
model.export(format="pyTorch") # Exports the model as a PyTorch file
Recuperare un URL di peso diretto
A volte è necessario accedere direttamente agli artefatti del modello archiviati in remoto. Questa comoda funzione fornisce un URL per accedere a file specifici, come i pesi del modello con le migliori prestazioni.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
model = client.model("<Model ID>")
weight_url = model.get_weights_url("best") # or "last"
print("Weight URL link:", weight_url) # Prints out the weight url link
Caricare un punto di controllo del modello
Il caricamento di un checkpoint del modello è semplice con l'opzione upload_model
funzione. È sufficiente indicare l'importanza del punto di controllo con il tasto is_best
e l'epoca di addestramento per maggiore chiarezza.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
model = client.model("<Model ID>")
model.upload_model(is_best=True, epoch=5, weights="<Weight File>") # Uploads the specified model checkpoint
In conclusione, Ultralytics HUB-SDK offre una serie completa di operazioni per la gestione efficace dei modelli, consentendovi di concentrarvi sul raggiungimento dei migliori risultati nei vostri sforzi di apprendimento automatico. In caso di ulteriori domande o di necessità di assistenza, si prega di contattare la nostra accogliente comunità o il team di supporto. Buona modellazione! 🚀