Effectuer une inférence LLM par lot à l’aide de ai_query
Important
Cette fonctionnalité est disponible en préversion publique.
Cet article explique comment effectuer une inférence par lots à l’aide de la fonction intégrée Databricks SQL ai_query
avec un point de terminaison qui utilise les API du modèle Foundation grâce à un débit provisionné. Les exemples et conseils de cet article sont recommandés pour les charges de travail d’inférence par lots qui utilisent des modèles de langage volumineux (LLM) pour traiter plusieurs entrées.
Vous pouvez utiliser ai_query
avec SQL ou PySpark pour exécuter des charges de travail d’inférence par lots. Pour exécuter l’inférence par lots sur vos données, spécifiez les éléments suivants dans ai_query
:
- Les entrées Catalog Unity et les sorties tabletable
- Nom du point de terminaison de débit provisionné
- L'invite du modèle et n’importe quel modèle parameters
Pour plus d’informations sur cette fonction IA, consultez ai_query fonction .
Spécifications
- Un espace de travail dans une région prenant en charge les API du modèle Foundation.
- L’une des opérations suivantes :
- Calcul à usage général avec une taille de calcul
i3.2xlarge
ou supérieure exécutant Databricks Runtime 15.4 ML LTS ou versions ultérieures avec au moins deux workers. - SQL Warehouse moyen et plus grand.
- Calcul à usage général avec une taille de calcul
- Un point de terminaison de mise en service de modèle existant. Consultez API de modèle Foundation de débit approvisionné.
- Vérifiez l'autorisation sur le Delta table au sein de Unity Catalog, qui contient les données que vous souhaitez utiliser.
- Set l'
pipelines.channel
dans les propriétés de table comme « aperçu » pour utiliserai_query()
. Consultez Exemples pour obtenir un exemple de requête.
Utiliser ai_query
et SQL
Voici un exemple d’inférence par lots utilisant ai_query
et SQL. Cet exemple inclut modelParameters
avec max_tokens
et temperature
, puis montre comment concaténer l’invite de votre modèle avec l’entrée column à l’aide de concat()
. Il existe plusieurs façons d’effectuer la concaténation, comme l’utilisation ||
, concat()
ou 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}
)
Utiliser ai_query
et PySpark
Si vous préférez utiliser Python, vous pouvez également exécuter l’inférence par lots avec ai_query
et PySpark, comme indiqué dans les sections suivantes :
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)
Exemple de notebooks d’inférence Batch à l’aide de Python
L’exemple de notebook suivant crée un point de terminaison de débit provisionné et exécute l’inférence LLM par lot à l’aide de Python et du modèle Meta Llama 3.1 70B. Il fournit également des conseils sur l’évaluation de votre charge de travail d’inférence par lots et la création d’un modèle de débit provisionné servant le point de terminaison.
Inférence par lot LLM avec un notebook de point de terminaison à débit provisionné
L’exemple de notebook suivant crée un point de terminaison de débit provisionné et exécute l’inférence LLM par lot à l’aide de Python et de votre choix de modèle d’incorporation GTE Large (anglais) ou BGE Large (anglais).