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
:
- Tabella di input e tabella di output del catalogo Unity
- Nome dell'endpoint per la velocità effettiva fornita
- Richiesta del modello ed eventuali parametri del modello
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.
- Chiedi l'autorizzazione per le query sulla tabella Delta in Unity Catalog che contiene i dati che vuoi utilizzare.
- Impostare il
pipelines.channel
nelle proprietà della tabella 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 del modello e la colonna di input 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
Prendi il taccuino
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).
Incorporamenti di inferenza batch LLM con un notebook sull'endpoint a velocità effettiva preconfigurata
Prendi il taccuino