Перейти к содержимому

Ultralytics Руководство по управлению моделями HUB-SDK

Добро пожаловать в документацию по управлению моделями Ultralytics HUB-SDK! Если ты только начинаешь управлять моделями машинного обучения или являешься опытным специалистом по изучению данных и ищешь конкретные инструкции по работе, то ты пришел в нужное место. Давай начнем плавное путешествие по функциям HUB-SDK, чтобы ты получил ноу-хау для эффективного управления своими моделями.

Получение модели по ее уникальному идентификатору

В рабочих процессах машинного обучения тебе часто нужно получить доступ к конкретной модели. С помощью Ultralytics HUB-SDK получить модель по ее идентификатору - проще простого. Эта важная функция устанавливает объект модели на основе предоставленного уникального идентификатора, предоставляя тебе полный доступ к деталям и операциям модели.

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

Необходимые условия для проекта и набора данных Access

Перед созданием модели или обучением крайне важно убедиться в наличии проекта и набора данных. Этот простой фрагмент кода поможет тебе убедиться в наличии этих компонентов, инициализировав их объекты. Хотя использование проекта и набора данных для организации обучения модели полезно, важно отметить, что оно не является обязательным. Если какой-либо из идентификаторов отсутствует, то данные объекта (project.data, dataset.data) будет пустым.

from hub_sdk import HUBClient

credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)

project = client.project("<Project ID>")
dataset = client.dataset("<Dataset ID>")

Создай новую модель с пользовательской конфигурацией

Создать новую модель, соответствующую требованиям твоего проекта, проще простого с помощью этой удобной функции. Укажи имя модели и привяжи ее к своему проекту и набору данных. Кроме того, ты можешь настроить конфигурации под свои нужды, например, задать размер партии или устройство, а также многое другое. Обрати внимание, что projectId и datasetId Параметры необязательны, если ты еще не готов привязать модель к проекту или набору данных.

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

Обновление метаданных или конфигурации существующей модели

По мере развития проектов тебе может понадобиться обновить метаданные модели, например, переименовать ее для наглядности. SDK предоставляет метод, позволяющий обновлять эти данные без особых усилий, сводя к минимуму ошибки, допущенные вручную, и экономя твое драгоценное время.

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

Безопасное удаление модели

Удаление модели необратимо, поэтому эту функцию следует использовать с осторожностью. Если ты уверен, что хочешь удалить модель из системы, то следующая команда навсегда удалит указанную модель вместе со всеми связанными с ней данными.

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

По умолчанию метод delete выполняет мягкое удаление, помечая модель как неактивную, но не удаляя ее окончательно. Если ты хочешь выполнить жесткое удаление и навсегда удалить модель вместе с ее связанными данными, ты можешь передать аргумент hard=True как показано в примере выше. Соблюдай осторожность при использовании опции жесткого удаления, так как она является необратимой и приводит к полному удалению указанной модели из системы.

Перечисление всех твоих моделей с помощью пагинации

Ultralytics HUB-SDK упрощает задачу получения списков моделей, реализуя при этом пагинацию для эффективной навигации по потенциально большим коллекциям моделей. Настроив такие аргументы, как page_sizeТы можешь настроить вывод информации под свои нужды, включая возможность просмотра как частных, так и государственных проектов.

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

Загружай и визуализируй показатели тренировок

Чтобы отслеживать и визуализировать показатели производительности твоей модели на протяжении всего процесса тренировки, используй эту функцию для загрузки таких показателей, как потери и точность. Это позволит постоянно следить за прогрессом тренировки и упростит этап анализа.

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

Экспортируй свою модель для развертывания или анализа

Экспортировать модели для различных целей, таких как развертывание или углубленный анализ, еще никогда не было так просто. Укажи нужный тебе формат, и эта функция подготовит модель соответствующим образом. Нужен ли тебе формат Tensorflow или PyTorch, SDK справится с этим без проблем.

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

Получение URL-адреса прямого веса

Иногда тебе может потребоваться прямой доступ к артефактам твоей модели, хранящимся в удаленном хранилище. Эта удобная функция предоставляет URL-адрес для доступа к определенным файлам, например к весам твоей лучшей модели.

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

Загрузите контрольную точку модели

Загрузить контрольную точку модели можно с помощью upload_model Функция. Просто укажи значимость контрольной точки с помощью is_best флаг и эпоху тренировки для наглядности.

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

В заключение хочу сказать, что Ultralytics HUB-SDK предлагает полный набор операций для эффективного управления моделями, позволяя тебе сосредоточиться на достижении наилучших результатов в своих начинаниях в области машинного обучения. Если у тебя возникнут дополнительные вопросы или потребуется помощь, обращайся к нашему гостеприимному сообществу или в службу поддержки. Счастливого моделирования! 🚀

Комментарии