How to deploy AI21's Jamba family models with Azure Machine Learning Studio (Jak wdrożyć modele rodziny Narzędzia Jamba w usłudze AI21 za pomocą usługi Azure Machine Learning Studio)
Ważne
Ta funkcja jest obecnie w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone.
Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
Z tego artykułu dowiesz się, jak używać usługi Azure Machine Learning Studio do wdrażania modeli rodziny narzędzia Jamba w usłudze AI21 jako bezserwerowego interfejsu API z rozliczeniami płatności zgodnie z rzeczywistym użyciem.
Modele rodziny Jamba to model AI21 klasy produkcyjnej oparty na modelu mamba dużego języka (LLM), który wykorzystuje hybrydową architekturę mamba-transformer AI21. Jest to wersja instrukcji hybrydowego modelu przestrzeń stanu strukturalnego (SSM, Structured State Space Model) sztucznej inteligencji (SSM) transformatora Jamba. Modele rodziny Jamba są tworzone pod kątem niezawodnego użytku komercyjnego w odniesieniu do jakości i wydajności.
Napiwek
Zapoznaj się z naszymi ogłoszeniami modeli rodziny Jamba firmy AI21 dostępnymi teraz w katalogu modeli sztucznej inteligencji platformy Azure za pośrednictwem bloga AI21 i bloga społeczności technicznej firmy Microsoft.
Wdrażanie modeli rodziny Jamba jako bezserwerowego interfejsu API
Niektóre modele w wykazie modeli można wdrożyć jako bezserwerowy interfejs API z rozliczeniami płatności zgodnie z rzeczywistym użyciem, zapewniając sposób korzystania z nich jako interfejsu API bez hostowania ich w ramach subskrypcji, przy jednoczesnym zachowaniu potrzeb organizacji w zakresie zabezpieczeń i zgodności przedsiębiorstwa. Ta opcja wdrożenia nie wymaga limitu przydziału z subskrypcji.
Model AI21-Jamba 1.5 Large wdrożony jako bezserwerowy interfejs API z rozliczeniami płatności zgodnie z rzeczywistym użyciem jest oferowany przez usługę AI21 za pośrednictwem witryny Microsoft Azure Marketplace. Sztuczna inteligencja AI21 może zmienić lub zaktualizować warunki użytkowania i ceny tego modelu.
Aby rozpocząć pracę z aplikacją Jamba 1.5 wdrożonym jako bezserwerowy interfejs API, zapoznaj się z naszymi integracyjnymi rozwiązaniami LangChain, LiteLLM, OpenAI i interfejsem API platformy Azure.
Wymagania wstępne
Subskrypcja platformy Azure z prawidłową formą płatności. Subskrypcje platformy Azure w wersji bezpłatnej lub próbnej nie będą działać. Jeśli nie masz subskrypcji platformy Azure, utwórz płatne konto platformy Azure, aby rozpocząć.
Obszar roboczy usługi Azure Machine Learning i wystąpienie obliczeniowe. Jeśli nie masz tych zasobów, wykonaj kroki opisane w artykule Szybki start: tworzenie zasobów obszaru roboczego, aby je utworzyć. Oferta wdrażania modelu bezserwerowego interfejsu API dla rodziny modeli Jamba jest dostępna tylko w przypadku obszarów roboczych utworzonych w następujących regionach:
- East US
- Wschodnie stany USA 2
- Północno-środkowe stany USA
- South Central US
- Zachodnie stany USA
- Zachodnie stany USA 3
- Szwecja Środkowa
Aby uzyskać listę regionów dostępnych dla każdego z modeli obsługujących bezserwerowe wdrożenia punktów końcowych interfejsu API, zobacz Dostępność regionalna dla modeli w punktach końcowych bezserwerowego interfejsu API.
Kontrola dostępu na podstawie ról platformy Azure (Azure RBAC): jest używana do udzielania dostępu do operacji w usłudze Azure Machine Learning. Aby wykonać kroki opisane w tym artykule, konto użytkownika musi mieć przypisaną rolę Właściciela lub Współpracownika dla subskrypcji platformy Azure. Możesz też przypisać rolę niestandardową, która ma następujące uprawnienia:
W subskrypcji platformy Azure — do subskrypcji obszaru roboczego oferty witryny Azure Marketplace, raz dla każdego obszaru roboczego, na ofertę:
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
W grupie zasobów — do tworzenia zasobu SaaS i jego użycia:
Microsoft.SaaS/resources/read
Microsoft.SaaS/resources/write
W obszarze roboczym — do wdrażania punktów końcowych (rola badacza danych usługi Azure Machine Learning zawiera już te uprawnienia):
Microsoft.MachineLearningServices/workspaces/marketplaceModelSubscriptions/*
Microsoft.MachineLearningServices/workspaces/serverlessEndpoints/*
Aby uzyskać więcej informacji na temat uprawnień, zobacz Zarządzanie dostępem do obszaru roboczego usługi Azure Machine Learning.
Tworzenie nowego wdrożenia
Te kroki pokazują wdrażanie AI21 Jamba 1.5 Large
modeli lub AI21 Jamba 1.5 Mini
. Aby utworzyć wdrożenie:
Przejdź do usługi Azure Machine Learning Studio.
Wybierz obszar roboczy, w którym chcesz wdrożyć modele. Aby korzystać z oferty wdrażania modelu bezserwerowego interfejsu API, obszar roboczy musi należeć do jednego z obsługiwanych regionów wymienionych w wymaganiach wstępnych.
Wyszukaj i wybierz model AI21, taki jak
AI21 Jamba 1.5 Large
lubAI21 Jamba 1.5 Mini
AI21 Jamba Instruct
z wykazu modeli.Możesz też zainicjować wdrożenie, przechodząc do obszaru roboczego i wybierając pozycję Punkty końcowe Bezserwerowe>>punkty końcowe Utwórz.
Na stronie przeglądu modelu w katalogu modeli wybierz pozycję Wdróż, a następnie pozycję Bezserwerowy interfejs API z bezpieczeństwem zawartości usługi Azure AI.
W kreatorze wdrażania wybierz link do warunków użytkowania witryny Azure Marketplace, aby dowiedzieć się więcej o warunkach użytkowania.
Możesz również wybrać kartę Szczegóły oferty w witrynie Marketplace, aby dowiedzieć się więcej o cenach dla wybranego modelu.
Jeśli po raz pierwszy wdrażasz model w obszarze roboczym, musisz zasubskrybować obszar roboczy dla konkretnej oferty z witryny Azure Marketplace. Ten krok wymaga, aby Twoje konto ma uprawnienia subskrypcji platformy Azure i uprawnienia grupy zasobów wymienione w wymaganiach wstępnych. Każdy obszar roboczy ma własną subskrypcję konkretnej oferty witryny Azure Marketplace, która umożliwia kontrolowanie i monitorowanie wydatków. Wybierz pozycję Subskrybuj i Wdróż. Obecnie można mieć tylko jedno wdrożenie dla każdego modelu w obszarze roboczym.
Po zarejestrowaniu obszaru roboczego dla określonej oferty witryny Azure Marketplace kolejne wdrożenia tej samej oferty w tym samym obszarze roboczym nie wymagają ponownego subskrybowania. W związku z tym nie musisz mieć uprawnień na poziomie subskrypcji dla kolejnych wdrożeń. Jeśli ten scenariusz ma zastosowanie do Ciebie, wybierz pozycję Kontynuuj, aby wdrożyć.
Nadaj wdrożeniu nazwę. Ta nazwa staje się częścią adresu URL interfejsu API wdrażania. Ten adres URL musi być unikatowy w każdym regionie świadczenia usługi Azure.
Wybierz Wdróż. Poczekaj na zakończenie wdrożenia i nastąpi przekierowanie do strony bezserwerowych punktów końcowych.
Wybierz punkt końcowy, aby otworzyć stronę Szczegóły.
Wybierz kartę Test , aby rozpocząć interakcję z modelem.
Możesz również zanotować docelowy adres URL i klucz tajny, aby wywołać wdrożenie i wygenerować uzupełnienia.
Zawsze możesz znaleźć szczegóły, adres URL i klucze dostępu punktu końcowego, przechodząc do punktów końcowych obszaru roboczego>Bezserwerowych punktów końcowych.>
Aby dowiedzieć się więcej o rozliczeniach modeli rodziny AI21-Jamba wdrożonych jako bezserwerowy interfejs API z rozliczeniami opartymi na tokenach zgodnie z rzeczywistym użyciem, zobacz Zagadnienia dotyczące kosztów i przydziałów dla rodziny modeli jamba wdrożonych jako bezserwerowy interfejs API.
Korzystanie z modeli rodziny jamba jako bezserwerowego interfejsu API
Modele rodziny narzędzia Jamba można używać w następujący sposób:
- W obszarze roboczym wybierz pozycję Punkty końcowe>Bezserwerowe punkty końcowe.
- Znajdź i wybierz utworzone wdrożenie.
- Skopiuj docelowy adres URL i wartości tokenu klucza.
- Utwórz żądanie interfejsu API przy użyciu interfejsu API wnioskowania modelu AI platformy Azure na trasie
/chat/completions
lub klienta platformy Azure AI21 na platformie/v1/chat/completions
.
Aby uzyskać więcej informacji na temat korzystania z interfejsów API, zobacz sekcję referencyjną.
Dokumentacja modeli rodziny narzędzia Jamba wdrożonych jako bezserwerowy interfejs API
Modele rodziny narzędzia Jamba akceptują oba te interfejsy API:
- Interfejs API wnioskowania modelu sztucznej inteligencji platformy Azure [Interfejs API wnioskowania modelu AI platformy Azure] na trasie
/chat/completions
na potrzeby czatu wielowrotnego lub jednokrotnego odpowiadania na pytania. Ten interfejs API jest obsługiwany, ponieważ modele rodziny Jamba są dostosowane do ukończenia czatu. - Klient platformy Azure w usłudze AI21. Aby uzyskać więcej informacji na temat wywoływanego punktu końcowego REST, odwiedź dokumentację REST usługi AI21.
Interfejs API wnioskowania modelu AI platformy Azure
Schemat interfejsu API wnioskowania modelu platformy Azure AI można znaleźć w artykule dotyczącym uzupełniania czatów, a specyfikację interfejsu OpenAPI można uzyskać z samego punktu końcowego.
Czat jednokrotny i wieloobrotowy mają ten sam format żądania i odpowiedzi, z tą różnicą, że odpowiadanie na pytania (jednokrotne) obejmuje tylko jedną wiadomość użytkownika w żądaniu, podczas gdy czat wielowrotny wymaga wysłania całej historii wiadomości czatu w każdym żądaniu.
W przypadku czatu wieloetkowego wątek wiadomości ma następujące atrybuty:
- Zawiera wszystkie komunikaty od użytkownika i modelu uporządkowane od najstarszych do najnowszych.
- Komunikaty alternatywne między komunikatami
user
ról iassistant
- Opcjonalnie wątek komunikatu rozpoczyna się od komunikatu systemowego w celu zapewnienia kontekstu.
Poniższy pseudokod jest przykładem stosu komunikatów dla czwartego wywołania w żądaniu czatu, który zawiera początkowy komunikat systemowy.
[
{"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"}
]
Klient platformy Azure AI21
Użyj metody POST
, aby wysłać żądanie do /v1/chat/completions
trasy:
Zażądaj
POST /v1/chat/completions HTTP/1.1
Host: <DEPLOYMENT_URI>
Authorization: Bearer <TOKEN>
Content-type: application/json
Schemat żądania
Payload to ciąg sformatowany w formacie JSON zawierający następujące parametry:
Klucz | Typ | Wymagane/domyślne | Dozwolone wartości | opis |
---|---|---|---|---|
model |
string |
Y | jamba-instruct lub lub AI21 Jamba 1.5 Large AI21 Jamba 1.5 Mini |
|
messages |
list[object] |
Y | Lista obiektów, jedna na wiadomość, od najstarszych do najnowszych. Najstarszą wiadomością może być rola system . Wszystkie późniejsze komunikaty muszą być alternatywne między rolami użytkownika i asystenta. Zapoznaj się z poniższą definicją obiektu komunikatu. |
|
max_tokens |
integer |
N 4096 |
0 – 4096 | Maksymalna liczba tokenów, które mają być dozwolone dla każdego wygenerowanego komunikatu odpowiedzi. Zazwyczaj najlepszym sposobem na ograniczenie długości danych wyjściowych jest zapewnienie limitu długości w wierszu polecenia systemu (na przykład "ograniczenie odpowiedzi do trzech zdań") |
temperature |
float |
N 1 |
0.0 – 2.0 | Ile odmian należy podać w każdej odpowiedzi. Ustawienie tej wartości na 0 gwarantuje tę samą odpowiedź na to samo pytanie za każdym razem. Ustawienie wyższej wartości zachęca do większej zmienności. Modyfikuje dystrybucję, z której są próbkowane tokeny. Zalecamy zmianę tego elementu lub top_p , ale nie obu tych elementów. |
top_p |
float |
N 1 |
0 <wartość<=1.0 | Ogranicz pulę następnych tokenów w każdym kroku do górnej N percentylu możliwych tokenów, gdzie 1,0 oznacza pulę wszystkich możliwych tokenów, a 0,01 oznacza pulę tylko najbardziej prawdopodobnych następnych tokenów. |
stop |
string LUB list[string] |
N |
"" | Ciąg lub lista ciągów zawierających wyrazy, w których interfejs API powinien przestać generować dane wyjściowe. Nowe linie są dozwolone jako "\n". Zwrócony tekst nie będzie zawierać sekwencji zatrzymania. |
n |
integer |
N 1 |
1 – 16 | Ile odpowiedzi do wygenerowania dla każdego monitu. Dzięki placowi zabaw n=1 dla usługi Azure AI Studio pracujemy nad wieloasekrotnym placem zabaw. |
stream |
boolean |
N False |
True LUB False |
Czy włączyć przesyłanie strumieniowe. Jeśli wartość true, wyniki są zwracane po jednym tokenie naraz. Jeśli ustawiono wartość true, n musi mieć wartość 1, która jest ustawiana automatycznie. |
Obiekt messages
ma następujące pola:
role
: [ciąg, wymagany] Autor lub cel wiadomości. Jedna z następujących wartości:user
: dane wejściowe udostępniane przez użytkownika. Wszelkie instrukcje podane w tym miejscu, które powodują konflikt z instrukcjami podanymi wsystem
wierszu polecenia, mają pierwszeństwo przed instrukcjami monitusystem
.assistant
: Odpowiedź wygenerowana przez model.system
: Początkowe instrukcje dotyczące przekazywania ogólnych wskazówek dotyczących tonu i głosu wygenerowanego komunikatu. Początkowa wiadomość systemowa jest opcjonalna, ale zalecana, aby zapewnić wskazówki dotyczące tonu czatu. Na przykład "Jesteś pomocnym czatbotem z doświadczeniem w nauce o ziemi i uroczym francuskim akcentem".
content
: [ciąg, wymagany] Zawartość wiadomości.
Przykład żądania
Przykład pojedynczego obrotu
{
"model": "jamba-instruct",
"messages": [
{
"role":"user",
"content":"Who was the first emperor of rome?"}
],
"temperature": 0.8,
"max_tokens": 512
}
Przykład czatu (czwarte żądanie zawierające odpowiedź trzeciego użytkownika)
{
"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
}
Schemat odpowiedzi
Odpowiedź zależy nieco od tego, czy wynik jest przesyłany strumieniowo, czy nie.
W wyniku bez strumienia wszystkie odpowiedzi są dostarczane razem w jednej odpowiedzi, która zawiera usage
również właściwość.
W wynikach strumieniowych,
- Każda odpowiedź zawiera pojedynczy token w
choices
polu. - Struktura
choices
obiektu jest inna. - Tylko ostatnia odpowiedź zawiera
usage
obiekt. - Cała odpowiedź jest owinięta
data
w obiekcie. - Ostatnim obiektem odpowiedzi jest
data: [DONE]
.
Ładunek odpowiedzi to słownik z następującymi polami.
Klucz | Type | Opis |
---|---|---|
id |
string |
Unikatowy identyfikator żądania. |
model |
string |
Nazwa używanego modelu. |
choices |
list[object ] |
Tekst odpowiedzi wygenerowany przez model. W przypadku odpowiedzi przesyłania strumieniowego jest to lista z elementami n . W przypadku odpowiedzi przesyłania strumieniowego jest to pojedynczy obiekt zawierający pojedynczy token. Zobacz opis obiektu poniżej. |
created |
integer |
Sygnatura czasowa systemu Unix (w sekundach) czasu utworzenia ukończenia. |
object |
string |
Typ obiektu, który jest zawsze chat.completion . |
usage |
object |
Statystyki użycia dla żądania ukończenia. Aby uzyskać szczegółowe informacje, zobacz poniżej. |
Obiekt choices
odpowiedzi zawiera odpowiedź wygenerowaną przez model. Obiekt ma następujące pola:
Klucz | Type | Opis |
---|---|---|
index |
integer |
Zerowy indeks komunikatu na liście komunikatów. Może nie odpowiadać pozycji na liście. W przypadku komunikatów przesyłanych strumieniowo zawsze jest to zero. |
message LUB delta |
object |
Wygenerowany komunikat (lub token w odpowiedzi przesyłania strumieniowego). Ten sam typ obiektu, jak opisano w żądaniu z dwoma zmianami: - W odpowiedzi przesyłania strumieniowego ten obiekt jest nazywany message . - W odpowiedzi przesyłania strumieniowego jest ona nazywana delta , i zawiera wartość message lub role , ale nigdy nie obie. |
finish_reason |
string |
Przyczyna zatrzymania generowania tokenów przez model: - stop : Model osiągnął naturalny punkt zatrzymania lub podaną sekwencję zatrzymania. - length : Osiągnięto maksymalną liczbę tokenów. - content_filter : Wygenerowana odpowiedź naruszyła zasady odpowiedzialnej sztucznej inteligencji. - null : Tylko przesyłanie strumieniowe. W odpowiedzi przesyłania strumieniowego wszystkie odpowiedzi z wyjątkiem ostatniej będzie .null |
Obiekt usage
odpowiedzi zawiera następujące pola.
Klucz | Type | Wartość |
---|---|---|
prompt_tokens |
integer |
Liczba tokenów w wierszu polecenia. Należy pamiętać, że liczba tokenów monitu zawiera dodatkowe tokeny dodane przez system w celu sformatowania listy monitów w jeden ciąg zgodnie z wymaganiami modelu. Liczba dodatkowych tokenów jest zwykle proporcjonalna do liczby komunikatów w wątku i powinna być stosunkowo mała. |
completion_tokens |
integer |
Liczba tokenów wygenerowanych w zakończeniu. |
total_tokens |
integer |
Łączna liczba tokenów. |
Przykład odpowiedzi bez przesyłania strumieniowego
{
"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
}
}
Przykład odpowiedzi przesyłania strumieniowego
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]
Koszt i przydziały
Zagadnienia dotyczące kosztów i limitów przydziału dla modeli rodziny jamba wdrożonych jako bezserwerowy interfejs API
Modele rodziny Jamba są wdrażane jako bezserwerowy interfejs API i są oferowane przez usługę AI21 za pośrednictwem witryny Azure Marketplace i zintegrowane z programem Azure AI Studio do użycia. Cennik witryny Azure Marketplace można uzyskać podczas wdrażania lub dostrajania modeli.
Za każdym razem, gdy obszar roboczy subskrybuje daną ofertę modelu z witryny Azure Marketplace, tworzony jest nowy zasób w celu śledzenia kosztów związanych z jego zużyciem. Ten sam zasób służy do śledzenia kosztów skojarzonych z wnioskowaniem i dostrajania; jednak w ramach śledzenia każdego scenariusza można niezależnie śledzić wiele mierników.
Aby uzyskać więcej informacji na temat śledzenia kosztów, zobacz Monitorowanie kosztów modeli oferowanych w witrynie Azure Marketplace.
Limit przydziału jest zarządzany na wdrożenie. Każde wdrożenie ma limit szybkości wynoszący 200 000 tokenów na minutę i 1000 żądań interfejsu API na minutę. Obecnie jednak ograniczamy jedno wdrożenie na model na projekt. Skontaktuj się z pomocą techniczną platformy Microsoft Azure, jeśli bieżące limity szybkości nie są wystarczające dla Twoich scenariuszy.
Filtrowanie zawartości
Modele wdrożone jako bezserwerowy interfejs API są chronione przez bezpieczeństwo zawartości usługi Azure AI. Po włączeniu bezpieczeństwa zawartości sztucznej inteligencji platformy Azure zarówno monit, jak i ukończenie przechodzą przez zespół modeli klasyfikacji mających na celu wykrywanie i zapobieganie wyjściu szkodliwej zawartości. System filtrowania zawartości (wersja zapoznawcza) wykrywa i podejmuje działania dotyczące określonych kategorii potencjalnie szkodliwej zawartości zarówno w monitach wejściowych, jak i w przypadku uzupełniania danych wyjściowych. Dowiedz się więcej o bezpieczeństwie zawartości usługi Azure AI.