Dela via


Utföra batchinferens med hjälp av ai_query

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Den här artikeln beskriver hur du utför batchinferens med hjälp av den inbyggda Sql-funktionen ai_queryDatabricks . Mer information om den här AI-funktionen finns i ai_query funktion .

Databricks rekommenderar att du använder ai_query med Modellservering för batchinferens. För snabbexperimentering ai_query kan användas med pay-per-token-slutpunkter.

När du är redo att köra batchinferens på stora data eller produktionsdata rekommenderar Databricks att du använder etablerade dataflödesslutpunkter för snabbare prestanda. ai_query har verifierats för att på ett tillförlitligt och konsekvent sätt bearbeta datauppsättningar i intervallet med miljarder token. Mer information om hur du skapar en etablerad dataflödesslutpunkt finns i Api:er för etablerad dataflödesmodell.

För att komma igång med batchinferens med LLM:er i Unity Catalog-tabeller, se notebook-exemplen i Batch-slutsatsdragning med foundation model-API:er som etablerats genom dataflöde.

Krav

  • Se kraven för funktionen ai_query.
  • Frågebehörighet i deltatabellen i Unity Catalog som innehåller de data som du vill använda.

Exempelfrågor för Batch-slutsatsdragning

Exemplen i det här avsnittet förutsätter att du har en modell distribuerad till en befintlig slutpunkt som du vill köra frågor mot. Om du är i användargränssnittet för servering kan du välja slutpunkten och klicka på knappen Använd längst upp till höger för att välja Använd för batchinferens. Det här valet öppnar en SQL-redigerare där du kan skriva och köra SQL-frågan för batchinferens med hjälp av ai_query.

Följande är ett allmänt exempel med och failOnError modelParameters med max_tokens och temperature. Det här exemplet visar också hur du sammanfogar prompten för din modell och slutsatsdragningskolumnen med hjälp av concat(). Det finns flera sätt att utföra sammanfogning, till exempel att använda ||, concat()eller 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}
)

I följande exempel frågas modellen bakom llama_3_1_8b slutpunkten med datamängden comment_text .

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

Följande exempel innehåller dataförbearbetningssteg och steg för efterbearbetning:

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

Schemalägga ett jobb

När du har ditt SQL-skript klart kan du schemalägga ett jobb för att köra det med den frekvens du behöver. Se Skapa och hantera schemalagda notebook-jobb.