簡體   English   中英

Heroku:部署深度學習模型

[英]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

https://pypi.org/project/tensorflow-cpu/#files

作為資源,您可以訪問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.

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