1. 程式人生 > >用Azure快速建立機器學習應用

用Azure快速建立機器學習應用

最近看了一些Azure上面做大資料分析和機器學習模型的框架和工具,感覺挺好的,已經形成了一個閉環,可以非常快捷的建立機器學習的應用。這裡通過一個虛構的例子,簡單列舉一下相關的幾個技術。有興趣的可以閱讀微軟的官方文件詳細瞭解。

Azure Machine Learning Workbench & Experimental

我訓練出來了一個很厲害的分類模型,給我一段時間的股價,我能告訴你明天股票是漲是跌。但是怎麼我怎麼才能用它呢?一個自然的想法是我要建立一個RESTful的Web App,接受輸入資料,傳遞給模型做predict,拿到輸出返回。於是噩夢來了,從模型到Web App,這裡面的工作量不小,並且我不感興趣,我感興趣的只是預測股票明天走勢的服務。這裡就需要用到Azure Machine Learning Workbench & Experimental了。只需要一點程式碼,它就可以幫我們捕捉模型的輸入和輸出,並且建立符合Swagger規範的Web App。Web App的執行使用了docker技術,支援cluster。具體請參考:https://docs.microsoft.com/en-us/azure/machine-learning/preview/

Azure Event Hubs

機器學習模型的Web App有了,但是我需要給它喂資料它才能出結果啊。對於股票來說,每天有大量的交易資料產生,怎麼處理它們呢?首先需要用到的是Azure Event Hubs。每個股票建立一個Event Hub,有了交易資料進來就放到對應的股票的Event Hub。至於後面怎麼處理,就不需要關心了,解耦了後續的邏輯。事實上,Event Hub可以自動把資料儲存在資料庫,Azure Blob,Azure Data Lake等地方,只需要在Azure Portal上面動動滑鼠。詳情:https://docs.microsoft.com/en-us/azure/event-hubs/

Azure Stream Analytics

交易資料不能直接給模型,還需要ETL,需要按照Time Window做Aggregation,Azure Stream Analytics可以不需要程式設計,就可以直接從Azure Event Hubs抓取資料,然後用類似SQL的語法分析和處理資料(並且提供了Time Windows)的支援,然後再輸出到另一個Azure Event Hubs。注意輸出到Azure Event Hubs也不需要程式設計,在Azure Portal上面動動滑鼠就可以了。詳情:https://docs.microsoft.com/en-us/azure/stream-analytics/

Azure Functions

說了這麼多,還是沒有調到我的機器學習Web App啊,別急,Azure Functions來了。Azure Functions實現了Serverless的概念,寫一段code,不用管它在哪裡執行,設定好Trigger和輸入,Trigger發生了,這段code就回被執行。Trigger可以是HTTP Request,也可以是Azure Event Hubs上的Event。輸出同樣也支援很多種類,甚至是簡訊。那麼我寫一個Azure Function,從Azure Stream Analytics的Event Hub接收資料,呼叫人工智慧Web App,結果再輸出到Event Hub或者資料庫。這樣所有的技術都粘合起來了:Data -> Azure Event Hubs -> Azure Stream Analytics -> Azure Function -> Machine Learning Web App。詳情:https://docs.microsoft.com/en-us/azure/azure-functions/

BUT?

這一套流程,有一部分和Apache的一系列框架和工具很接近。如果想用Apache系列的產品,實際上Azure也是支援的,即Azure對於部分功能,提供了兩個產品線的支援。

AND?

如果想嘗試上文提到的這些技術,可以申請一個免費的Azure賬戶,不過需要注意的是,註冊賬戶的時候,地區不能選擇中國。