Como implantar o modelo Jamba-Instruct do AI21 com o Azure AI Studio
Importante
Alguns dos recursos descritos neste artigo podem estar disponíveis apenas na visualização. Essa visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.
Neste artigo, você aprenderá a usar o Azure AI Studio para implantar o modelo Jamba-Instruct do AI21 como uma API sem servidor com cobrança pré-paga.
O modelo Jamba Instruct é o modelo de linguagem grande (LLM) baseado em Mamba de nível de produção do AI21, que aproveita a arquitetura híbrida Mamba-Transformer do AI21. É uma versão ajustada às instruções do transformador híbrido modelo de espaço de estado estruturado (SSM) modelo Jamba do AI21. O modelo Jamba Instruct é construído para uso comercial confiável em relação à qualidade e desempenho.
Implantar o modelo Jamba Instruct como uma API sem servidor
Certos modelos no catálogo de modelos podem ser implantados como uma API sem servidor com faturamento pré-pago, fornecendo uma maneira de consumi-los como uma API sem hospedá-los em sua assinatura, mantendo a segurança corporativa e a conformidade de que as organizações precisam. Essa opção de implantação não exige cota da sua assinatura.
O modelo AI21-Jamba-Instruct implantado como uma API sem servidor com faturamento pré-pago é oferecido pelo AI21 por meio do Microsoft Azure Marketplace. O AI21 pode alterar ou atualizar os termos de uso e preços deste modelo.
Para começar a usar o Jamba Instruct implantado como uma API sem servidor, explore nossas integrações com LangChain, LiteLLM, OpenAI e a API do Azure.
Gorjeta
Veja nossos anúncios do modelo Jamba-Instruct do AI21 disponível agora no Catálogo de Modelos de IA do Azure por meio do blog do AI21 e do Blog da Comunidade de Tecnologia da Microsoft.
Pré-requisitos
Uma subscrição do Azure com um método de pagamento válido. As subscrições gratuitas ou de avaliação do Azure não funcionarão. Se você não tiver uma assinatura do Azure, crie uma conta paga do Azure para começar.
Um hub AI Studio. A oferta de implantação de modelo de API sem servidor para o Jamba Instruct só está disponível com hubs criados nestas regiões:
- E.U.A. Leste
- E.U.A. Leste 2
- E.U.A. Centro-Norte
- E.U.A. Centro-Sul
- E.U.A. Oeste
- EUA Oeste 3
- Suécia Central
Para obter uma lista das regiões disponíveis para cada um dos modelos que suportam implementações de ponto final de API sem servidor, consulte Disponibilidade regional para modelos em pontos finais de API sem servidor.
Um projeto do Azure AI Studio.
Os controles de acesso baseados em função do Azure (Azure RBAC) são usados para conceder acesso a operações no Azure AI Studio. Para executar os passos neste artigo, sua conta de utilizador deve ter atribuída a função de proprietário ou contribuinte para a subscrição do Azure. Em alternativa, pode ser atribuída à sua conta uma função personalizada com as seguintes permissões:
Na subscrição do Azure — para subscrever o projeto AI Studio na oferta do Azure Marketplace, uma vez para cada projeto, por oferta:
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
No grupo de recursos — para criar e utilizar o recurso SaaS:
Microsoft.SaaS/resources/read
Microsoft.SaaS/resources/write
No projeto AI Studio — para implantar pontos de extremidade (a função Desenvolvedor de IA do Azure já contém essas permissões):
Microsoft.MachineLearningServices/workspaces/marketplaceModelSubscriptions/*
Microsoft.MachineLearningServices/workspaces/serverlessEndpoints/*
Para obter mais informações sobre permissões, consulte Controle de acesso baseado em função no Azure AI Studio.
Criar uma nova implantação
Essas etapas demonstram a implantação do AI21-Jamba-Instruct. Para criar uma implantação:
- Entre no Azure AI Studio.
- Selecione Catálogo de modelos na barra lateral esquerda.
- Procure e selecione AI21-Jamba-Instruct para abrir sua página Detalhes.
- Selecione Implantar para abrir uma janela de implantação de API sem servidor para o modelo.
- Como alternativa, você pode iniciar uma implantação iniciando a partir do seu projeto no AI Studio.
- Na barra lateral esquerda do seu projeto, selecione Implantações de componentes>.
- Selecione + Criar implantação.
- Procure e selecione AI21-Jamba-Instruct. para abrir a página Detalhes do modelo.
- Selecione Confirmar para abrir uma janela de implantação de API sem servidor para o modelo.
- Selecione o projeto no qual você deseja implantar seu modelo. Para implantar o modelo AI21-Jamba-Instruct, seu projeto deve estar em uma das regiões listadas na seção Pré-requisitos .
- No assistente de implantação, selecione o link para Termos do Azure Marketplace para saber mais sobre os termos de uso.
- Selecione a guia Preços e termos para saber mais sobre os preços do modelo selecionado.
- Selecione o botão Inscrever-se e Implantar . Se esta é a primeira vez que você implanta o modelo no projeto, você tem que inscrever seu projeto para a oferta específica. Esta etapa requer que sua conta tenha as permissões de assinatura do Azure e as permissões de grupo de recursos listadas nos Pré-requisitos. Cada projeto tem a sua própria subscrição para a oferta específica do Azure Marketplace do modelo, que lhe permite controlar e monitorizar os gastos. Atualmente, você pode ter apenas uma implantação para cada modelo dentro de um projeto.
- Depois de inscrever o projeto para a oferta específica do Azure Marketplace, as implantações subsequentes da mesma oferta no mesmo projeto não exigem assinatura novamente. Se esse cenário se aplicar a você, há uma opção Continuar a implantar para selecionar.
- Dê um nome à implantação. Esse nome se torna parte da URL da API de implantação. Essa URL deve ser exclusiva em cada região do Azure.
- Selecione Implementar. Aguarde até que a implantação esteja pronta e você seja redirecionado para a página Implantações.
- Retorne à página Implantações, selecione a implantação e anote a URL de Destino do ponto de extremidade e a Chave Secreta. Para obter mais informações sobre como usar as APIs, consulte a seção Referência .
- Você sempre pode encontrar os detalhes, a URL e as chaves de acesso do ponto de extremidade navegando até a página de visão geral do projeto. Em seguida, na barra lateral esquerda do seu projeto, selecione Implantações de componentes>.
Para saber mais sobre o faturamento do modelo AI21-Jamba-Instruct implantado como uma API sem servidor com faturamento baseado em token pré-pago, consulte Considerações de custo e cota para Jamba Instruct implantado como uma API sem servidor.
Consuma o Jamba Instruct como uma API sem servidor
Você pode consumir os modelos Jamba Instruct da seguinte maneira:
Na página Visão geral do projeto, vá para a barra lateral esquerda e selecione Implantações de componentes>.
Localize e selecione a implantação que você criou.
Copie o URL de destino e o valor da chave .
Faça uma solicitação de API.
Para obter mais informações sobre como usar as APIs, consulte a seção de referência .
Referência para Jamba Instruct implantado como uma API sem servidor
Os modelos Jamba Instruct aceitam ambas as APIs:
- A API de Inferência de Modelo de IA do Azure na rota
/chat/completions
para bate-papo de várias voltas ou resposta a perguntas de turno único. Esta API é suportada porque o Jamba Instruct é ajustado para a conclusão do chat. - Cliente do Azure do AI21. Para obter mais informações sobre o ponto de extremidade REST que está sendo chamado, visite a documentação REST do AI21.
API de inferência de modelo de IA do Azure
O esquema da API de inferência de modelo de IA do Azure pode ser encontrado na referência para o artigo Conclusão de bate-papo e uma especificação OpenAPI pode ser obtida do próprio ponto de extremidade.
O bate-papo de turno único e o bate-papo de turno múltiplo têm o mesmo formato de solicitação e resposta, exceto que a resposta a perguntas (turno único) envolve apenas uma única mensagem de usuário na solicitação, enquanto o bate-papo de turno múltiplo exige que você envie todo o histórico de mensagens de bate-papo em cada solicitação.
Em um bate-papo de várias voltas, o histórico de mensagens tem os seguintes atributos:
- Inclui todas as mensagens do utilizador e do modelo, ordenadas da mais antiga para a mais recente.
- As mensagens alternam entre
user
eassistant
as mensagens de função - Opcionalmente, o histórico de mensagens começa com uma mensagem do sistema para fornecer contexto.
O pseudocódigo a seguir é um exemplo da pilha de mensagens para a quarta chamada em uma solicitação de chat que inclui uma mensagem inicial do sistema.
[
{"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"}
]
Cliente Azure do AI21
Use o método POST
para enviar a solicitação para a /v1/chat/completions
rota:
Pedir
POST /v1/chat/completions HTTP/1.1
Host: <DEPLOYMENT_URI>
Authorization: Bearer <TOKEN>
Content-type: application/json
Esquema de solicitação
Payload é uma cadeia de caracteres formatada JSON que contém os seguintes parâmetros:
Chave | Type | Obrigatório/Padrão | Valores permitidos | Description |
---|---|---|---|---|
model |
string |
Y | Deve ser jamba-instruct |
|
messages |
list[object] |
Y | Uma lista de objetos, um por mensagem, do mais antigo ao mais recente. A mensagem mais antiga pode ser a função system . Todas as mensagens posteriores devem alternar entre as funções de usuário e assistente. Consulte a definição de objeto de mensagem abaixo. |
|
max_tokens |
integer |
N 4096 |
0 – 4096 | O número máximo de tokens a serem permitidos para cada mensagem de resposta gerada. Normalmente, a melhor maneira de limitar o comprimento da saída é fornecendo um limite de comprimento no prompt do sistema (por exemplo, "limite suas respostas a três frases") |
temperature |
float |
N 1 |
0.0 – 2.0 | Quanta variação fornecer em cada resposta. Definir esse valor como 0 garante a mesma resposta para a mesma pergunta sempre. Definir um valor mais alto incentiva mais variação. Modifica a distribuição a partir da qual os tokens são amostrados. Recomendamos alterar este ou top_p , mas não ambos. |
top_p |
float |
N 1 |
<0 valor<=1,0 | Limite o pool de tokens seguintes em cada etapa ao percentil N superior de tokens possíveis, onde 1.0 significa o pool de todos os tokens possíveis e 0.01 significa o pool de apenas os próximos tokens mais prováveis. |
stop |
string OU list[string] |
N |
"" | String ou lista de strings contendo a(s) palavra(s) onde a API deve parar de gerar saída. Novas linhas são permitidas como "\n". O texto retornado não conterá a sequência de parada. |
n |
integer |
N 1 |
1 – 16 | Quantas respostas gerar para cada prompt. Com o Azure AI Studio's Playground, n=1 enquanto trabalhamos no Playground de várias respostas. |
stream |
boolean |
N False |
True OU False |
Se o streaming deve ser habilitado. Se verdadeiro, os resultados são retornados um token de cada vez. Se definido como true, n deve ser 1, que é definido automaticamente. |
O messages
objeto tem os seguintes campos:
role
: [string, required] O autor ou a finalidade da mensagem. Um dos seguintes valores:user
: Entrada fornecida pelo usuário. Quaisquer instruções dadas aqui que entrem em conflito com assystem
instruções dadas no prompt têm precedência sobre assystem
instruções do prompt.assistant
: Uma resposta gerada pelo modelo.system
: Instruções iniciais para fornecer orientação geral sobre o tom e a voz da mensagem gerada. Uma mensagem inicial do sistema é opcional, mas recomendada para fornecer orientação sobre o tom do bate-papo. Por exemplo: "Você é um chatbot útil com formação em ciências da terra e um charmoso sotaque francês."
content
: [string, required] O conteúdo da mensagem.
Exemplo de solicitação
Exemplo de volta única
{
"model": "jamba-instruct",
"messages": [
{
"role":"user",
"content":"Who was the first emperor of rome?"}
],
"temperature": 0.8,
"max_tokens": 512
}
Exemplo de bate-papo (quarta solicitação contendo a terceira resposta do usuário)
{
"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
}
Esquema de resposta
A resposta depende ligeiramente se o resultado é transmitido ou não.
Em um resultado não transmitido, todas as respostas são entregues juntas em uma única resposta, que também inclui uma usage
propriedade.
Em um resultado transmitido,
- Cada resposta inclui um único token no
choices
campo. - A
choices
estrutura do objeto é diferente. - Apenas a última resposta inclui um
usage
objeto. - Toda a resposta é encapsulada em um
data
objeto. - O objeto de resposta final é
data: [DONE]
.
A carga útil de resposta é um dicionário com os seguintes campos.
Chave | Tipo | Description |
---|---|---|
id |
string |
Um identificador exclusivo para a solicitação. |
model |
string |
Nome do modelo utilizado. |
choices |
list[object ] |
O texto de resposta gerado pelo modelo. Para uma resposta sem streaming, é uma lista com n itens. Para uma resposta de streaming, é um único objeto que contém um único token. Veja a descrição do objeto abaixo. |
created |
integer |
O carimbo de data/hora Unix (em segundos) de quando a conclusão foi criada. |
object |
string |
O tipo de objeto, que é sempre chat.completion . |
usage |
object |
Estatísticas de utilização do pedido de conclusão. Veja mais detalhes abaixo. |
O choices
objeto response contém a resposta gerada pelo modelo. O objeto tem os seguintes campos:
Chave | Tipo | Description |
---|---|---|
index |
integer |
Índice baseado em zero da mensagem na lista de mensagens. Pode não corresponder à posição na lista. Para mensagens transmitidas, isso é sempre zero. |
message OU delta |
object |
A mensagem gerada (ou token em uma resposta de streaming). Mesmo tipo de objeto descrito na solicitação com duas alterações: - Em uma resposta sem streaming, esse objeto é chamado message de . - Em uma resposta de streaming, ele é chamado delta de , e contém um ou message mas role nunca ambos. |
finish_reason |
string |
A razão pela qual o modelo parou de gerar tokens: - stop : O modelo atingiu um ponto de paragem natural, ou uma sequência de paragem fornecida. - length : O número máximo de tokens foi atingido. - content_filter : A resposta gerada violou uma política de IA responsável. - null : Apenas streaming. Em uma resposta de streaming, todas as respostas, exceto a última, serão null . |
O usage
objeto de resposta contém os seguintes campos.
Chave | Type | valor |
---|---|---|
prompt_tokens |
integer |
Número de tokens no prompt. Observe que a contagem de tokens de prompt inclui tokens extras adicionados pelo sistema para formatar a lista de prompts em uma única cadeia de caracteres, conforme exigido pelo modelo. O número de tokens extras é normalmente proporcional ao número de mensagens no thread e deve ser relativamente pequeno. |
completion_tokens |
integer |
Número de tokens gerados na conclusão. |
total_tokens |
integer |
Total de tokens. |
Exemplo de resposta sem streaming
{
"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
}
}
Exemplo de resposta de streaming
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]
Custo e quotas
Considerações sobre custo e cota para o Jamba Instruct implantado como uma API sem servidor
O modelo Jamba Instruct é implantado como uma API sem servidor e é oferecido pelo AI21 por meio do Azure Marketplace e integrado ao estúdio de IA do Azure para uso. Pode obter os preços do Azure Marketplace quando implementar ou otimizar os modelos.
Sempre que uma área de trabalho subscreve uma determinada oferta de modelo do Azure Marketplace, é criado um novo recurso para controlar os custos associados ao seu consumo. O mesmo recurso é usado para monitorizar os custos associados à inferência e à otimização; no entanto, estão disponíveis vários medidores para monitorizar cada cenário de forma independente.
Para obter mais informações sobre como controlar os custos, consulte Monitorizar custos dos modelos oferecidos através do Azure Marketplace.
A quota é gerida por implementação. Cada implementação tem um limite de taxa de 200 000 tokens por minuto e 1000 pedidos de API por minuto. No entanto, atualmente, limitamos uma implementação por modelo por projeto. Contacte o Suporte do Microsoft Azure se os limites de taxa atuais não forem suficientes para os seus cenários.
Filtragem de conteúdos
Os modelos implantados como uma API sem servidor são protegidos pela segurança de conteúdo da IA do Azure. Com a segurança de conteúdo de IA do Azure habilitada, tanto o prompt quanto a conclusão passam por um conjunto de modelos de classificação destinados a detetar e prevenir a saída de conteúdo nocivo. O sistema de filtragem de conteúdo deteta e age em categorias específicas de conteúdo potencialmente nocivo em prompts de entrada e finalizações de saída. Saiba mais sobre a Segurança de Conteúdo do Azure AI.
Conteúdos relacionados
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários