Высокопроизводительное обслуживание с помощью сервера вывода Triton
ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)
Узнайте, как использовать сервер вывода NVIDIA Triton в Машинное обучение Azure с сетевыми конечными точками.
Triton — это мультиплатформенное программное обеспечение с открытым исходным кодом, оптимизированное для вывода. Оно поддерживает такие популярные платформы машинного обучения, как TensorFlow, ONNX Runtime, PyTorch, NVIDIA TensorRT и другие. Его можно использовать для рабочих нагрузок центрального и графического процессоров.
Существует в основном два подхода, которые можно использовать для использования моделей Triton при развертывании их в онлайн-конечной точке: развертывание без кода или полное развертывание (перенос собственного контейнера).
- Развертывание без кода для моделей Triton — это простой способ их развертывания, так как для развертывания необходимо использовать только модели Triton.
- Развертывание с полным кодом (перенос собственного контейнера) для моделей Triton является более сложным способом их развертывания, так как у вас есть полный контроль над настройкой конфигураций, доступных для сервера вывода Triton.
Для обоих вариантов сервер вывода Triton выполнит вывод на основе модели Triton, определенной NVIDIA. Например, модели ансамбля можно использовать для более сложных сценариев.
Triton поддерживается как в управляемых сетевых конечных точках, так и в сетевых конечных точках Kubernetes.
В этой статье вы узнаете, как развернуть модель с помощью развертывания без кода для Triton в управляемой сетевой конечной точке. Сведения предоставляются с помощью интерфейса командной строки (командной строки), пакета SDK Для Python версии 2 и Студия машинного обучения Azure. Если вы хотите настроить еще больше с помощью конфигурации сервера вывода Triton, обратитесь к пользовательскому контейнеру для развертывания модели и примера BYOC для Triton (определение развертывания и сквозной скрипт).
Примечание.
Использование контейнера сервера вывода NVIDIA Triton регулируется лицензионным соглашением NVIDIA AI Enterprise Software и может использоваться в течение 90 дней без подписки на корпоративный продукт. Дополнительные сведения см. в разделе NVIDIA AI Enterprise на Машинное обучение Azure.
Необходимые компоненты
Перед выполнением действий, описанных в этой статье, убедитесь, что выполнены следующие необходимые условия:
Azure CLI и расширение
ml
для Azure CLI. Дополнительные сведения см. в разделе Установка, настройка и использование CLI (версия 2).Внимание
В примерах CLI в этой статье предполагается, что вы используете оболочку Bash (или совместимый вариант). Например, из системы Linux или подсистемы Windows для Linux.
Рабочая область Машинного обучения Azure. Если у вас ее нет, выполните действия, описанные в разделе Установка, настройка и использование CLI (версия 2), чтобы создать ее.
Рабочая среда Python 3.8 (или более поздней версии).
Необходимо установить дополнительные пакеты Python для оценки и установить их с помощью приведенного ниже кода. К ним относятся:
- Numpy — массив и библиотека числовых вычислений
- Клиент сервера вывода Triton — упрощает запросы на сервер вывода Triton
- Подушка — библиотека для операций с изображением
- Gevent — сетевая библиотека, используемая при подключении к серверу Triton
pip install numpy
pip install tritonclient[http]
pip install pillow
pip install gevent
Доступ к виртуальным машинам серии NCv3 для подписки Azure.
Внимание
Возможно, потребуется запросить увеличение квоты для подписки, прежде чем можно будет использовать эту серию виртуальных машин. Подробные сведения см. в разделе о серии NCv3.
Для сервера вывода NVIDIA Triton требуется особая структура репозитория модели, где в версиях модели для каждой модели и подкаталогов используются отдельные каталоги. Содержимое подкаталога каждой версии модели определяется типом модели и требованиями серверной части, поддерживающей модель. Просмотр всей структуры репозитория модели https://github.com/triton-inference-server/server/blob/main/docs/user_guide/model_repository.md#model-files
Сведения в этом документе основаны на использовании модели, хранящейся в формате ONNX, поэтому структура каталогов репозитория модели — <model-repository>/<model-name>/1/model.onnx
. В частности, эта модель выполняет идентификацию изображений.
Сведения в этой статье основаны на примерах кода, имеющихся в репозитории azureml-examples. Чтобы выполнять команды локально без копирования и вставки YAML и других файлов, необходимо клонировать репозиторий, а затем заменить каталоги на каталог cli
в репозитории:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples
cd cli
Если вы еще не задали параметры по умолчанию для Azure CLI, сохраните их. Чтобы не указывать значения для подписки, рабочей области и группы ресурсов несколько раз, используйте следующие команды. Замените следующие параметры значениями для конкретной конфигурации:
- Замените
<subscription>
идентификатором своей подписки Azure. - Заменить
<workspace>
рабочей областью машинного обучения Azure. - Замените
<resource-group>
группой ресурсов Azure, содержащей вашу рабочую область. - Замените
<location>
регионом Azure, содержащим вашу рабочую область.
Совет
Для просмотра текущих значений по умолчанию используйте команду az configure -l
.
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Определите конфигурацию развертывания
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)
В этом разделе показано, как развернуть управляемую конечную точку в Сети с помощью Azure CLI с расширением Машинное обучение (версия 2).
Внимание
В развертывании Triton без кода в настоящее время не поддерживается тестирование через локальные конечные точки.
Чтобы избежать ввода пути для нескольких команд, используйте следующую команду, чтобы задать переменную среды
BASE_PATH
. Эта переменная указывает каталог, в котором находятся модель и связанные файлы конфигурации YAML:BASE_PATH=endpoints/online/triton/single-model
Используйте следующую команду, чтобы задать имя конечной точки, которая будет создана. В этом примере для конечной точки создано случайное имя:
export ENDPOINT_NAME=triton-single-endpt-`echo $RANDOM`
Создайте файл конфигурации YAML для конечной точки. В следующем примере настраивается имя и режим проверки подлинности конечной точки. Файл, используемый в следующих командах, находится по пути
/cli/endpoints/online/triton/single-model/create-managed-endpoint.yml
в репозитории azureml-examples, клонированном ранее:create-managed-endpoint.yaml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json name: my-endpoint auth_mode: aml_token
Создайте файл конфигурации YAML для развертывания. В следующем примере выполняется настройка развертывания синим цветом для конечной точки, определенной на предыдущем шаге. Файл, используемый в следующих командах, находится по пути
/cli/endpoints/online/triton/single-model/create-managed-deployment.yml
в репозитории azureml-examples, клонированном ранее:Внимание
Для развертывания без кода (NCD) с помощью Triton необходимо присвоить параметру
type
значениеtriton_model
:type: triton_model
. Дополнительные сведения см. в статье YAML-схема модели для CLI (версия 2).В этом развертывании используется виртуальная машина Standard_NC6s_v3. Возможно, потребуется запросить увеличение квоты для подписки, прежде чем можно будет использовать эту виртуальную машину. Подробные сведения см. в разделе о серии NCv3.
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json name: blue endpoint_name: my-endpoint model: name: sample-densenet-onnx-model version: 1 path: ./models type: triton_model instance_count: 1 instance_type: Standard_NC6s_v3
Развернуть в Azure
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)
Чтобы создать новую конечную точку с помощью конфигурации YAML, используйте следующую команду:
az ml online-endpoint create -n $ENDPOINT_NAME -f $BASE_PATH/create-managed-endpoint.yaml
Чтобы создать развертывание с помощью конфигурации YAML, используйте следующую команду:
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f $BASE_PATH/create-managed-deployment.yaml --all-traffic
Тестирование конечной точки
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)
После завершения развертывания используйте следующую команду, чтобы выполнить запрос оценки к развернутой конечной точке.
Совет
Файл /cli/endpoints/online/triton/single-model/triton_densenet_scoring.py
в репозитории azureml-examples используется для оценки. Изображение, переданное в конечную точку, должно пройти предварительную обработку, чтобы соответствовать требованиям к размеру, типу и формату, а также к последующую обработку для отображения прогнозируемой метки. Компонент triton_densenet_scoring.py
использует библиотеку tritonclient.http
для обмена данными с сервером вывода Triton. Этот файл выполняется на стороне клиента.
Чтобы получить URI оценки конечной точки, используйте следующую команду:
scoring_uri=$(az ml online-endpoint show -n $ENDPOINT_NAME --query scoring_uri -o tsv) scoring_uri=${scoring_uri%/*}
Чтобы получить ключ проверки подлинности, используйте следующую команду:
auth_token=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME --query accessToken -o tsv)
Чтобы оценить данные с помощью конечной точки, используйте следующую команду. Она отправляет изображение павлина (https://aka.ms/peacock-pic) в конечную точку:
python $BASE_PATH/triton_densenet_scoring.py --base_url=$scoring_uri --token=$auth_token --image_path $BASE_PATH/data/peacock.jpg
В результате выполнения скрипта должен отобразиться примерно следующий текст:
Is server ready - True Is model ready - True /azureml-examples/cli/endpoints/online/triton/single-model/densenet_labels.txt 84 : PEACOCK
Удаление конечной точки и модели
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)
После завершения работы с конечной точкой используйте следующую команду, чтобы удалить ее:
az ml online-endpoint delete -n $ENDPOINT_NAME --yes
Чтобы архивировать модель, используйте следующую команду:
az ml model archive --name $MODEL_NAME --version $MODEL_VERSION
Следующие шаги
Дополнительные сведения см. в статьях ниже:
- Развертывание моделей с помощью REST
- Создание и использование управляемых сетевых конечных точек в студии
- Безопасное развертывание сетевых конечных точек
- Порядок автомасштабирования управляемых подключенных конечных точек
- Просмотр затрат на управляемую подключенную конечную точку Машинного обучения Azure
- Доступ к ресурсам Azure с помощью управляемой сетевой конечной точки и управляемого удостоверения
- Устранение неполадок при развертывании и оценке с использованием управляемых сетевых конечных точек (предварительная версия)