私は最近、AWS Lambda で実行するシンプルな LlamaIndex アプリを取得するのに 2 時間を費やしました。関数自体は (以下に示すように) ほんの数行の Python コードで構成されていますが、依存関係とデプロイメントの管理は難しい場合があります。
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), }
私にとって役に立った重要なヒントをいくつか紹介します:
まず、正しいプラットフォーム用のパッケージをインストールします。 「manylinux2014_x86_64」ターゲット プラットフォームのすべてのパッケージをインストールすることが重要です。そうしないと、特定のパッケージが AWS Lambda ランタイムと互換性がない可能性があります。互換性を確保するには、次のコマンドを使用して依存関係をインストールします:
pip install -r requirements.txt --platform manylinux2014_x86_64 --target ./deps --only-binary=:all:
2 番目に、Lambda にはコード パッケージの合計サイズが 250 MB という制限があり、LlamaIndex またはその他の大きな依存関係を使用している場合、すぐに問題になる可能性があります。パッケージがこの制限を超えている場合は、依存関係フォルダー内の最大のファイルを確認してください:
du -h -d 2 | sort -hr | head -n20
私の場合、pandas/tests ディレクトリが約 35MB のスペースを占有していることがわかりましたが、これは私の機能には不必要だったので、パッケージ サイズを制限内に戻すためにディレクトリを削除しました。
rm -r deps/pandas/tests
次に、すべてを圧縮し、S3 経由でアップロードします。不要なファイルをトリミングした後、コードと依存関係の両方を含む zip アーカイブを作成します。 Lambda の Web コンソールには 50MB のアップロード制限があるため、より大きな zip ファイルを S3 バケットにアップロードし、S3 URI を使用して関数をデプロイする必要があります。
zip -r test_lambda.zip data/ lambda_function.py cd deps/ zip -r ../test_lambda.zip .
最後に、デプロイする前に Lambda 設定を調整します。デフォルトでは、Lambda 関数には 128 MB のメモリと 3 秒のタイムアウトのみが割り当てられますが、これでは大規模な依存関係や LLM の呼び出しを伴う多くの AI アプリケーションには不十分です。メモリを 512MB に増やし、タイムアウトを 30 秒に延長します。さらに、OpenAI API キーなどの重要な環境変数を忘れずに設定してください。
パッケージをインストールし、Lambda 用にすべてをバンドルする正しい方法を見つけるまでに、かなりの試行がかかりました。 AWS Lambda は基本的なスクリプトでは使いやすいですが、より大きな依存関係を追加すると、事態はより複雑になります。
最終的な手順は次のとおりです:
# 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 .
追記、同様の機能を DBOS クラウドにもデプロイしてみましたが、必要なコマンドは 1 つだけでした。
dbos-cloud app deploy
DBOS では、依存関係の管理はrequirements.txt ファイルによって自動的に処理され、環境変数は dbos-config.yaml に設定されました。私は偏見があるかもしれませんが、DBOS Cloud の導入プロセスのシンプルさを楽しんでいます。
以上がAI アプリ (大規模な Dep を含む) を AWS Lambda にデプロイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。