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


Создание базовых моделей обслуживания конечных точек

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

Мозаичная служба моделей ИИ поддерживает следующие модели:

  • Внешние модели. Это базовые модели, размещенные за пределами Databricks. Конечные точки, обслуживающие внешние модели, могут централизованно управляться, и клиенты могут устанавливать ограничения скорости и управление доступом для них. К примерам относятся основополагающие модели, такие как GPT-4 от OpenAI, Claude от Anthropic и другие.

  • Современные модели открытого фонда, предоставляемые API-интерфейсами модели Foundation. Эти модели являются курируемыми архитектурами базовых моделей, поддерживающими оптимизированное вывод. Базовые модели, такие как Meta-Llama-3.1-70B-Instruct, GTE-Large и Mistral-7B, доступны для немедленного использования с оплатой за токен . Рабочие нагрузки, использующие базовые или точно настроенные модели, можно развернуть с гарантиями производительности с помощью подготовленной пропускной способности.

Служба моделей предоставляет следующие параметры для создания конечной точки обслуживания модели:

  • Пользовательский интерфейс обслуживания
  • REST API
  • Пакет SDK для развертываний MLflow

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

Требования

import mlflow.deployments

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

Создание конечной точки обслуживания базовой модели

Вы можете создать конечную точку, которая обслуживает точно настроенные варианты базовых моделей, доступных с помощью API-интерфейсов модели Foundation, подготовленных пропускной способностью. См. статью "Создание подготовленной конечной точки пропускной способности с помощью REST API".

Для базовых моделей, доступных с помощью API-интерфейсов модели Foundation за токен, Databricks автоматически предоставляет определенные конечные точки для доступа к поддерживаемым моделям в рабочей области Databricks. Чтобы получить к ним доступ, выберите вкладку Serving в левой боковой панели рабочего пространства. API-интерфейсы модели foundation находятся в верхней части представления списка конечных точек.

Для получения информации о запросах к этим конечным точкам, см. Запросы к базовым моделям.

Создание конечной точки обслуживания внешней модели

Ниже описано, как создать конечную точку, которая запрашивает базовую модель, доступную с помощью внешних моделей Databricks.

Обслуживающий пользовательский интерфейс

  1. В поле "Имя" укажите имя конечной точки.
  2. В разделе "Обслуживаемые сущности "
    1. Щелкните в поле Сущность, чтобы открыть форму Выбрать обслуживаемую сущность.
    2. Выберите внешней модели.
    3. Выберите поставщик модели, который вы хотите использовать.
    4. Щелкните Confirm (Подтвердить).
    5. Укажите имя внешней модели, которую вы хотите использовать. Форма динамически обновляется на основе выбранного фрагмента. См. доступные внешние модели.
    6. Выберите тип задачи. Доступные задачи : чат, завершение и внедрение.
    7. Укажите сведения о конфигурации для доступа к выбранному поставщику моделей. Обычно это секрет, ссылающийся на личный маркер доступа, который требуется использовать конечной точке для доступа к этой модели.
  3. Нажмите кнопку Создать. Откроется страница "Обслуживание конечных точек" с состоянием конечной точки обслуживания, отображаемой как "Не готово".

Создание конечной точки обслуживания модели

REST API

Внимание

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

В следующем примере создается конечная точка, которая служит первой версией модели, предоставленной text-embedding-ada-002 OpenAI.

Сведения о параметрах конфигурации конечной точки см. в POST /api/2.0/service-endpoints.

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

Далее представлен пример ответа.

{
  "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 для развертываний MLflow

В следующем примере создается конечная точка для внедрения с помощью OpenAI text-embedding-ada-002.

Для внешних конечных точек модели необходимо указать ключи API для поставщика моделей, который вы хотите использовать. Смотрите POST /api/2.0/serving-endpoints в REST API для получения информации о схемах запроса и ответа. Пошаговое руководство см . в руководстве по созданию конечных точек внешней модели для запроса моделей OpenAI.

Вы также можете создавать конечные точки для завершения и задач чата, как указано task в поле в external_model разделе конфигурации. См. раздел Внешние модели в «Mosaic AI Model Serving» для получения сведений о поддерживаемых моделях и поставщиках для каждой задачи.


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

Обновление конечных точек для обслуживания моделей

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

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

Если external_model присутствует в конфигурации конечной точки, список обслуживающих сущностей может иметь только один объект served_entity. Существующие конечные точки с external_model не может быть обновлены, чтобы больше не было external_model. Если конечная точка создана без external_model, ее нельзя обновить, чтобы добавить external_model.

REST API

Чтобы обновить конечную точку, ознакомьтесь с документацией по обновлению конфигурации REST API , чтобы получить сведения о схеме запроса и ответа.

{
  "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 для развертываний MLflow

Чтобы обновить конечную точку, ознакомьтесь с документацией по обновлению конфигурации REST API , чтобы получить сведения о схеме запроса и ответа.

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,
        }
    ],
}

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