J'ai récemment passé deux heures à exécuter une simple application LlamaIndex sur AWS Lambda. Bien que la fonction elle-même ne comporte que quelques lignes de code Python (comme indiqué ci-dessous), la gestion des dépendances et du déploiement peut être délicate.
import json from llama_index.llms.openai import OpenAI llm=OpenAI(model="gpt-4o-mini") def lambda_handler(event, context): response = llm.complete("What public transportation might be available in a city?") return { 'statusCode': 200, 'body': str(response), }
Voici quelques conseils clés qui m'ont aidé :
Tout d’abord, installez les packages pour la bonne plate-forme. Il est important d'installer tous les packages pour la plateforme cible "manylinux2014_x86_64". Sinon, certains packages pourraient être incompatibles avec le runtime AWS Lambda. Pour garantir la compatibilité, installez les dépendances avec la commande suivante :
pip install -r requirements.txt --platform manylinux2014_x86_64 --target ./deps --only-binary=:all:
Deuxièmement, Lambda a une limite de 250 Mo pour la taille totale du package de code, ce qui peut rapidement devenir un problème si vous utilisez LlamaIndex ou d'autres dépendances volumineuses. Si votre package dépasse cette limite, vérifiez les fichiers les plus volumineux dans votre dossier de dépendances :
du -h -d 2 | sort -hr | head -n20
Dans mon cas, j'ai constaté que le répertoire pandas/tests occupait environ 35 Mo d'espace, ce qui n'était pas nécessaire pour ma fonction, je l'ai donc supprimé pour ramener la taille du package dans la limite.
rm -r deps/pandas/tests
Ensuite, compressez le tout et téléchargez via S3. Après avoir supprimé les fichiers inutiles, créez une archive zip contenant à la fois votre code et vos dépendances. Étant donné que la console Web de Lambda a une limite de téléchargement de 50 Mo, vous devrez télécharger des fichiers zip plus volumineux dans un compartiment S3 et utiliser l'URI S3 pour déployer la fonction.
zip -r test_lambda.zip data/ lambda_function.py cd deps/ zip -r ../test_lambda.zip .
Enfin, ajustez vos paramètres Lambda avant le déploiement. Par défaut, les fonctions Lambda ne disposent que de 128 Mo de mémoire et d'un délai d'attente de 3 secondes, ce qui est insuffisant pour de nombreuses applications d'IA impliquant de grandes dépendances et appelant des LLM. J'augmenterais la mémoire à 512 Mo et prolongerais le délai d'attente à 30 secondes. De plus, n'oubliez pas de définir des variables d'environnement essentielles comme votre clé API OpenAI.
Il m'a fallu pas mal d'essais pour trouver la bonne façon d'installer les packages et de tout regrouper pour Lambda. AWS Lambda est convivial pour les scripts de base, mais une fois que vous ajoutez des dépendances plus importantes, les choses deviennent plus compliquées.
Voici la séquence finale des étapes :
# Install dependencies pip install -r requirements.txt --platform manylinux2014_x86_64 --target ./deps --only-binary=:all: # Create a zip file for code and data zip -r test_lambda.zip data/ lambda_function.py # Include dependencies in the zip file, while removing large unused files cd deps/ rm -r pandas/tests zip -r ../test_lambda.zip .
ps, j'ai également essayé de déployer une fonction similaire sur DBOS Cloud, et cela n'a nécessité qu'une seule commande :
dbos-cloud app deploy
Dans DBOS, la gestion des dépendances était gérée automatiquement via le fichier Requirements.txt et les variables d'environnement étaient définies dans dbos-config.yaml. Je suis peut-être partial, mais j'apprécie la simplicité du processus de déploiement de DBOS Cloud.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!