AI 智能識別訂單語音撥放系統 (部署篇),經驗筆記,踩坑篇

由於這次的專案比較小,主要在於 NLU 自然語言理解訂單,再進一步去做後續的事情。

用在咖啡店內,又是內部使用,考慮到經費與訂客數,所以我選擇這次選擇了 dialogflow 來做 NLU 的處理,在佈署到google run 上(圖1)。 

圖1 google run


沒想到 光要在google run 運行 就是個關卡的開始,由於經費的考量 一切是以免費為宗旨,就不使用 Google Artifact Registry。

1. 程式放在github 在和 google build 去做綁定,當 github 更新 cloud build 就會 自動更新程式。(圖2)

圖2. cloud build 建置

但後來在做log 監控的時候,發現每次只要更新python,並沒有更新dockerfile 或 安裝檔,cloud run 又會自動更新....

觀察了一下狀況發現:「內容變了」等於「Image 變了」,而 「Image 變了」等於「需要新的 Cloud Run Revision」,所以才會 每次cloud run 會重跑,但 每個月Cloud Build  只有120分鐘 免費額度、Artifact Registry 只有0.5 GB,所以需要謹慎使用免費。

後來的決策是:

1. 連結到github的自動更新關掉,改成手動更新,當dockerfile 有變更,在手動更新。(圖3)

圖3 手動更新 dockerfile 

2. 程式就掛載到 cloud storage。(圖4、圖5)

圖4.掛載到cloud storage

圖5.掛載到cloud storage


之後只要每次更新main.py,只要更新 cloud run 就好了。

但有些缺點,更新了 Bucket 裡的程式碼,Cloud Run 並不會知道我改了什麼檔案,需要「手動重啟」,再來就是啟動、回應速度會有點慢,但對於識別意圖來說,並無傷大雅。

其他困難點:  IAM 權限的設定、API 和服務的啟用。
IAM 要自己設定,沒有設定好 就沒有權限使用 bucket無法用。(圖6)
API 服務 沒開啟 就沒有這項功能可以用。(圖7)

圖6. IAM 權限設定


圖7. API 服務 



剛好從這個專案,一邊做一邊熟悉,熟悉後 會發現cloud build 自動化CI/CD、cloud run 會越來越熟練。

哈,但3不5時 就要計算一下免費額度的使用量,看一下LOG 監控,一天差不多就是執行這些。(圖8、圖9)

圖8. Log 監控

圖9.  監控費用



留言