Mindenki, aki kipróbálta a gépi tanulás fejlesztését, tudja, milyen nehéz. A szoftverfejlesztés szokásos problémáin kívül a gépi tanulás (ML) fejlesztése számos további akadályt vet fel.
Nyílt forráskódú eszközök százai állnak rendelkezésre, amelyek segítenek az ML életciklusának minden szakaszában, az adatok előkészítésétől a modellképzésig.
A hagyományos szoftverfejlesztéssel ellentétben, amikor a csapatok minden lépéshez egy-egy eszközt választanak, az ML-nél általában minden rendelkezésre álló eszközt (pl. algoritmust) meg kell vizsgálni, hogy megtudja, javítja-e az eredményeket.
Ennek eredményeként az ML fejlesztőknek több száz könyvtárat kell használniuk és előállítaniuk.
A gépi tanulási algoritmusok több ezer testreszabható paramétert tartalmaznak, és nehéz azonosítani, hogy az egyes kísérletekbe mely paraméterek, kódok és adatok kerültek a modell létrehozásához, függetlenül attól, hogy egyedül vagy csapatban dolgozik.
Megfelelő felügyelet nélkül a csapatok gyakran küzdenek azért, hogy ugyanazt a kódot újra működésbe hozzák. Akár adattudós, aki átadja a képzési kódját egy mérnöknek termelési célból, vagy visszatér korábbi munkájához, hogy diagnosztizáljon egy problémát, az ML-munkafolyamat lépéseinek visszavonása kulcsfontosságú.
A modell élesre helyezése nehéz lehet a számos telepítési módszer és használat miatt (pl. REST kiszolgálás, kötegelt következtetés vagy mobilalkalmazások). Nincs általános módszer a modellek bármely könyvtárból ezen eszközökbe való áthelyezésére, ezért minden új telepítés kockázatot jelent.
Ezen problémák miatt nyilvánvaló, hogy az ML fejlesztésnek jelentősen fejlődnie kell ahhoz, hogy olyan stabil, kiszámítható és széles körben használt legyen, mint a hagyományos szoftverfejlesztés.
ML kihívások
- Rengeteg különböző eszköz létezik. Szoftvermegoldások százai állnak rendelkezésre a gépi tanulás életciklusának minden szakaszában, az adatok előkészítésétől a modellképzésig. Továbbá, a hagyományos szoftverfejlesztéssel ellentétben, amikor a csapatok minden lépéshez egy-egy eszközt választanak ki, a gépi tanulásban (ML), gyakran minden rendelkezésre álló eszközt (pl. algoritmust) fel kell vizsgálni, hogy kiderüljön, javítja-e az eredményeket. Ennek eredményeként az ML fejlesztőknek több száz könyvtárat kell használniuk és előállítaniuk.
- Nehéz nyomon követni a kísérleteket. A gépi tanulási algoritmusok több ezer testreszabható paramétert tartalmaznak, és nehéz azonosítani, hogy az egyes kísérletekbe mely paraméterek, kódok és adatok kerültek a modell létrehozásához, függetlenül attól, hogy egyedül vagy csapatban dolgozik.
- Nehéz megvalósítani a gépi tanulást. A modell élesre helyezése nehéz lehet a számos telepítési módszer és használat miatt (pl. REST kiszolgálás, kötegelt következtetés vagy mobilalkalmazások). Nincs általános módszer a modellek áthelyezésére bármely könyvtárból ezen eszközök bármelyikébe. Így minden új telepítés kockázatot jelent.
Mi MLflow?
Az MLflow egy nyílt forráskódú platform a gépi tanulási életciklushoz. Nyílt interfész-koncepción alapul, számos alapvető absztrakciót javasolva, amelyek lehetővé teszik a jelenlegi infrastruktúra és gépi tanulási algoritmusok azonnali integrálását a rendszerbe.
Ez azt jelenti, hogy ha Ön olyan fejlesztő, aki az MLflow-t szeretné használni, de nem támogatott keretrendszert használ, a nyílt felület viszonylag egyszerűvé teszi a keretrendszer integrálását és a platformmal való munka megkezdését. A gyakorlatban ez azt jelenti, hogy az MLflow-nak bármilyen eszközzel működnie kell gépi tanulás könyvtár vagy nyelv.
Ezenkívül az MLflow elősegíti az ismételhetőséget, ami azt jelenti, hogy ugyanaz a képzési vagy gyártási gépi tanulási kód ugyanazokkal az eredménnyel fut a környezettől függetlenül, akár felhőben, akár helyi munkaállomáson vagy notebookban.
Végül az MLflow a méretezhetőségre épül, így egy kis adattudós-csapat, valamint egy több száz gépi tanulással foglalkozó nagy cég is használhatja.
Az MLflow kompatibilis bármely gépi tanulási könyvtárral, algoritmussal, telepítőeszközzel vagy nyelvvel. A következő előnyei is vannak:
- Úgy tervezték, hogy bármilyen felhőszolgáltatással működjön.
- Hatalmas adatokra skálázható az Apache Spark segítségével.
- Az MLflow kompatibilis számos nyílt forráskódú gépi tanulási keretrendszerrel, beleértve az Apache Sparkot, TensorFlowés SciKit-Learn.
Ha már rendelkezik kóddal, akkor az MLflow használható vele. Még a keretrendszert és a modelleket is megoszthatja a vállalkozások között, mert így van nyílt forráskódú.
MLflow komponensek: Hogyan működnek?
Az MLflow egy ingyenes és nyílt forráskódú platform az ML életciklus kezeléséhez, amely magában foglalja a kísérletezést, a reprodukálhatóságot, a telepítést és az egyetlen modellnyilvántartást. Jelenleg az MLflow négy összetevőből áll:
1. MLflow követés
Az MLflow Tracking-el fogom kezdeni. Az MLflow támogatja a központi képzési metaadat-követő tárhoz kapcsolódó különféle alapvető fogalmak összegyűjtését. Az első fogalom kritikus hiperparaméterek vagy konfigurációs gombok gyűjteménye, amelyek befolyásolják a modell teljesítményét. Az MLflow API-inak és a központosított nyomkövetési szolgáltatásnak a használata mindezeket megőrizheti.
A felhasználók teljesítményadatokat is rögzíthetnek, hogy betekintést nyerjenek gépi tanulási modelljeik sikerébe. Ezenkívül az ismételhetőség érdekében az MLflow lehetővé teszi a felhasználók számára, hogy naplózzák a modell létrehozásához használt konkrét forráskódot, valamint annak verzióját, szorosan integrálva a Git-tel, hogy minden modellt egy adott véglegesítési hashhez kössön.
Az MLflow használható műtermékek naplózására, amelyek tetszőleges fájlok, beleértve a képzést, a tesztadatokat és magukat a reprodukálhatósági modelleket.
Ez azt jelenti, hogy ha fejlesztő vagyok, aki most betanított egy modellt, akkor megtarthatom a központosított nyomkövető szolgáltatásnak, és az egyik kollégám később betöltheti, és folytathatja a betanítást és a kísérletezést vagy a modell gyártását, hogy megfeleljen egy adott igénynek. .
A gépi tanulási kód végrehajtásakor, majd az eredmények megtekintésekor a követés egy olyan API, amely lehetővé teszi a paraméterek, kódverziók, mutatók és kimeneti fájlok naplózását. Többek között Python, R és Java nyelveken íródott. REST API-ként is elérhető, amely arra használható, hogy alkalmazásokat építsen rá.
Főbb jellemzők
- Sok fejlesztő használja az MLflow-t a helyi PC-jén, ahol a háttérrendszer és a műterméktároló megoszt egy könyvtárat a lemezen.
- Sok felhasználó az SQLite-ot, egy SQLAlchemy-kompatibilis adatbázist is alkalmaz az MLflow futtatásához a helyi számítógépeken.
- Az MLflow az elosztott architektúrákat is támogatja. A nyomkövető kiszolgáló, a háttértár és a műterméktároló ezekben különböző szervereken található.
- Ha a futást egy MLflow projekt kezdeményezte, a git commit hash-t használták fel. Az MLflow Python, R, Java és REST API-k használhatók a futtatáshoz szükséges adatok naplózására.
További információkért tekintse meg a hivatalos oldalt dokumentáció.
2. MLFlow projektek
Miután végigmentünk a nyomkövetési komponenseken, szeretnék beszélni az MLflow projektekről, amelyek a végrehajtási kontextustól függetlenül megismételhető csomagoló szerkezetek a modell tréningekhez.
A vállalkozások a gépi tanulási képzési technológiák széles skáláját használják, de ezeket a képzési eszközöket is sokféle környezetben használják. Például előfordulhat, hogy a felhőben, egy helyi számítógépen vagy egy notebookban hajtják végre a képzési kódjukat.
Ez ahhoz a problémához vezet, hogy a gépi tanulási eredményeket nehéz megismételni. Gyakran ugyanaz az azonos betanítási kód nem fut le, vagy nem ugyanazt az eredményt adja két különböző helyen.
Az MLflow által biztosított megoldás egy önálló képzési kódprojekt definíciója, amely tartalmazza az összes gépi tanulási betanítási kódot, valamint annak verziókönyvtár-függőségeit, beállításait, valamint a képzési és tesztadatokat.
Az MLflow biztosítja a reprodukálhatóságot a végrehajtási kontextusok között azáltal, hogy egyértelműen leírja a gépi tanulási képzési folyamat teljes követelményrendszerét. Ezt úgy éri el, hogy telepíti az összes könyvtárat, és ugyanazt a rendszerállapotot éri el, amelyben a kód fut.
Az MLflow projekt nem más, mint egy könyvtár. Ez egy olyan könyvtár, amely tartalmazza a betanítási kódot, a könyvtárfüggőségi definíciót és a képzéshez szükséges egyéb adatokat, valamint ezt az opcionális konfigurációs fájlt.
Ezek a könyvtári követelmények többféleképpen definiálhatók. A felhasználók például megadhatnak egy YAML-formátumú anaconda-környezeti specifikációt a képzési kódkönyvtár követelményeinek felsorolásához. Az MLflow végrehajtja a tanítási kódot a tárolón belül. Ilyen esetben tartalmazhatnak egy Docker tárolót is.
Végül az MLflow rendelkezik egy parancssori felülettel (CLI) ezeknek a projekteknek, valamint Python és Java API-knak a futtatásához. Ezek a projektek futhatnak a felhasználó helyi rendszerén, valamint számos távoli beállításban, például a Databricks feladatütemezőben és a Kubernetesben. Az MLflow projektek lehetővé teszik az adattudományi kódok megismételhető és újrafelhasználható csomagolását, többnyire szabványok alapján.
A projektek összetevője API-t, valamint parancssori segédprogramokat tartalmaz a projektek kezeléséhez. Ezek a képességek garantálják, hogy a projektek egymáshoz láncolhatók gépi tanulási folyamatok kialakítása érdekében.
Főbb jellemzők
- Az MLflow támogatja a projektkörnyezeteket, beleértve a Docker konténerkörnyezetet, a Conda környezetet és a rendszerkörnyezetet.
- Bármely Git adattár vagy helyi címtár MLflow projektnek tekinthető; alapértelmezés szerint; használhat bármilyen héjat ill Python szkript a címtárban a projekt belépési pontjaként.
- A nem Python-függőségek, például a Java-könyvtárak, rögzíthetők Docker-tárolókkal.
- Az MLflow projektek felett nagyobb irányítást szerezhet, ha hozzáad egy projektfájlt a projekt gyökérkönyvtárához, amely a YAML szintaxisában szövegfájl.
További információkért tekintse meg a hivatalos oldalt dokumentáció.
3. MLflow modellek
Most az MLflow modellekről szeretnék beszélni, egy általános célú modellformátumról, amely a termelési környezetek széles skáláját támogatja. Az MLflow modellek oka most már meglehetősen hasonló a projektekéhez.
Ismét azt látjuk, hogy a modellek az eszközök széles skálájával állíthatók elő, de sokféle helyzetben előállíthatók vagy bevethetők, ellentétben a képzési környezetekkel.
Ezek a beállítások közé tartoznak a valós idejű kiszolgáláshoz szükséges eszközök, például a Kubernetes vagy az Amazon SageMaker, valamint a streaming és a kötegelt pontozás, például a Spark. Ezenkívül egyes vállalkozások dönthetnek úgy, hogy a modelleket RESTful webszolgáltatásként telepítik, amely előre konfigurált felhőpéldányon fut.
Az MLflow modell, akárcsak a projekt, egy könyvtárstruktúra. Tartalmaz egy konfigurációs fájlt, és ezúttal egy soros modellműterméket, nem pedig tanító kódot. Tartalmazza ezt a függőségi készletet is a projektként való megismételhetőség érdekében. Ezúttal az értékelési függőségekkel fogunk foglalkozni egy Conda környezet kontextusában.
Ezenkívül az MLflow modellgeneráló eszközöket is tartalmaz a modellek sorozatosításához MLflow formátumban számos népszerű keretrendszerből. Végül az MLflow telepítéseket, API-kat ad hozzá bármely MLflow-modell előállításához és számos szolgáltatáshoz való csatlakoztatásához, és ezek az API-k Python, Java, R és CLI formátumban érhetők el.
A modellek szabványos szerkezetű komponensek a csomagolómodellek számára, amelyeket felhasználhatnak és megérthetnek a downstream eszközök, például a következtetési szerverek vagy a Adattárak kötegelt következtetési platform. Ez az összetevő órákat takarít meg a testreszabott kódtól, amikor egy modellt gyártásra csomagol.
Az MLflow-modell a gépi tanulási modellek különféle „íznek” nevezett formáiba való csomagolásának szabványa. Az MLflow számos eszközt kínál a különféle típusú modellek telepítéséhez. Az egyes MLflow-modellek tetszőleges fájlokat, valamint egy ML-modell-leíró fájlt tartalmazó könyvtárként vannak tárolva a használható ízek listájával.
Főbb jellemzők
- Az MLflow összes beépített telepítési eszköze többféle „szabványos” változatot kínál, például a „Python függvény” változatot, amely elmagyarázza, hogyan futtassuk a modellt Python-függvényként.
- Minden MLflow-modell egy tetszőleges fájlokat tartalmazó könyvtárból, valamint a könyvtár gyökerében található ML-modellfájlból áll, amely meghatározza a modell számos ízét.
- Modell tárolásakor az MLflow lehetővé teszi egy Conda környezeti paraméter megadását, amely tartalmazza a modell függőségeit. Ha nincs megadva Conda környezet, akkor a rendszer a modell íze alapján alapértelmezett környezetet hoz létre. Ezt követően a Conda környezet a conda.yaml-ben kerül tárolásra.
További információkért tekintse meg a hivatalos oldalt dokumentáció.
4. MLflow Model Registry
A modellnyilvántartás a tanult gépi tanulási (ML) modellek tárháza. A Model Registry API-kból és egy webalapú alkalmazásból áll, amely a modellek csoportos karbantartására szolgál különböző fázisokban. A Model Lineage, a Model Versioning, az Easy Stage Transition és a Annotation csak néhány a Model Registry szolgáltatásban elérhető lehetőségek közül.
A modellnyilvántartás a modellek mellett információkat (metaadatokat) tartalmaz a modell felépítéséhez használt adatokról és betanítási feladatokról. Kritikus fontosságú ezeknek a szükséges bemeneteknek a nyomon követése az ML modellek vonalának létrehozásához. Ebben a tekintetben a modell-nyilvántartás a hagyományos szoftverekhez hasonlóan működik verziókezelés rendszerek (pl. Git, SVN) és műterméktárak (pl. Artifactory, PyPI).
A Model Registry egy olyan keretrendszer, amely lehetővé teszi az adattudósok és gépi tanulási mérnökök számára modelljeik közzétételét, tesztelését, megfigyelését, kezelését és terjesztését más csapatokkal való együttműködés céljából. Lényegében a modellnyilvántartást akkor alkalmazzák, ha befejezte a tesztelési fázist, és készen áll arra, hogy megossza megállapításait a csapattal és az érdekelt felekkel.
Az MLflow Model Registry API-t és felhasználói felületet biztosít a modellek és azok élettartamának központi helyről történő kezeléséhez. A modellcsalád, a modellverziók, a megjegyzések és a szakaszos átmenetek mind elérhetők a rendszerleíró adatbázison keresztül.
Az MLflow-ban a regisztrált modell az, amely egyedi névvel és metaadatokkal, modellverziókkal, átmeneti fázisokkal és modellvonallal rendelkezik. Egy vagy több modellváltozat megtalálható egy regisztrált modellben. Az új modell akkor számít 1-es verziónak, ha regisztrálják a rendszerleíró adatbázisban. A következő verzió minden azonos nevű új modellhez hozzáadásra kerül.
Bármikor bármelyik modellváltozathoz hozzárendelhet egy lépést. A szakaszokat azonban a formálisan meghatározott MLflow-fázisokhoz kell hozzárendelni, mint például a szakaszolás, a gyártás és az archiválás. A modellváltozat egyik szakaszból a másikba átvihető.
Az MLflow lehetővé teszi a markdown használatát mind a legfelső szintű modell, mind az egyes verziók megjegyzéséhez. Leírásokat, valamint egyéb vonatkozó információkat, például algoritmusmagyarázatokat, módszertant és használt adatkészleteket is megadhat.
Főbb jellemzők
- A modell-nyilvántartáshoz a felhasználói felületen vagy az API-n keresztül való hozzáféréshez saját MLflow-kiszolgálójának üzemeltetésekor adatbázis-támogatott háttértárat kell használnia.
- A Model Registry elérhető az MLflow modellváltozaton vagy az MLflow Client Tracking API felületén keresztül is. Regisztrálhat például egy modellt egy MLflow kísérlet futtatása közben vagy az összes kísérlet futtatása után.
- Nem mindenki kezdi el modelljeit MLflow használatával képezni. Ennek eredményeként előfordulhat, hogy néhány modellt betaníthat az MLflow használata előtt. A modellek újraképzése helyett csak regisztrálni szeretné a tárolt modelleket a Model Registry-ben.
További információkért tekintse meg a hivatalos oldalt dokumentáció.
Következtetés
Az MLflow egy kiváló és folyamatosan bővülő ML életciklus-eszköz. Használhatja jelenlegi eszközei és platformjai mellett.
Számos programozási nyelvet támogat, köztük a Python-t, a Java-t és az R-t. Felhasználóbarát kialakításának köszönhetően gyorsan nyomon követheti, mentheti és összehasonlíthatja a különböző modellváltozatokat.
Próbálja ki az MLflow-t, és ossza meg velünk tapasztalatait!
Hagy egy Válaszol