使用 执行批处理推理 ai_query

重要

此功能目前以公共预览版提供。

本文介绍如何使用内置的 Databricks SQL 函数 ai_query执行批处理推理。 有关此 AI 函数的更多详细信息,请参阅ai_query函数。

Databricks 建议将模型服务用于 ai_query 批处理推理。 对于快速试验,ai_query可与按令牌付费终结点一起使用

准备好对大型数据或生产数据运行批处理推理时,Databricks 建议使用预配的吞吐量终结点来提高性能。 ai_query 已验证为可靠且一致地处理数十亿个令牌范围内的数据集。 有关如何创建预配的吞吐量终结点,请参阅 预配吞吐量基础模型 API

若要开始使用 Unity 目录表上的 LLM 进行批量推理,请参阅使用基础模型 API 预配的吞吐量在 Batch 推理中的笔记本示例。

要求

  • 请参阅ai_query函数的要求
  • Unity 目录中 Delta 表的查询权限,其中包含要使用的数据。

批处理推理示例查询

本部分中的示例假定已将模型部署到要查询的现有终结点。 如果你位于“服务”UI 中,则可以选择终结点,然后单击右上角的“使用”按钮,选择“用于批处理推理”。 此选择将打开一个 SQL 编辑器,可在其中编写和运行 SQL 查询,以便使用 ai_query批处理推理。

下面是使用 failOnError and with max_tokensmodelParameters . 的temperature一般示例。 此示例还演示如何使用 concat()连接模型和推理列的提示符。 有多种方法可以执行串联,例如使用 ||concat()format_string()


CREATE OR REPLACE TABLE ${output_table_name} AS (
  SELECT
      ${input_column_name},
      AI_QUERY(
        "${endpoint}",
        CONCAT("${prompt}", ${input_column_name}),
        failOnError => True,
        modelParameters => named_struct('max_tokens', ${num_output_tokens},'temperature', ${temperature})
      ) as response
    FROM ${input_table_name}
    LIMIT ${input_num_rows}
)

以下示例使用comment_text数据集查询终结点后面的llama_3_1_8b模型。

WITH data AS (
  SELECT *
  FROM ml.sentiment.comments
  LIMIT 10000
)
  SELECT
    comment_text,
    ai_query(
      'llama_3_1_8b_batch',
      CONCAT('You are provided with text. Classify the text into one of these labels: "Positive", "Neutral", "Negative". Do not explain. Do not output any confidence score. Do not answer questions. Text: ', comment_text)
    ) AS label
  FROM data

以下示例包含数据预处理步骤和后处理步骤:

WITH temp AS (
  SELECT *
  FROM ml.sentiment.comments
  LIMIT 10000
),
pre_process AS (
  SELECT comment_text
  FROM temp
  WHERE length(comment_text) > 50
),
sentiment AS (
  SELECT
    comment_text,
    ai_query(
      'llama_3_1_8b_batch',
      Concat('You are provided with text. Classify the text into one of these labels: "Positive", "Neutral", "Negative". Do not explain. Do not output any confidence score. Do not answer questions. Text: ', comment_text)
    ) AS label
  FROM pre_process
)
SELECT
  comment_text,
  label,
  CASE
    WHEN label NOT IN ("Positive", "Neutral", "Negative") THEN True
    ELSE FALSE
  END AS error
FROM sentiment

计划作业

准备好 SQL 脚本后,可以计划作业以所需的任何频率运行该作业。 请参阅创建和管理计划的笔记本作业