Implementación de modelos Mistral con el Estudio de Azure Machine Learning
En este artículo, aprenderá a usar Azure Machine Learning Studio para implementar la familia mistral de modelos como API sin servidor con facturación basada en tokens de pago por uso.
Mistral AI ofrece dos categorías de modelos en Azure Machine Learning Studio. Estos modelos están disponibles en el catálogo de modelos.
- Modelos Premium: Mistral Large (2402), Mistral Large (2407), Mistral Small y Ministral-3B.
- Modelos abiertos: Mistral Nemo, Mixtral-8x7B-Instruct-v01, Mixtral-8x7B-v01, Mistral-7B-Instruct-v01 y Mistral-7B-v01.
Todos los modelos Premium y Mistral Nemo (un modelo abierto) se pueden implementar como API sin servidor con facturación basada en tokens de pago por uso. Los otros modelos abiertos se pueden implementar en procesos administrados en su propia suscripción de Azure.
Puede examinar la familia Mistral de modelos en el catálogo de modelo filtrando por la colección Mistral.
Familia Mistral de modelos
Mistral Large es el modelo de lenguaje grande (LLM) más avanzado de Mistral AI. Se puede usar en cualquier tarea basada en lenguaje gracias a sus capacidades de razonamiento y conocimiento de última generación. Hay dos variantes disponibles para la versión del modelo Mistral Large:
- Mistral Large (2402)
- Mistral Large (2407)
Además, algunos atributos de Mistral Large (2402) incluyen:
- Especializado en RAG. La información crucial no se pierde en medio de ventanas de contexto largas (hasta 32 K tokens).
- Fuerte en la codificación. Generación de código, revisión y comentarios. Admite todos los lenguajes de codificación estándar.
- Multilingüe por diseño. Mejor rendimiento en francés, alemán, español e italiano, además del inglés. Se admiten docenas de otros idiomas.
- Compatible con la inteligencia artificial responsable. Barreras de protección eficientes simuladas mediante "bake" en el modelo y capa de seguridad adicional con la opción
safe_mode
.
Los atributos de Mistral Large (2407) incluyen:
- Multilingüe por diseño. Admite docenas de idiomas, incluidos inglés, francés, alemán, español e italiano.
- Experto en codificación. Entrenado en más de 80 lenguajes de codificación, incluidos Python, Java, C, C++, JavaScript y Bash. También se entrena en lenguajes más específicos, como Swift y Fortran.
- Centrado en el agente. Posee funcionalidades de agente con llamadas de funciones nativas y salida JSON.
- Avanzado en el razonamiento. Muestra capacidades matemáticas y de razonamiento de última generación.
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.
Implementación de la familia Mistral de modelos como una API sin servidor
Algunos modelos del catálogo de modelo se pueden implementar como una API sin servidor con la facturación de pago por uso. Este tipo de implementación proporciona una manera de consumir modelos como una API sin hospedarlos en la suscripción, a la vez que mantiene la seguridad empresarial y el cumplimiento que necesitan las organizaciones. Esta opción de implementación no requiere cuota de la suscripción.
Mistral Large (2402), Mistral Large (2407), Mistral Small y Mistral Nemo se pueden implementar como una API sin servidor con facturación de pago por uso y que ofrece Mistral AI a través de Microsoft Azure Marketplace. Mistral AI puede cambiar o actualizar los términos de uso y los precios de estos modelos.
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. Si no tiene un área de trabajo, siga los pasos descritos en el artículo Inicio rápido: Creación de recursos del área de trabajo para crear uno. La oferta de implementación de modelos de API sin servidor para los modelos aptos de la familia Mistral solo está disponible en las á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, vea 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 Desarrollador de Azure AI en el grupo de recursos. 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
Los pasos siguientes muestran la implementación de Mistral Large (2402), pero puede usar los mismos pasos para implementar Mistral Nemo o cualquiera de los modelos Mistral premium reemplazando el nombre del modelo.
Para crear una implementación:
Vaya a Azure Machine Learning Studio.
Seleccione el área de trabajo en la que desea implementar el modelo. Para usar la oferta de implementación del modelo de API sin servidor, el área de trabajo debe pertenecer a una de las regiones enumeradas en los requisitos previos.
Elija el modelo que desea implementar, por ejemplo, el modelo Mistral Large (2402), 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 del catálogo de modelos, seleccione Implementar para abrir una ventana de implementación de API sin servidor para el modelo.
Active la casilla para confirmar la directiva de compra de Microsoft.
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 Precios y términos para obtener información sobre los precios del modelo seleccionado.
Si es la primera vez que implementa el modelo en el área de trabajo, debe suscribirse al área de trabajo para la oferta concreta (por ejemplo, Mistral Large (2402)). Este paso requiere que la cuenta tenga permisos de rol de desarrollador de Azure AI en el grupo de recursos, como se muestra 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 suscribas 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. Si este escenario le afecta, podrá seleccionar la opción 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.
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 Mistral implementados como una API sin servidor con facturación basada en tokens de pago por uso, vea Consideraciones de costo y cuota para la familia mistral de modelos implementados como servicio.
Consumo de la familia Mistral de modelos como servicio
Puede consumir modelos Mistral mediante la API de chat.
- 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 Azure AI Model Inference en la ruta
/chat/completions
y la API nativa Mistral Chat en/v1/chat/completions
.
Para obtener más información sobre el uso de las API, consulte la sección de referencia.
Referencia de la familia Mistral de modelos implementados como servicio
Los modelos Mistral aceptan tanto la API Azure AI Model Inference en la ruta /chat/completions
y la nativaAPI Mistral Chat en /v1/chat/completions
.
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.
Mistral Chat API
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 | Valor predeterminado | Descripción |
---|---|---|---|
messages |
string |
No hay valor predeterminado. Este valor debe especificarse. | El mensaje o historial de mensajes con los que se solicitará al modelo. |
stream |
boolean |
False |
El streaming permite que los tokens generados se envíen como eventos enviados por el servidor de solo datos cada vez que estén disponibles. |
max_tokens |
integer |
8192 |
El número máximo de tokens a generar en la finalización. El número de tokens de su pregunta más max_tokens no puede exceder la longitud del contexto del modelo. |
top_p |
float |
1 |
Alternativa al muestreo con temperatura, llamada muestreo de núcleo, donde el modelo considera los resultados de los tokens con masa de probabilidad top_p . Así, 0,1 significa que solo se consideran los tokens que comprenden la masa de probabilidad del 10% superior. Por lo general, recomendamos modificar top_p o temperature , pero no ambos. |
temperature |
float |
1 |
Temperatura de muestreo que se va a usar, entre 0 y 2. Los valores más altos significan que el modelo muestrea de forma más amplia la distribución de los tokens. Cero significa muestreo excesivo. Se recomienda modificar este parámetro o top_p , pero no ambos. |
ignore_eos |
boolean |
False |
Si se omite el token EOS y continúa generando tokens después de que se genere el token EOS. |
safe_prompt |
boolean |
False |
Si se inyecta un aviso de seguridad antes de todas las conversaciones. |
El objeto messages
tiene los siguientes campos:
Clave | Tipo | Valor |
---|---|---|
content |
string |
Contenido del mensaje. El contenido es necesario para todos los mensajes. |
role |
string |
Rol del autor del mensaje. Uno desystem , user o assistant . |
Ejemplo de solicitud
Cuerpo
{
"messages":
[
{
"role": "system",
"content": "You are a helpful assistant that translates English to Italian."
},
{
"role": "user",
"content": "Translate the following sentence from English to Italian: I love programming."
}
],
"temperature": 0.8,
"max_tokens": 512,
}
Esquema de respuesta
La carga de respuesta es un diccionario con los campos siguientes.
Clave | Tipo | Descripción |
---|---|---|
id |
string |
Identificador único para la finalización. |
choices |
array |
La lista de opciones de finalización que el modelo generó para los mensajes de entrada. |
created |
integer |
Marca de tiempo de Unix (en segundos) de cuando se creó la finalización. |
model |
string |
El model_id usado para 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. |
Sugerencia
En el modo de streaming, para cada fragmento de respuesta, finish_reason
es siempre null
, excepto a partir del último que está terminado por una carga [DONE]
. En cada objeto choices
, la clave de messages
se cambia por delta
.
El objeto choices
es un diccionario con los campos siguientes.
Clave | Tipo | Descripción |
---|---|---|
index |
integer |
Índice de elección. Cuando best_of > 1, es posible que el índice de esta matriz no esté en orden y que no sea de 0 a n-1 . |
messages o delta |
string |
Resultado de la finalización del chat en objeto messages . Cuando se usa el modo streaming, se usa la clave de delta . |
finish_reason |
string |
Motivo por el que el modelo dejó de generar tokens: - stop : el modelo alcanza un punto de parada natural o una secuencia de detención proporcionada. - length : si se ha alcanzado el número máximo de tokens. - content_filter : cuando RAI modera y CMP fuerza la moderación - content_filter_error : un error durante la moderación y no pudo tomar decisiones sobre la respuesta - null : la respuesta de la API sigue en curso o incompleta. |
logprobs |
object |
Probabilidades de registro de los tokens generados en el texto de salida. |
El objeto usage
es un diccionario con los campos siguientes.
Clave | Tipo | Valor |
---|---|---|
prompt_tokens |
integer |
Número de tokens en el símbolo del sistema. |
completion_tokens |
integer |
Número de tokens generados en la finalización. |
total_tokens |
integer |
Total de tokens. |
El objeto logprobs
es un diccionario con los siguientes campos:
Clave | Tipo | Valor |
---|---|---|
text_offsets |
array de integers |
Posición o índice de cada token en la salida de finalización. |
token_logprobs |
array de float |
Seleccionado logprobs en el diccionario de la matriz top_logprobs . |
tokens |
array de string |
Tokens seleccionados. |
top_logprobs |
array de dictionary |
Matriz de diccionario. En cada diccionario, la clave es el token y el valor es la probabilidad. |
Ejemplo de respuesta
El siguiente código JSON es una solicitud de ejemplo:
{
"id": "12345678-1234-1234-1234-abcdefghijkl",
"object": "chat.completion",
"created": 2012359,
"model": "",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "Sure, I\'d be happy to help! The translation of ""I love programming"" from English to Italian is:\n\n""Amo la programmazione.""\n\nHere\'s a breakdown of the translation:\n\n* ""I love"" in English becomes ""Amo"" in Italian.\n* ""programming"" in English becomes ""la programmazione"" in Italian.\n\nI hope that helps! Let me know if you have any other sentences you\'d like me to translate."
}
}
],
"usage": {
"prompt_tokens": 10,
"total_tokens": 40,
"completion_tokens": 30
}
}
Más ejemplos de inferencia
Tipo de ejemplo | Cuaderno de ejemplo |
---|---|
CLI mediante CURL y solicitudes web de Python | webrequests.ipynb |
SDK de OpenAI (experimental) | openaisdk.ipynb |
LangChain | langchain.ipynb |
Mistral AI | mistralai.ipynb |
LiteLLM | litellm.ipynb |
Costo y cuotas
Consideraciones de coste y cuota para la familia Mistral de modelos implementados como servicio
Los modelos de Mistral implementados como servicio son ofrecidos por Mistral AI a través de Azure Marketplace e integrados con Inteligencia artificial del Estudio de Azure Machine Learning para su uso. Puedes ver los precios de Azure Marketplace al implementar 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; 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 área de trabajo. 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 servicio con pago por uso están protegidos por 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.