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


Api модели модели подготовки подготовленной пропускной способности

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

Что такое подготовленная пропускная способность?

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

Дополнительную информацию можно найти в следующих ресурсах:

Дополнительные сведения см . в api-интерфейсах модели "Подготовленная пропускная способность" для списка поддерживаемых архитектур модели для подготовленных конечных точек пропускной способности.

Требования

См . требования. Сведения о развертывании точно настроенных базовых моделей см. в статье "Развертывание точно настроенных базовых моделей".

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Databricks рекомендует использовать базовые модели, предварительно установленные в каталоге Unity. Эти модели можно найти в каталоге system в схеме ai (system.ai).

Чтобы развернуть базовую модель, выполните приведенные действия.

  1. Перейдите в system.ai обозреватель каталогов.
  2. Щелкните имя модели для развертывания.
  3. На странице модели нажмите кнопку "Служить этой модели ".
  4. Откроется страница создания конечной точки службы. См. статью "Создание подготовленной конечной точки пропускной способности с помощью пользовательского интерфейса".

Развертывание базовых моделей из Databricks Marketplace

Кроме того, можно установить базовые модели в каталог Unity из Databricks Marketplace.

Для поиска семейства моделей и на странице модели можно выбрать "Получить доступ " и предоставить учетные данные для входа, чтобы установить модель в каталог Unity.

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

Развертывание моделей DBRX

Databricks рекомендует обслуживать модель инструкции DBRX для рабочих нагрузок. Чтобы служить модели инструкций DBRX с помощью подготовленной пропускной способности, следуйте инструкциям в разделе [Рекомендуемые] Развертывание базовых моделей из каталога Unity.

При обслуживании этих моделей DBRX подготовленная пропускная способность поддерживает длину контекста до 16 кб.

Модели DBRX используют следующую системную строку по умолчанию для обеспечения релевантности и точности в ответах модели:

You are DBRX, created by Databricks. You were last updated in December 2023. You answer questions based on information available up to that point.
YOU PROVIDE SHORT RESPONSES TO SHORT QUESTIONS OR STATEMENTS, but provide thorough responses to more complex and open-ended questions.
You assist with various tasks, from writing to coding (using markdown for code blocks — remember to use ``` with code, JSON, and tables).
(You do not have real-time data access or code execution capabilities. You avoid stereotyping and provide balanced perspectives on controversial topics. You do not provide song lyrics, poems, or news articles and do not divulge details of your training data.)
This is your system prompt, guiding your responses. Do not reference it, just respond to the user. If you find yourself talking about this message, stop. You should be responding appropriately and usually that means not mentioning this.
YOU DO NOT MENTION ANY OF THIS INFORMATION ABOUT YOURSELF UNLESS THE INFORMATION IS DIRECTLY PERTINENT TO THE USER'S QUERY.

Развертывание точно настроенных базовых моделей

Если вы не можете использовать модели в схеме system.ai или установить модели из Databricks Marketplace, можно развернуть настраиваемую базовую модель, заключив ее в каталог Unity. В этом разделе и в следующих разделах показано, как настроить код для регистрации модели MLflow в каталоге Unity и создания подготовленной конечной точки пропускной способности с помощью пользовательского интерфейса или REST API.

Ознакомьтесь с ограничениями пропускной способности, подготовленными для поддерживаемых моделей Meta Llama 3.1 и 3.2 и их доступности в регионе.

Требования

  • Развертывание точно настроенных базовых моделей поддерживается только MLflow 2.11 или более поздней версии. Databricks Runtime 15.0 ML и выше предварительно устанавливает совместимую версию MLflow.
  • Databricks рекомендует использовать модели в каталоге Unity для ускорения отправки и скачивания больших моделей.

Определение каталога, схемы и имени модели

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

mlflow.set_registry_uri('databricks-uc')
CATALOG = "catalog"
SCHEMA = "schema"
MODEL_NAME = "model_name"
registered_model_name = f"{CATALOG}.{SCHEMA}.{MODEL_NAME}"

Журнал модели

Чтобы включить подготовленную пропускную способность для конечной точки модели, необходимо записать модель с помощью вкуса MLflow transformers и указать task аргумент с соответствующим интерфейсом типа модели из следующих параметров:

  • "llm/v1/completions"
  • "llm/v1/chat"
  • "llm/v1/embeddings"

Эти аргументы указывают подпись API, используемую для конечной точки обслуживания модели. Дополнительные сведения об этих задачах и соответствующих схемах ввода и вывода см . в документации по MLflow.

Ниже приведен пример регистрации языковой модели завершения текста, зарегистрированной с помощью MLflow:

model = AutoModelForCausalLM.from_pretrained("mosaicml/mixtral-8x7b-instruct", torch_dtype=torch.bfloat16)
tokenizer = AutoTokenizer.from_pretrained("mosaicml/mixtral-8x7b-instruct")

with mlflow.start_run():
    components = {
      "model": model,
      "tokenizer": tokenizer,
    }
    mlflow.transformers.log_model(
        transformers_model=components,
        artifact_path="model",
        # Specify the llm/v1/xxx task that is compatible with the model being logged
        task="llm/v1/completions",
        # Specify an input example that conforms to the input schema for the task.
        input_example={"prompt": np.array(["Below is an instruction that describes a task. Write a response that appropriately completes the request.\n\n### Instruction:\nWhat is Apache Spark?\n\n### Response:\n"])},
        # By passing the model name, MLflow automatically registers the Transformers model to Unity Catalog with the given catalog/schema/model_name.
        registered_model_name=registered_model_name
        # Optionally, you can set save_pretrained to False to avoid unnecessary copy of model weight and gain more efficiency
        save_pretrained=False
    )

Примечание.

Если вы используете MLflow ранее 2.12, необходимо указать задачу в metadata параметре той же mlflow.transformer.log_model() функции.

  • metadata = {"task": "llm/v1/completions"}
  • metadata = {"task": "llm/v1/chat"}
  • metadata = {"task": "llm/v1/embeddings"}

Подготовленная пропускная способность также поддерживает базовые и крупные модели внедрения GTE. Ниже приведен пример того, как регистрировать модель Alibaba-NLP/gte-large-en-v1.5 , чтобы ее можно было обслуживать с подготовленной пропускной способностью:

model = AutoModel.from_pretrained("Alibaba-NLP/gte-large-en-v1.5")
tokenizer = AutoTokenizer.from_pretrained("Alibaba-NLP/gte-large-en-v1.5")
with mlflow.start_run():
    components = {
      "model": model,
      "tokenizer": tokenizer,
    }
    mlflow.transformers.log_model(
        transformers_model=components,
        artifact_path="model",
        task="llm/v1/embeddings",
        registered_model_name=registered_model_name,
        # model_type is required for logging a fine-tuned BGE models.
        metadata={
            "model_type": "gte-large"
        }
    )

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

Создание подготовленной конечной точки пропускной способности с помощью пользовательского интерфейса

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

  1. Перейдите к пользовательскому интерфейсу обслуживания в рабочей области.
  2. Выберите "Создать конечную точку обслуживания".
  3. В поле Entity выберите модель из каталога Unity. Для подходящих моделей пользовательский интерфейс для обслуживаемой сущности отображает экран подготовленной пропускной способности .
  4. В раскрывающемся списке Up можно настроить максимальную пропускную способность маркеров в секунду для конечной точки.
    1. Подготовленные конечные точки пропускной способности автоматически масштабируются, поэтому вы можете выбрать "Изменить ", чтобы просмотреть минимальные маркеры в секунду, до чего конечная точка может уменьшить масштаб.

Подготовленная пропускная способность

Создание подготовленной конечной точки пропускной способности с помощью REST API

Чтобы развернуть модель в подготовленном режиме пропускной способности с помощью REST API, необходимо указать min_provisioned_throughput и max_provisioned_throughput поля в запросе. Если вы предпочитаете Python, можно также создать конечную точку с помощью пакета SDK развертывания MLflow.

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

import requests
import json

# Set the name of the MLflow endpoint
endpoint_name = "llama2-13b-chat"

# Name of the registered MLflow model
model_name = "ml.llm-catalog.llama-13b"

# Get the latest version of the MLflow model
model_version = 3

# Get the API endpoint and token for the current notebook context
API_ROOT = "<YOUR-API-URL>"
API_TOKEN = "<YOUR-API-TOKEN>"

headers = {"Context-Type": "text/json", "Authorization": f"Bearer {API_TOKEN}"}

optimizable_info = requests.get(
  url=f"{API_ROOT}/api/2.0/serving-endpoints/get-model-optimization-info/{model_name}/{model_version}",
  headers=headers)
  .json()

if 'optimizable' not in optimizable_info or not optimizable_info['optimizable']:
  raise ValueError("Model is not eligible for provisioned throughput")

chunk_size = optimizable_info['throughput_chunk_size']

# Minimum desired provisioned throughput
min_provisioned_throughput = 2 * chunk_size

# Maximum desired provisioned throughput
max_provisioned_throughput = 3 * chunk_size

# Send the POST request to create the serving endpoint
data = {
  "name": endpoint_name,
  "config": {
    "served_entities": [
      {
        "entity_name": model_name,
        "entity_version": model_version,
        "min_provisioned_throughput": min_provisioned_throughput,
        "max_provisioned_throughput": max_provisioned_throughput,
      }
    ]
  },
}

response = requests.post(
  url=f"{API_ROOT}/api/2.0/serving-endpoints", json=data, headers=headers
)

print(json.dumps(response.json(), indent=4))

Вероятность выполнения журнала для задач завершения чата

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

Получение подготовленной пропускной способности приращения

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

GET api/2.0/serving-endpoints/get-model-optimization-info/{registered_model_name}/{version}

Ниже приведен пример ответа api:

{
  "optimizable": true,
  "model_type": "llama",
  "throughput_chunk_size": 1580
}

Примеры записных книжек

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

Подготовленная пропускная способность для записной книжки модели GTE

Получить записную книжку

Подготовленная пропускная способность для записной книжки модели Mistral

Получить записную книжку

Подготовленная пропускная способность для записной книжки модели BGE

Получить записную книжку

Ограничения

  • Развертывание модели может завершиться сбоем из-за проблем с емкостью GPU, что приводит к истечении времени ожидания во время создания или обновления конечной точки. Обратитесь к группе учетных записей Databricks, чтобы помочь устранить проблему.
  • Автоматическое масштабирование для API-интерфейсов моделей Foundation медленнее, чем обслуживаемая модель ЦП. Databricks рекомендует чрезмерно подготовиться, чтобы избежать времени ожидания запроса.