Ultralytics YOLO27:

Экспорт модели YOLO26 в TorchScript для быстрого развертывания#

PyTorch прекращает поддержку TorchScript

PyTorch объявил TorchScript устаревшим и постепенно удаляет его функции. Для новых мобильных и периферийных развертываний используй поддерживаемую интеграцию ExecuTorch. Ultralytics сохраняет обычный экспорт TorchScript для совместимости с устаревшими приложениями на C++.

Для развертывания моделей компьютерного зрения в средах C++ без Python требуется переносимое сериализованное представление. TorchScript обеспечивает такую совместимость для устаревших приложений LibTorch.

Экспортируй модели Ultralytics YOLO26 в TorchScript, чтобы сериализовать их для кроссплатформенной совместимости и упростить развертывание. В этом руководстве мы покажем, как экспортировать модели YOLO26 в формат TorchScript, чтобы тебе было проще использовать их в самых разных приложениях.

Зачем экспортировать модель в TorchScript?#

Обзор процесса сериализации и развертывания модели TorchScript

TorchScript, разработанный создателями PyTorch, — это мощный инструмент для оптимизации и развертывания моделей PyTorch на различных платформах. Экспорт моделей YOLO26 в TorchScript важен для перехода от исследований к реальным приложениям. TorchScript входит в состав PyTorch и упрощает этот переход, позволяя использовать модели PyTorch в средах без поддержки Python.

Процесс включает два метода: трассировку и написание скриптов. Трассировка записывает операции во время выполнения модели, а написание скриптов позволяет определять модели с помощью подмножества Python. Эти методы помогают моделям, таким как YOLO26, продолжать эффективно работать и за пределами привычной среды Python.

Сравнение написания скриптов и трассировки в TorchScript

Модели TorchScript также можно оптимизировать с помощью таких методов, как слияние операторов и усовершенствование использования памяти, чтобы обеспечить эффективное выполнение. Еще одно преимущество экспорта в TorchScript — возможность ускорить выполнение модели на различных аппаратных платформах. В результате создается автономное представление модели PyTorch, готовое к использованию в production и интеграции в среды C++.

Ключевые особенности моделей TorchScript#

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

Обзор ключевых особенностей TorchScript

Вот ключевые особенности, благодаря которым TorchScript полезен разработчикам:

  • Выполнение статического графа: TorchScript использует статическое представление вычислений модели, которое отличается от динамического графа PyTorch. При выполнении статического графа вычислительный граф определяется и компилируется один раз до фактического выполнения, что повышает производительность инференса.

  • Сериализация модели: TorchScript позволяет сериализовать модели PyTorch в формат, не зависящий от платформы. Сериализованные модели можно загружать без исходного кода Python, что позволяет развертывать их в разных средах выполнения.

  • JIT-компиляция: TorchScript использует компиляцию «точно в срок» (JIT), чтобы преобразовывать модели PyTorch в оптимизированное промежуточное представление. JIT компилирует вычислительный граф модели, обеспечивая эффективное выполнение на целевых устройствах.

  • Постепенное преобразование: TorchScript позволяет постепенно преобразовывать отдельные части модели PyTorch в TorchScript. Такая гибкость особенно полезна при работе со сложными моделями или при оптимизации отдельных частей кода.

Варианты развертывания в TorchScript#

Прежде чем перейти к коду для экспорта моделей YOLO26 в формат TorchScript, давай разберемся, где обычно применяются модели TorchScript.

TorchScript предлагает различные варианты развертывания моделей машинного обучения, например:

  • C++ API: наиболее распространенный сценарий использования TorchScript — это C++ API LibTorch, позволяющий загружать и выполнять оптимизированные модели TorchScript непосредственно в приложениях C++. Это идеальный вариант для production-сред, где Python может быть неподходящим или недоступным. C++ API обеспечивает низкие накладные расходы и эффективное выполнение моделей TorchScript, позволяя максимально использовать их потенциал производительности.

  • Развертывание на мобильных устройствах: для инференса с низкой задержкой без подключения к сети и обеспечения конфиденциальности данных на мобильных устройствах используй ExecuTorch — замену TorchScript Mobile от PyTorch.

  • Развертывание в облаке: модели TorchScript можно развертывать на облачных серверах с помощью таких решений, как TorchServe. Оно предоставляет функции версионирования моделей, пакетной обработки и мониторинга метрик для масштабируемого развертывания в production-средах. При облачном развертывании TorchScript модели становятся доступны через API и другие веб-сервисы.

Поддерживаемые задачи#

Экспорт TorchScript поддерживает все семь задач Ultralytics. Семантическая сегментация и оценка глубины доступны только в YOLO26 — единственном семействе, в котором есть соответствующие головы.

Экспорт в TorchScript: преобразование модели YOLO26#

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

Установка#

Чтобы установить необходимый пакет, выполни команду:

Установка
# Install the required package for YOLO26
pip install ultralytics

Подробные инструкции и рекомендации по установке смотри в руководстве по установке Ultralytics. Если при установке пакетов, необходимых для YOLO26, возникнут сложности, решения и советы найдешь в руководстве по распространенным проблемам.

Использование#

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

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

Экспорт
from ultralytics import YOLO

# Загрузи модель YOLO26
model = YOLO("yolo26n.pt")

# Экспорт модели в формат TorchScript
model.export(format="torchscript")  # создает 'yolo26n.torchscript'
Предсказание
from ultralytics import YOLO

# Загрузка экспортированной модели TorchScript
model = YOLO("yolo26n.torchscript")

# Выполнить инференс
results = model("https://ultralytics.com/images/bus.jpg")
Проверка
from ultralytics import YOLO

# Загрузка экспортированной модели TorchScript
model = YOLO("yolo26n.torchscript")

# Проверить точность на наборе данных COCO8
metrics = model.val(data="coco8.yaml")

Аргументы экспорта#

АргументТипПо умолчаниюОписание
formatstr'torchscript'Целевой формат экспортируемой модели, определяющий совместимость с различными средами развертывания.
imgszint или tuple640Заданный размер изображения на входе модели. Можно указать целое число для квадратных изображений или кортеж (height, width) для конкретных размеров.
dynamicboolFalseПозволяет использовать динамические размеры входных данных, повышая гибкость при обработке изображений разных размеров.
quantizeint или strNoneТочность квантования: для 16 (FP16) требуется экспорт на GPU с device=0; 32/не задано означает FP32. Заменяет устаревший флаг half.
nmsbool, необязательноNoneВыбери необработанный выход (None, по умолчанию), встроенный NMS (True) или голову без NMS (False).
batchint1Задаёт размер пакета изображений для инференса экспортированной модели или максимальное количество изображений, которые экспортированная модель будет обрабатывать одновременно в режиме predict.
devicestrNoneЗадает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для Apple silicon (device=mps).

Подробнее о процессе экспорта смотри на странице документации Ultralytics об экспорте.

Развертывание экспортированных моделей YOLO26 TorchScript#

После успешного экспорта моделей Ultralytics YOLO26 в формат TorchScript их можно развертывать. Основной и рекомендуемый первый шаг для запуска модели TorchScript — использовать метод YOLO("model.torchscript"), как показано в предыдущем примере кода. Подробные инструкции по развертыванию моделей TorchScript в других средах смотри в следующих материалах:

Итоги#

В этом руководстве мы рассмотрели процесс экспорта моделей Ultralytics YOLO26 в формат TorchScript. Следуя приведенным инструкциям, ты сможешь оптимизировать модели YOLO26 для повышения производительности и гибко развертывать их на различных платформах и в разных средах.

Дополнительную информацию об использовании смотри в официальной документации TorchScript.

Если хочешь узнать больше о других вариантах интеграции Ultralytics YOLO26, посети нашу страницу руководства по интеграциям. Там ты найдешь множество полезных материалов и рекомендаций.

Часто задаваемые вопросы#

  • Экспорт модели Ultralytics YOLO26 в TorchScript обеспечивает гибкое кроссплатформенное развертывание. TorchScript, часть экосистемы PyTorch, позволяет сериализовать модели, которые затем можно выполнять в средах без поддержки Python. Это делает TorchScript полезным для развертывания моделей в средах C++.

  • Чтобы экспортировать модель YOLO26 в TorchScript, используй следующий пример кода:

    Использование
    from ultralytics import YOLO
    
    # Загрузи модель YOLO26
    model = YOLO("yolo26n.pt")
    
    # Экспорт модели в формат TorchScript
    model.export(format="torchscript")  # создает 'yolo26n.torchscript'
    
    # Загрузка экспортированной модели TorchScript
    torchscript_model = YOLO("yolo26n.torchscript")
    
    # Выполнить инференс
    results = torchscript_model("https://ultralytics.com/images/bus.jpg")

    Дополнительную информацию о процессе экспорта смотри в документации Ultralytics по экспорту.

  • Использование TorchScript для развертывания моделей YOLO26 дает несколько преимуществ:

    • Переносимость: экспортированные модели могут выполняться в приложениях C++ без Python.
    • Оптимизация: TorchScript поддерживает выполнение статического графа и компиляцию «точно в срок» (JIT), что позволяет оптимизировать производительность модели.
    • Интеграция между языками: модели TorchScript можно интегрировать с другими языками программирования, расширяя гибкость и возможности.
    • Сериализация: модели можно сериализовать, чтобы загружать их и выполнять инференс независимо от платформы.

    Подробнее о развертывании читай в документации TorchServe и руководстве по развертыванию на C++. Для развертывания на мобильных устройствах PyTorch теперь рекомендует ExecuTorch: в нем используется отдельный конвейер torch.export() → .pte, а не TorchScript.

  • Чтобы установить необходимый пакет для экспорта моделей YOLO26, выполни следующую команду:

    Установка
    # Install the required package for YOLO26
    pip install ultralytics

    Подробные инструкции смотри в руководстве по установке Ultralytics. Если при установке возникнут проблемы, обратись к руководству по распространенным проблемам.

  • После экспорта моделей YOLO26 в формат TorchScript ты можешь развернуть их на самых разных платформах:

    • API C++: используй LibTorch для производственных сред с низкими накладными расходами и высокой эффективностью.
    • Развертывание на мобильных устройствах: используй ExecuTorch — поддерживаемую PyTorch замену с отдельным конвейером экспорта .pte.
    • Развертывание в облаке: используй такие сервисы, как TorchServe, для масштабируемого развертывания на стороне сервера.

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

Комментарии