qwen2 in a lambda
1.0.0
更新於 11/09/2024
(標記日期是因為 Python 中的 LLM API 發展得非常快,並且在其他人閱讀本文時可能會引入重大更改!)
這是一個關於如何使用 Docker 和 SAM CLI 將 Qwen GGUF 模型檔案放入 AWS Lambda 的小研究
改編自https://makit.net/blog/llm-in-a-lambda-function/
我想知道是否可以透過僅利用 Lambda 的功能而不是 Lambda + Bedrock 來減少 AWS 支出,因為從長遠來看,這兩種服務都會產生更多成本。
這個想法是為了適應一個小型語言模型,相對而言,該模型不會那麼資源密集,並且希望在 128 - 256 mb 內存配置上接收亞秒到秒的延遲
我還想使用 GGUF 模型來使用不同程度的量化來找出載入到記憶體中的最佳效能/檔案大小
qwen2-1_5b-instruct-q5_k_m.gguf
到qwen_fuction/function/
app.y / LOCAL_PATH
中更改模型路徑qwen_function/function/requirements.txt
下安裝 pip 套件(最好在 venv/conda 環境)sam build
/ sam validate
sam local start-api
在本地進行測試curl --header "Content-Type: application/json" --request POST --data '{"prompt":"hello"}' http://localhost:3000/generate
提示LLMsam deploy --guided
以部署到 AWSAWS
初始配置 - 128mb,30 秒逾時
調整後的配置 #1 - 512mb,30 秒逾時
調整後的配置 #2 - 512mb,30 秒逾時
回顧 Lambda 的定價結構,
僅在雲端上使用使用 AWS Bedrock 等的託管 LLM 可能會更便宜,因為與 Claude 3 Haiku 相比,帶有 Qwen 的 Lambda 的定價結構看起來並不更具競爭力
此外,API 網關逾時不容易配置為超過 30 秒逾時,具體取決於您的用例,這可能不是很理想
本地結果取決於您的機器規格!並且可能會嚴重扭曲您的看法、期望與現實
另外,根據您的使用案例,每個 lambda 呼叫和回應的延遲可能會導致較差的使用者體驗
總而言之,我認為這是一個有趣的小實驗,儘管它並沒有完全滿足我的業餘專案 Qwen 1.5b 的預算和延遲要求。再次感謝@makit 的指導!