Развертывание моделей из HuggingFace hub в сетевых конечных точках службы "Машинное обучение" Azure для вывода в режиме реального времени

Microsoft вступила в партнерство с Hugging Face для включения моделей с открытым исходным кодом из Hugging Face Hub в Машинное обучение Azure. Обнимающая лицо является создателем Преобразователей, широко популярной библиотекой для создания больших языковых моделей. Центр моделей Hugging Face с тысячами моделей с открытым кодом. Интеграция с Машинное обучение Azure позволяет развертывать модели с открытым исходным кодом для безопасной и масштабируемой инфраструктуры вывода в Azure. Вы можете искать тысячи моделей преобразователей в каталоге моделей Машинное обучение Azure и развертывать модели для управляемой конечной точки в Интернете с легкостью с помощью интерактивного мастера. После развертывания управляемая конечная точка в Интернете предоставляет безопасный REST API для оценки модели в режиме реального времени.

Примечание.

Модели из Hugging Face применяются к условиям лицензии сторонних производителей, доступных на странице сведений об обнимаемой модели лица. Вы несете ответственность за соблюдение условий лицензии модели.

Преимущества использования сетевых конечных точек для вывода в режиме реального времени

Управляемые сетевые конечные точки в Машинное обучение Azure помогают развертывать модели на мощных компьютерах ЦП и GPU в Azure в режиме "готовый". Управляемые сетевые конечные точки отвечают за обслуживание, масштабирование, безопасность и мониторинг моделей, избавляя вас от накладных расходов на настройку и управление базовой инфраструктурой. Виртуальные машины подготавливаются от вашего имени при развертывании моделей. Вы можете использовать несколько развертываний и разделить трафик или зеркало трафик к этим развертываниям. Зеркальный трафик помогает протестировать новые версии моделей на рабочем трафике, не выпуская их в рабочих средах. Разделение трафика позволяет постепенно увеличивать рабочий трафик до новых версий модели при наблюдении за производительностью. Автоматическое масштабирование позволяет динамически увеличивать или увеличивать ресурсы на основе рабочих нагрузок. Масштабирование можно настроить на основе метрик использования, определенного расписания или сочетания обоих. Пример масштабирования на основе метрик использования заключается в добавлении узлов, если загрузка ЦП превышает 70 %. Пример масштабирования на основе расписания — добавление узлов на основе пиковых рабочих часов.

Развертывание моделей Концентратора HuggingFace с помощью Студии

Чтобы найти модель для развертывания, откройте каталог моделей в Студия машинного обучения Azure. Выберите коллекцию Концентратора HuggingFace. Фильтрация по задачам или лицензиям и поиск моделей. Выберите плитку модели, чтобы открыть страницу модели.

Развертывание модели

Выберите вариант развертывания в режиме реального времени, чтобы открыть диалоговое окно быстрого развертывания. Укажите следующие параметры.

  • Выберите шаблон для GPU или ЦП. Типы экземпляров ЦП хорошо подходят для тестирования, а типы экземпляров GPU обеспечивают более высокую производительность в рабочей среде. Модели, которые являются большими, не соответствуют типу экземпляра ЦП.
  • Выберите тип экземпляра. Этот список экземпляров отфильтровывается до тех, которые, как ожидается, будет развернута модель без нехватки памяти.
  • Выберите количество экземпляров. Для тестирования достаточно одного экземпляра, но рекомендуется рассмотреть два или более экземпляров для рабочей среды.
  • При необходимости укажите конечную точку и имя развертывания.
  • Выберите развертывание. Затем перейдите на страницу конечной точки, которая может занять несколько секунд. Развертывание занимает несколько минут на основе размера модели и типа экземпляра.

Animation showing the location of the model catalog within the Azure Machine learning studio

Примечание. Если вы хотите развернуть в существующей конечной точке, выберите More options из диалогового окна быстрого развертывания и используйте мастер полного развертывания.

Тестирование развернутой модели

После завершения развертывания можно найти конечную точку REST для модели на странице конечных точек, которую можно использовать для оценки модели. Вы найдете параметры для добавления дополнительных развертываний, управления трафиком и масштабирования концентратора конечных точек. Вы также используете вкладку "Тест" на странице конечной точки для тестирования модели с примерами входных данных. На странице модели доступны примеры входных данных. Вы можете найти входной формат, параметры и примеры входных данных в документации по API вывода концентратора распознавания лиц.

Развертывание моделей HuggingFace hub с помощью пакета SDK для Python

Настройка пакета SDK для Python.

Поиск модели для развертывания

Просмотрите каталог моделей в Студия машинного обучения Azure и найдите модель, которую вы хотите развернуть. Скопируйте имя модели, которую вы хотите развернуть. Импорт необходимых библиотек Модели, отображаемые в каталоге, перечислены в реестре HuggingFace . model_id Создайте имя модели, скопированное из каталога моделей и HuggingFace реестра. Вы развертываете модель с последней bert_base_uncased версией в этом примере.

from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
    ManagedOnlineEndpoint,
    ManagedOnlineDeployment,
    Model,
    Environment,
    CodeConfiguration,
)
registry_name = "HuggingFace"
model_name = "bert_base_uncased"
model_id = f"azureml://registries/{registry_name}/models/{model_name}/labels/latest"

Развертывание модели

Создайте конечную точку в Сети. Затем создайте развертывание. Наконец, задайте весь трафик для использования этого развертывания. Вы можете найти оптимальный ЦП или GPU instance_type для модели, открыв диалоговое окно быстрого развертывания на странице модели в каталоге моделей. Убедитесь, что у вас есть квота instance_type .

import time
endpoint_name="hf-ep-" + str(int(time.time())) # endpoint name must be unique per Azure region, hence appending timestamp 
ml_client.begin_create_or_update(ManagedOnlineEndpoint(name=endpoint_name) ).wait()
ml_client.online_deployments.begin_create_or_update(ManagedOnlineDeployment(
    name="demo",
    endpoint_name=endpoint_name,
    model=model_id,
    instance_type="Standard_DS2_v2",
    instance_count=1,
)).wait()
endpoint.traffic = {"demo": 100}
ml_client.begin_create_or_update(endpoint_name).result()

Тестирование развернутой модели

Создайте файл с входными данными, которые можно отправить в конечную точку в Интернете для оценки. Ниже приведен пример входных данных кода для fill-mask типа, так как мы развернули bert-base-uncased модель. Вы можете найти входной формат, параметры и примеры входных данных в документации по API вывода концентратора распознавания лиц.

import json
scoring_file = "./sample_score.json"
with open(scoring_file, "w") as outfile:
    outfile.write('{"inputs": ["Paris is the [MASK] of France.", "The goal of life is [MASK]."]}')   
response = workspace_ml_client.online_endpoints.invoke(
    endpoint_name=endpoint_name,
    deployment_name="demo",
    request_file=scoring_file,
)
response_json = json.loads(response)
print(json.dumps(response_json, indent=2))

Развертывание моделей HuggingFace hub с помощью CLI

Настройка интерфейса командной строки.

Поиск модели для развертывания

Просмотрите каталог моделей в Студия машинного обучения Azure и найдите модель, которую вы хотите развернуть. Скопируйте имя модели, которую вы хотите развернуть. Модели, отображаемые в каталоге, перечислены в реестре HuggingFace . Вы развертываете модель с последней bert_base_uncased версией в этом примере.

Развертывание модели

Вам потребуется model и instance_type для развертывания модели. Вы можете найти оптимальный ЦП или GPU instance_type для модели, открыв диалоговое окно быстрого развертывания на странице модели в каталоге моделей. Убедитесь, что у вас есть квота instance_type .

Модели, отображаемые в каталоге, перечислены в реестре HuggingFace . Вы развертываете модель с последней bert_base_uncased версией в этом примере. Полный model идентификатор ресурса на основе имени модели и реестра azureml://registries/HuggingFace/models/bert-base-uncased/labels/latest. Мы создадим файл, используемый deploy.yml для встроенной az ml online-deployment create команды.

Создайте конечную точку в Сети. Затем создайте развертывание.

# create endpoint
endpoint_name="hf-ep-"$(date +%s)
model_name="bert-base-uncased"
az ml online-endpoint create --name $endpoint_name 

# create deployment file. 
cat <<EOF > ./deploy.yml
name: demo
model: azureml://registries/HuggingFace/models/$model_name/labels/latest
endpoint_name: $endpoint_name
instance_type: Standard_DS3_v2
instance_count: 1
EOF
az ml online-deployment create --file ./deploy.yml --workspace-name $workspace_name --resource-group $resource_group_name

Тестирование развернутой модели

Создайте файл с входными данными, которые можно отправить в конечную точку в Интернете для оценки. Обнимать лицо в качестве примера кода входных данных для fill-mask типа для развернутой bert-base-uncased модели. Вы можете найти входной формат, параметры и примеры входных данных в документации по API вывода концентратора распознавания лиц.

scoring_file="./sample_score.json"
cat <<EOF > $scoring_file
{
  "inputs": [
    "Paris is the [MASK] of France.",
    "The goal of life is [MASK]."
  ]
}
EOF
az ml online-endpoint invoke --name $endpoint_name --request-file $scoring_file

Пример кода модели распознавания лиц

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

Устранение неполадок: ошибки развертывания и неподдерживаемые модели

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

Закрытые модели

Для доступа к модели пользователи должны согласиться поделиться своими контактными данными и принять условия владельцев моделей. Попытка развертывания таких моделей завершится ошибкой KeyError.

Модели, необходимые для запуска удаленного кода

Модели обычно используют код из пакета SDK для преобразователей, но некоторые модели выполняют код из репозитория модели. Таким моделям необходимо задать для параметра trust_remote_codeTrueзначение . Чтобы узнать больше об использовании удаленного кода, перейдите по этой ссылке. Такие модели не поддерживаются при учете безопасности. Попытка развертывания таких моделей завершится ошибкой следующей ошибки: ValueError: Loading <model> requires you to execute the configuration file in that repo on your local machine. Make sure you have read the code there to avoid malicious use, then set the option trust_remote_code=True to remove this error.

Модели с неправильными токенизаторами

Неправильно указанный или отсутствующий маркеризатор в пакете модели может привести к OSError: Can't load tokenizer for <model> ошибке.

отсутствуют необходимые библиотеки;

Для некоторых моделей требуются дополнительные библиотеки Python. При локальном выполнении моделей можно установить отсутствующие библиотеки. Модели, требующие специальных библиотек за пределами стандартных библиотек преобразователей, завершаются ошибкой ModuleNotFoundError или ImportError ошибкой.

Недостаточно памяти

Если вы видите , OutOfQuota: Container terminated due to insufficient memoryпопробуйте использовать с большей instance_type памятью.

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

Где хранятся весовые коэффициенты для моделей?

Модели обнимания лиц представлены в каталоге моделей Машинное обучение Azure через HuggingFace реестр. Обнимающее лицо создает и управляет этим реестром и становится доступным для Машинное обучение Azure в качестве реестра сообщества. Весы модели не размещаются в Azure. Весы загружаются непосредственно из Концентратора распознавания лиц Hugging в сетевые конечные точки в рабочей области при развертывании этих моделей. HuggingFaceреестр в AzureML работает в качестве каталога для обнаружения и развертывания моделей Концентратора HuggingFace в Машинное обучение Azure.

Как развернуть модели для пакетного вывода? Развертывание этих моделей в конечных точках пакетной службы для вывода пакетной службы в настоящее время не поддерживается.

Можно ли использовать модели из реестра в HuggingFace качестве входных данных для заданий, чтобы можно было точно настроить эти модели с помощью пакета SDK для преобразователей? Так как весы модели не хранятся в реестре HuggingFace , вы не можете получить доступ к весу модели с помощью этих моделей в качестве входных данных для заданий.

Разделы справки получить поддержку, если мои развертывания завершаются ошибкой или выводом не работают должным образом?HuggingFace — это реестр сообщества, и это не распространяется на службу поддержки Майкрософт. Просмотрите журналы развертывания и узнайте, связана ли проблема с платформой Машинное обучение Azure или конкретной преобразователями HuggingFace. Обращайтесь в службу поддержки Microsoft по поводу любых проблем с платформой. Например, не удается создать веб-конечную точку или проверку подлинности для REST API конечной точки. Для конкретных проблем с преобразователями используйте форум HuggingFace или поддержку HuggingFace.

Что такое реестр сообщества? Реестры сообщества — это Машинное обучение Azure реестры, созданные доверенными партнерами Машинное обучение Azure и доступными для всех Машинное обучение Azure пользователей.

Где пользователи могут отправлять вопросы относительно Hugging Face в службе "Машинное обучение" Azure? Отправьте свои вопросы на форуме Машинное обучение Azure обсуждения.

Доступность по регионам

Коллекция распознавания лиц в настоящее время доступна только во всех регионах общедоступного облака.