Machine learning mikroszervizek ERP rendszerekhez
A gabonakereskedelemmel és logisztikával foglalkozó Sygnus fejlesztőcsapata elhatározta, hogy Node.js-ben írt, folyamatosan fejlesztett ERP rendszerét ML/AI funkciókkal erősíti meg.
A projektet 2017-ben kezdte tervezni a cég, amikor már elérhető volt a Tensorflow és a Pytorch is, azonban a hardversemlegesség miatt akkor az Arrayfire mellett döntöttek a szakemberek. A tervezési szakaszban még nem volt releváns javascript alapú ML/AI eszköz, de később sem tervezték, hogy monolitikusan beépítsék ezeket a szolgáltatásokat az ERP rendszerbe.
A projektet végrehajtása a GINOP-2.1.2.-8-1-4-16-2017-00236 pályázat keretében 2019 októberében kezdődött meg. Ekkora már nyilvánvalóvá váltak a fő irányok az ML/AI területén. A python szinte kikerülhetetlen nyelvvé vált.
A kereskedelmi és logisztikai tevékenység leginkább gráfként modellezhető. A gráf felépítéséhez azonban számos kisebb nagyobb funkcióra van szükség. Például a partnerek várható megrendeléseit node-okként szerepeltetik a gráfban, de mivel ezek jövőbeni események, egy becslést/előrejelzést kell készíteni rá. A minták relatíve alacsony száma miatt egy gépi tanulási modell sem adott életszerű eredményt, ezért feature engineeringbe kezdtek a fejlesztők, például clusterezték a partnereket és a kérdéses szerződéseket is. Ezekhez a feladatokat a leghatékonyabb scikit-learn szerű könyvtárak segítségével megoldani.
Ezeket a modelleket fastApi mikroszervizekkel kötötték össze a cég saját ERP rendszerével. Ezek a modellek sokszor túl lassúak egy http-kérés azonnali megválaszolásához, ezért egy Celery és Redis alapú feldolgozó rendszer is létrejött a társaságnál.

A komplexebb modellek, például a távolsággal nem lineárisan változó és szezonális fuvardíjak előrejelzése úgy lett megvalósítva, hogy az ERP-rendszer a tény adatokkal meghívja a fit végpontot, amire az csak egy model-id-t ad vissza, melyet letárolnak az ERP oldalon. Az előrejelzések a predict végpont, távolság, időszak és model-id-val való meghívása után érkeznek meg az ERP rendszerbe, ahol listázzák azokat a felhasználók számára. Új tény adatok rögzítése után tetszőleges időpontban, de akár ütemezetten is végrehajtható a modell frissítése a fit végponton keresztül.
A teljes tevékenységi modell egy gráfot alkot, aminek egy-egy pontját vagy élét a mikroszervizek álltal adott adatok adják.
A gráf feldolgozásnál a fejlesztők visszatértek az C++ koncepcióhoz, de már Pytorch Libtorch verzióját használva.
A modellt gRPC-n keresztül érik el.
A fenti megoldások lehetővé tették a vállalat szakemberei számára, hogy egy hagyományos monolitikus ERP rendszert, függetlenül fejleszthető, akár GPU-val is gyorsítható mesterséges intelligencia szolgáltatásokkal egészítsenek ki.
[Az Sygnus Kft. megbízásából készített, fizetett anyag.]