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


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

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

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

  • Внешние модели. Это базовые модели, размещенные за пределами 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. Чтобы получить к ним доступ, select вкладку обслуживание в левой боковой панели рабочей области. API-интерфейсы базисной модели находятся в верхней части представления конечных точек list.

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

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

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

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

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

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

REST API

Внимание

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

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

См. POST /api/2.0/служебные конечные точки для настройки конечных точек parameters.

{
  "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 для поставщика моделей, который вы хотите использовать. Дополнительные сведения schema запроса и ответа см. в POST /api/2.0/лужебные конечные точки, в REST API. Пошаговое руководство см . в руководстве по созданию конечных точек внешней модели для запроса моделей OpenAI.

Вы также можете создавать конечные точки для завершения и задач чата, как указано task в поле в external_model разделе конфигурации. Дополнительные сведения о поддерживаемых моделях и providers для каждой задачи см. в разделе Внешние модели в службе "Мозаичная модель ИИ".


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

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

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

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

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

REST API

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

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

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

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

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