共用方式為


使用執行批次推斷 ai_query

重要

這項功能處於公開預覽狀態

本文說明如何使用內建 Databricks SQL ai_query函式 來執行批次推斷。 如需此 AI 函式的詳細資訊,請參閱ai_query函式。

Databricks 建議搭配模型服務使用 ai_query 以進行批次推斷。 如需快速實驗, ai_query 可以搭配 每個令牌付費端點使用。

當您準備好在大型或實際執行數據上執行批次推斷時,Databricks 建議使用布建的輸送量端點來提升效能。 ai_query 已驗證為在數十億個令牌範圍內可靠地且一致地處理數據集。 如需如何建立布建的輸送量端點,請參閱 布建的輸送量基礎模型 API

若要開始使用 Unity 目錄數據表上的 LLM 批次推斷,請參閱使用基礎模型 API 布建輸送量的批次推斷中的筆記本範例。

需求

  • 請參閱ai_query函式的需求
  • Unity 目錄中 Delta 資料表的查詢許可權,其中包含您想要使用的資料。

批次推斷範例查詢

本節中的範例假設您已將模型部署到您想要查詢的現有端點。 如果您是在 [服務 UI] 中,您可以選取端點,然後按下右上方的 [使用] 按鈕,選取 [用於批次推斷]。 此選取項目會開啟 SQL 編輯器,您可以在其中撰寫和執行 SQL 查詢,以使用 ai_query進行批次推斷。

以下是使用 failOnError 和搭配和 modelParameters max_tokens 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 腳稿之後,您可以排程作業,以所需的任何頻率執行作業。 請參閱建立及管理排程作業