如何對SAP Leonardo上的機器學習模型進行重新訓練

i042416發表於2019-07-24

Jerry之前的兩篇文章介紹瞭如何透過Restful API的方式,消費SAP Leonardo上預先訓練好的機器學習模型:

當時Jerry提到,Product Image Classification API只支援29種產品類別:

如何對SAP Leonardo上的機器學習模型進行重新訓練

如果我們開發應用時需要支援額外的產品類別,就需要自行提供該產品類別的圖片來重新訓練模型。

如何對SAP Leonardo上的機器學習模型進行重新訓練

下面介紹SAP Leonardo上機器學習模型的重新訓練步驟。

假設我們期望重新訓練之後,Product Image Classfication這個模型能夠識別出不同種類的花,那麼我們首先得搞到大量花的圖片。Tensorflow的官網上,已經體貼地給想做模型訓練的學習者們,提供了一個做練習用的壓縮包,裡面包含了大量各式花的圖片。

http://download.tensorflow.org/example_images/flower_photos.tgz

SAP Leonardo接受的能用於重新訓練模型的資料集,必須符合下圖所示的層級結構,即training, validation和test三個資料夾下面,分別包含以產品類別命名的子資料夾,且資料規模之比為8:1:1.

如何對SAP Leonardo上的機器學習模型進行重新訓練

有了用於訓練的資料後,下一步就是把這些資料上傳到SAP Leonardo的模型線上儲存平臺上。

Jerry的前一篇文章  部署在SAP Cloud Platform CloudFoundry環境的應用如何消費  曾經介紹瞭如何在SAP雲平臺上建立Leonardo機器學習的服務例項,這個例項的service key裡包含了一個IMAGE_RETRAIN_API_URL,可以用來獲取線上儲存的url:

如何對SAP Leonardo上的機器學習模型進行重新訓練

向這個url傳送一個HTTP get請求,得到線上儲存的url:

如何對SAP Leonardo上的機器學習模型進行重新訓練

把這個url貼上到瀏覽器裡,輸入postman裡返回的accessKey和secretKey登入,就能以web的方式訪問這個線上儲存了:

如何對SAP Leonardo上的機器學習模型進行重新訓練

下一步是把本地的訓練檔案上傳到這個部署在AWS上的線上儲存上去。

首先用命令列 mc config host 定義一個名為sapjerrys3的遠端站點,將上一步從postman獲得的AWS線上儲存url,accessKey和secret繫結到這個站點上:

如何對SAP Leonardo上的機器學習模型進行重新訓練

然後使用命令列上傳檔案:

mc.exe cp -r C:\Code\MachineLearningStudy\flowersjerry sapjerrys3\data

大概十幾分鍾後,檔案上傳完畢:

如何對SAP Leonardo上的機器學習模型進行重新訓練

此時可以從瀏覽器裡看到AWS線上儲存上傳完畢的訓練檔案。

如何對SAP Leonardo上的機器學習模型進行重新訓練

現在可以提交一個後臺作業了,讓Leonardo去處理這些上傳好的檔案,ABAP顧問們可以把這個動作理解成在Netweaver事務碼SM36裡定義一個後臺作業並提交。傳送一個HTTP post請求,除了下圖jobName, dataset和modelName需要自己維護外,其他欄位都使用SAP官網上定義的預設值。

如何對SAP Leonardo上的機器學習模型進行重新訓練

這個請求會返回一個後臺作業ID,抄下來後把它拼到url末尾,然後重新傳送一個HTTP get請求,即可查詢到這個作業的執行情況。Jerry重新訓練的時候,等待了大概五分鐘,作業狀態就變為SUCCEEDED了。

如何對SAP Leonardo上的機器學習模型進行重新訓練

因為上一篇和本文做的練習都是在SAP Cloud Platform的CloudFoundry環境中進行的,因此我們也可以用cf命令列來查詢這些作業的執行情況:

cf sapml retraining jobs -m image

如何對SAP Leonardo上的機器學習模型進行重新訓練

如果遇到作業狀態為FAILED的情況,去AWS線上儲存上檢視以作業名稱命名的資料夾,裡面包含了詳細的訓練日誌,可以用作錯誤分析:

如何對SAP Leonardo上的機器學習模型進行重新訓練

在這個訓練好的模型能正式被使用之前,我們還需要對其進行部署,類似ABAP Netweaver裡的“啟用”動作。

如何對SAP Leonardo上的機器學習模型進行重新訓練

和提交訓練的後臺作業類似,模型部署也是一個非同步執行的步驟,提交部署請求後,得到一個部署作業ID:ms-26c5a22c-6d07-4164-8222-a4182969162d

如何對SAP Leonardo上的機器學習模型進行重新訓練

根據這個部署作業ID可以查詢模型部署狀態:

如何對SAP Leonardo上的機器學習模型進行重新訓練

成功部署後,我們就可以用Restful API消費這個模型了,url的格式為:

https://mlfinternalproduction-image-classifier.cfapps.sap.hana.ondemand.com/api/v2/image/classification/models/ <model name>/versions/1

我從網路上隨便找一張向日葵的照片,

如何對SAP Leonardo上的機器學習模型進行重新訓練

將這張圖片作為HTTP POST的引數發給我重新訓練並且部署好的模型 flowerjerrymodel ,得到的結果顯示,重新訓練後的模型認為這張圖片有大約87%的可能性是代表向日葵。

如何對SAP Leonardo上的機器學習模型進行重新訓練

接下來如果有時間的話,Jerry打算蒐集一些異形(Alien)的圖片來訓練,

如何對SAP Leonardo上的機器學習模型進行重新訓練
如何對SAP Leonardo上的機器學習模型進行重新訓練

看SAP Leonardo能不能把我桌上掛著的這些異形吊飾識別出來。感謝閱讀。

如何對SAP Leonardo上的機器學習模型進行重新訓練


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2651682/,如需轉載,請註明出處,否則將追究法律責任。

相關文章