Modelos externos en el Servicio de modelos de Databricks

Importante

Los ejemplos de código de este artículo muestran el uso de la API CRUD de implementaciones de MLflow en versión preliminar pública.

Este artículo describe los modelos externos en el Servicio de modelos de Databricks, incluidos sus proveedores de modelos compatibles y sus limitaciones.

¿Qué son los modelos externos?

Los modelos externos son modelos de terceros hospedados fuera de Databricks. Compatible con el Servicio de modelos, los modelos externos le permiten racionalizar el uso y la administración de varios proveedores de modelos de lenguaje grandes (LLM), como OpenAI y Anthropic, dentro de una organización. También puede usar el Servicio de modelos de Databricks como proveedor para servir modelos personalizados, que ofrece límites de velocidad para esos puntos de conexión. Como parte de este soporte, el Servicio de modelos ofrece una interfaz de alto nivel que simplifica la interacción con estos servicios proporcionando un punto de conexión unificado para controlar las solicitudes específicas relacionadas con LLM.

Además, la compatibilidad de Azure Databricks con modelos externos proporciona administración centralizada de credenciales. Al almacenar claves de API en una ubicación segura, las organizaciones pueden mejorar su posición de seguridad minimizando la exposición de claves de API confidenciales en todo el sistema. También ayuda a evitar exponer estas claves dentro del código o exigir a los usuarios finales que administren las claves de forma segura.

Consulte Tutorial: Creación de puntos de conexión de modelo externos para consultar modelos OpenAI para obtener instrucciones paso a paso sobre la creación de puntos de conexión de modelos externos y la consulta de modelos compatibles que sirven esos puntos de conexión mediante el SDK de implementaciones de MLflow. Consulte las siguientes guías para obtener instrucciones sobre cómo usar la interfaz de usuario de servicio y la API de REST:

Requisitos

Proveedores de modelos

Los modelos externos del Servicio de modelos están diseñad. Un proveedor representa el origen de los modelos de aprendizaje automático, como OpenAI, Anthropic, etc. Cada proveedor tiene sus características y configuraciones específicas que se encapsulan en el campo external_model de la configuración del punto de conexión del modelo externo.

Se admiten los siguientes proveedores:

  • openai: para los modelos ofrecidos por OpenAI y las integraciones de Azure para Azure OpenAI y Azure OpenAI con AAD.
  • anthropic: para los modelos ofrecidos por Anthropic.
  • cohere: para modelos ofrecidos por Cohere.
  • amazon-bedrock: para modelos ofrecidos por Amazon Bedrock.
  • ai21labs: para los modelos ofrecidos por AI21Labs.
  • google-cloud-vertex-ai: para modelos ofrecidos por Google Cloud Vertex AI.
  • databricks-model-serving: para puntos de conexión de Servicio de modelos de Databricks con esquemas compatibles. Consulte Configuración del punto de conexión.

Para solicitar soporte técnico para un proveedor que no aparece aquí, póngase en contacto con el equipo de la cuenta de Databricks.

Modelos admitidos

El modelo que elija afecta directamente a los resultados de las respuestas que obtiene de las llamadas API. Por lo tanto, elija un modelo que se ajuste a los requisitos de casos de uso. Por ejemplo, para generar respuestas conversacionales, puede elegir un modelo de chat. Por el contrario, para generar incrustaciones de texto, puede elegir un modelo de inserción.

En la tabla siguiente se presenta una lista no exhaustiva de los modelos admitidos y los tipos de punto de conexión correspondientes. Las asociaciones de modelos enumeradas a continuación se pueden usar como una guía útil al configurar un punto de conexión para cualquier tipo de modelo recién publicado a medida que estén disponibles con un proveedor determinado. Los clientes son responsables de garantizar el cumplimiento de las licencias de modelo aplicables.

Nota:

Con el rápido desarrollo de LLM, no hay ninguna garantía de que esta lista esté actualizada en todo momento.

Proveedor de modelos llm/v1/completions llm/v1/chat llm/v1/embeddings
OpenAI** * gpt-3.5-turbo-instruct
* babbage-002
* davinci-002
* gpt-3.5-turbo
* gpt-4
* gpt-3.5-turbo-0125
* gpt-3.5-turbo-1106
* gpt-4-0125-preview
* gpt-4-turbo-preview
* gpt-4-1106-preview
* gpt-4-vision-preview
* gpt-4-1106-vision-preview
* text-embedding-ada-002
* text-embedding-3-large
* text-embedding-3-small
Azure OpenAI** * text-davinci-003
* gpt-35-turbo-instruct
* gpt-35-turbo
* gpt-35-turbo-16k
* gpt-4
* gpt-4-32k
* text-embedding-ada-002
* text-embedding-3-large
* text-embedding-3-small
Anthropic * claude-1
* claude-1.3-100k
* claude-2
* claude-2.1
* claude-2.0
* claude-instant-1.2
* claude-3-opus-20240229
* claude-3-sonnet-20240229
* claude-2.1
* claude-2.0
* claude-instant-1.2
Cohere** * command
* command-light-nightly
* command-light
* command-nightly
* embed-english-v2.0
* embed-multilingual-v2.0
* embed-english-light-v2.0
* embed-english-v3.0
* embed-english-light-v3.0
* embed-multilingual-v3.0
* embed-multilingual-light-v3.0
Servicio de modelos de Databricks Punto de conexión de servicio de Databricks Punto de conexión de servicio de Databricks Punto de conexión de servicio de Databricks
Amazon Bedrock Antrópico:

* claude-instant-v1
* claude-v1
* claude-v2

Cohere:

* command-text-v14
* command-text-v14:7:4k
* command-light-text-v14
* command-light-text-v14:7:4k

AI21 Labs:

* j2-grande-instruct
* j2-jumbo-instruct
* j2-mid
* j2-mid-v1
* j2-ultra j2-ultra-v1
Antrópico:

* claude-instant-v1:2:100k
* claude-v2
* claude-v2:0:18k
* claude-v2:0:100k
* claude-v2:1
* claude-v2:1:18k
* claude-v2:1:200k
* claude-3-sonnet-20240229-v1:0
Amazon:

* titan-embed-text-v1
* titan-embed-g1-text-02
* titan-embed-text-v1:2:8k
AI21 Labs† * j2-mid
* j2-light
* j2-ultra
Google Cloud Vertex AI text-bison * chat-bison
* gemini-pro
textembedding-gecko

El proveedor de modelos ** admite modelos de chat y finalización ajustados. Para consultar un modelo ajustado, rellene el campo name de la configuración external model con el nombre del modelo ajustado.

† El proveedor de modelos admite modelos de finalización personalizados.

Uso de modelos servidos en los puntos de conexión del Servicio de modelos de Databricks

Los puntos de conexión del Servicio de modelos de Databricks como proveedor son compatibles con los tipos de punto de conexión llm/v1/completions, llm/v1/chat y llm/v1/embeddings. Estos puntos de conexión deben aceptar los parámetros de consulta estándar marcados como obligatorios, mientras que otros parámetros pueden omitirse en función de si el punto de conexión del servicio de modelos de Databricks los admite.

Consulte POST /serving-endpoints/{name}/invocaciones en la referencia de API para los parámetros de consulta estándar.

Estos puntos de conexión deben generar respuestas en el siguiente formato OpenAI.

Para tareas de finalización:

{
"id": "123", # Not Required
"model": "test_databricks_model",
"choices": [
  {
    "text": "Hello World!",
    "index": 0,
    "logprobs": null, # Not Required
    "finish_reason": "length" # Not Required
  }
],
"usage": {
  "prompt_tokens": 8,
  "total_tokens": 8
  }
}

Para tareas de chat:

{
  "id": "123", # Not Required
  "model": "test_chat_model",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "\n\nHello there, how may I assist you today?",
    },
    "finish_reason": "stop"
  },
  {
    "index": 1,
    "message": {
      "role": "human",
      "content": "\n\nWhat is the weather in San Francisco?",
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 8,
    "total_tokens": 8
  }
}

Para tareas de inserción:

{
  "data": [
    {
      "embedding": [
       0.0023064255,
        -0.009327292,
        .... # (1536 floats total for ada-002)
        -0.0028842222,
      ],
      "index": 0
    },
    {
      "embedding": [
        0.0023064255,
        -0.009327292,
        .... #(1536 floats total for ada-002)
        -0.0028842222,
      ],
      "index": 0
    }
  ],
  "model": "test_embedding_model",
  "usage": {
    "prompt_tokens": 8,
    "total_tokens": 8
  }
}

Configuración del punto de conexión

Para atender y consultar modelos externos, debe configurar un punto de conexión de servicio. Vea Creación de puntos de conexión de servicio de modelos personalizados

Para un punto de conexión de servicio de modelo externo, debe incluir el campo external_model y sus parámetros en la sección served_entities de la configuración del punto de conexión.

El campo external_model define el modelo al que este punto de conexión reenvía las solicitudes. Al especificar un modelo, es fundamental que el proveedor admita el modelo que solicita. Por ejemplo, openai como proveedor admite modelos como text-embedding-ada-002, pero es posible que otros proveedores no. Si el proveedor no admite el modelo, Databricks devuelve un error HTTP 4xx al intentar enrutar solicitudes a ese modelo.

En la tabla siguiente se resumen los parámetros de campo external_model. Consulte POST /api/2.0/serving-endpoints para ver los parámetros de configuración del punto de conexión.

Parámetro Descripciones
name Nombre del modelo que se va a usar. Por ejemplo, gpt-3.5-turbo para el modelo GPT-3.5-Turbo de OpenAI.
provider Especifica el nombre del proveedor para este modelo. Este valor de cadena debe corresponder a un proveedor de modelos externo admitido. Por ejemplo, openai para los modelos GPT-3.5 de OpenAI.
task La tarea corresponde al tipo de interacción del modelo de lenguaje que quiera. Las tareas admitidas son “llm/v1/completions”, “llm/v1/chat”, “llm/v1/embeddings”.
<provider>_config Contiene los detalles de configuración adicionales necesarios para el modelo. Esto incluye especificar la dirección URL base de la API y la clave de API. Consulte Configuración del proveedor para un punto de conexión.

A continuación se muestra un ejemplo de creación de un punto de conexión de modelo externo mediante la API de create_endpoint(). En este ejemplo, una solicitud enviada al punto de conexión de finalización se reenvía al modelo de claude-2 proporcionado por anthropic.

import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")

client.create_endpoint(
    name="anthropic-completions-endpoint",
    config={
        "served_entities": [
            {
                "name": "test",
                "external_model": {
                    "name": "claude-2",
                    "provider": "anthropic",
                    "task": "llm/v1/completions",
                    "anthropic_config": {
                        "anthropic_api_key": "{{secrets/my_anthropic_secret_scope/anthropic_api_key}}"
                    }
                }
            }
        ]
    }
)

Configuración del proveedor para un punto de conexión

Al crear un punto de conexión, debe proporcionar las configuraciones necesarias para el proveedor de modelos especificado. En las secciones siguientes se resumen los parámetros de configuración de punto de conexión disponibles para cada proveedor de modelos.

OpenAI

Parámetro de configuración Descripción Necesario Valor predeterminado
openai_api_key Clave de API para el servicio OpenAI.
openai_api_type Campo opcional para especificar el tipo de API de OpenAI que se va a usar. No
openai_api_base Dirección URL base de la API de OpenAI. No https://api.openai.com/v1
openai_api_version Campo opcional para especificar la versión de API de OpenAI. No
openai_organization Campo opcional para especificar la organización en OpenAI. No

Cohere

Parámetro de configuración Descripción Necesario Valor predeterminado
cohere_api_key Clave de API para el servicio Cohere.

Anthropic

Parámetro de configuración Descripción Necesario Valor predeterminado
anthropic_api_key Clave de API para el servicio Anthropic.

Azure OpenAI

Azure OpenAI tiene características distintas en comparación con el servicio directo de OpenAI. Para obtener información general, consulte la documentación de comparación.

Parámetro de configuración Descripción Necesario Valor predeterminado
openai_api_key Clave de API para el servicio Azure OpenAI.
openai_api_type Ajuste este parámetro para representar el protocolo de validación de acceso de seguridad preferido. Para la validación de tokens de acceso, use azure. Para la autenticación usando Azure Active Directory (Azure AD) use, azuread.
openai_api_base La dirección URL base del servicio Azure OpenAI API proporcionado por Azure.
openai_api_version Versión del servicio Azure OpenAI que se va a usar, especificada por una fecha.
openai_deployment_name Nombre del recurso de implementación para el servicio Azure OpenAI.
openai_organization Campo opcional para especificar la organización en OpenAI. No

En el ejemplo siguiente se muestra cómo crear un punto de conexión con Azure OpenAI:

client.create_endpoint(
    name="openai-chat-endpoint",
    config={
        "served_entities": [{
            "external_model": {
                "name": "gpt-3.5-turbo",
                "provider": "openai",
                "task": "llm/v1/chat",
                "openai_config": {
                    "openai_api_type": "azure",
                    "openai_api_key": "{{secrets/my_openai_secret_scope/openai_api_key}}",
                    "openai_api_base": "https://my-azure-openai-endpoint.openai.azure.com",
                    "openai_deployment_name": "my-gpt-35-turbo-deployment",
                    "openai_api_version": "2023-05-15"
                }
            }
        }]
    }
)

Google Cloud Vertex AI

Parámetro de configuración Descripción Necesario Valor predeterminado
private_key Esta es la clave privada de la cuenta de servicio que tiene acceso al servicio Google Cloud Vertex AI. Consulte Procedimientos recomendados para administrar claves de cuenta de servicio.
region Esta es la región del servicio Google Cloud Vertex AI. Para más información, consulte las regiones admitidas. Algunos modelos solo están disponibles en regiones específicas.
project_id Este es el identificador del proyecto de Google Cloud al que está asociada la cuenta de servicio.

Amazon Bedrock

Para usar Amazon Bedrock como proveedor de modelos externo, los clientes deben asegurarse de que Bedrock está habilitado en la región de AWS especificada y el par de claves de AWS especificado tiene los permisos adecuados para interactuar con los servicios de Bedrock. Para más información, consulte Administración de acceso e identidades de AWS.

Parámetro de configuración Descripción Necesario Valor predeterminado
aws_region Región de AWS que se va a usar. Bedrock tiene que estar habilitado allí.
aws_access_key_id Un identificador de clave de acceso de AWS con permisos para interactuar con los servicios de Bedrock.
aws_secret_access_key Una clave de acceso secreta de AWS emparejada con el identificador de clave de acceso, con permisos para interactuar con los servicios de Bedrock.
bedrock_provider El proveedor subyacente de Amazon Bedrock. Los valores admitidos (no distinguen mayúsculas de minúsculas) incluyen: Anthropic, Cohere, AI21Labs, Amazon

En el ejemplo siguiente se muestra cómo crear un punto de conexión con Amazon Bedrock.

client.create_endpoint(
    name="bedrock-anthropic-completions-endpoint",
    config={
        "served_entities": [
            {
                "external_model": {
                    "name": "claude-v2",
                    "provider": "amazon-bedrock",
                    "task": "llm/v1/completions",
                    "amazon_bedrock_config": {
                        "aws_region": "<YOUR_AWS_REGION>",
                        "aws_access_key_id": "{{secrets/my_amazon_bedrock_secret_scope/aws_access_key_id}}",
                        "aws_secret_access_key": "{{secrets/my_amazon_bedrock_secret_scope/aws_secret_access_key}}",
                        "bedrock_provider": "anthropic",
                    },
                }
            }
        ]
    },
)

Si hay problemas de permisos de AWS, Databricks recomienda comprobar las credenciales directamente con la API de Amazon Bedrock.

AI21 Labs

Parámetro de configuración Descripción Necesario Valor predeterminado
ai21labs_api_key Esta es la clave de API para el servicio AI21 Labs.

Consultar un punto de conexión del modelo externo

Después de crear un punto de conexión de modelo externo, está listo para recibir tráfico de los usuarios.

Puede enviar solicitudes de puntuación al punto de conexión mediante el cliente de OpenAI, la API REST o el SDK de implementaciones de MLflow.

En el ejemplo siguiente se consulta el modelo de finalizaciones de claude-2 que hospeda Anthropic mediante el cliente de OpenAI. Para usar el cliente de OpenAI, rellene el campo model con el nombre del punto de conexión de servicio del modelo que hospeda el modelo que quiere consultar.

En este ejemplo se usa un punto de conexión creado anteriormente, anthropic-completions-endpoint, configurado para acceder a modelos externos desde el proveedor de modelos de Anthropic. Vea cómo crear puntos de conexión de modelo externos.

Vea Modelos admitidos para obtener modelos adicionales que pueda consultar y sus proveedores.

import os
import openai
from openai import OpenAI

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

completion = client.completions.create(
  model="anthropic-completions-endpoint",
  prompt="what is databricks",
  temperature=1.0
)
print(completion)

Formato de respuesta de salida esperado:

{
"id": "123", # Not Required
"model": "anthropic-completions-endpoint",
"choices": [
  {
    "text": "Hello World!",
    "index": 0,
    "logprobs": null, # Not Required
    "finish_reason": "length" # Not Required
  }
],
"usage": {
  "prompt_tokens": 8,
  "total_tokens": 8
  }
}

Parámetros de consulta adicionales

Puede pasar los parámetros adicionales admitidos por el proveedor del punto de conexión como parte de la consulta.

Por ejemplo:

  • logit_bias (admitido con OpenAI, Cohere).
  • top_k (admitido con Anthropic, Cohere).
  • frequency_penalty (admitido con OpenAI, Cohere).
  • presence_penalty (admitido con OpenAI, Cohere).
  • stream (compatible con OpenAI, Anthropic, Cohere, Amazon Bedrock para Anthropic). Esto solo está disponible para las solicitudes de chat y finalizaciones.

Limitaciones

En función del modelo externo que elija, la configuración podría hacer que los datos se procesen fuera de la región donde se originaron los datos.

Consulte límites de servicio de modelos y regiones.

Recursos adicionales