我最近花了兩個小時在 AWS Lambda 上運行一個簡單的 LlamaIndex 應用程式。雖然函數本身僅由幾行 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:
其次,Lambda 對總程式碼套件大小有 250MB 的限制,如果您使用 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 函數僅分配 128MB 記憶體和 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 .
p.s.,我也嘗試在 DBOS Cloud 上部署類似的功能,只需要一個指令:
dbos-cloud app deploy
在DBOS中,依賴管理是透過requirements.txt檔案自動處理的,環境變數在dbos-config.yaml中設定。我可能有偏見,但我喜歡 DBOS Cloud 部署過程的簡單性。
以上是如何將 AI 應用程式(包含大型部門)部署到 AWS Lambda的詳細內容。更多資訊請關注PHP中文網其他相關文章!