Implementación de modelos de la familia Jamba de AI21 con Estudio de Azure Machine Learning
Importante
Esta característica actualmente está en su versión preliminar pública. Esta versión preliminar se ofrece sin un Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas.
Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.
En este artículo, aprenderá a usar Estudio de Azure Machine Learning para implementar modelos de la familia Jamba de AI21 como una API sin servidor con facturación de pago por uso.
Los modelos de la familia Jamba son el modelo de lenguaje grande (LLM) basado en Mamba de nivel de producción de AI21, que aprovecha la arquitectura híbrida Mamba-Transformer de AI21. Es una versión optimizada para instrucciones del modelo de espacio de estado estructurado híbrido (SSM) de AI21. Los modelos de la familia Jamba se han creado para un uso comercial confiable con respecto a la calidad y el rendimiento.
Sugerencia
Vea nuestros anuncios de los modelos de la familia Jamba de AI21 disponibles ahora en el catálogo de modelos de Azure AI desde el Blog de AI21 y Blog de la comunidad tecnológica de Microsoft.
Implementación de los modelos de la familia Jamba como una API sin servidor
Algunos modelos del catálogo de modelos se pueden implementar como una API sin servidor con facturación de pago por uso, lo que proporciona una manera de consumirlos como una API sin hospedarlos en su suscripción mientras mantiene las necesidades de las organizaciones de seguridad y cumplimiento empresariales. Esta opción de implementación no requiere cuota de la suscripción.
El modelo AI21-Jamba 1.5 Large implementado como una API sin servidor con facturación de pago por uso lo ofrece AI21 desde Microsoft Azure Marketplace. AI21 puede cambiar o actualizar los términos de uso y los precios de este modelo.
Para empezar a trabajar con Jamba 1.5 Large implementado como una API sin servidor, explore nuestras integraciones con LangChain, LiteLLM, OpenAI y la API de Azure.
Requisitos previos
Una suscripción de Azure con un método de pago válido. Las suscripciones gratuitas o de evaluación de Azure no funcionarán. Si no tiene una suscripción de Azure, cree una cuenta de Azure de pago para comenzar.
Un área de trabajo de Azure Machine Learning con una instancia de proceso. Si no las tiene, siga los pasos descritos en el artículo Inicio rápido: Creación de recursos de área de trabajo para crearlas. La oferta de implementación de modelos de API sin servidor para la familia de modelos Jamba solo está disponible con áreas de trabajo creadas en estas regiones:
- Este de EE. UU.
- Este de EE. UU. 2
- Centro-Norte de EE. UU
- Centro-sur de EE. UU.
- Oeste de EE. UU.
- Oeste de EE. UU. 3
- Centro de Suecia
Para obtener una lista de las regiones disponibles para cada uno de los modelos que admiten implementaciones de puntos de conexión de API sin servidor, consulte Disponibilidad de región para modelos en puntos de conexión de API sin servidor.
Los controles de acceso basado en rol de Azure (RBAC de Azure) se usan para conceder acceso a las operaciones en Azure Machine Learning. Para realizar los pasos descritos en este artículo, la cuenta de usuario debe tener asignado el rol de propietario o colaborador para la suscripción de Azure. Como alternativa, a la cuenta se le puede asignar un rol personalizado que tenga los permisos siguientes:
En la suscripción de Azure: para suscribir el área de trabajo a la oferta de Azure Marketplace, una vez para cada área de trabajo, 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
En el grupo de recursos, para crear y usar el recurso de SaaS:
Microsoft.SaaS/resources/read
Microsoft.SaaS/resources/write
En el área de trabajo, para implementar puntos de conexión (el rol científico de datos de Azure Machine Learning ya contiene estos permisos):
Microsoft.MachineLearningServices/workspaces/marketplaceModelSubscriptions/*
Microsoft.MachineLearningServices/workspaces/serverlessEndpoints/*
Para obtener más información sobre los permisos, consulte Administración del acceso a un área de trabajo de Azure Machine Learning.
Crear una nueva implementación
En estos pasos se muestra la implementación de los modelos AI21 Jamba 1.5 Large
o AI21 Jamba 1.5 Mini
. Para crear una implementación:
Vaya a Azure Machine Learning Studio.
Seleccione el área de trabajo en la que desea implementar los modelos. Para usar la oferta de implementación del modelo de API sin servidor, el área de trabajo debe pertenecer a una de las regiones admitidas que se enumeran en los requisitos previos.
Busque y seleccione un modelo AI21 como
AI21 Jamba 1.5 Large
oAI21 Jamba 1.5 Mini
oAI21 Jamba Instruct
en el catálogo de modelos.Como alternativa, puede iniciar la implementación si va al área de trabajo y selecciona Puntos de conexión>Puntos de conexión sin servidor>Crear.
En la página de información general del modelo en el catálogo de modelos, seleccione Implementar y, a continuación, API sin servidor con Seguridad del contenido de Azure AI.
En el Asistente para la implementación, selecciona el vínculo a Términos de Azure Marketplace para obtener más información sobre los términos de uso.
También puede seleccionar la pestaña Detalles de la oferta de Marketplace para obtener información sobre los precios del modelo seleccionado.
Si esta es la primera vez que implementa el modelo en el área de trabajo, debe suscribirse al área de trabajo para la oferta concreta de Azure Marketplace. Este paso requiere que la cuenta tenga los permisos de suscripción de Azure y los permisos del grupo de recursos enumerados en los requisitos previos. Cada área de trabajo tiene su propia suscripción a la oferta concreta de Azure Marketplace, lo que le permite controlar y supervisar los gastos. Seleccione Suscribir e implementar. Actualmente solo puedes tener una implementación para cada modelo dentro de un área de trabajo.
Una vez que registre el área de trabajo para la oferta concreta de Azure Marketplace, las implementaciones posteriores de la misma oferta en la misma área de trabajo no requieren la suscripción de nuevo. Por lo tanto, no es necesario tener los permisos de nivel de suscripción para las implementaciones posteriores. Si este escenario se aplica a usted, seleccione Continuar para implementar.
Asigne un nombre a la implementación. Este nombre forma parte de la dirección URL de la API de implementación. Esta dirección URL debe ser única en cada región de Azure.
Seleccione Implementar. Espere hasta que finalice la implementación y se le redirigirá a la página de puntos de conexión sin servidor.
Seleccione el punto de conexión para abrir su página de Detalles.
Seleccione la pestaña Prueba para empezar a interactuar con el modelo.
También puede tomar nota de la dirección URL de Destino y la Clave secreta para llamar a la implementación y generar finalizaciones.
Puede encontrar los detalles, la dirección URL y las claves de acceso del punto de conexión; para ello, vaya a Área de trabajo>Puntos de conexión>Puntos de conexión sin servidor.
Para obtener información sobre la facturación de los modelos de la familia AI21-Jamba implementados como una API sin servidor con facturación basada en tokens de pago por uso, consulte Consideraciones de costo y cuota para la familia de modelos Jamba implementados como una API sin servidor.
Consumo de los modelos de la familia Jamba como una API sin servidor
Puede consumir modelos de la familia Jamba como se indica a continuación:
- En el área de trabajo, seleccione Puntos de conexión>Puntos de conexión sin servidor.
- Busque y seleccione la implementación que ha creado.
- Copie la dirección URL de Destino y los valores del token de Clave.
- Realice una solicitud de API mediante la API de inferencia de modelos de Azure AI en la ruta
/chat/completions
o el Cliente de Azure de AI21 en/v1/chat/completions
.
Para obtener más información sobre el uso de las API, consulte la sección de referencia.
Referencia de los modelos de la familia Jamba implementados como una API sin servidor
Los modelos de la familia Jamba aceptan estas dos API:
- La API de inferencia del modelo de Azure AI [API de inferencia de modelos de Azure AI] en la ruta
/chat/completions
para el chat multiturno o la respuesta a preguntas de un solo turno. Esta API se admite porque los modelos de la familia Jamba están ajustado para la finalización de chat. - Cliente de Azure de AI21. Para obtener más información sobre el punto de conexión REST al que se llama, visite Documentación de REST de AI21.
API de inferencia de modelos de Azure AI
El esquema de API de inferencia de modelos de Azure AI puede encontrarse en el artículo de Referencia para las finalizaciones de chat y puede obtenerse una Especificación OpenAPI del propio punto de conexión.
El chat de un solo turno y de varios turnos tiene el mismo formato de solicitud y respuesta, salvo que la respuesta a preguntas (turno único) implica solo un mensaje de usuario en la solicitud, mientras que el chat multiturno requiere que envíe todo el historial de mensajes de chat en cada solicitud.
En un chat de varios turnos, el subproceso del mensaje tiene los siguientes atributos:
- Incluye todos los mensajes del usuario y el modelo, ordenados de más antiguo a más reciente.
- Mensajes alternativos entre
user
yassistant
mensajes de rol - Opcionalmente, el subproceso del mensaje comienza con un mensaje del sistema para proporcionar contexto.
El pseudocódigo siguiente es un ejemplo de la pila de mensajes de la cuarta llamada en una solicitud de chat que incluye un mensaje inicial del 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 de Azure de AI21
Use el método POST
para enviar la solicitud a la ruta /v1/chat/completions
:
Solicitar
POST /v1/chat/completions HTTP/1.1
Host: <DEPLOYMENT_URI>
Authorization: Bearer <TOKEN>
Content-type: application/json
Esquema de solicitud
Payload es una cadena con formato JSON que contiene los parámetros siguientes:
Clave | Tipo | Obligatorio/predeterminado | Valores permitidos | Descripción |
---|---|---|---|---|
model |
string |
Y | jamba-instruct o AI21 Jamba 1.5 Large o AI21 Jamba 1.5 Mini |
|
messages |
list[object] |
Y | Lista de objetos, uno por mensaje, de más antiguo a más reciente. El mensaje más antiguo puede ser el rol system . Todos los mensajes posteriores deben alternar entre los roles de usuario y asistente. Consulte la definición de objeto de mensaje siguiente. |
|
max_tokens |
integer |
N 4096 |
0 – 4096 | Número máximo de tokens que se van a permitir para cada mensaje de respuesta generado. Normalmente, la mejor manera de limitar la longitud de salida es proporcionar un límite de longitud en el símbolo del sistema (por ejemplo, "limitar las respuestas a tres oraciones"). |
temperature |
float |
N 1 |
0.0 – 2.0 | Cantidad de variación que se debe proporcionar en cada respuesta. Establecer este valor en 0 garantiza la misma respuesta a la misma pregunta cada vez. Si se establece un valor mayor, se recomienda más variación. Modifica la distribución desde la que se muestrea el token. Recomendamos modificar esto o top_p , pero no ambos. |
top_p |
float |
N 1 |
0 <valor<=1,0 | Limite el grupo de tokens siguientes en cada paso al percentil N superior de los posibles tokens, donde 1,0 significa que el grupo de todos los tokens posibles y 0,01 significa el grupo de solo los siguientes tokens más probables. |
stop |
string o list[string] |
N |
"" | Cadena o lista de cadenas que contienen las palabras en las que la API debe dejar de generar la salida. Las nuevas líneas se permiten como "\n". El texto devuelto no contendrá la secuencia de detención. |
n |
integer |
N 1 |
1 – 16 | Cuántas respuestas se van a generar para cada solicitud. Con el área de juegos de Azure AI Studio, n=1 a medida que trabajamos en el área de juegos de varias respuestas. |
stream |
boolean |
N False |
True o False |
Indica si se va a habilitar el streaming. Si es true, los resultados se devuelven un token a la vez. Si se establece en true, n debe ser 1, que se establece automáticamente. |
El objeto messages
tiene los siguientes campos:
role
: [cadena,requerida ] El autor o el propósito del mensaje. Uno de los siguientes valores:user
: Entrada proporcionada por el usuario. Las instrucciones dadas aquí que entran en conflicto con las instrucciones dadas en elsystem
aviso tienen prioridad sobre las instrucciones de solicitud desystem
.assistant
: Una respuesta generada por el modelo.system
: Instrucciones iniciales para proporcionar instrucciones generales sobre el tono y la voz del mensaje generado. Un mensaje inicial del sistema es opcional, pero se recomienda proporcionar instrucciones sobre el tono del chat. Por ejemplo, "Usted es un bot de chat útil con un fondo en ciencias de la tierra y un encantador acento francés".
content
: [cadena, obligatorio] El contenido del mensaje.
Ejemplo de solicitud
Ejemplo de un solo turno
{
"model": "jamba-instruct",
"messages": [
{
"role":"user",
"content":"Who was the first emperor of rome?"}
],
"temperature": 0.8,
"max_tokens": 512
}
Ejemplo de chat de (cuarta solicitud que contiene la tercera respuesta del usuario)
{
"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 respuesta
La respuesta depende ligeramente de si el resultado se transmite o no.
En un resultado no transmitido, todas las respuestas se entregan juntas en una única respuesta, que también incluye una propiedad usage
.
En un resultado transmitido,
- Cada respuesta incluye un único token en el campo
choices
. - La estructura del objeto
choices
es diferente. - Solo la última respuesta incluye un objeto
usage
. - Toda la respuesta se ajusta en un objeto
data
. - El objeto de respuesta final es
data: [DONE]
.
La carga de respuesta es un diccionario con los campos siguientes.
Clave | Tipo | Descripción |
---|---|---|
id |
string |
Identificador único de la solicitud. |
model |
string |
Nombre del modelo usado. |
choices |
list[object ] |
Texto de respuesta generado por el modelo. Para una respuesta que no sea de streaming, es una lista con n elementos. Para una respuesta de streaming, es un único objeto que contiene un único token. Vea la descripción del objeto siguiente. |
created |
integer |
Marca de tiempo de Unix (en segundos) de cuando se creó la finalización. |
object |
string |
Tipo de objeto, que siempre es chat.completion . |
usage |
object |
Estadísticas de uso de la solicitud de finalización. Para obtener información más detallada, vea a continuación. |
El objeto de respuesta choices
contiene la respuesta generada por el modelo. El objeto tiene los siguientes campos:
Clave | Tipo | Descripción |
---|---|---|
index |
integer |
Índice de base cero del mensaje en la lista de mensajes. Es posible que no se corresponda con la posición de la lista. En el caso de los mensajes transmitidos, siempre es cero. |
message o delta |
object |
Mensaje generado (o token en una respuesta de streaming). El mismo tipo de objeto que se describe en la solicitud con dos cambios: - En una respuesta que no es de streaming, este objeto se denomina message . - En una respuesta de streaming, se denomina delta , y contiene message o role pero nunca ambos. |
finish_reason |
string |
Motivo por el que el modelo dejó de generar tokens: - stop : El modelo alcanzó un punto de detención natural o una secuencia de detención proporcionada. - length : Se ha alcanzado el número máximo de tokens. - content_filter : La respuesta generada infringía una directiva de inteligencia artificial responsable. - null : Solo streaming. En una respuesta de streaming, todas las respuestas excepto la última serán null . |
El objeto de respuesta usage
contiene los campos siguientes.
Clave | Tipo | Valor |
---|---|---|
prompt_tokens |
integer |
Número de tokens en el símbolo del sistema. Tenga en cuenta que el recuento de tokens del símbolo del sistema incluye tokens adicionales agregados por el sistema para dar formato a la lista de mensajes en una sola cadena según sea necesario para el modelo. El número de tokens adicionales suele ser proporcional al número de mensajes del subproceso y debe ser relativamente pequeño. |
completion_tokens |
integer |
Número de tokens generados en la finalización. |
total_tokens |
integer |
Total de tokens. |
Ejemplo de respuesta sin 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
}
}
Ejemplo de respuesta 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]
Coste y cuotas
Consideraciones de costo y cuota para la familia de modelos de Jamba implementados como una API sin servidor
La familia de modelos Jamba se implementa como una API sin servidor y la ofrece AI21 desde Azure Marketplace e y se integra con Estudio de IA de Azure para su uso. Puede encontrar los precios de Azure Marketplace al implementar o ajustar los modelos.
Cada vez que un área de trabajo se suscribe a una oferta de modelo determinada de Azure Marketplace, se crea un nuevo recurso para realizar un seguimiento de los costos asociados a su consumo. El mismo recurso se usa para hacer un seguimiento de los costos asociados con la inferencia y la optimización. Sin embargo, hay varios medidores disponibles para hacer un seguimiento de cada escenario de forma independiente.
Para más información sobre cómo realizar un seguimiento de los costos, consulte Supervisión de los costos de los modelos ofrecidos en Azure Marketplace.
La cuota se administra por implementación. Cada implementación tiene un límite de velocidad de 200 000 tokens por minuto y 1000 solicitudes de API por minuto. Sin embargo, actualmente limitamos una implementación por modelo por proyecto. Póngase en contacto con el Soporte técnico de Microsoft Azure si los límites de velocidad actuales no son suficientes para sus escenarios.
Filtrado de contenido
Los modelos implementados como API sin servidor están protegidos por la seguridad del contenido de Azure AI. Con la seguridad de contenido de Azure AI habilitada, tanto la solicitud como la finalización pasan por un conjunto de modelos de clasificación destinados a detectar y evitar la salida de contenido dañino. El sistema de filtrado de contenido (versión preliminar) detecta y toma medidas en categorías específicas de contenido potencialmente perjudicial tanto en solicitudes de entrada como en finalizaciones de salida. Obtenga más información sobre Seguridad del contenido de Azure AI.