Delen via


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.
  • 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 om ai_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

Get notebook

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.

Insluitingen van LLM-batchinferenties met een geconfigureerd doorvoereindpunt in een notitieblok

Get notebook