Creación de un modelo de IA generativa que atiende puntos de conexión
En este artículo, aprenderá a crear puntos de conexión de servicio de modelos que implementen y sirvan a modelos de IA generativa.
Servicio de modelos de Mosaic AI admite los siguientes modelos:
Modelos externos. Estos son modelos generativos que se hospedan fuera de Databricks. Los puntos de conexión que sirven a modelos externos se pueden regular de forma centralizada y los clientes pueden establecer límites de velocidad y control de acceso para ellos. Por ejemplo, modelos de inteligencia artificial generativa como GPT-4 de OpenAI, Claude de Anthropic y otros.
Modelos de base abiertos de última generación disponibles por las API de Foundation Model. Estos modelos son arquitecturas de modelos fundamentales mantenidos que admiten la inferencia optimizada. Los modelos base, como Meta-Llama-3.1-70B-Instruct, GTE-Large y Mistral-7B están disponibles para su uso inmediato con precios de pago por token . Las cargas de trabajo de producción, que usan modelos base o ajustados, se pueden implementar con garantías de rendimiento mediante el rendimiento aprovisionado.
Model Serving proporciona las siguientes opciones para la creación de puntos de conexión de servicio de modelos:
- Interfaz de usuario de servicio
- REST API
- SDK de implementaciones de MLflow
Para crear puntos de conexión que atienden modelos tradicionales de ML o Python, vea Creación de puntos de conexión de servicio de modelos personalizados.
Requisitos
- Un área de trabajo de Databricks en una región admitida.
- Para crear puntos de conexión mediante el SDK de implementaciones de MLflow, debe instalar el cliente de implementación de MLflow. Para instalarlo, ejecute:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Creación de un punto de conexión de servicio de modelos básicos
Puede crear un punto de conexión que sirva variantes optimizadas de los modelos de base disponibles mediante el rendimiento aprovisionado de las API de Foundation Model. Consulte Creación del punto de conexión de rendimiento aprovisionado mediante la API de REST.
Para los modelos básicos que están disponibles mediante las API de pago por token de Foundation Model, Databricks proporciona automáticamente puntos de conexión específicos para acceder a los modelos admitidos en el área de trabajo de Databricks. Para acceder a ellos, seleccione la pestaña Servicio de la barra lateral izquierda del área de trabajo. Las API de modelo de Foundation se encuentran en la parte superior de la vista de lista puntos de conexión.
Para consultar estos puntos de conexión, consulte Consulta de modelos de IA generativa.
Creación de un modelo externo que atiende el punto de conexión
A continuación se describe cómo crear un punto de conexión que sirva a un modelo de IA generativa que esté disponible mediante modelos externos de Databricks.
Interfaz de usuario de servicio
- En el campo Nombre, proporcione un nombre para el punto de conexión.
- En la sección Entidades atendidas
- Haga clic en el campo Entidad para abrir el formulario Seleccionar entidad atendida.
- Seleccione Modelo externo.
- Seleccione el proveedor de modelo que desea usar.
- Haga clic en Confirmar
- Proporcione el nombre del modelo externo que desea usar. El formulario se actualiza dinámicamente en función de la selección. Consulte el modelos externos disponibles.
- Seleccione el tipo de tarea. Las tareas disponibles son chat, finalizaciones e inserciones.
- Proporcione los detalles de configuración para acceder al proveedor de modelo seleccionado. Suele ser el secreto que hace referencia al token de acceso personal que quiere que use el punto de conexión para acceder a este modelo.
- Haga clic en Crear. La página Puntos de conexión de servicio aparece con el estado Punto de conexión de servicio que se muestra como No listo.
REST API
Importante
Los parámetros de la API de REST para crear puntos de conexión de servicio que atienden modelos externos se encuentran en Versión preliminar pública.
En el ejemplo siguiente, se crea un punto de conexión que sirve la primera versión del modelo text-embedding-ada-002
proporcionado por OpenAI.
Consulte POST /api/2.0/serving-endpoints para ver los parámetros de configuración del punto de conexión.
{
"name": "openai_endpoint",
"config":
{
"served_entities":
[
{
"name": "openai_embeddings",
"external_model":{
"name": "text-embedding-ada-002",
"provider": "openai",
"task": "llm/v1/embeddings",
"openai_config":{
"openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
}
}
}
]
},
"rate_limits": [
{
"calls": 100,
"key": "user",
"renewal_period": "minute"
}
],
"tags": [
{
"key": "team",
"value": "gen-ai"
}
]
}
Este es un ejemplo de respuesta:
{
"name": "openai_endpoint",
"creator": "user@email.com",
"creation_timestamp": 1699617587000,
"last_updated_timestamp": 1699617587000,
"state": {
"ready": "READY"
},
"config": {
"served_entities": [
{
"name": "openai_embeddings",
"external_model": {
"provider": "openai",
"name": "text-embedding-ada-002",
"task": "llm/v1/embeddings",
"openai_config": {
"openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
}
},
"state": {
"deployment": "DEPLOYMENT_READY",
"deployment_state_message": ""
},
"creator": "user@email.com",
"creation_timestamp": 1699617587000
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "openai_embeddings",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"tags": [
{
"key": "team",
"value": "gen-ai"
}
],
"id": "69962db6b9db47c4a8a222d2ac79d7f8",
"permission_level": "CAN_MANAGE",
"route_optimized": false
}
SDK de implementaciones de MLflow
A continuación se crea un punto de conexión para incrustaciones con OpenAI text-embedding-ada-002
.
Para los puntos de conexión de modelo externos, debe proporcionar claves de API para el proveedor de modelos que desea usar. Vea POST /api/2.0/serving-endpoints en la API de REST para obtener información sobre el esquema de solicitud y respuesta. Para obtener una guía paso a paso, consulte Tutorial: Creación de puntos de conexión de modelo externos para consultar modelos de OpenAI.
También puede crear puntos de conexión para finalizaciones y tareas de chat, tal y como se especifica en el campo task
de la sección external_model
de la configuración. Consulte Modelos externos en Servicio de modelos de Mosaic A para ver los modelos y proveedores admitidos para cada tarea.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="chat",
config={
"served_entities": [
{
"name": "completions",
"external_model": {
"name": "gpt-4",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config": {
"openai_api_key": "{{secrets/scope/key}}",
},
},
}
],
},
)
assert endpoint == {
"name": "chat",
"creator": "alice@company.com",
"creation_timestamp": 0,
"last_updated_timestamp": 0,
"state": {...},
"config": {...},
"tags": [...],
"id": "88fd3f75a0d24b0380ddc40484d7a31b",
}
Actualización de puntos de conexión para servir modelos
Una vez que haya habilitado un punto de conexión de modelo, podrá establecer la configuración de proceso a su gusto. Esta configuración resulta especialmente útil si se necesita usar recursos adicionales en el modelo. El tamaño de la carga de trabajo y la configuración de proceso desempeñan un papel clave a la hora de decidir qué recursos se asignan para servir el modelo.
Hasta que la nueva configuración esté lista, la configuración anterior sigue atendiendo el tráfico de predicción. Aunque hay una actualización en curso, no se puede realizar otra actualización. En la interfaz de usuario de servicio, puede cancelar una actualización de configuración en curso si selecciona Cancelar actualización en la parte superior derecha de la página de detalles del punto de conexión. Esta funcionalidad solo está disponible en la interfaz de usuario de servicio.
Cuando un external_model
está presente en una configuración de punto de conexión, la lista de entidades atendidas solo puede tener un objeto served_entity. Los puntos de conexión existentes con un external_model
no se pueden actualizar para que ya no tengan external_model
. Si el punto de conexión se crea sin external_model
, no puede actualizarlo para agregar un external_model
.
REST API
Para actualizar el punto de conexión, consulte la documentación de configuración de actualización de la API REST para obtener detalles del esquema de solicitud y respuesta.
{
"name": "openai_endpoint",
"served_entities":
[
{
"name": "openai_chat",
"external_model":{
"name": "gpt-4",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config":{
"openai_api_key": "{{secrets/my_scope/my_openai_api_key}}"
}
}
}
]
}
SDK de implementaciones de MLflow
Para actualizar el punto de conexión, consulte la documentación de configuración de actualización de la API REST para obtener detalles del esquema de solicitud y respuesta.
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.update_endpoint(
endpoint="chat",
config={
"served_entities": [
{
"name": "chats",
"external_model": {
"name": "gpt-4",
"provider": "openai",
"task": "llm/v1/chat",
"openai_config": {
"openai_api_key": "{{secrets/scope/key}}",
},
},
}
],
},
)
assert endpoint == {
"name": "chats",
"creator": "alice@company.com",
"creation_timestamp": 0,
"last_updated_timestamp": 0,
"state": {...},
"config": {...},
"tags": [...],
"id": "88fd3f75a0d24b0380ddc40484d7a31b",
}
rate_limits = client.update_endpoint(
endpoint="chat",
config={
"rate_limits": [
{
"key": "user",
"renewal_period": "minute",
"calls": 10,
}
],
},
)
assert rate_limits == {
"rate_limits": [
{
"key": "user",
"renewal_period": "minute",
"calls": 10,
}
],
}