我們已經把大部份的 Azure Machine Learning SDK 講完了,我們先來講怎麼來監控我們的部署吧!模型在部署上去之後,我們要持續監控這個服務的狀況。在微軟 Azure 上提供的解決方案是 Application Insights。Application Insights 是一款 APM(Application Performance Management),可以來監控應用程式的效能,並且提供分析工具。一般我們在 Web 服務上,都會安裝這類的 APM 工具。
還記得我們在第 8 天,第一次談部署時,有個選項要叫大家勾起來嗎?下面這張圖片,我們當時請大家點開 Advance,然後把那個 Enable Application Insights
選項給勾起來。如果有勾起來,就有安裝成功 Application Insights 囉!
from azureml.core import Workspace
ws = Workspace.from_config()
ws.get_details()['applicationInsights']
如果有印出像下圖一樣的資訊,就是有安裝成功了。
from azureml.core import Workspace
from azureml.core.webservice import Webservice
ws = Workspace.from_config()
aks_service= Webservice(ws, "titanic") # 你的 service 的名稱
aks_service.update(enable_app_insights=True)
接著我們可以去以前在 AutoML 建立的 Endpoints 裡,進到 Test 分頁,來直接打幾筆資料。
接著我們進到剛剛建立的 Application Insights 資源裡,在 Overview 的頁面,就可以看到我們剛剛打的紀錄呢!可以參考下圖。
接首我們來發幾筆有問題的資料,故意讓程式出錯。再進到 Application Insights 的頁面裡,可以看到在 Failed requests 的 panel,看到好幾筆錯誤訊息了。
我們可以點進去 Failed requests 的 panel 裡,可以更進一步看錯誤的資訊是什麼。
當然紀錄的資訊也是可以客製化的,不過我們就要自己寫在 score.py
裡面了。忘記這是什麼東西的話可以去參考 DAY25 的內容。我們只要簡單使用 print()
加上要紀錄下來的內容就可以囉!我這裡就把 DAY25 的score.py
,單純 print 出模型的路徑。
接著我們再回到 Application Insights 裡,在 Blade 選單裡,找到 Logs。這個是我們可以用類似 SQL 的語法查詢 Log 的地方。我們輸入下面的語句來搜尋。
traces
|where message == "STDOUT" // print 的資料會出現在 STDOUT
and customDimensions.["Service Name"] == "mnist-classification-insight" //這裡放這個 web service 的名稱
| project timestamp, customDimensions.Content // 出現時間和印出來的內容
今天我們就學完監控部署模型的操作啦!需注意在實務上,我們在score.py
裡會紀錄更多的東西,例如該次 inference 的 confidence 等等的資料哦!明天最後一天,我們就來談 MLOps 吧!