Eseguire l'inferenza batch LLM usando ai_query
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Questo articolo descrive come eseguire l'inferenza batch usando la funzione SQL predefinita di Databricks ai_query
con un endpoint che usa le API dei modelli di base con provisioning della velocità effettiva di. Gli esempi e le linee guida in questo articolo sono consigliati per carichi di lavoro di inferenza batch che usano modelli di linguaggio di grandi dimensioni (LLM) per elaborare più input.
È possibile usare ai_query
con SQL o PySpark per eseguire carichi di lavoro di inferenza batch. Per eseguire l'inferenza batch sui dati, specificare quanto segue in ai_query
:
- L'input Catalog e l'output table di Unity table
- Nome dell'endpoint per la velocità effettiva fornita
- Richiesta del modello e qualsiasi modello parameters
Per altre informazioni su questa funzione di intelligenza artificiale, vedere ai_query funzione .
Requisiti
- Un'area di lavoro in un'area supportata API modello foundation.
- Uno dei seguenti:
- Calcolo a uso generico con dimensione di calcolo
i3.2xlarge
o superiore, eseguendo Databricks Runtime 15.4 ML LTS o versione successiva, con almeno due nodi di lavoro. - SQL Warehouse medio e più grande.
- Calcolo a uso generico con dimensione di calcolo
- Un endpoint di servizio di un modello esistente. Per creare un endpoint di throughput predefinito, vedere API del Modello Fondamentale.
- Richiedi l'autorizzazione di query sulla Delta table in Unity Catalog che contiene i dati che vuoi utilizzare.
-
Set il
pipelines.channel
nelle proprietà di table come 'anteprima' per usareai_query()
. Vedere Esempi per un esempio di query.
Usare ai_query
e SQL
Di seguito è riportato un esempio di inferenza batch che usa ai_query
e SQL. Questo esempio include modelParameters
con max_tokens
e temperature
e illustra come concatenare il prompt per il modello e l'input column 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}),
modelParameters => named_struct('max_tokens', ${num_output_tokens},'temperature', ${temperature})
) as response
FROM ${input_table_name}
LIMIT ${input_num_rows}
)
Usare ai_query
e PySpark
Se si preferisce usare Python, è anche possibile eseguire l'inferenza batch con ai_query
e PySpark, come illustrato di seguito:
df_out = df.selectExpr("ai_query('{endpoint_name}', CONCAT('{prompt}', {input_column_name}), modelParameters => named_struct('max_tokens', ${num_output_tokens},'temperature', ${temperature})) as {output_column_name}")
df_out.write.mode("overwrite").saveAsTable(output_table_name)
Notebook di esempio di inferenza batch con Python
Il notebook di esempio seguente crea un endpoint di velocità effettiva con provisioning ed esegue l'inferenza LLM batch usando Python e il modello Meta Llama 3.1 70B. Fornisce anche indicazioni sul benchmarking del carico di lavoro di inferenza batch e sulla creazione di un modello di throughput previsto per servire l'endpoint.
Inferenza batch LLM con un notebook dell'endpoint a velocità effettiva fornita
Il seguente notebook di esempio crea un endpoint con throughput fornito ed esegue l'inferenza LLM batch utilizzando Python e il modello di embeddings GTE Large (inglese) o BGE Large (inglese).