Внешние модели в Службе моделей Databricks

Внимание

Примеры кода в этой статье демонстрируют использование API CRUD общедоступной предварительной версии MLflow.

В этой статье описываются внешние модели в Службе моделей Databricks, включая поддерживаемые поставщики моделей и ограничения.

Что такое внешние модели?

Внешние модели — это сторонние модели, размещенные за пределами Databricks. Поддерживается службой моделей, внешние модели позволяют оптимизировать использование и управление различными поставщиками крупных языковых моделей (LLM), такими как OpenAI и Anthropic, в организации. Вы также можете использовать Databricks Model Service в качестве поставщика для обслуживания пользовательских моделей, которые предлагают ограничения скорости для этих конечных точек. В рамках этой поддержки служба модели предлагает высокоуровневый интерфейс, упрощающий взаимодействие с этими службами, предоставляя единую конечную точку для обработки конкретных запросов, связанных с LLM.

Кроме того, поддержка Azure Databricks для внешних моделей обеспечивает централизованное управление учетными данными. Сохраняя ключи API в одном безопасном расположении, организации могут повысить уровень безопасности, свести к минимуму воздействие конфиденциальных ключей API во всей системе. Он также помогает предотвратить предоставление этих ключей в коде или безопасное управление ключами конечными пользователями.

См . руководство. Создание конечных точек внешней модели для запроса моделей OpenAI для пошагового руководства по созданию и запросу поддерживаемых моделей, обслуживаемых этими конечными точками с помощью пакета SDK для развертываний MLflow. Инструкции по использованию пользовательского интерфейса обслуживания и REST API см. в следующих руководствах.

Требования

Поставщики моделей

Внешние модели в Службе моделей предназначены для поддержки различных поставщиков моделей. Поставщик представляет источник моделей машинного обучения, таких как OpenAI, Anthropic и т. д. Каждый поставщик имеет определенные характеристики и конфигурации, инкапсулированные в external_model поле конфигурации внешней конечной точки модели.

Поддерживаются следующие поставщики:

Чтобы запросить поддержку поставщика, не указанного здесь, обратитесь к группе учетной записи Databricks.

Поддерживаемые модели

Выбранная модель напрямую влияет на результаты ответов, полученных от вызовов API. Поэтому выберите модель, которая соответствует вашим требованиям к варианту использования. Например, для создания ответов на беседы можно выбрать модель чата. И наоборот, для создания внедрения текста можно выбрать модель внедрения.

В приведенной ниже таблице представлен неисчерпающий список поддерживаемых моделей и соответствующих типов конечных точек. Сопоставления моделей, перечисленные ниже, можно использовать в качестве полезного руководства при настройке конечной точки для всех недавно выпущенных типов моделей, так как они становятся доступными для данного поставщика. Клиенты отвечают за обеспечение соответствия применимым лицензиям модели.

Примечание.

При быстром развитии LLM нет никакой гарантии, что этот список находится в актуальном состоянии в любое время.

Поставщик моделей 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** *Команды
* команда-light-nightly
* command-light
* команда ночью
* embed-english-v2.0
* embed-многоязычный-v2.0
* embed-english-light-v2.0
* embed-english-v3.0
* embed-english-light-v3.0
* embed-многоязычный-v3.0
* внедрить многоязычный свет-v3.0
Обслуживание моделей Databricks Конечная точка обслуживания Databricks Конечная точка обслуживания Databricks Конечная точка обслуживания Databricks
Amazon Bedrock Anthropic:

* 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:

* j2-grande-instruct
* j2-jumbo-instruct
* j2-mid
* j2-mid-v1
* j2-ultra j2-ultra-v1
Anthropic:

* 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† * j2-mid
* j2-light
* j2-ultra
Google Cloud Vertex AI text-bison * chat-bison
* gemini-pro
textembedding-gecko

** Поставщик моделей поддерживает точно настроенные модели завершения и чата. Чтобы запросить настраиваемую модель, заполните name поле external model конфигурации именем настраиваемой модели.

поставщик моделей † поддерживает пользовательские модели завершения.

Использование моделей, обслуживающих конечные точки службы моделей Databricks

Конечные точки обслуживания моделей Databricks в качестве поставщика поддерживаются для llm/v1/completionsтипов конечныхllm/v1/chatточек и llm/v1/embeddings конечных точек. Эти конечные точки должны принимать стандартные параметры запроса, помеченные как обязательные, а другие параметры могут игнорироваться в зависимости от того, поддерживает ли конечная точка службы моделей Databricks.

Дополнительные сведения о стандартных параметрах запроса см . в статье POST /service-endpoints/{name}/invocations в справочнике по API.

Эти конечные точки должны создавать ответы в следующем формате OpenAI.

Для задач завершения:

{
"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
  }
}

Для задач чата:

{
  "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
  }
}

Для задач внедрения:

{
  "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
  }
}

Конфигурация конечной точки

Для обслуживания и запроса внешних моделей необходимо настроить конечную точку обслуживания. См. статью "Создание пользовательских конечных точек обслуживания моделей"

Для внешней конечной точки обслуживания модели необходимо включить external_model поле и его параметры в served_entities раздел конфигурации конечной точки.

Поле external_model определяет модель, в которую эта конечная точка пересылает запросы. При указании модели важно, чтобы поставщик поддерживал запрашиваемую модель. Например, как поставщик поддерживает такие text-embedding-ada-002модели, openai как другие поставщики, но другие поставщики не могут. Если модель не поддерживается поставщиком, Databricks возвращает ошибку HTTP 4xx при попытке маршрутизировать запросы к этой модели.

В приведенной ниже таблице перечислены external_model параметры поля. Дополнительные сведения о параметрах конфигурации конечной точки см. в разделе POST /api/2.0/service-endpoints .

Параметр Descriptions
name Имя используемой модели. Например, gpt-3.5-turbo для модели OpenAI GPT-3.5-Turbo .
provider Указывает имя поставщика для этой модели. Это строковое значение должно соответствовать поддерживаемому поставщику внешней модели. Например, openai для моделей OpenAI GPT-3.5 .
task Задача соответствует типу требуемого взаимодействия языковой модели. Поддерживаемые задачи: llm/v1/completions, llm/v1/chat, llm/v1/embeddings.
<provider>_config Содержит дополнительные сведения о конфигурации, необходимые для модели. Это включает указание базового URL-адреса API и ключа API. См. статью "Настройка поставщика для конечной точки".

Ниже приведен пример создания внешней конечной точки модели с помощью create_endpoint() API. В этом примере запрос, отправленный в конечную точку завершения, пересылается в модель, предоставленную claude-2anthropic.

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}}"
                    }
                }
            }
        ]
    }
)

Настройка поставщика для конечной точки

При создании конечной точки необходимо указать необходимые конфигурации для указанного поставщика моделей. В следующих разделах приведены общие сведения о доступных параметрах конфигурации конечной точки для каждого поставщика модели.

OpenAI

Параметр конфигурации Description Обязательное поле По умолчанию.
openai_api_key Ключ API для службы OpenAI. Да
openai_api_type Необязательное поле для указания типа используемого API OpenAI. No
openai_api_base Базовый URL-адрес API OpenAI. No https://api.openai.com/v1
openai_api_version Необязательное поле для указания версии API OpenAI. No
openai_organization Необязательное поле для указания организации в OpenAI. No

Cohere

Параметр конфигурации Description Обязательное поле По умолчанию.
cohere_api_key Ключ API для службы Cohere. Да

Anthropic

Параметр конфигурации Description Обязательное поле По умолчанию.
anthropic_api_key Ключ API для службы Anthropic. Да

Azure OpenAI

Azure OpenAI имеет различные функции по сравнению с прямой службой OpenAI. Общие сведения см . в документации по сравнению.

Параметр конфигурации Description Обязательное поле По умолчанию.
openai_api_key Ключ API для службы Azure OpenAI. Да
openai_api_type Измените этот параметр, чтобы представить предпочтительный протокол проверки доступа к безопасности. Для проверки маркера доступа используйте azure. Для проверки подлинности с помощью Azure Active Directory (Azure AD) используется azuread. Да
openai_api_base Базовый URL-адрес для службы API OpenAI Azure, предоставляемой Azure. Да
openai_api_version Версия службы Azure OpenAI, используемая датой. Да
openai_deployment_name Имя ресурса развертывания для службы Azure OpenAI. Да
openai_organization Необязательное поле для указания организации в OpenAI. No

В следующем примере показано, как создать конечную точку с помощью 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

Параметр конфигурации Description Обязательное поле По умолчанию.
private_key Это закрытый ключ для учетной записи службы, которая имеет доступ к службе Google Cloud Vertex AI. Ознакомьтесь с рекомендациями по управлению ключами учетной записи службы. Да
region Это регион службы ИИ Google Cloud Vertex. Дополнительные сведения см . в поддерживаемых регионах . Некоторые модели доступны только в определенных регионах. Да
project_id Это идентификатор проекта Google Cloud, с которым связана учетная запись службы. Да

Amazon Bedrock

Чтобы использовать Amazon Bedrock в качестве внешнего поставщика моделей, клиентам необходимо убедиться, что Bedrock включен в указанном регионе AWS, а указанная пара ключей AWS имеет соответствующие разрешения для взаимодействия со службами Bedrock. Дополнительные сведения см. в разделе "Управление удостоверениями и доступом AWS".

Параметр конфигурации Description Обязательное поле По умолчанию.
aws_region Используемый регион AWS. Бедроук должен быть включен там. Да
aws_access_key_id Идентификатор ключа доступа AWS с разрешениями на взаимодействие со службами Bedrock. Да
aws_secret_access_key Ключ секретного доступа AWS, связанный с идентификатором ключа доступа, с разрешениями на взаимодействие со службами Bedrock. Да
bedrock_provider Базовый поставщик в Amazon Bedrock. Поддерживаемые значения (без учета регистра) включают: Anthropic, Cohere, AI21Labs, Amazon Да

В следующем примере показано, как создать конечную точку с помощью 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",
                    },
                }
            }
        ]
    },
)

Если возникли проблемы с разрешениями AWS, Databricks рекомендует проверить учетные данные непосредственно с помощью API Amazon Bedrock.

Лаборатории AI21

Параметр конфигурации Description Обязательное поле По умолчанию.
ai21labs_api_key Это ключ API для службы AI21 Labs. Да

Запрос конечной точки внешней модели

После создания внешней конечной точки модели он готов получать трафик от пользователей.

Запросы оценки можно отправлять в конечную точку с помощью клиента OpenAI, REST API или пакета SDK для развертываний MLflow.

В следующем примере выполняется claude-2 запрос модели завершения, размещенной anthropic, с помощью клиента OpenAI. Чтобы использовать клиент OpenAI, заполните model поле именем конечной точки обслуживания модели, в которой размещена модель, которую требуется запросить.

В этом примере используется ранее созданная конечная точка, anthropic-completions-endpointнастроенная для доступа к внешним моделям из поставщика модели Anthropic. Узнайте, как создавать внешние конечные точки модели.

Ознакомьтесь с поддерживаемыми моделями для дополнительных моделей, которые можно запрашивать и их поставщиками.

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)

Ожидаемый формат выходных ответов:

{
"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
  }
}

Дополнительные параметры запроса

Вы можете передать любые дополнительные параметры, поддерживаемые поставщиком конечной точки в рамках запроса.

Например:

  • logit_bias (поддерживается OpenAI, Cohere).
  • top_k (поддерживается Anthropic, Cohere).
  • frequency_penalty (поддерживается OpenAI, Cohere).
  • presence_penalty (поддерживается OpenAI, Cohere).
  • stream (поддерживается OpenAI, Anthropic, Cohere, Amazon Bedrock for Anthropic). Это доступно только для запросов чата и завершения.

Ограничения

В зависимости от выбранной внешней модели конфигурация может привести к обработке данных за пределами региона, в котором были получены данные.

См . ограничения и регионы обслуживания моделей.

Дополнительные ресурсы