簡體   English   中英

如何使用AWS Lambda部署大型python軟件包?

[英]How to deploy large python packages with AWS Lambda?

我需要一些建議。

我使用Tensorflow訓練了圖像分類器,並希望使用無服務器將其部署到AWS Lambda。 該目錄包含模型,一些python模塊(包括tensorflow和numpy)以及python代碼。 解壓縮前完整文件夾的大小為340 MB,AWS lambda拒絕了該文件夾,並顯示一條錯誤消息"The unzipped state must be smaller than 262144000 bytes"

我應該如何處理? 我不能在AWS Lambda上部署此類軟件包嗎?

注意:在requirements.txt文件中,列出了2個模塊,包括numpy和tensorflow。 (Tensorflow是一個很大的模塊)

您也許可以使用臨時磁盤容量(/ tmp),其限制為512Mb,但是在您的情況下,內存仍然是個問題。

最好的選擇是使用AWS批處理,如果無服務器無法管理它,您甚至可以保留一個lambda來觸發您的批處理

最好的方法是使用本文概述的無服務器框架 它有助於使用模仿亞馬遜Linux環境的docker映像對它們進行壓縮。 此外,它會自動使用S3作為Lambda的代碼存儲庫,這會增加大小限制。 提供的文章是非常有用的指南,並且與開發人員在AWS上使用tensorflow和其他大型庫的方式相同。

如果仍然遇到250MB的大小限制,則可以嘗試閱讀本文該文章使用與上一篇文章相同的python-requirements-plugin ,但選項為-slim: true 這將通過從文件中刪除不必要的文件來幫助您最佳地壓縮文件包,從而使您可以在解壓縮AND之前減小文件包的大小。

我知道我回答得很晚..只是把它放在這里供其他人參考..我做了以下事情-

  1. 按照此處的建議刪除/ external / * / tensorflow / contrib / * / tensorflow / include / unsupported / *文件。
  2. 剝離所有.so文件,尤其是站點包/ numpy / core中的兩個文件-_multiarray_umath.cpython-36m-x86_64-linux-gnu.so和_multiarray_tests.cpython-36m-x86_64-linux-gnu.so。 條帶大大減小了它們的尺寸。
  3. 您可以將模型放入S3存儲桶中,然后在運行時下載。 這將減小拉鏈的大小。 這將在此處詳細說明。

如果不工作,然后也有一些可以像提到PYC刪除文件等進行額外的東西在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM