中汽數(shù)據(jù)(天津)有限公司 任女爾 張聰聰 徐洋 魏金津
車企IT系統(tǒng)在多年運(yùn)行中積累了大量數(shù)據(jù),主要存儲(chǔ)在Hive中。對這些數(shù)據(jù)進(jìn)行清洗和標(biāo)準(zhǔn)化處理得到建立算法模型所需的訓(xùn)練數(shù)據(jù),綜合運(yùn)用統(tǒng)計(jì)學(xué)分析、多因素分析,對不同層級(jí)、不同種類的汽車備件建立需求預(yù)測模型,以增強(qiáng)備件銷售和采購計(jì)劃科學(xué)預(yù)測的能力,降低倉儲(chǔ)成本,提升客戶滿意度?;赟pringcloud Alibaba微服務(wù)技術(shù)建立高并發(fā)、高可用的軟件系統(tǒng)為需求預(yù)測模型的訓(xùn)練、執(zhí)行、管理提供可靠的運(yùn)行環(huán)境。
隨著中國汽車市場的快速發(fā)展和日漸成熟,售后服務(wù)與備件業(yè)務(wù)在車企中的戰(zhàn)略重要性不斷提升。車企已有的汽車備件系統(tǒng)在多年運(yùn)行中積累了備件的需求、庫存、訂單、整車實(shí)銷、質(zhì)量等大數(shù)據(jù)[1]。車企希望結(jié)合這些大數(shù)據(jù),運(yùn)用多種算法模型,建立統(tǒng)一的算法平臺(tái)去預(yù)測備件:根據(jù)歷史需求、保有量,最優(yōu)預(yù)測模型等去預(yù)測備件使用量;根據(jù)庫存寬度、深度等去預(yù)測哪些備件需要存貨,存多少;根據(jù)補(bǔ)貨、采購數(shù)據(jù)預(yù)測哪里有過量庫存、短缺,計(jì)劃建議……算法平臺(tái)可以增強(qiáng)備件銷售和采購計(jì)劃科學(xué)預(yù)測的能力,提升備件保供滿足率和降低倉儲(chǔ)成本,提高存貨周轉(zhuǎn)次數(shù),提升客戶滿意度。
算法平臺(tái)的主要任務(wù):(1)建立預(yù)測模型,以滿足備件系統(tǒng)對備件預(yù)測、庫存計(jì)劃、采購計(jì)劃、最優(yōu)采購等的需求;(2)建立軟件系統(tǒng)為這些預(yù)測模型的訓(xùn)練與執(zhí)行提供環(huán)境,形成算法相關(guān)應(yīng)用的基礎(chǔ)技術(shù)平臺(tái)。車企希望在指定的計(jì)算周期(周、月)通過訓(xùn)練更新預(yù)測模型以反映最新的大數(shù)據(jù)變化,由于每種零備件的品牌、經(jīng)銷商數(shù)量巨大,這樣一個(gè)計(jì)算周期的備件預(yù)測任務(wù)數(shù)會(huì)在150萬以上,因此算法平臺(tái)需要能夠應(yīng)對這么多任務(wù)的并發(fā)請求。同時(shí),算法平臺(tái)需要具備高可用性,與備件系統(tǒng)通信過程需要保證安全,還需具備前瞻性,能夠適應(yīng)于備件系統(tǒng)后續(xù)升級(jí)其他算法模型,比如深度學(xué)習(xí)等模型[2]。
算法平臺(tái)包括數(shù)據(jù)處理、算法模型搭建、模型算法訓(xùn)練執(zhí)行、算法服務(wù)等功能模塊。數(shù)據(jù)處理模塊主要功能包括數(shù)據(jù)準(zhǔn)備、清洗;模型算法訓(xùn)練執(zhí)行模塊主要功能包括特征工程、算法選擇、模型編排調(diào)試、模型評估、算法執(zhí)行;模型算法服務(wù)模塊主要功能包括模型上線發(fā)布、模型管理、模型監(jiān)控。
功能邏輯架構(gòu)圖1所示:
圖1 功能邏輯架構(gòu)圖Fig.1 Functional logic architecture diagram
算法平臺(tái)服務(wù)于備件系統(tǒng),系統(tǒng)間通過統(tǒng)一標(biāo)準(zhǔn)化的API或消息隊(duì)列進(jìn)行調(diào)用。包括數(shù)據(jù)處理、算法模型搭建、算法訓(xùn)練與執(zhí)行、算法服務(wù)幾個(gè)子模塊。
1.2.1 數(shù)據(jù)處理
算法平臺(tái)以“從數(shù)據(jù)開始,由判斷結(jié)束”基本原則為參照,所以首先就是要為后面的算法模型訓(xùn)練準(zhǔn)備訓(xùn)練數(shù)據(jù)。選取能反映真實(shí)需求的模型數(shù)據(jù)源,備件系統(tǒng)數(shù)據(jù)主要是存在Hive中[3],另外還有在、離線的csv、xls、sql腳本數(shù)據(jù)等,使用ETL工具將這些數(shù)據(jù)進(jìn)行清洗和標(biāo)準(zhǔn)化處理,存入Oracle數(shù)據(jù)庫;然后要考慮數(shù)據(jù)質(zhì)量,確定不同數(shù)據(jù)質(zhì)量下備件可預(yù)測范圍;再搭建預(yù)測模型,通過挖掘歷史數(shù)據(jù)識(shí)別出對備件銷售貢獻(xiàn)較大的影響因素,這些因素量化為多種特征作為預(yù)測模型的輸入?yún)?shù),豐富預(yù)測模型維度,提高預(yù)測的準(zhǔn)確性。
1.2.2 算法模型搭建
針對中心倉、配送中心、經(jīng)銷商角色主體,綜合運(yùn)用統(tǒng)計(jì)學(xué)分析、多因素分析,對不同層級(jí)、不同種類的備件構(gòu)建需求預(yù)測模型。利用統(tǒng)計(jì)學(xué)計(jì)算方法對備件銷量的歷史數(shù)據(jù)進(jìn)行分析和預(yù)測,從而建立單因素預(yù)測模型,以進(jìn)行備件需求預(yù)測。在單因素模型基礎(chǔ)上,加入更多因素提高預(yù)測精度,合理優(yōu)化模型結(jié)構(gòu)和參數(shù)調(diào)優(yōu),建立動(dòng)態(tài)的多因素預(yù)測模型。然后基于大量數(shù)據(jù)擬合、備件屬性分類,推薦最優(yōu)模型。采用滾動(dòng)預(yù)測,用預(yù)測值和實(shí)際需求的誤差來檢驗(yàn)所有預(yù)測模型的適用性,系統(tǒng)自動(dòng)對模型各類參數(shù)進(jìn)行調(diào)整,人工定期進(jìn)行模型及算法優(yōu)化,更新模型版本。
1.2.3 算法模型訓(xùn)練與執(zhí)行
在前面準(zhǔn)備好訓(xùn)練模型和訓(xùn)練數(shù)據(jù)后,為算法平臺(tái)提供:(1)算法的運(yùn)行環(huán)境:包括算法依賴庫、業(yè)務(wù)程序依賴庫,大數(shù)據(jù)接入,為算法模型的訓(xùn)練與執(zhí)行提供可靠的環(huán)境;(2)算法模型庫:包括預(yù)測算法模型,庫存、采購預(yù)測算法模型;(3)算法模型訓(xùn)練:包括算法自動(dòng)訓(xùn)練、提供觸發(fā)接口,訓(xùn)練日志采集,訓(xùn)練結(jié)果模型與參數(shù)保存;(4)算法模型執(zhí)行:通過消息隊(duì)列與Rest Api與業(yè)務(wù)系統(tǒng)交互,執(zhí)行算法。
1.2.4 算法服務(wù)
提供算法模型發(fā)布:包括模型參數(shù)配置、算法服務(wù)化、標(biāo)準(zhǔn)化接口,算法自動(dòng)分發(fā)等功能。對算法模型進(jìn)行管理,配置算法平臺(tái)權(quán)限,管理算法執(zhí)行日志等功能。
基于Springcloud Alibaba的微服務(wù)架構(gòu)[4]。系統(tǒng)分為:(1)微服務(wù)基礎(chǔ)模塊:API網(wǎng)關(guān)、權(quán)限認(rèn)證中心、服務(wù)注冊中心、流量控制模塊;(2)業(yè)務(wù)模塊:算法管理模塊、算法執(zhí)行器、業(yè)務(wù)系統(tǒng)適配模塊、算法訓(xùn)練模塊,以及ELK日志平臺(tái)。
算法平臺(tái)使用微服務(wù)架構(gòu),對各個(gè)業(yè)務(wù)模塊進(jìn)行劃分,可以做到模塊之間松耦合且能夠應(yīng)對高并發(fā)的場景,便于根據(jù)業(yè)務(wù)的發(fā)展快速的升級(jí)和修改系統(tǒng)。包括算法發(fā)布、算法執(zhí)行、算法訓(xùn)練以及日志管理、系統(tǒng)管理等微服務(wù)模塊。算法平臺(tái)與備件系統(tǒng)之間通過Kafka消息隊(duì)列交互,算法平臺(tái)各微服務(wù)之間除了通過Rest API也可通過Kafka消息隊(duì)列交互。微服務(wù)架構(gòu)圖2所示:
圖2 微服務(wù)架構(gòu)圖Fig.2 Microservice architecture
微服務(wù)是一種軟件開發(fā)技術(shù),將應(yīng)用程序構(gòu)造為一組松散耦合的服務(wù)。在微服務(wù)體系結(jié)構(gòu)中,服務(wù)是細(xì)粒度的,協(xié)議是輕量級(jí)的。微服務(wù)架構(gòu)是一種云原生架構(gòu)方法,其中單個(gè)應(yīng)用程序由許多松散耦合且可獨(dú)立部署的較小組件或服務(wù)組成。這些服務(wù)通常有自己的堆棧,包括數(shù)據(jù)庫和數(shù)據(jù)模型。通過Rest API,事件流和消息代理的組合相互通信。Spring Cloud是開源微服務(wù)解決方案,Springcloud Alibaba是阿里巴巴融合Spring Cloud體系和阿里巴巴中間件的微服務(wù)解決方案,具有完善的可視化界面,配置簡單,開發(fā)運(yùn)維便利,算法平臺(tái)中的算法執(zhí)行器部分,因?yàn)橐獞?yīng)對大量的預(yù)測任務(wù)執(zhí)行,因此需要一個(gè)可靠的負(fù)載均衡策略。使用Springcloud Alibaba微服務(wù)技術(shù)可以有效的解決這個(gè)問題。
Kafka是一個(gè)分布式的消息系統(tǒng),采用傳統(tǒng)的Pull模式。Pull模式的好處是Consumer可以自主決定是否批量的從Broker拉取數(shù)據(jù)。Pull模式下,Consumer可以根據(jù)自己的消費(fèi)能力去決定這些策略。在算法平臺(tái)中,備件系統(tǒng)在做預(yù)測的時(shí)候,會(huì)生成百萬級(jí)別的任務(wù),如果很快的把任務(wù)發(fā)送給算法平臺(tái),算法平臺(tái)的算力不足以支撐該壓力。在使用了Kafka小時(shí)服務(wù)器之后,可以使用Pull模式拉取任務(wù)消息,做到削峰填谷。緩解算法平臺(tái)的極限壓力。
算法平臺(tái)對每個(gè)備件進(jìn)行訓(xùn)練會(huì)生成相應(yīng)的算法模型,如果有150萬個(gè)備件,其產(chǎn)生的算法模型數(shù)據(jù)量是相當(dāng)大的。MinIO是一個(gè)開源的對象存儲(chǔ)服務(wù)系統(tǒng),海量、安全、高可靠、低成本,非常適合于存儲(chǔ)如圖片、視頻等大容量非結(jié)構(gòu)化數(shù)據(jù)。讀寫性能高,支持分布式集群部署,容量可以彈性擴(kuò)展,不會(huì)隨著數(shù)據(jù)量的增加產(chǎn)生瓶頸。MinIO提供了一個(gè)無需單獨(dú)部署隨服務(wù)器一起啟動(dòng)的可視化UI界面,對于JavaScript,Java等多種語言提供SDK支持,和算法平臺(tái)集成調(diào)用也很方便。所以我們選擇MinIO去存儲(chǔ)這些算法模型文件。
使用MinIO分布式集群系統(tǒng)實(shí)現(xiàn)算法模型的分發(fā),保證算法的一致性。算法執(zhí)行器使用服務(wù)注冊中心實(shí)現(xiàn)服務(wù)的注冊發(fā)現(xiàn)。
用戶上傳算法模型到算法平臺(tái)并設(shè)定算法模型參數(shù)及算法與業(yè)務(wù)數(shù)據(jù)的關(guān)聯(lián)關(guān)系,系統(tǒng)將算法模型保存到minIO集群,算法信息存儲(chǔ)到關(guān)系型數(shù)據(jù)庫。算法平臺(tái)提供統(tǒng)一的算法基礎(chǔ)屬性、參數(shù)、數(shù)據(jù)字段查詢接口。
算法模型在設(shè)計(jì)開發(fā)過程中需要使用大量的數(shù)據(jù)進(jìn)行訓(xùn)練才能得到適合的場景和參數(shù),人工訓(xùn)練工作量太大。所以需要建立自動(dòng)訓(xùn)練能力,定時(shí)或手動(dòng)觸發(fā)訓(xùn)練任務(wù)。訓(xùn)練任務(wù)觸發(fā)后,算法執(zhí)行器讀取備件相關(guān)業(yè)務(wù)數(shù)據(jù),調(diào)用算法訓(xùn)練的Python腳本,腳本從Hive中讀取訓(xùn)練數(shù)據(jù),將訓(xùn)練好的新模型保存到minIO集群以便執(zhí)行過程中調(diào)用,訓(xùn)練結(jié)果數(shù)據(jù)寫入關(guān)系型數(shù)據(jù)庫。算法訓(xùn)練流程圖3所示:
圖3 算法訓(xùn)練流程Fig.3 Algorithm training process
備件系統(tǒng)從算法平臺(tái)獲取算法信息,根據(jù)返回的算法信息封裝備件預(yù)測任務(wù)消息發(fā)送到Kafka消息隊(duì)列,消息包括需要調(diào)用的算法名稱、參數(shù)與業(yè)務(wù)數(shù)據(jù)。算法調(diào)度模塊收到消息后解析,根據(jù)解析后的消息調(diào)用算法執(zhí)行器執(zhí)行相應(yīng)的Python腳本。算法平臺(tái)通過分布式算法執(zhí)行器將算力分配在不同的服務(wù)器上,在執(zhí)行任務(wù)的時(shí)候通過使用服務(wù)注冊中心來完成任務(wù)的負(fù)載均衡。算法執(zhí)行流程圖4所示:
圖4 算法執(zhí)行流程Fig.4 Algorithm execution process
算法平臺(tái)具備算法模型管理的能力。備件系統(tǒng)通過統(tǒng)一的API獲取算法調(diào)用的信息,然后根據(jù)算法描述自動(dòng)生成算法任務(wù),驅(qū)動(dòng)算法平臺(tái)執(zhí)行。
從車企大數(shù)據(jù)里挖掘價(jià)值以提高企業(yè)效益是建立算法平臺(tái)的目的。構(gòu)建算法平臺(tái)一要建立算法預(yù)測模型,通過高質(zhì)量的數(shù)據(jù)去訓(xùn)練算法模型;二要為算法模型的訓(xùn)練、執(zhí)行、管理提供可靠的運(yùn)行環(huán)境。算法平臺(tái)各模塊采用松散耦合的設(shè)計(jì),基于Springcloud Alibaba微服務(wù)技術(shù)架構(gòu),可以應(yīng)對高并發(fā)場景以及增強(qiáng)未來系統(tǒng)對新功能的擴(kuò)展性。由于預(yù)測任務(wù)數(shù)會(huì)有百萬級(jí)別,使用Kafka消息隊(duì)列可以極大緩解算法平臺(tái)執(zhí)行壓力。
引用
[1] 金善東,羅瓊.ABC分析法在汽車備件訂貨系統(tǒng)的應(yīng)用[J].商業(yè)故事,2018(3):50.
[2] 李志強(qiáng),田有,趙鵬飛,等.基于深度學(xué)習(xí)的接收函數(shù)自動(dòng)挑選方法[J].地球物理學(xué)報(bào),2021(5):1632-1642.
[3] 曹建華,徐晨敏,郭昱含.Hive和Kafka在數(shù)據(jù)稽核和同步中的應(yīng)用[J].中國新通信,2021(6):95-97.
[4] 李月晴,范純超,張?jiān)?基于微服務(wù)架構(gòu)的生產(chǎn)管控平臺(tái)研究[J].金屬礦山,2021(2):173-178.