Eseguire l'inferenza batch usando ai_query

Importante

Questa funzionalità è disponibile in anteprima pubblica.

Questo articolo descrive come eseguire l'inferenza batch usando la funzione ai_querySQL di Databricks predefinita . Per altre informazioni su questa funzione di intelligenza artificiale, vedere ai_query funzione .

Databricks consiglia di usare ai_query con Model Serving per l'inferenza batch. Per una sperimentazione rapida, ai_query è possibile usare con endpoint con pagamento in base al token.

Quando si è pronti per eseguire l'inferenza batch in dati di grandi dimensioni o di produzione, Databricks consiglia di usare gli endpoint di velocità effettiva con provisioning per ottenere prestazioni più veloci. ai_query è stato verificato per elaborare in modo affidabile e coerente i set di dati nell'intervallo di miliardi di token. Per informazioni su come creare un endpoint di velocità effettiva con provisioning, vedere Provisioned throughput Foundation Model APIs (API del modello di base per la velocità effettiva con provisioning).

Per iniziare a usare l'inferenza batch con IMS nelle tabelle del catalogo Unity, vedere gli esempi di notebook nell'inferenza batch usando le API del modello di base con velocità effettiva con provisioning.

Requisiti

  • Vedere i requisiti della funzione ai_query.
  • Autorizzazione di query per la tabella Delta nel catalogo Unity che contiene i dati da usare.

Query di esempio di inferenza batch

Gli esempi in questa sezione presuppongono che sia stato distribuito un modello in un endpoint esistente su cui si vuole eseguire una query. Se si è nell'interfaccia utente di gestione, è possibile selezionare l'endpoint e fare clic sul pulsante Usa in alto a destra per selezionare Usa per inferenza batch. Questa selezione apre un editor SQL in cui è possibile scrivere ed eseguire la query SQL per l'inferenza batch usando ai_query.

Di seguito è riportato un esempio generale che usa failOnError e modelParameters con max_tokens e temperature. In questo esempio viene inoltre illustrato come concatenare il prompt del modello e la colonna di inferenza usando concat(). Esistono diversi modi per eseguire la concatenazione, ad esempio usando ||, concat()o 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}
)

L'esempio seguente esegue una query sul modello dietro l'endpoint llama_3_1_8b con il comment_text set di dati.

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

L'esempio seguente contiene i passaggi di pre-elaborazione dei dati e i passaggi di post-elaborazione:

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

Pianificare un processo

Dopo aver pronto lo script SQL, è possibile pianificare un processo per eseguirlo in base alla frequenza necessaria. Vedere Creare e gestire processi pianificati.