Выполняйте пакетную инференцию LLM с помощью ai_query
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
В этой статье описывается, как выполнять пакетный вывод данных с помощью встроенной функции Databricks SQL ai_query
с конечной точкой, использующей API модели Foundation , обеспеченные пропускной способностью. Примеры и рекомендации в этой статье рекомендуются для рабочих нагрузок пакетного вывода, использующих большие языковые модели (LLM) для обработки нескольких входных данных.
Вы можете использовать ai_query
с SQL или PySpark для выполнения пакетных инференсных задач. Чтобы выполнить пакетную обработку данных, укажите следующее в ai_query
:
- Входные tableCatalog Unity table и выходные table
- Имя выделенной конечной точки пропускной способности
- Запрос модели и любая модель parameters
Дополнительные сведения об этой функции ИИ см. в ai_query.
Требования
- Рабочая область в регионе, поддерживаемом API-интерфейсами модели Foundation.
- Одно из следующих элементов:
- Все универсальные вычислительные ресурсы с размером
i3.2xlarge
или больше, работающие под управлением Databricks Runtime 15.4 ML LTS или более поздней версии, с по крайней мере двумя рабочими узлами. - Хранилище SQL среднего и большего размера.
- Все универсальные вычислительные ресурсы с размером
- Существующую конечную точку обслуживания модели. Для создания конечной точки с предоставленной пропускной способностью см. раздел API-интерфейсы моделей базовой конфигурации.
- Запросите разрешение на использование Delta table в Unity Catalog, которая содержит нужные данные.
-
Set
pipelines.channel
в свойствах table в качестве предварительной версии для использованияai_query()
. См. примеры для примера запроса.
Использование ai_query
и SQL
Ниже приведен пример пакетного вывода с помощью ai_query
и SQL. Этот пример включает modelParameters
с max_tokens
и temperature
и показывает, как объединить запрос для модели и входные column с помощью concat()
. Существует несколько способов объединения, таких как использование ||
, concat()
или format_string()
.
CREATE OR REPLACE TABLE ${output_table_name} AS (
SELECT
${input_column_name},
AI_QUERY(
"${endpoint}",
CONCAT("${prompt}", ${input_column_name}),
modelParameters => named_struct('max_tokens', ${num_output_tokens},'temperature', ${temperature})
) as response
FROM ${input_table_name}
LIMIT ${input_num_rows}
)
Использование ai_query
и PySpark
Если вы предпочитаете использовать Python, можно также запустить пакетный вывод с помощью ai_query
и PySpark, как показано ниже.
df_out = df.selectExpr("ai_query('{endpoint_name}', CONCAT('{prompt}', {input_column_name}), modelParameters => named_struct('max_tokens', ${num_output_tokens},'temperature', ${temperature})) as {output_column_name}")
df_out.write.mode("overwrite").saveAsTable(output_table_name)
Пример пакетной инференции в ноутбуке с использованием Python
В примере ноутбука создается конечная точка с зарезервированной пропускной способностью и выполняется пакетный LLM-вывод на основе Python и модели Meta Llama 3.1 70B. Он также содержит рекомендации по тестированию рабочей нагрузки пакетного вывода и созданию подготовленной модели пропускной способности, обслуживающей конечную точку.