Freigeben über


Bereitstellen von Jamba-Familienmodellen von AI21 mit Azure Machine Learning Studio

Wichtig

Dieses Feature ist zurzeit als öffentliche Preview verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar.

Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

In diesem Artikel erfahren Sie, wie Sie Azure Machine Learning Studio zum Bereitstellen der Jamba-Modellfamilie von AI21 als serverlose API mit nutzungsbasierter Abrechnung verwenden.

Jamba-Familienmodelle sind auf Mamba basierende, produktionstaugliche Large Language Modelle (LLM) von AI21, die die hybride Mamba-Transformer-Architektur von AI21 nutzen. Es ist eine anweisungsoptimierte Version des hybriden strukturierten Zustandsraummodells (State Space Model, SSM) des Jamba-Transformer-Modells von AI21. Im Hinblick auf Qualität und Leistung sind die Jamba-Familienmodelle auf die zuverlässige kommerzielle Nutzung ausgerichtet.

Tipp

Auf dem Blog von AI21 und dem Blog Microsoft Tech Community finden Sie unsere Ankündigungen zur Verfügbarkeit von Jamba-Familienmodellen von AI21 im Azure KI-Modellkatalog.

Bereitstellen der Jamba-Familienmodelle als serverlose API

Bestimmte Modelle aus dem Modellkatalog können als serverlose API mit nutzungsbasierter Abrechnung bereitgestellt werden. So können Sie sie als API nutzen, ohne sie in Ihrem Abonnement zu hosten, und gleichzeitig die für Unternehmen erforderliche Sicherheit und Compliance gewährleisten. Für diese Bereitstellungsoption ist kein Kontingent aus Ihrem Abonnement erforderlich.

Das AI21-Jamba 1.5 Large-Modell, das als serverlose API mit nutzungsbasierter Abrechnung bereitgestellt wird, wird von AI21 über den Microsoft Azure Marketplace angeboten. AI21 kann die Nutzungsbedingungen und Preise dieses Modells jederzeit ändern oder aktualisieren.

Für den Einstieg in die serverlose Bereitstellung von Jamba 1.5 Large sollten Sie sich mit unseren Integrationen mit LangChain, LiteLLM, OpenAI und der Azure-API vertraut machen.

Voraussetzungen

  • Ein Azure-Abonnement mit einer gültigen Zahlungsmethode. Kostenlose Versionen oder Testversionen von Azure-Abonnements funktionieren nicht. Wenn Sie noch kein Azure-Abonnement haben, erstellen Sie zunächst ein kostenpflichtiges Azure-Konto.

  • Einen Azure Machine Learning-Arbeitsbereich und eine Compute-Instanz. Falls Sie nicht über diese Komponenten verfügen, führen Sie die Schritte unter Schnellstart: So erstellen Sie Arbeitsbereichsressourcen, die Sie für die ersten Schritte mit Azure Machine Learning benötigen aus, um sie zu erstellen. Das Angebot für die Modellimplementierung als serverlose API für die Jamba-Modellfamilie ist nur bei Arbeitsbereichen verfügbar, die in den folgenden Regionen erstellt wurden:

    • East US
    • USA (Ost) 2
    • USA Nord Mitte
    • USA Süd Mitte
    • USA (Westen)
    • USA, Westen 3
    • Schweden, Mitte

    Eine Liste der Regionen, die für jedes der Modelle verfügbar sind, die Bereitstellungen mit serverlosen API-Endpunkten unterstützen, finden Sie unter Verfügbarkeit von Regionen für Modelle in serverlosen API-Endpunkten.

  • Die rollenbasierte Zugriffssteuerung in Azure (Azure RBAC) wird verwendet, um Zugriff auf Vorgänge in Azure Machine Learning zu gewähren. Um die Schritte in diesem Artikel auszuführen, muss Ihrem Benutzerkonto die Rolle Besitzer oder Mitwirkender für das Azure-Abonnement zugewiesen werden. Alternativ kann Ihrem Konto eine benutzerdefinierte Rolle zugewiesen werden, die über die folgenden Berechtigungen verfügt:

    • Für das Azure-Abonnement: Zum Abonnieren des Arbeitsbereichs für das Azure Marketplace-Angebot, einmal für jeden Arbeitsbereich pro Angebot:

      • 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
    • Für die Ressourcengruppe: Zum Erstellen und Verwenden der SaaS-Ressource:

      • Microsoft.SaaS/resources/read
      • Microsoft.SaaS/resources/write
    • Für den Arbeitsbereich: Zum Bereitstellen von Endpunkten (die Azure Machine Learning-Rolle „Wissenschaftliche Fachkraft für Daten“ enthält diese Berechtigungen bereits):

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

    Weitere Informationen zu Berechtigungen finden Sie unter Verwalten des Zugriffs auf einen Azure Machine Learning-Arbeitsbereich.

Erstellen einer neuen Bereitstellung

Diese Schritte veranschaulichen die Bereitstellung von AI21 Jamba 1.5 Large- oder AI21 Jamba 1.5 Mini-Modellen. So erstellen Sie eine Bereitstellung

  1. Navigieren Sie zu Azure Machine Learning Studio.

  2. Wählen Sie den Arbeitsbereich aus, in dem Sie Ihre Modelle bereitstellen möchten. Um das Angebot für die Modellimplementierung für serverlose APIs zu verwenden, muss Ihr Arbeitsbereich zu einer der unterstützten Regionen gehören, die in den Voraussetzungen aufgeführt sind.

  3. Suchen und wählen Sie ein AI21-Modell wie AI21 Jamba 1.5 Large oder AI21 Jamba 1.5 Mini oder AI21 Jamba Instruct aus dem Modellkatalog aus.

    Alternativ können Sie die Bereitstellung initiieren, indem Sie zu Ihrem Arbeitsbereich wechseln und Endpunkte>Serverlose Endpunkte>Erstellen auswählen.

  4. Klicken Sie auf der Übersichtsseite des Modells im Modellkatalog auf Bereitstellen, und wählen Sie dann Serverlose API mit Azure KI Inhaltssicherheit aus.

  5. Wählen Sie im Bereitstellungsassistenten den Link zu Azure Marketplace-Nutzungsbedingungen aus, um mehr über die Nutzungsbedingungen zu erfahren.

  6. Sie können auch die Registerkarte Marketplace – Angebotsdetails auswählen, um mehr über die Preise für das ausgewählte Modell zu erfahren.

  7. Wenn Sie das Modell zum ersten Mal im Arbeitsbereich bereitstellen, müssen Sie das jeweilige Angebot für Ihren Arbeitsbereich im Azure Marketplace abonnieren. Für diesen Schritt muss Ihr Konto über die Azure-Abonnementberechtigungen und Ressourcengruppenberechtigungen verfügen, die in den Voraussetzungen aufgeführt sind. Jeder Arbeitsbereich verfügt über ein eigenes Abonnement für das jeweilige Azure Marketplace-Angebot, wodurch Sie die Ausgaben steuern und überwachen können. Wählen Sie Abonnieren und bereitstellen aus. Derzeit können Sie nur eine Bereitstellung für jedes Modell innerhalb eines Arbeitsbereichs haben.

  8. Sobald Sie den Arbeitsbereich für das jeweilige Azure Marketplace-Angebot registriert haben, müssen nachfolgende Bereitstellungen des gleichen Angebots im gleichen Arbeitsbereich nicht mehr abonniert werden. Daher müssen Sie nicht über die Berechtigungen auf Abonnementebene für nachfolgende Bereitstellungen verfügen. Wenn dieses Szenario für Sie gilt, wählen Sie Bereitstellung fortsetzen aus.

  9. Geben Sie der Bereitstellung einen Namen. Dieser Name wird Teil der Bereitstellungs-API-URL. Diese URL muss in jeder Azure-Region eindeutig sein.

  10. Klicken Sie auf Bereitstellen. Warten Sie, bis die Bereitstellung abgeschlossen ist, und Sie werden zur Seite mit serverlosen Endpunkten umgeleitet.

  11. Wählen Sie den Endpunkt aus, um seine Detailseite zu öffnen.

  12. Wählen Sie die Registerkarte Testen aus, um mit der Interaktion mit dem Modell zu beginnen.

  13. Sie können auch die Ziel-URL und den Wert für Geheimer Schlüssel notieren, um die Bereitstellung aufzurufen und Vervollständigungen zu generieren.

  14. Die Details, die URL und die Zugriffsschlüssel des Endpunkts finden Sie unter Arbeitsbereich>Endpunkte>Serverlose Endpunkte.

Informationen zur Abrechnung der Jamba-Modellfamilie von AI21, die als serverlose API mit nutzungs- und tokenbasierter Bezahlung bereitgestellt werden, finden Sie unter Überlegungen zu Kosten und Kontingenten für die Jamba-Modellfamilienbereitstellung als serverlose API.

Verbrauchen der Jamba-Familienmodelle als serverlose API

Sie können Jamba-Familienmodelle wie folgt nutzen:

  1. Wählen Sie im Arbeitsbereich die Optionen Endpunkte>Serverlose Endpunkte aus.
  2. Suchen Sie die von Ihnen erstellte Bereitstellung, und wählen Sie sie aus.
  3. Kopieren Sie die Ziel-URL und die Tokenwerte für den Schlüssel.
  4. Stellen Sie eine API-Anforderung mithilfe der Azure KI-Modellrückschluss-API auf der Route /chat/completions oder mithilfe des Azure-Clients von AI21 auf /v1/chat/completions.

Weitere Informationen zur Verwendung der APIs finden Sie im Abschnitt Referenz.

Referenz für Jamba-Familienmodelle, die als serverlose API bereitgestellt werden

Jamba-Familienmodelle akzeptieren die beiden folgenden APIs:

Azure KI-Modellrückschluss-API

Das Azure KI-Modellrückschluss-API-Schema finden Sie im Artikel Referenz für Chat-Fertigstellungen und unter OpenAPI-Spezifikation kann vom Endpunkt selbst abgerufen werden.

Einteilige und mehrteilige Chats haben dasselbe Anforderungs- und Antwortformat, mit dem Unterschied, dass bei der Beantwortung von Fragen (einteilig) nur eine einzelne Benutzernachricht in der Anforderung enthalten ist, während Sie für mehrteilige Chats den gesamten Chatnachrichtenverlauf in jeder Anforderung mitsenden müssen.

In einem mehrteiligen Chat weist der Nachrichtenthread die folgenden Attribute auf:

  • Enthält alle Nachrichten des Benutzers und des Modells, sortiert von der ältesten bis zur neuesten
  • Nachrichten der Rollen user und assistant folgen abwechselnd aufeinander.
  • Der Nachrichtenthread beginnt optional mit einer Systemnachricht, um Kontext bereitzustellen.

Der folgende Pseudocode ist ein Beispiel für den Nachrichtenstapel des vierten Aufrufs in einer Chatanfrage, der eine anfängliche Systemnachricht enthält.

[
    {"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-Client von AI21

Verwenden Sie die Methode POST, um die Anforderung an die /v1/chat/completions-Route zu senden:

Anforderung

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

Anforderungsschema

Die Nutzlast ist eine JSON-formatierte Zeichenfolge mit den folgenden Parametern:

Schlüssel type Erforderlich/Standard Zulässige Werte Beschreibung
model string J jamba-instruct oder AI21 Jamba 1.5 Large oder AI21 Jamba 1.5 Mini
messages list[object] Y Eine Liste von Objekten, eine pro Nachricht, von der ältesten bis zur neuesten. Die älteste Nachricht kann die system-Rolle haben. Alle späteren Nachrichten müssen abwechselnd die Rollen „user“ und „assistent“ aufweisen. Weiter unten finden Sie die Definition des Nachrichtenobjekts.
max_tokens integer N
4096
0–4096 Die maximale Anzahl von Token, die für jede generierte Antwortnachricht zulässig sind. In der Regel lässt sich die Ausgabelänge am besten begrenzen, indem eine Längenbeschränkung in der Systemaufforderung bereitgestellt wird (z. B. „Beschränken Sie Ihre Antworten auf drei Sätze.“).
temperature float N
1
0.0–2.0 Wie viel Variation in jeder Antwort möglich sein soll. Wird dieser Wert auf 0 festgelegt, wird auf dieselbe Frage jedes Mal garantiert dieselbe Antwort gegeben. Ein höherer Wert erlaubt mehr Variation. Ändert die Verteilung, aus der Token gesampelt werden. Wir empfehlen, dies oder top_p zu ändern, aber nicht beides.
top_p float N
1
0 <Wert<=1.0 Beschränkt den Pool der nächsten Token in jedem Schritt auf das obere N-Perzentil möglicher Token, wobei „1.0“ für den Pool aller möglichen Token steht und „0.01“ für den Pool, der nur die wahrscheinlichsten nächsten Token enthält.
stop string ODER list[string] N
"" Eine Zeichenfolge oder eine Liste von Zeichenfolgen, die das Wort oder die Wörter enthalten, bei dem bzw. denen die API das Generieren von Ausgabe beenden soll. Neue Zeilen sind als "\n" zulässig. Der zurückgegebene Text wird die Beendigungssequenz nicht enthalten.
n integer N
1
1–16 Wie viele Antworten für jeden Prompt generiert werden sollen. Mit Playground von Azure KI Studio gilt n=1 bei der Arbeit an einem Playground mit mehreren Antworten.
stream boolean N
False
True ODER False Ob Streaming aktiviert werden soll. Bei TRUE werden die Ergebnisse tokenweise zurückgegeben. Bei TRUE muss n auf 1 festgelegt sein. Diese Festlegung erfolgt automatisch.

Das messages-Objekt weist die folgenden Felder auf:

  • role: [Zeichenfolge, erforderlich] Der Autor oder Zweck der Nachricht. Einer der folgenden Werte:
    • user: Vom Benutzer bereitgestellte Eingabe. Alle hier angegebenen Anweisungen, die mit den Anweisungen im system-Prompt in Konflikt stehen, haben Vorrang vor den Anweisungen des system-Prompts.
    • assistant: Eine Antwort, die vom Modell generiert wurde
    • system: Anfängliche Anweisungen als allgemeine Leitlinie zu Ton und Stil der generierten Nachricht. Eine anfängliche Systemnachricht ist optional, wird jedoch empfohlen, um eine Leitlinie zum Ton des Chats bereitzustellen. Beispiel: „Sie sind ein hilfreicher Chatbot mit Fachwissen in Geowissenschaften und einem charmanten französischen Akzent.“
  • content: [Zeichenfolge, erforderlich] Der Inhalt der Nachricht.

Anforderungsbeispiel

Einteiliges Beispiel

{
    "model": "jamba-instruct",
    "messages": [
    {
      "role":"user",
      "content":"Who was the first emperor of rome?"}
  ],
    "temperature": 0.8,
    "max_tokens": 512
}

Chatbeispiel (vierte Anforderung, die die dritte Benutzerantwort enthält)

{
  "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
}

Antwortschema

Die Antwort hängt geringfügig davon ab, ob das Ergebnis gestreamt wird oder nicht.

In einem nicht gestreamten Ergebnis werden alle Antworten in einer einzigen Antwort übermittelt, die auch eine usage-Eigenschaft enthält.

In einem gestreamten Ergebnis,

  • enthält jede Antwort ein einzelnes Token im choices-Feld
  • unterscheidet sich die Struktur des choices-Objekts
  • enthält nur die letzte Antwort ein usage-Objekt
  • wird die gesamte Antwort in ein data-Objekt eingeschlossen
  • ist das letzte Antwortobjekt data: [DONE]

Die Antwortnutzlast ist ein Wörterbuch mit den folgenden Feldern:

Schlüssel type Beschreibung
id string Ein eindeutiger Bezeichner für die Anforderung.
model string Der Name des verwendeten Modells
choices list[object] Der vom Modell generierte Antworttext. Bei einer Nichtstreamingantwort handelt es sich um eine Liste mit n-Elementen. Bei einer Streamingantwort handelt es sich um ein einzelnes Objekt, das ein einzelnes Token enthält. Weiter unten folgt die Beschreibung des Objekts.
created integer Der Unix-Zeitstempel (in Sekunden) des Zeitpunkts, zu dem die Vervollständigung erstellt wurde
object string Der Objekttyp, der immer chat.completion ist.
usage object Nutzungsstatistiken für die Vervollständigungsanforderung Details finden Sie weiter unten.

Das choices-Antwortobjekt enthält die modellgenerierte Antwort. Das -Objekt weist die folgenden Felder auf:

Schlüssel type Beschreibung
index integer Nullbasierter Index der Nachricht in der Liste der Nachrichten. Entspricht möglicherweise nicht der Position in der Liste. Bei gestreamten Nachrichten ist dies immer null.
message ODER delta object Die generierte Nachricht (oder das Token in einer Streamingantwort). Derselbe Objekttyp, wie in der Anforderung beschrieben, mit zwei Änderungen:
– In einer Nichtstreamingantwort wird dieses Objekt message genannt.
– In einer Streamingantwort wird es delta genannt und enthält entweder message oder role, aber nie beide.
finish_reason string Der Grund, warum das Modell das Generieren von Token beendet hat:
- stop: Das Modell hat einen natürlichen Beendigungspunkt oder eine bereitgestellte Beendigungssequenz erreicht.
- length: Die maximale Anzahl von Token wurde erreicht.
- content_filter: Die generierte Antwort verletzte eine Richtlinie zu verantwortungsvoller KI.
- null: Nur Streaming. In einer Streamingantwort lauten alle Antworten außer der letzten null.

Das usage-Antwortobjekt enthält die folgenden Felder.

Schlüssel type Wert
prompt_tokens integer Anzahl der Token im Prompt. Beachten Sie, dass die Anzahl der Prompttoken zusätzliche vom System hinzugefügte Token enthält, um die Promptliste, wie vom Modell vorgeschrieben, als einzelne Zeichenfolge zu formatieren. Die Anzahl zusätzlicher Token ist in der Regel proportional zur Anzahl der Nachrichten im Thread und sollte relativ klein sein.
completion_tokens integer Die Anzahl der Token, die in der Vervollständigung generiert werden
total_tokens integer Token insgesamt

Beispiel für eine Nichtstreamingantwort

{
  "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
  }
}

Beispiel für eine Streamingantwort

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]

Kosten und Kontingente

Kosten- und Kontingentüberlegungen zu Jamba-Familienmodellen, die als serverlose API bereitgestellt werden

Die als serverlose API bereitgestellten Jamba-Familienmodelle werden von AI21 im Azure Marketplace angeboten und sind zur Nutzung mit Azure KI Studio integriert. Die Azure Marketplace-Preise werden bei der Bereitstellung oder bei der Optimierung der Modelle angezeigt.

Jedes Mal, wenn ein Arbeitsbereich ein bestimmtes Modellangebot aus dem Azure Marketplace abonniert, wird eine neue Ressource erstellt, um die mit der Nutzung verbundenen Kosten nachzuverfolgen. Die gleiche Ressource wird zum Nachverfolgen der Kosten im Zusammenhang mit Rückschluss und Optimierung verwendet. Es stehen jedoch mehrere Verbrauchseinheiten zur Verfügung, um die einzelnen Szenarien unabhängig voneinander nachzuverfolgen.

Weitere Informationen zum Nachverfolgen von Kosten finden Sie unter Überwachen der Kosten für Modelle, die über den Azure Marketplace angeboten werden.

Das Kontingent wird pro Bereitstellung verwaltet. Jede Bereitstellung hat eine Rate von 200.000 Token pro Minute und 1.000 API-Anforderungen pro Minute. Derzeit wird jedoch eine Bereitstellung pro Modell und Projekt beschränkt. Wenden Sie sich an den Microsoft Azure-Support, wenn die aktuellen Ratenbegrenzungen für Ihre Szenarien nicht ausreichen.

Inhaltsfilterung

Modelle, die als serverlose API bereitgestellt werden, werden durch Azure KI Inhaltssicherheit geschützt. Wenn Azure KI Inhaltssicherheit aktiviert ist, durchlaufen sowohl Prompt als auch Vervollständigung ein Ensemble von Klassifizierungsmodellen, das darauf abzielt, die Ausgabe schädlicher Inhalte zu erkennen und zu verhindern. Das Inhaltsfiltersystem erkennt bestimmte Kategorien potenziell schädlicher Inhalte sowohl in Eingabeeingabeaufforderungen als auch in Ausgabeabschlüssen und ergreift entsprechende Maßnahmen. Erfahren Sie mehr über Azure KI Inhaltssicherheit.