Batch-LLM-deductie uitvoeren met behulp van ai_query
Belangrijk
Deze functie is beschikbaar als openbare preview.
In dit artikel wordt beschreven hoe u batchdeductie uitvoert met behulp van de ingebouwde Databricks SQL-functie ai_query
met een eindpunt dat gebruikmaakt van Foundation Model-API's die zijn ingericht voor doorvoer. De voorbeelden en richtlijnen in dit artikel worden aanbevolen voor batchverwerkingsworkloads die gebruikmaken van grote taalmodellen (LLM) om meerdere invoer te kunnen verwerken.
U kunt ai_query
gebruiken met SQL of PySpark om batch inferentie-werkbelastingen uit te voeren. Om batchinferentie op de gegevens uit te voeren, specificeert u het volgende in ai_query
:
- De Unity-Catalog invoer table en uitvoer table
- De naam van het ingerichte doorvoereindpunt
- De modelprompt en elk model parameters
Zie ai_query functie voor meer informatie over deze AI-functie.
Vereisten
- Een werkruimte in een door Foundation Model-API's ondersteunde regio.
- Een van de volgende opties:
- Rekenkracht voor alle doeleinden met rekenkracht
i3.2xlarge
of groter met Databricks Runtime 15.4 ML LTS of hoger met ten minste twee werkrollen. - SQL Warehouse gemiddeld en groter.
- Rekenkracht voor alle doeleinden met rekenkracht
- Een bestaand model dat eindpunt dient. Zie API's voor ingerichte doorvoer van Foundation-modellen om een geconfigureerd doorvoereindpunt te maken.
- Vraag toestemming aan voor Delta table in Unity Catalog die de gegevens bevat die u wilt gebruiken.
-
Set de
pipelines.channel
in de eigenschappen van de table als voorbeeld omai_query()
te gebruiken. Zie Voorbeelden voor een voorbeeldquery.
ai_query
en SQL gebruiken
Hier volgt een voorbeeld van batchdeductie met behulp van ai_query
en SQL. Dit voorbeeld bevat modelParameters
met max_tokens
en temperature
en laat zien hoe u de prompt voor uw model en de invoer column samenvoegt met behulp van concat()
. Er zijn meerdere manieren om samenvoeging uit te voeren, zoals het gebruik ||
, concat()
of 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}
)
ai_query
en PySpark gebruiken
Als u liever Python gebruikt, kunt u ook batchdeductie uitvoeren met ai_query
en PySpark, zoals wordt weergegeven in het volgende:
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)
Voorbeeldnotebooks voor batch-inferentie met Python
In het volgende voorbeeldnotebook wordt een geconfigureerd doorvoers-eindpunt gecreƫerd en batch-LLM-inferentie uitgevoerd met behulp van Python en het Meta Llama 3.1 70B-model. Het biedt ook richtlijnen voor het benchmarken van uw workload voor batch-inferentie en het maken van een geprovisioneerd doorvoer model voor een service-eindpunt.
LLM-batchinferentie met een notebook met geconfigureerd doorvoerpunt
In het volgende voorbeeldnotitieblok wordt een geconfigureerd throughput-eindpunt gemaakt en batch LLM-inferentie uitgevoerd met behulp van Python en uw keuze uit de GTE Large (Engels) of BGE Large (Engels) insluitingsmodellen.