Udostępnij za pośrednictwem


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:

  1. Przejdź do usługi Azure Machine Learning Studio.

  2. 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.

  3. Wyszukaj i wybierz model AI21, taki jak AI21 Jamba 1.5 Large lub AI21 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.

  4. 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.

  5. W kreatorze wdrażania wybierz link do warunków użytkowania witryny Azure Marketplace, aby dowiedzieć się więcej o warunkach użytkowania.

  6. Możesz również wybrać kartę Szczegóły oferty w witrynie Marketplace, aby dowiedzieć się więcej o cenach dla wybranego modelu.

  7. 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.

  8. 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ć.

  9. 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.

  10. Wybierz Wdróż. Poczekaj na zakończenie wdrożenia i nastąpi przekierowanie do strony bezserwerowych punktów końcowych.

  11. Wybierz punkt końcowy, aby otworzyć stronę Szczegóły.

  12. Wybierz kartę Test , aby rozpocząć interakcję z modelem.

  13. Możesz również zanotować docelowy adres URL i klucz tajny, aby wywołać wdrożenie i wygenerować uzupełnienia.

  14. 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:

  1. W obszarze roboczym wybierz pozycję Punkty końcowe>Bezserwerowe punkty końcowe.
  2. Znajdź i wybierz utworzone wdrożenie.
  3. Skopiuj docelowy adres URL i wartości tokenu klucza.
  4. 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 i assistant
  • 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-instructlub lub AI21 Jamba 1.5 LargeAI21 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 w system wierszu polecenia, mają pierwszeństwo przed instrukcjami monitu system .
    • 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.