Designer提供了豐富的建模組件,可視化地靈活構建和調試模型。本文以構建心臟病預測為例,介紹如何在Desigenr工作流中進行具體的模型構建與調試。
前提條件
已創建工作流。
模型構建
通常一個模型可以拆分為多個細分的節點(即組件)任務,通過節點任務的前后編排形成工作流來最終實現模型預期效果。在建模前,建議您先拆分模型并規劃好細分的節點任務。通常建議一個節點完成一個最簡單的任務。模型構建總體流程如下:
在左側組件列表中搜索或找到目標組件,將目標組件拖入畫布中。
其中,在組件列表中有紫色標識的為Alink組件(例如下圖中的讀CSV文件組件),除了具備普通組件的用法外還支持聚合成組,通過對組進行資源配置,提升執行效率和資源利用率,詳情請參見Alink組件。
單擊目標節點,在界面右側進行組件參數配置。
通過連線將各個節點組織成具有上下游關系的工作流。
每個節點有一個或多個輸入/輸出端。將鼠標懸浮至組件的各端口上,可以查看端口的數據類型,從而根據數據類型進行連線。
后續模型實際運行時,上游節點會先運行,所有上游節點均運行完成后,下游節點才會觸發運行。
模型構建通常包含以下任務模塊:
讀取數據
在工作流中通過添加源/目標類型組件實現數據讀取,支持讀取MaxCompute、OSS等數據,詳情可參見組件參考:源/目標下具體組件文檔。本文以讀取MaxCompute數據為例。
已在MaxCompute創建表并導入數據,詳情請參見創建并使用MaxCompute表。
本文以在test項目下新建heartdisease表為例,并導入測試數據。
--創建表 CREATE TABLE IF NOT EXISTS heartdisease( age STRING COMMENT '對象的年齡。', sex STRING COMMENT '對象的性別,取值為female或male。', cp STRING COMMENT '胸部疼痛類型,痛感由重到輕依次為typical、atypical、non-anginal及asymptomatic。', trestbps STRING COMMENT '血壓。', chol STRING COMMENT '膽固醇。', fbs STRING COMMENT '空腹血糖。如果血糖含量大于120mg/dl,則取值為true,否則取值為false。', restecg STRING COMMENT '心電圖結果是否有T波,由輕到重依次為norm和hyp。', thalach STRING COMMENT '最大心跳數。', exang STRING COMMENT '是否有心絞痛。true表示有心絞痛,false表示沒有心絞痛。', oldpeak STRING COMMENT '運動相對于休息的ST Depression,即ST段壓值。', slop STRING COMMENT '心電圖ST Segment的傾斜度,程度取值包括down、flat及up。', ca STRING COMMENT '透視檢查發現的血管數。', thal STRING COMMENT '病發種類,由輕到重依次為norm、fix及rev。', `status` STRING COMMENT '是否患病。buff表示健康,sick表示患病。', style STRING); --本文僅為展示,直接導入PAI公開的測試數據 INSERT INTO heartdisease select * from pai_online_project.heart_disease_prediction;
將讀數據表組件拖入右側畫布中,用于讀取MaxCompute表數據。
畫布中會自動生成一個名稱為讀數據表-1(名稱中的數字按畫布中相同組件拖入的先后順序,首次為1,以此類推)的工作流節點。
在節點配置頁面配置源數據表名,更多參數詳情請參見讀數據表。
在畫布中選中讀數據表-1節點,在右側節點配置頁面的表名中填寫對應的MaxCompute表名。本示例填寫為
heartdisease
。說明跨MaxCompute項目(Project)讀取表數據時,表名需要使用
項目名.表名
格式(例如test2.heartdisease),并確認具有項目權限。將右側的節點配置頁面切換到字段信息頁簽,查看此公開數據的字段詳情。
數據預處理
讀取數據后,通常需要對數據進行預處理,以滿足訓練或預測模型輸入要求。Designer提供了豐富的數據預處理和大模型數據處理組件。
此外,您可以使用SQL腳本組件自定義待實現功能的SQL腳本。例如,本文通過SQL腳本對輸入特征進行數據類型轉換,腳本示例如下:
select age,
(case sex when 'male' then 1 else 0 end) as sex,
(case cp when 'angina' then 0 when 'notang' then 1 else 2 end) as cp,
trestbps,
chol,
(case fbs when 'true' then 1 else 0 end) as fbs,
(case restecg when 'norm' then 0 when 'abn' then 1 else 2 end) as restecg,
thalach,
(case exang when 'true' then 1 else 0 end) as exang,
oldpeak,
(case slop when 'up' then 0 when 'flat' then 1 else 2 end) as slop,
ca,
(case thal when 'norm' then 0 when 'fix' then 1 else 2 end) as thal,
(case status when 'sick' then 1 else 0 end) as ifHealth
from ${t1};
模型訓練
模型組件通常上游接入預處理后的數據,下游接入預測或推理等組件。模型組件可能有一個或多個輸入/輸出端。將鼠標懸浮至組件的各端口上可以查看端口類型,從而根據類型進行正確連線。
以邏輯回歸二分類組件為例,其有2個輸出端口:
邏輯回歸模型:訓練后的模型輸出端口,可作為預測等組件的模型結果輸入。
PMML:模型部署通常依賴PMML模型。例如,如果您需要通過預置的Processor(如PMML Processor)部署生成的模型,則需在支持生成模型的組件參數中選中是否生成PMML,再運行組件。
您也可以同時針對多個模型或相同模型配置不同參數進行訓練。例如,在LLM大語言模型端到端鏈路:數據處理+模型訓練+模型推理案例中您可以并行地對qwen-7b-chat和llama2-7b-chat兩個模型進行微調,然后使用同一批測試數據來比較它們推理后生成的結果。
模型預測或推理
模型訓練后,您可以連接預測或推理等組件,測試模型效果。
以預測組件為例,預測組件有2個輸入端口:
模型結果輸入:將模型訓練部分訓練好的模型作為輸入。
預測結果輸入:將(預處理后的)測試數據作為輸入。
模型評估
部分模型提供了評估組件,您可以使用對應的評估組件通過相關指標對模型效果進行分析。
例如,機器學習提供了如下評估組件,您可以根據需要作為預測組件的下游。
模型調試
調試運行
整個工作流:單擊畫布左上方的(運行)圖標,直接運行整個工作流。當工作流比較復雜時,建議您分模塊運行某個節點或部分節點,以方便進行調試。
單個或局部組件:右鍵目標組件進行單個或局部節點運行,支持多種運行方式。
運行成功后對應組件上會顯示,失敗會顯示,您可以右鍵單擊組件查看日志及結果。
查看日志及結果
查看數據和可視化分析:
組件運行成功后,您可以右鍵單擊組件選擇查看數據,查看產出數據。
對于部分組件,Designer支持將數據轉化為圖形和圖表,以直觀、易懂的方式展示復雜的數據和分析結果,幫助您快速獲取關鍵信息,識別趨勢和模式,從而更高效地進行分析和決策。您還可以單擊可視化分析或畫布上方的可視化圖標,進行可視化分析,詳情請參見可視化分析。
查看日志:組件運行失敗時,您可以可右鍵單擊對應組件選擇查看日志,排查具體失敗原因。
查看運行任務
單擊畫布右上方全部任務查看,查看所有歷史任務的運行詳情。在建模過程中,您的每次運行都會被記錄為一次歷史任務。每次運行涉及的節點、節點的配置、產出結果均會保留在歷史任務中。
如果需要進行版本回滾,建議在回滾之前查看歷史任務的詳情,并確認回滾的版本是否正確。同時,回滾前建議將最新的任務保存并運行一次。如果回滾后出錯,您可以再次回滾至最新的任務狀態。
相關文檔
模型調試完成后,您可以將已訓練好的模型注冊為一個新的模型并進行管理,詳情請參見注冊及管理模型。
模型調試完成后,您可以對模型進行部署和在線預測,詳情請參見模型預測及部署。
Designer提供了更新EAS服務(Beta)組件,實現模型服務更新,詳情請參見在線模型服務定時更新。
支持通過DataWorks實現工作流的離線調度,周期性地更新模型,詳情請參見使用DataWorks離線調度Designer工作流。
更多組件請參見組件參考。