Ultralytics Guía de Operaciones de Gestión de Modelos HUB-SDK
¡Bienvenido a la documentación de Gestión de Modelos de Ultralytics HUB-SDK! Tanto si te estás iniciando en la gestión de modelos de aprendizaje automático como si eres un experimentado científico de datos que busca instrucciones de funcionamiento específicas, has llegado al lugar adecuado. Embarquémonos en un viaje fluido a través de las funciones del HUB-SDK, asegurándonos de que adquieres los conocimientos necesarios para gestionar eficazmente tus modelos.
Recuperar un modelo por su identificador único
En los flujos de trabajo de aprendizaje automático, a menudo necesitas acceder a un modelo concreto. Con Ultralytics HUB-SDK, obtener un modelo por su ID es pan comido. Esta función esencial crea un objeto modelo basado en el identificador único proporcionado, concediéndote acceso completo a los detalles y operaciones del modelo.
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
Requisitos previos del proyecto Access y del conjunto de datos
Antes de crear o entrenar un modelo, es crucial asegurarse de la presencia tanto de un proyecto como de un conjunto de datos. Este sencillo fragmento de código te ayuda a verificar que estos componentes están disponibles inicializando sus objetos. Aunque utilizar un proyecto y un conjunto de datos para organizar el entrenamiento del modelo es beneficioso, es importante tener en cuenta que no es obligatorio. Si falta cualquiera de los dos ID, los datos del objeto (project.data
, dataset.data
) estará vacío.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
project = client.project("<Project ID>")
dataset = client.dataset("<Dataset ID>")
Crear un nuevo modelo con configuración personalizada
Crear un nuevo modelo adaptado a los requisitos de tu proyecto es muy sencillo con esta práctica función. Especifica el nombre del modelo y asócialo a tu proyecto y conjunto de datos. También puedes personalizar las configuraciones para adaptarlas a tus necesidades, como establecer el tamaño del lote o el dispositivo, entre otras. Ten en cuenta que projectId
y datasetId
son opcionales si aún no estás preparado para vincular el modelo a un proyecto o conjunto de datos.
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
Actualizar los metadatos o la configuración de un modelo existente
A medida que se desarrollan los proyectos, puede que necesites actualizar los metadatos de un modelo, como cambiarle el nombre para mayor claridad. El SDK proporciona un método para actualizar estos detalles sin esfuerzo, minimizando los errores manuales y ahorrándote un tiempo precioso.
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
Borrar un modelo con seguridad
Borrar un modelo es irreversible, por lo que esta función debe utilizarse con precaución. Cuando estés seguro de que quieres eliminar un modelo del sistema, la siguiente orden eliminará permanentemente el modelo especificado, junto con todos sus datos asociados.
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
Por defecto, el método de borrado realiza un borrado suave, marcando el modelo como inactivo sin eliminarlo permanentemente. Si quieres realizar un borrado duro y eliminar el modelo junto con sus datos asociados de forma permanente, puedes pasar el argumento hard=True
como se muestra en el ejemplo anterior. Ten cuidado al utilizar la opción de borrado duro, ya que es irreversible y provoca la eliminación completa del modelo especificado del sistema.
Listar todos tus modelos con paginación
Ultralytics HUB-SDK agiliza la tarea de obtener listas de modelos, a la vez que implementa la paginación para navegar eficientemente por colecciones potencialmente grandes de modelos. Personalizando argumentos como page_size
puedes adaptar el resultado a tus necesidades, incluida la posibilidad de ver proyectos privados y públicos.
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
Cargar y visualizar métricas de formación
Para seguir y visualizar las métricas de rendimiento de tu modelo a lo largo del proceso de entrenamiento, utiliza esta función para cargar métricas como la pérdida y la precisión. Esto permite el seguimiento continuo del progreso del entrenamiento y simplifica la fase de análisis.
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
Exporta tu modelo para desplegarlo o analizarlo
Exportar modelos para diversos fines, como la implantación o el análisis en profundidad, nunca ha sido tan fácil. Especifica el formato que necesitas, y esta función preparará el modelo en consecuencia. Tanto si necesitas un formato Tensorflow como PyTorch , el SDK lo gestiona a la perfección.
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
Recuperar una URL de Peso Directo
Ocasionalmente, puedes necesitar acceso directo a los artefactos de tu modelo almacenados remotamente. Esta práctica función proporciona una URL para acceder a archivos específicos, como los pesos de tu modelo de mejor rendimiento.
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
Subir un punto de control del modelo
Cargar un punto de control del modelo es muy sencillo con la función upload_model
función. Indica simplemente el significado del punto de control con el botón is_best
y la época de entrenamiento para mayor claridad.
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
En conclusión, Ultralytics HUB-SDK ofrece un conjunto completo de operaciones para la gestión eficaz de modelos, lo que te permite centrarte en conseguir los mejores resultados en tus esfuerzos de aprendizaje automático. Si tienes más preguntas o necesitas ayuda, ponte en contacto con nuestra acogedora comunidad o con nuestro equipo de soporte. ¡Feliz modelización! 🚀