iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 26
3
影片教學

全民瘋AI系列系列 第 26

[Day 26] 使用Heroku部署機器學習API

使用 Heroku 部署機器學習 API

今日學習目標

  • 動手部署自己的機器學習 API
    • 使用 Heroku 免費雲端平台部署應用程式

Fork 專案到自己的 GitHub 帳號中

傳送門

建立一個 Heroku 帳號並新增一個專案

傳送門

本系列教學簡報 PDF & Code 都可以從我的 GitHub 取得!


上一篇
[Day 25] 使用Python Flask架設API吧!
下一篇
[Day 27] 使用GCP部署機器學習API
系列文
全民瘋AI系列31

1 則留言

1
a0937736966
iT邦新手 5 級 ‧ 2021-05-30 21:58:22

您好:
感謝您的文章及教學,收穫良多!
但是在嘗試部屬到Heroku的時候有出現問題,想跟您請教一下,頁面的「Flask API started」有成功跑出來,但是test/predict的頁面,用postman無法成功使用,查看了一下Heroku的log,錯誤訊息如下:
AttributeError: 'XGBClassifier' object has no attribute 'use_label_encoder'
推測是pickle相關的問題,但是在本機端上運行的時候是沒問題的,網路上找了很久,都沒有找到相關解答
中間有嘗試過用joblib存取跟讀取模型,雖然在本機端運行是ok,但是上線到Heroku時,還是出現狀況
(也有嘗試部屬到GCP,但也一樣失敗了QAQ)
因為對於這方面的原理還不是太熟悉,如果您有空的話,再麻煩您解答或提供一些關鍵字讓我可以找尋解法,再次感謝您的教學及文章!!!

看更多先前的回應...收起先前的回應...

嗨~請問你的API是我提供的程式碼還是你自己撰寫的呢?
我自己猜測應該是XGBoost版本訓練的模型與本機或雲端的有不相容。因此建議看一下你訓練模型時用的XGBoost版本是多少,然後再部署雲端時也要安裝一樣的版本才不會有一些問題。(可能跨太多版本就有相容問題)

ps. 可以在 requirements.txt 指定套件版本 ex: xgboost==1.4.2

您好
非常感謝您的回應,我使用的API是您提供的程式碼,沒有更動(除了將runtime.txt拿掉,因為用3.6.1的版本,Heroku會部屬不上去,我看Heroku版本顯示是Using cached install of python-3.9.5),但是指定套件版本依舊沒有成功,還是一樣出現'XGBClassifier' object has no attribute 'use_label_encoder',不知道還有沒有其他的方法可以解決QQ
github:https://github.com/Raymond-Hsu0902/Flask-API-example-with-ML-model-heroku
再麻煩您了,十分感謝!!

a0937736966 沒問題,這個週末幫你看一下(最近有點忙)。似乎 Heroku 的 container 有升級,我再幫你除錯一下。

a0937736966 Hi 我大致看一下應該是XGBoost版本問題。我一樣採用colab訓練,目前colab的XGBoost版本為0.90。你可以看到我在 requirements.txt 指定版本,到時部署在 Heroku 會安裝相對應版本。

https://github.com/1010code/Flask-API-example-with-ML-model-heroku

您好:
剛剛試了一下,有成功部屬到Heroku,真的很感謝,從這一系列的文章學到超多,講解得非常清楚,也期待未來有更多關於機器學習應用的文章或教學(已訂閱Youtube支持!!),感恩~~

感謝大家支持~ 未來會陸續更新一些內容(規劃中),平時工作較忙比較少拍片剪片。不過部落格還是常常在更新哦,歡迎挖寶!

我要留言

立即登入留言