Pular para o conteúdo principal

Realize a inferência de lotes LLM usando AI Functions

info

Visualização

Esse recurso está em Public Preview.

Este artigo descreve como realizar a inferência de lotes usando AI Functions.

O senhor pode executar lotes de inferência usando as funções AI específicas da tarefa ou a função de propósito geral ai_query. Os exemplos deste artigo enfocam a flexibilidade do ai_query e como usá-lo em lotes de pipeline de inferência e fluxo de trabalho.

Há duas maneiras principais de usar ai_query para a inferência de lotes:

  • A inferência de lotes usando ai_query e Databricksmodelos de fundação hospedados: Quando o senhor usa esse método, o Databricks configura um modelo de serviço endpoint que escala automaticamente com base na carga de trabalho. Veja quais LLMs de pré-provisionamento são compatíveis.
  • lotes inference usando ai_query e um modelo de serviço endpoint que o senhor mesmo configura : Esse método é necessário para o fluxo de trabalho de inferência de lotes que usa modelos de fundação hospedados fora do site Databricks, modelos de fundação ajustados ou modelos ML tradicionais. Após a implementação, o endpoint pode ser usado diretamente com ai_query. Veja a inferência de lotes usando modelos personalizados ou modelos básicos ajustados.

Requisitos

  • Um workspace em uma região com suporte do Foundation Model APIs.
  • Permissão de consulta na tabela Delta no Unity Catalog que contém os dados que o senhor deseja usar.
  • Defina o pipelines.channel nas propriedades da tabela como 'visualização' para usar ai_query(). Consulte Requisitos para ver um exemplo de consulta.

lotes LLM inference using ai_query and Databricks-hosted foundation models

Quando o senhor usa um modelo de fundação hospedado e pré-provisionado pelo Databrickspara inferência de lotes, o Databricks configura um provisionamento Taxa de transferência endpoint em seu nome que escala automaticamente com base na carga de trabalho.

Para usar esse método para inferência de lotes, especifique o seguinte em sua solicitação:

  • O pré-provisionamento LLM que o senhor deseja usar em ai_query. Selecione entre os LLMs de pré-provisionamento compatíveis.
  • A tabela de entrada e a tabela de saída do Unity Catalog.
  • O prompt do modelo e quaisquer parâmetros do modelo.
SQL
SELECT text, ai_query(
"databricks-meta-llama-3-1-8b-instruct",
"Summarize the given text comprehensively, covering key points and main ideas concisely while retaining relevant details and examples. Ensure clarity and accuracy without unnecessary repetition or omissions: " || text
) AS summary
FROM uc_catalog.schema.table;

implantado lotes inference pipeline

Esta seção mostra como o senhor pode integrar o AI Functions a outros dados do Databricks e ao produto AI para criar um pipeline completo de inferência de lotes. Esse pipeline pode executar um fluxo de trabalho de ponta a ponta que inclui ingestão, pré-processamento, inferência e pós-processamento. O pipeline pode ser criado em SQL ou Python e implantado como:

  • Fluxo de trabalho programado usando Databricks fluxo de trabalho
  • transmissão inference fluxo de trabalho usando transmissão estructurada

Automatize o trabalho de inferência de lotes usando Databricks fluxo de trabalho

Programar lotes de inferência Job e automatizar o pipeline AI.

SQL
SELECT
*,
ai_query('databricks-meta-llama-3-3-70b-instruct', request => concat("You are an opinion mining service. Given a piece of text, output an array of json results that extracts key user opinions, a classification, and a Positive, Negative, Neutral, or Mixed sentiment about that subject.


AVAILABLE CLASSIFICATIONS
Quality, Service, Design, Safety, Efficiency, Usability, Price


Examples below:


DOCUMENT
I got soup. It really did take only 20 minutes to make some pretty good soup. The noises it makes when it's blending are somewhat terrifying, but it gives a little beep to warn you before it does that. It made three or four large servings of soup. It's a single layer of steel, so the outside gets pretty hot. It can be hard to unplug the lid without knocking the blender against the side, which is not a nice sound. The soup was good and the recipes it comes with look delicious, but I'm not sure I'll use it often. 20 minutes of scary noises from the kitchen when I already need comfort food is not ideal for me. But if you aren't sensitive to loud sounds it does exactly what it says it does..


RESULT
[
{'Classification': 'Efficiency', 'Comment': 'only 20 minutes','Sentiment': 'Positive'},
{'Classification': 'Quality','Comment': 'pretty good soup','Sentiment': 'Positive'},
{'Classification': 'Usability', 'Comment': 'noises it makes when it's blending are somewhat terrifying', 'Sentiment': 'Negative'},
{'Classification': 'Safety','Comment': 'outside gets pretty hot','Sentiment': 'Negative'},
{'Classification': 'Design','Comment': 'Hard to unplug the lid without knocking the blender against the side, which is not a nice sound', 'Sentiment': 'Negative'}
]


DOCUMENT
", REVIEW_TEXT, '\n\nRESULT\n')) as result
FROM catalog.schema.product_reviews
LIMIT 10

AI Functions usando transmissão estruturada

Aplique a inferência AI em cenários near tempo real ou micro-lotes usando ai_query e transmissão estruturada.

Etapa 1. Leia sua tabela Delta estática

Leia sua tabela estática Delta como se fosse uma transmissão

Python

from pyspark.sql import SparkSession
import pyspark.sql.functions as F

spark = SparkSession.builder.getOrCreate()

# Spark processes all existing rows exactly once in the first micro-batch.
df = spark.table("enterprise.docs") # Replace with your table name containing enterprise documents
df.repartition(50).write.format("delta").mode("overwrite").saveAsTable("enterprise.docs")
df_stream = spark.readStream.format("delta").option("maxBytesPerTrigger", "50K").table("enterprise.docs")

# Define the prompt outside the SQL expression.
prompt = (
"You are provided with an enterprise document. Summarize the key points in a concise paragraph. "
"Do not include extra commentary or suggestions. Document: "
)

Etapa 2. Aplique ai_query

O Spark processa isso apenas uma vez para dados estáticos, a menos que novas linhas cheguem à tabela.

Python

df_transformed = df_stream.select(
"document_text",
F.expr(f"""
ai_query(
'llama_3_8b',
CONCAT('{prompt}', document_text)
)
""").alias("summary")
)

Etapa 3: escrever a saída resumida

Escreva a saída resumida em outra tabela Delta

Python

# Time-based triggers apply, but only the first trigger processes all existing static data.
query = df_transformed.writeStream \
.format("delta") \
.option("checkpointLocation", "/tmp/checkpoints/_docs_summary") \
.outputMode("append") \
.toTable("enterprise.docs_summary")

query.awaitTermination()

inferência de lotes usando modelos personalizados ou modelos básicos ajustados

Os exemplos do Notebook nesta seção demonstram cargas de trabalho de inferência de lotes que usam modelos de base personalizados ou ajustados para processar várias entradas. Os exemplos exigem um modelo de serviço existente endpoint que use o modelo da Fundação APIs provisionamento Taxa de transferência.

LLM inferência de lotes usando um modelo de fundação personalizado

O exemplo de notebook a seguir cria um provisionamento Taxa de transferência endpoint e execução lotes LLM inferência usando Python e o modelo Meta Llama 3.1 70B. Ele também oferece orientação sobre o benchmarking de sua carga de trabalho de inferência de lotes e a criação de um provisionamento Taxa de transferência servindo o modelo endpoint.

LLM inferência de lotes com um modelo de fundação personalizado e um provisionamento Taxa de transferência endpoint Notebook

Open notebook in new tab

LLM inferência de lotes usando um modelo de embeddings

O exemplo de Notebook a seguir cria um provisionamento Taxa de transferência endpoint e execução lotes LLM inferência usando Python e o modelo de embeddings GTE Large (inglês) ou BGE Large (inglês) que o senhor escolher.

LLM lotes inference embeddings with a provisionamento Taxa de transferência endpoint Notebook

Open notebook in new tab

inferência de lotes e extração de dados estruturados

O exemplo de Notebook a seguir demonstra como realizar a extração básica de dados estruturados usando ai_query para transformar dados brutos e não estruturados em informações organizadas e úteis por meio de técnicas de extração automatizadas. Este Notebook também mostra como aproveitar o Mosaic AI Agent Evaluation para avaliar a precisão usando dados de verdade terrestre.

inferência de lotes e extração de dados estruturados Notebook

Open notebook in new tab

inferência de lotes usando BERT para reconhecimento de entidades nomeadas

O Notebook a seguir mostra um exemplo tradicional de inferência de lotes do modelo ML usando BERT.

inferência de lotes usando BERT para reconhecimento de entidades nomeadas Notebook

Open notebook in new tab