2021年1月15日 星期五

透過容器化使用LUIS在地端進行語意分析

透過容器化使用LUIS在地端進行語意分析

enter image description here

應該大家都知道,微軟從幾年前開始,推出了一系列的AI服務,稱為Cognitive Services,內容包含可以識別人臉、辨識圖片內容的電腦視覺,可以即時聽寫(語音轉文字)或輸出(文字轉語音)的Speech API,可以透過類神經網路翻譯的Translator API,還有可以讓chat bot認得用戶輸入的文字的LUIS與QnA…等。

這些服務在雲端上固然方便好用,但每次上課都會有學員問到,可不可以把模型匯出然後在on-premise環境做辨識?

一般會有這種需求不外乎兩個理由,其一是速度,另一個更重要的則是安全性,因為客戶往往不希望要辨識的圖像或文字透過網際網路被傳遞到遠端的伺服器中。

可以嗎? 是的。現在,透過容器化技術,你可以這麼做了。
如今大部分的cognitive services都開始支援容器化的應用方式。我們可以從雲端下載LUIS run-time的image,然後把在雲端上訓練好的模型下載後,透過Container技術在客戶端(用戶端)在on-premise環境做辨識。

怎麼做呢? 其實很簡單。

首先,透過docker command下載雲端上的LUIS run-time(如果在windows上使用,必須安裝好docker desktop):
enter link description here

完成後,從https://www.luis.ai/網站上把訓練好的luis模型也下載下來:
enter link description here

你應該會下載到一個.gz檔案。
接著建立兩個資料夾,分別是 C:\input 與 C:\output ,用別的路徑當然也可以,後面的docker run指令配合著修改即可。

把剛才下在好的.gz檔案放入 input 資料價,請注意如果需要時要調整檔名,檔名格式為 LUISAppID_PRODUCTION.gz :
enter link description here

上述都準備完成後,請執行剛才下載的 docker image:
enter image description here

上面docker run指令的格式為:

docker run --rm -it -p 127.0.0.1:5000:5000 --memory 4g --cpus 2 `  
--mount type=bind,src=c:\input,target=/input `  
--mount type=bind,src=c:\output,target=/output `  
mcr.microsoft.com/azure-cognitive-services/luis:latest `  
Eula=accept `  
Billing=https://XXXXXXXXX.cognitiveservices.azure.com `  
ApiKey=78XXXXXXXXXXXXXXX21

其中的billing可設為你的Luis服務的endpoint,ApiKey當然是你的LUIS服務的Key。

你會發現,透過這樣的執行後,LUIS Container被執行了起來,我們可以在Localhost:5000看到LUIS服務了:
enter image description here

而辨識的API,也可以從localhost呼叫到了:
enter image description here

很讚吧。
感謝Docker感謝Container,讓一切變得如此簡單。

ref:
https://docs.microsoft.com/zh-tw/azure/cognitive-services/luis/luis-container-howto?tabs=v3

沒有留言:

熱門文章