[英]Heroku: deploying Deep Learning model
我使用 Flask 開發了一個 rest API 來公開 Python Keras 深度學習模型(用於文本分類的 CNN)。 我有一個非常簡單的腳本,可以將模型加載到內存中並輸出給定文本輸入的類概率。 API 在本地完美運行。
但是,當我git push heroku master
,我得到Compiled slug size: 588.2M is too large (max is 500M)
。 該模型大小為 83MB,這對於深度學習模型來說非常小。 值得注意的依賴項包括 Keras 及其 tensorflow 后端。
我知道您可以在 Heroku 上使用 GB 的 RAM 和磁盤空間。 但瓶頸似乎是 slug 大小。 有沒有辦法繞過這個? 還是 Heroku 不是部署深度學習模型的正確工具?
正如其他人所建議的那樣,我要檢查的第一件事是找出為什么您的存儲庫如此之大,因為模型大小只有 83MB。
鑒於您無法減小大小,可以選擇卸載部分存儲庫,但要做到這一點,您仍然需要了解哪些文件占用了空間。 heroku 文檔中建議卸載。 如此處所述,Slug 大小限制為 500MB: https : //devcenter.heroku.com/articles/slug-compiler#slug-size ,我相信這與啟動新實例所需的時間有關(如果發生更改)在資源方面是需要的。 但是,如果您有特別大的文件,則可以使用卸載。 關於卸載的更多信息: https : //devcenter.heroku.com/articles/s3
這個答案假設您的模型只有 83MB,並且您的存儲庫目錄的總大小小於(可能小得多)500MB。
可能存在一些問題,但您需要做的顯而易見的事情是將您的 git 存儲庫減少到 500MB 以下。
首先,嘗試使用以下命令來減小存儲庫的大小(請參閱此博客文章以供參考):
heroku plugins:install heroku-repo
heroku repo:gc --app your-app-name
heroku repo:purge_cache --app your-app-name
這些可能會解決您的問題。
另一個潛在問題是您在某個時候提交了另一個(大尺寸)模型,並在隨后的提交中將其從您的存儲庫中刪除。 git repo 現在在您的 .git 文件夾和 git 歷史記錄中包含該模型的一個版本。 對此有一些修復,但是如果您不需要提交歷史記錄,您可以將存儲庫復制到另一個文件夾並使用git init
創建一個新的 git 存儲庫。 使用“初始提交”之類的方式提交所有內容,然后嘗試僅向 Heroku 提交一次即可推送此存儲庫。 這可能是一個更小的回購規模。
我會說 Heroku 不是部署深度學習模型本身的正確工具。 為此,您可以考慮使用專用於深度學習的平台即服務,例如Floydhub 。 您也可以在 Floydhub 上部署 Flask REST API。
許多這些答案對於減少 slug 大小非常有用,但是如果有人在將深度學習模型部署到 heroku 時仍然遇到問題,重要的是要注意,無論出於何種原因,tensorflow 2.0 大約為 500MB,而早期版本要小得多。 使用較早版本的 tensorflow 可以大大減少您的 slug 大小。
您可以減小模型大小並使用較小的 tensorflow-cpu(Python 3.8 為 144MB)
pip install tensorflow-cpu
作為資源,您可以訪問Heroku Slug Compiler幫助頁面。
擁有 83MB 的模型大小並不意味着它一直是 83MB。 由於包在推送到 Heroku 時正在編譯,這顯然會占用更多的 slug 空間,以便應用程序可以使用包。 最好的解決方案可能是將大型資產放入 AWS S3 或任何其他合適的容器等容器中。 或者最糟糕的是使用不同的雲服務。
Heroku 是一個非常好的雲平台來部署您的應用程序,但是如果您有一個深度學習模型,即需要使用大型 CNN / 深度學習模型進行預測的應用程序,那么這個雲平台就不適合了。 您可以嘗試其他雲平台,如 AWS、Amazon Sagemaker、MS Azure、IBM Watson。
我遇到了同樣的問題,花了幾天后我才知道是 tensorflow 庫導致了這個 slug 開銷。
我在requirements.txt文件中使用 1 行解決了它:
tensorflow-cpu==2.5.0
而不是
tensorflow==2.5.0
您可以使用任何更新的 tensorflow 庫版本。 在此處閱讀有關 tensorflow-cpu 的更多信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.