Поделиться через


Внешние модели в мозаичной модели ИИ

Внимание

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

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

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

Внимание

Теперь вы можете настроить шлюз ИИ Мозаики на конечных точках обслуживания моделей, обслуживающих внешние модели. Шлюз искусственного интеллекта обеспечивает готовность к управлению, мониторингу и рабочей готовности к работе с этими конечными точками модели. См . Раздел "Шлюз ИИ Мозаики".

Внешние модели — это сторонние модели, размещенные за пределами Databricks. Поддерживается службой моделей, внешние модели позволяют оптимизировать использование и управление различными поставщиками крупных языковых моделей (LLM), такими как OpenAI и Anthropic, в организации. Вы также можете использовать модель ИИ Мозаики, выступающую в качестве поставщика, для обслуживания пользовательских моделей, которые предлагают ограничения скорости для этих конечных точек. В рамках этой поддержки служба модели предлагает высокоуровневый интерфейс, упрощающий взаимодействие с этими службами, предоставляя единую конечную точку для обработки конкретных запросов, связанных с 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-4o
- gpt-4o-2024-05-13
- gpt-4o-mini
- 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
- gpt-4o
- gpt-4o-mini
- 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-5-sonnet-20240620
- claude-3-haiku-20240307
- claude-3-opus-20240229
- claude-3-sonnet-20240229
- claude-2.1
- claude-2.0
- claude-instant-1.2
Согласовываться** -команда
- command-light
- command-r-plus
- command-r
-команда
- command-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
Amazon Bedrock Anthropic:

- claude-instant-v1
- claude-v2

Согласовываться:

— command-text-v14
— command-light-text-v14

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

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

- claude-v2
- claude-v2:1
- claude-3-sonnet-20240229-v1:0
- claude-3-5-sonnet-20240620-v1:0

Согласовываться:

— command-r-plus-v1:0
— command-r-v1:0
Амазонка:

- titan-embed-text-v1
- titan-embed-g1-text-02

Согласовываться:

— embed-english-v3
— внедрение многоязычных версий 3
Лаборатории AI21† - j2-mid
- j2-light
- j2-ultra
Google Cloud Vertex AI text-bison - chat-bison
- gemini-pro
- gemini-1.0-pro
- gemini-1.5-pro
- gemini-1.5-flash
textembedding-gecko

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

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

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

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

Дополнительные сведения о стандартных параметрах запроса см . в статье 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 раздел конфигурации конечной точки. Если вы настраиваете несколько внешних моделей в конечной точке обслуживания, необходимо указать traffic_config процент маршрутизации трафика для каждой внешней модели.

Поле 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-2 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}}"
                    }
                }
            }
        ]
    }
)

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

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

Примечание.

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

OpenAI

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

Согласовываться

Параметр конфигурации Description Обязательное поле По умолчанию.
cohere_api_key Справочник по секрету Azure Databricks для ключа API Cohere. Если вы предпочитаете вставлять ключ API напрямую, см. раздел cohere_api_key_plaintext. Необходимо указать ключ API, используя одно из следующих полей: cohere_api_key или cohere_api_key_plaintext.
cohere_api_key_plaintext Ключ API Cohere, предоставленный в виде строки открытого текста. Если вы предпочитаете ссылаться на ключ с помощью секретов Azure Databricks, см. раздел cohere_api_key. Необходимо указать ключ API, используя одно из следующих полей: cohere_api_key или cohere_api_key_plaintext.
cohere_api_base Базовый URL-адрес службы Cohere. No

Anthropic

Параметр конфигурации Description Обязательное поле По умолчанию.
anthropic_api_key Справочник по секрету Azure Databricks для ключа API anthropic. Если вы предпочитаете вставлять ключ API напрямую, см. раздел anthropic_api_key_plaintext. Необходимо указать ключ API, используя одно из следующих полей: anthropic_api_key или anthropic_api_key_plaintext.
anthropic_api_key_plaintext Ключ API anthropic, предоставленный в виде строки открытого текста. Если вы предпочитаете ссылаться на ключ с помощью секретов Azure Databricks, см. раздел anthropic_api_key. Необходимо указать ключ API, используя одно из следующих полей: anthropic_api_key или anthropic_api_key_plaintext.

Azure OpenAI

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

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

Если вы используете Azure OpenAI с идентификатором Microsoft Entra, используйте следующие параметры в конфигурации конечной точки.

Параметр конфигурации Description Обязательное поле По умолчанию.
microsoft_entra_tenant_id Идентификатор клиента для проверки подлинности Идентификатора Microsoft Entra. Да
microsoft_entra_client_id Идентификатор клиента для проверки подлинности Идентификатора Microsoft Entra. Да
microsoft_entra_client_secret Ссылка на секретный ключ Azure Databricks для секрета клиента, используемого для проверки подлинности идентификатора Microsoft Entra. Если вы предпочитаете вставить секрет клиента напрямую, см. раздел microsoft_entra_client_secret_plaintext. Необходимо указать ключ API, используя одно из следующих полей: microsoft_entra_client_secret или microsoft_entra_client_secret_plaintext.
microsoft_entra_client_secret_plaintext Секрет клиента, используемый для проверки подлинности идентификатора Microsoft Entra, предоставленный в виде строки открытого текста. Если вы предпочитаете ссылаться на ключ с помощью секретов Azure Databricks, см. раздел microsoft_entra_client_secret. Необходимо указать ключ API, используя одно из следующих полей: microsoft_entra_client_secret или microsoft_entra_client_secret_plaintext.
openai_api_type Используется azuread для проверки подлинности с помощью идентификатора Microsoft Entra. Да
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 Справочник по секретному ключу Azure Databricks для закрытого ключа для учетной записи службы, которая имеет доступ к службе Google Cloud Vertex AI. Ознакомьтесь с рекомендациями по управлению ключами учетной записи службы. Если вы предпочитаете вставлять ключ API напрямую, см. раздел private_key_plaintext. Необходимо указать ключ API, используя одно из следующих полей: private_key или private_key_plaintext.
private_key_plaintext Закрытый ключ для учетной записи службы, которая имеет доступ к службе Google Cloud Vertex AI, предоставленной в виде открытого секрета. Ознакомьтесь с рекомендациями по управлению ключами учетной записи службы. Если вы предпочитаете ссылаться на ключ с помощью секретов Azure Databricks, см. раздел private_key. Необходимо указать ключ API, используя одно из следующих полей: private_key или private_key_plaintext.
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 Справочник по секретному ключу Azure Databricks для идентификатора ключа доступа AWS с разрешениями на взаимодействие со службами Bedrock. Если вы предпочитаете вставлять ключ API напрямую, см. раздел aws_access_key_id_plaintext. Необходимо указать ключ API, используя одно из следующих полей: aws_access_key_id или aws_access_key_id_plaintext.
aws_access_key_id_plaintext Идентификатор ключа доступа AWS с разрешениями на взаимодействие со службами Bedrock, предоставляемыми в виде строки открытого текста. Если вы предпочитаете ссылаться на ключ с помощью секретов Azure Databricks, см. раздел aws_access_key_id. Необходимо указать ключ API, используя одно из следующих полей: aws_access_key_id или aws_access_key_id_plaintext.
aws_secret_access_key Справочник по секрету Azure Databricks для ключа секретного доступа AWS, связанного с идентификатором ключа доступа, с разрешениями на взаимодействие со службами Bedrock. Если вы предпочитаете вставлять ключ API напрямую, см. раздел aws_secret_access_key_plaintext. Необходимо указать ключ API, используя одно из следующих полей: aws_secret_access_key или aws_secret_access_key_plaintext.
aws_secret_access_key_plaintext Ключ секретного доступа AWS, связанный с идентификатором ключа доступа, с разрешениями на взаимодействие со службами Bedrock, предоставляемыми в виде строки открытого текста. Если вы предпочитаете ссылаться на ключ с помощью секретов Azure Databricks, см. раздел aws_secret_access_key. Необходимо указать ключ API, используя одно из следующих полей: aws_secret_access_key или aws_secret_access_key_plaintext.
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 Справочник по секрету Azure Databricks для ключа API Лабораторий AI21. Если вы предпочитаете вставлять ключ API напрямую, см. раздел ai21labs_api_key_plaintext. Необходимо указать ключ API, используя одно из следующих полей: ai21labs_api_key или ai21labs_api_key_plaintext.
ai21labs_api_key_plaintext Ключ API Лабораторий AI21, предоставленный в виде строки открытого текста. Если вы предпочитаете ссылаться на ключ с помощью секретов Azure Databricks, см. раздел ai21labs_api_key. Необходимо указать ключ API, используя одно из следующих полей: ai21labs_api_key или ai21labs_api_key_plaintext.

Настройка шлюза искусственного интеллекта в конечной точке

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

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

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

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

Запросы оценки можно отправлять в конечную точку с помощью клиента 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). Это доступно только для запросов чата и завершения.

Ограничения

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

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