1. 程式人生 > >如何對SAP Leonardo上的機器學習模型進行重新訓練

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

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

如何在Web應用裡消費SAP Leonardo的機器學習API 部署在SAP Cloud Platform CloudFoundry環境的應用如何消費

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

clipboard1,1

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

clipboard2,2

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

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

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

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

clipboard3,3

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

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

clipboard4,4

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

clipboard5,5

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

clipboard6,6

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

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

clipboard7,7

然後使用命令列上傳檔案: mc.exe cp -r C:\Code\MachineLearningStudy\flowersjerry sapjerrys3\data 大概十幾分鍾後,檔案上傳完畢:

clipboard8,8

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

clipboard9,9

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

clipboard10,10

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

clipboard11,11

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

cf sapml retraining jobs -m image

clipboard12,12

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

clipboard13,13

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

clipboard14,14

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

clipboard15,15

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

clipboard16,16

成功部署後,我們就可以用Restful API消費這個模型了,url的格式為:https://mlfinternalproduction-image-classifier.cfapps.sap.hana.ondemand.com/api/v2/image/classification/models/<model name>/versions/1

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

clipboard18,18

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

clipboard19,19 clipboard20,20

接下來有時間的話,我打算蒐集一些異形的圖片來訓練,看SAP Leonardo能不能把我桌上掛著的這個異形吊飾識別出來。感謝閱讀。

clipboard21,21

clipboard17

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":