1. 程式人生 > 實用技巧 >開源機器學習平臺tipdm

開源機器學習平臺tipdm

TipDM建模平臺

tipdm開源的python機器學習建模平臺,使用者通過拖拉就可以實現模型開發。

專案結構

backend :為java後臺服務程式碼

frontedn :為vue js前端程式碼

mock-oauth-server:為java認證服務程式碼

主要分析backend後臺服務程式碼,典型的java spring mvc web專案,專案結構如下:

framework-common:公共程式碼,主要為工具類,spring相關公用類

framework-model: 實體類

framework-persist:持久層

framework-service:service層,就兩個資料庫操作相關的service 介面和抽象類

tipdm-server: 服務核心

本次主要介紹下tipdm-server 模型執行程式碼實現

模型執行入庫在ProjectController類中的execute方法,邏輯是驗證許可權,載入流程檔案,執行流程,主要程式碼:

WorkFlow workFlow = new WorkFlow(executionId, tokenModel.getUsername(), content); //解析工作流檔案,建立工作流物件
String workFlowId = workFlowScheduler.execute(workFlow);//執行工作流

進入 workFlowScheduler.execute(workFlow)方法,主要程式碼:

WorkFlowDexecutor dexecutor = new WorkFlowDexecutor(accessToken, flow, scheduler);//初始化dexecutor-core框架,構建流程執行圖
//啟動一個執行緒監聽流程
WorkFlowHandler workFlowHandler = new WorkFlowHandler(workFlowId, scheduler, dexecutor, semaphore);
workFlowHandler.start();//執行流程

這裡需要對dexecutor-core框架有些瞭解,dexecutor-core主要為了使使用者可以簡單快速構建執行依賴任務。

WorkFlowHandler 是個執行緒類繼承了Thread,其run方法:

@Override
public void run() {
this.dexecutor.execute(new ExecutionConfig().nonTerminating()); //通過dexecutor-core執行依賴任務
release();
}

實際最終執行任務的是JobProvider類中的provideTask方法,主要是通過構建quartz定時任務WorkFlowJobBean去執行,WorkFlowJobBean中的executeInternal方法執行IAlgorithm.run執行演算法邏輯.