Provedení dávkového odvozování pomocí ai_query

Důležité

Tato funkce je ve verzi Public Preview.

Tento článek popisuje, jak provádět dávkové odvozování pomocí integrované funkce ai_queryDatabricks SQL . Další podrobnosti o této funkci AI najdete v ai_query funkci.

Databricks doporučuje používat ai_query se službou Model Serving pro dávkové odvozování. K rychlému experimentování ai_query je možné použít koncové body s platbami za token.

Jakmile budete připraveni spustit dávkové odvozování velkých nebo produkčních dat, Databricks doporučuje používat zřízené koncové body propustnosti, aby se zrychlil výkon. ai_query bylo ověřeno, aby spolehlivě a konzistentně zpracovávaly datové sady v rozsahu miliard tokenů. Informace o vytvoření koncového bodu zřízené propustnosti najdete v tématu Rozhraní API základního modelu zřízené propustnosti.

Pokud chcete začít s dávkovým odvozováním s LLMs v tabulkách katalogu Unity, podívejte se na příklady poznámkových bloků ve službě Batch inference pomocí rozhraní API základního modelu zřízené propustnosti.

Požadavky

  • Podívejte se na požadavky funkce ai_query.
  • Oprávnění dotazu na tabulku Delta v katalogu Unity obsahující data, která chcete použít.

Ukázkové dotazy na odvození služby Batch

Příklady v této části předpokládají, že máte model nasazený do existujícího koncového bodu, který chcete dotazovat. Pokud jste v uživatelském rozhraní obsluhy , můžete vybrat koncový bod a kliknout na tlačítko Použít v pravém horním rohu a vybrat možnost Použít pro dávkové odvozování. Tento výběr otevře editor SQL, kde můžete psát a spouštět dotaz SQL pro dávkové odvozování pomocí ai_query.

Následuje obecný příklad použití a failOnError modelParameters s max_tokens a temperature. Tento příklad také ukazuje, jak zřetězení výzvy pro váš model a sloupec odvozování pomocí concat(). Existuje několik způsobů, jak provést zřetězení, například pomocí ||, concat()nebo 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}
)

Následující příklad dotazuje model za llama_3_1_8b koncovým bodem s comment_text datovou sadou.

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

Následující příklad obsahuje kroky předběžného zpracování dat a kroky následného zpracování:

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

Naplánování úlohy

Jakmile budete mít připravený skript SQL, můžete naplánovat spuštění úlohy s libovolnou frekvencí, kterou potřebujete. Viz Vytvoření a správa naplánovaných úloh poznámkového bloku.