Поделиться через


Развертывание семейных моделей Jamba в AI21 с помощью Azure AI Studio

Внимание

Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

В этой статье вы узнаете, как использовать Azure AI Studio для развертывания семейных моделей Jamba AI21 в качестве бессерверного API с выставлением счетов по мере использования.

Модели семейства Jamba — это рабочая модель Mamba на основе Mamba, которая использует гибридную архитектуру Mamba-Преобразователя ИИ21. Это настраиваемая инструкцией версия гибридной модели пространства состояния ai21 (SSM) преобразователя Jamba. Семейные модели Jamba создаются для надежного коммерческого использования с учетом качества и производительности.

Ознакомьтесь с нашими объявлениями о моделях семейства Jamba в AI21, доступных сейчас в каталоге моделей ИИ Azure с помощью блога AI21 и блога Microsoft Tech Community.

Внимание

Модели, которые находятся в предварительной версии, помечены как предварительный просмотр на своих карточках моделей в каталоге моделей.

Развертывание моделей семейства Jamba в качестве бессерверного API

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

Модель AI21-Jamba 1.5, развернутая как бессерверный API с оплатой по мере использования, предлагается ai21 через Microsoft Azure Marketplace. AI21 может изменять или обновлять условия использования и цены этой модели.

Чтобы приступить к работе с Jamba 1.5, развернутым как бессерверный API, изучите наши интеграции с LangChain, LiteLLM, OpenAI и API Azure.

Необходимые компоненты

  • Подписка Azure с допустимым методом оплаты. Бесплатные или пробные подписки Azure не будут работать. Если у вас нет подписки Azure, создайте платную учетную запись Azure, чтобы начать работу.

  • Центр AI Studio. Развертывание модели бессерверного API для моделей семейства Jamba доступно только в центрах, созданных в этих регионах:

    • Восточная часть США
    • восточная часть США 2
    • Центрально-северная часть США
    • Центрально-южная часть США
    • Западная часть США
    • Западная часть США — 3
    • Центральная Швеция

    Список регионов, доступных для каждой из моделей, поддерживающих развертывания конечных точек API без сервера, см. в разделе "Доступность регионов" для моделей в конечных точках API без сервера.

  • Проект Azure AI Studio.

  • Управление доступом на основе ролей Azure (Azure RBAC) используется для предоставления доступа к операциям в Azure AI Studio. Чтобы выполнить действия, описанные в этой статье, учетной записи пользователя должна быть назначена роль владельца или участника для подписки Azure. Кроме того, вашей учетной записи может быть назначена настраиваемая роль, которая имеет следующие разрешения:

    • В подписке Azure необходимо подписать проект AI Studio на предложение Azure Marketplace один раз для каждого проекта:

      • Microsoft.MarketplaceOrdering/agreements/offers/plans/read
      • Microsoft.MarketplaceOrdering/agreements/offers/plans/sign/action
      • Microsoft.MarketplaceOrdering/offerTypes/publishers/offers/plans/agreements/read
      • Microsoft.Marketplace/offerTypes/publishers/offers/plans/agreements/read
      • Microsoft.SaaS/register/action
    • Для создания и использования ресурса SaaS в группе ресурсов выполните следующие действия:

      • Microsoft.SaaS/resources/read
      • Microsoft.SaaS/resources/write
    • В проекте AI Studio для развертывания конечных точек (роль разработчика ИИ Azure уже содержит эти разрешения):

      • Microsoft.MachineLearningServices/workspaces/marketplaceModelSubscriptions/*
      • Microsoft.MachineLearningServices/workspaces/serverlessEndpoints/*

    Дополнительные сведения о разрешениях см. в статье "Управление доступом на основе ролей" в Azure AI Studio.

Создание развертывания

В этих шагах AI21 Jamba 1.5 Large демонстрируется развертывание или AI21 Jamba 1.5 Mini модели. Чтобы создать развертывание, выполните приведенные действия.

  1. Войдите в Azure AI Studio.

  2. Выберите каталог моделей на левой боковой панели.

  3. Найдите и выберите модель AI21, например AI21 Jamba 1.5 Large или AI21 Jamba 1.5 Mini AI21 Jamba Instruct откройте страницу сведений.

  4. Выберите "Развернуть" , чтобы открыть окно развертывания бессерверного API для модели.

  5. Кроме того, можно инициировать развертывание, начиная с проекта в AI Studio.

    1. В левой боковой панели проекта выберите "Развертывания компонентов>".

    2. Выберите и создайте развертывание.

    3. Найдите и выберите модель AI21, например AI21 Jamba 1.5 Large или AI21 Jamba 1.5 Mini AI21 Jamba Instruct откройте страницу сведений о модели.

    4. Выберите "Подтвердить", чтобы открыть окно развертывания бессерверного API для модели.

  6. Выберите проект, в котором требуется развернуть модель. Чтобы развернуть модели семейства AI21-Jamba, проект должен находиться в одном из регионов, перечисленных в разделе "Предварительные требования".

  7. В мастере развертывания выберите ссылку на Условия Azure Marketplace, чтобы узнать больше об условиях использования.

  8. Перейдите на вкладку "Цены и условия ", чтобы узнать о ценах для выбранной модели.

  9. Нажмите кнопку "Подписаться и развернуть ". Если это первый раз при развертывании модели в проекте, необходимо подписаться на проект для конкретного предложения. На этом шаге требуется, чтобы у вашей учетной записи были разрешения подписки Azure и разрешения группы ресурсов, перечисленные в предварительных требованиях. Каждый проект имеет собственную подписку на конкретное предложение Azure Marketplace модели, что позволяет контролировать расходы и отслеживать расходы. В настоящее время в проекте может быть только одно развертывание для каждой модели.

  10. Подписавшись на проект для конкретного предложения Azure Marketplace, последующие развертывания одного и того же предложения в том же проекте не требуют повторной подписки. Если этот сценарий применяется к вам, есть параметр "Продолжить развертывание " для выбора.

  11. Присвойте развертыванию имя. Это имя становится частью URL-адреса API развертывания. Этот URL-адрес должен быть уникальным в каждом регионе Azure.

  12. Выберите Развернуть. Подождите, пока развертывание будет готово, и вы будете перенаправлены на страницу "Развертывания".

  13. Вернитесь на страницу "Развертывания", выберите развертывание и запишите URL-адрес целевой точки и секретный ключ. Дополнительные сведения об использовании API см. в разделе "Справочник ".

  14. Вы всегда можете найти сведения о конечной точке, URL-адрес и ключи доступа, перейдя на страницу обзора проекта. Затем в левой боковой панели проекта выберите "Развертывания компонентов>".

Сведения о выставлении счетов для моделей семейства AI21-Jamba, развернутых в качестве бессерверного API с выставлением счетов по мере использования токенов, см. в статье "Рекомендации по затратам и квотам" для Jamba Instruct, развернутых как бессерверный API.

Использование семейных моделей Jamba в качестве бессерверного API

Вы можете использовать семейные модели Jamba следующим образом:

  1. На странице обзора проекта перейдите на левую боковую панель и выберите "Развертывания компонентов>".

  2. Найдите и выберите созданное развертывание.

  3. Скопируйте URL-адрес целевого объекта и значение ключа.

  4. Выполните запрос API.

Дополнительные сведения об использовании API см. в разделе справочника.

Справочник по моделям семейства Jamba, развернутым как бессерверный API

Семейные модели Jamba принимают оба этих API:

  • API вывода модели искусственного интеллекта Azure в маршруте /chat/completions для многоэтапного чата или одноэтапного ответа на вопросы. Этот API поддерживается, так как модели семейства Jamba настраиваются для завершения чата.
  • Клиент Azure AI21. Дополнительные сведения о вызываемой конечной точке REST см . в документации ПО REST AI21.

API вывода модели искусственного интеллекта Azure

Схему API вывода модели искусственного интеллекта Azure можно найти в справочнике по завершению чата и спецификации OpenAPI можно получить из самой конечной точки.

Одиночный и многоэтапный чат имеют один и тот же формат запроса и ответа, за исключением того, что ответы на вопросы (один поворот) включают только одно пользовательское сообщение в запросе, в то время как многоэтапный чат требует отправки всей истории сообщений чата в каждом запросе.

В многоэтапном чате поток сообщений имеет следующие атрибуты:

  • Включает все сообщения от пользователя и модели, упорядоченные от старых до самых новых.
  • Сообщения, альтернативные между user и assistant сообщениями ролей
  • При необходимости поток сообщений начинается с системного сообщения для предоставления контекста.

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

[
    {"role": "system", "message": "Some contextual information here"},
    {"role": "user", "message": "User message 1"},
    {"role": "assistant", "message": "System response 1"},
    {"role": "user", "message": "User message 2"},
    {"role": "assistant"; "message": "System response 2"},
    {"role": "user", "message": "User message 3"},
    {"role": "assistant", "message": "System response 3"},
    {"role": "user", "message": "User message 4"}
]

Клиент Azure AI21

Используйте метод POST для отправки запроса /v1/chat/completions в маршрут:

Запросить

POST /v1/chat/completions HTTP/1.1
Host: <DEPLOYMENT_URI>
Authorization: Bearer <TOKEN>
Content-type: application/json

Схема запроса

Полезные данные — это отформатированная строка JSON, содержащая следующие параметры:

Ключ Тип Обязательный/стандартный Допустимые значения Description
model string Y Должно быть jamba-1.5-large или jamba-1.5-minijamba-instruct
messages list[object] Y Список объектов, по одному на сообщение, от старых до самых новых. Самое старое сообщение может быть ролью system. Все последующие сообщения должны быть альтернативными между ролями пользователя и помощника. См. определение объекта сообщения ниже.
max_tokens integer N
4096
0 – 4096 Максимальное количество маркеров, разрешающих каждое созданное сообщение ответа. Как правило, лучший способ ограничить длину выходных данных — предоставить ограничение длины в системном запросе (например, "ограничить ответы на три предложения")
temperature float N
1
0.0 – 2.0 Сколько вариантов следует указать в каждом ответе. При задании этого значения значение равно 0 гарантирует одинаковый ответ на один и тот же вопрос каждый раз. При установке более высокого значения рекомендуется больше вариантов. Изменяет распределение, из которого используются маркеры. Мы рекомендуем изменить это или top_p, но не оба.
top_p float N
1
0 <value<=1.0 Ограничить пул следующих маркеров на каждом шаге до верхнего N-процентиля возможных маркеров, где 1.0 означает пул всех возможных маркеров, а 0,01 означает пул только наиболее вероятных следующих маркеров.
stop string ИЛИ list[string] N
"" Строка или список строк, содержащих слова, где API должен перестать создавать выходные данные. Новые линии разрешены как "\n". Возвращенный текст не будет содержать последовательность остановки.
n integer N
1
1 – 16 Сколько ответов, которые нужно создать для каждого запроса. С помощью детской площадки Azure AI Studio, n=1 так как мы работаем на площадке с несколькими ответами.
stream boolean N
False
True ИЛИ False Следует ли включить потоковую передачу. Если значение true, результаты возвращаются по одному маркеру за раз. Если задано значение true, n должно иметь значение 1, которое автоматически устанавливается.
tools array[tool] N "" Список tools модели может вызываться. В настоящее время в качестве инструмента поддерживаются только функции. Используйте это для предоставления списка функций, для которые модель может создавать входные данные JSON. Поддерживаются не более 128 функций.
response_format object N
null
"" Параметр включения { "type": "json_object" } режима JSON, который гарантирует, что модель создает сообщение является допустимым JSON.
documents array[document] N "" Список соответствующих documents моделей может заземлить ответы, если пользователь явно говорит это в запросе. По сути, выступает в качестве расширения в запросе с возможностью добавления метаданных. каждый документ — это словарь.

Объект messages имеет следующие поля:

  • role: [строка, обязательный] Автор или цель сообщения. Одно из следующих значений:
    • user: входные данные, предоставленные пользователем. Все инструкции, указанные здесь, конфликтующие с инструкциями, указанными в запросе system , имеют приоритет над инструкциями system запроса.
    • assistant: ответ, созданный моделью.
    • system: начальные инструкции для предоставления общих рекомендаций по тону и голосу созданного сообщения. Начальное системное сообщение является необязательным, но рекомендуется предоставить рекомендации по тону чата. Например, "Вы полезный чат-бот с фоном в науке земли и очаровательный французский акцент".
  • content: [строка, обязательный] Содержимое сообщения.

Объект tool имеет следующие поля:

  • type (обязательно; str) — тип средства. В настоящее время поддерживается только функция.
  • function (обязательный; объект) — сведения о функции.
    • name (обязательно; str) — имя вызываемой функции.
    • description (необязательно; str) — описание того, что выполняет функция.
    • parameters (необязательно; объект) — параметры, которые принимает функция, описанная как объект схемы JSON.

Объект document имеет следующие поля:

  • id (необязательно; str) — уникальный идентификатор. будет связан с ссылкой. до 128 символов.
  • content (обязательно; str) — содержимое документа
  • metadata (необязательно; массив Метаданные)
    • key (обязательно; str) — тип метаданных, таких как "author", "date", "url" и т. д. Должно быть то, что модель понимает.
    • value (обязательно; str) — значение метаданных

Пример запроса

Пример с одним поворотом Jamba 1.5 большой и Jamba 1.5 mini

{
   "model":"jamba-1.5-large",  <jamba-1.5-large|jamba-1.5-mini>
   "messages":[
      {
         "role":"user",
         "content":"I need help with your product. Can you please assist?"
      }
   ],
   "temperature":1,
   "top_p":1,
   "n":1,
   "stop":"\n",
   "stream":false
}

Пример с одним поворотом Jamba 1.5 большой и Jamba 1.5 mini с документами

{
   "model":"jamba-1.5-large",  <jamba-1.5-large|jamba-1.5-mini>
   "messages":[
      {
         "role":"system",
         "content":'''<documents>
          # Documents

          You can use the following documents for reference:

          ## Document ID: 0
          Text: Harry Potter is a series of seven fantasy novels written by British author J. K. Rowling.

          ## Document ID: 1
          Text: The Great Gatsby is a novel by American writer F. Scott Fitzgerald.
          </documents>'''},

       {
           "role":"user",
           "content":"Who wrote Harry Potter?"
       }
   ],
   "temperature":0.4,
   "top_p":1,
   "n":1,
   "stop":"\n",
   "stream":false
}

Пример чата (четвертый запрос, содержащий третий ответ пользователя)

{
  "model": "jamba-instruct",
  "messages": [
     {"role": "system",
      "content": "You are a helpful genie just released from a bottle. You start the conversation with 'Thank you for freeing me! I grant you one wish.'"},
     {"role":"user",
      "content":"I want a new car"},
     {"role":"assistant",
      "content":"🚗 Great choice, I can definitely help you with that! Before I grant your wish, can you tell me what kind of car you're looking for?"},
     {"role":"user",
      "content":"A corvette"},
     {"role":"assistant",
      "content":"Great choice! What color and year?"},
     {"role":"user",
      "content":"1963 black split window Corvette"}
  ],
  "n":3
}

Схема ответа

Ответ немного зависит от того, передается ли результат.

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

В потоковом результате,

  • Каждый ответ содержит один маркер в choices поле.
  • Структура choices объектов отличается.
  • Только последний ответ включает usage объект.
  • Весь ответ упаковывается в data объект.
  • Окончательный объект ответа — data: [DONE]это .

Полезные данные ответа — это словарь со следующими полями.

Ключ Тип Описание
id string Уникальный идентификатор запроса.
model string Имя используемой модели.
choices list[object] Текст ответа, созданный моделью. Для ответа, отличного от потоковой передачи, это список с n элементами. Для ответа потоковой передачи это один объект, содержащий один маркер. См. описание объекта ниже.
usage object Статистика использования для запроса завершения. Подробные сведения см. ниже.

Объект choices ответа содержит созданный моделью ответ. Объект имеет следующие поля:

Ключ Тип Описание
index integer Отсчитываемый от нуля индекс сообщения в списке сообщений. Может не соответствовать позиции в списке. Для потоковой передачи сообщений это всегда равно нулю.
message ИЛИ delta object Созданное сообщение (или маркер в ответе потоковой передачи). Один и тот же тип объекта, как описано в запросе с двумя изменениями:
— В ответе, отличном от потоковой передачи, этот объект вызывается message.
— В ответе потоковой передачи он вызывается deltaи содержит либо message или role никогда не оба.
finish_reason string Причина, по которой модель перестала создавать маркеры:
- stop: модель достигла естественной точки остановки или предоставленной последовательности остановки.
- length: достигнуто максимальное число маркеров.
- content_filter: созданный ответ нарушил ответственной политики искусственного интеллекта.
- null: только потоковая передача. В ответе потоковой передачи все ответы, кроме последнего, будут null.

Объект message ответа содержит созданный моделью ответ. Объект имеет следующие поля:

Ключ Тип Описание
role string Роль автора этого сообщения.
content string or null Содержимое сообщения.
tool_calls array or null Вызовы средства, созданные моделью.

Объект tool_calls ответа содержит созданный моделью ответ. Объект имеет следующие поля:

Ключ Тип Описание
id string Идентификатор вызова средства.
type string Тип средства. В настоящее время поддерживается только function .
function object Функция, вызываемая моделью.

Объект function ответа содержит созданный моделью ответ. Объект имеет следующие поля:

Ключ Тип Описание
name string Имя вызываемой функции.
arguments string Аргументы, с которыми вызывается функция, как создается моделью в формате JSON.

Объект usage ответа содержит следующие поля.

Ключ Тип значение
prompt_tokens integer Количество маркеров в запросе. Обратите внимание, что количество маркеров запроса включает дополнительные маркеры, добавленные системой для форматирования списка запросов в одну строку, как это требуется для модели. Число дополнительных маркеров обычно пропорционально количеству сообщений в потоке и должно быть относительно небольшим.
completion_tokens integer Число маркеров, созданных в завершении.
total_tokens integer Всего токенов.

Пример ответа без потоковой передачи

{
  "id":"cmpl-524c73beb8714d878e18c3b5abd09f2a",
  "choices":[
    {
      "index":0,
      "message":{
        "role":"assistant",
        "content":"The human nose can detect over 1 trillion different scents, making it one of the most sensitive smell organs in the animal kingdom."
      },
      "finishReason":"stop"
    }
  ],
  "created": 1717487036,
  "usage":{
    "promptTokens":116,
    "completionTokens":30,
    "totalTokens":146
  }
}

Пример ответа потоковой передачи

data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"role": "assistant"}, "created": 1717487336, "finish_reason": null}]}
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": ""}, "created": 1717487336, "finish_reason": null}]}
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": " The"}, "created": 1717487336, "finish_reason": null}]}
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": " first e"}, "created": 1717487336, "finish_reason": null}]}
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": "mpe"}, "created": 1717487336, "finish_reason": null}]}
... 115 responses omitted for sanity ...
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": "me"}, "created": 1717487336, "finish_reason": null}]}
data: {"id": "cmpl-8e8b2f6556f94714b0cd5cfe3eeb45fc", "choices": [{"index": 0, "delta": {"content": "."}, "created": 1717487336,"finish_reason": "stop"}], "usage": {"prompt_tokens": 107, "completion_tokens": 121, "total_tokens": 228}}
data: [DONE]

Стоимость и квоты

Рекомендации по затратам и квотам для моделей семейства Jamba, развернутых как бессерверный API

Модели семейства Jamba развертываются как бессерверный API и предоставляются AI21 через Azure Marketplace и интегрированы с Студией ИИ Azure для использования. Цены на Azure Marketplace можно найти при развертывании или настройке моделей.

Каждый раз, когда рабочее пространство подписывается на предложение модели из Azure Marketplace, создается новый ресурс для отслеживания затрат, связанных с этим использованием. Тот же ресурс используется для отслеживания затрат, связанных с выводом и настройкой; однако для отслеживания каждого сценария по отдельности можно использовать несколько счетчиков.

Дополнительные сведения о том, как отслеживать затраты, см. в статье Мониторинг затрат для моделей, предлагаемых в Azure Marketplace.

Квота изменяется для каждого развертывания. Каждое развертывание имеет ограничение трафика в 200 000 токенов в минуту и 1000 запросов API в минуту. Однако в настоящее время мы ограничиваем одно развертывание на одну модель для одного проекта. Обратитесь в службу поддержки Microsoft Azure, если текущие ограничения трафика недостаточны для ваших сценариев.

Фильтрация содержимого

Модели, развернутые как бессерверный API, защищены безопасностью содержимого ИИ Azure. С включенной безопасностью содержимого ИИ Azure запрос и завершение проходят через ансамбль моделей классификации, направленных на обнаружение и предотвращение выходных данных вредного содержимого. Система фильтрации содержимого (предварительная версия) обнаруживает и принимает меры по определенным категориям потенциально вредного содержимого как в запросах ввода, так и в завершениях выходных данных. Дополнительные сведения о безопасности содержимого ИИ Azure.