Ahogy a gépi tanulás (ML) általánossá válik, és egyre szélesebb körben elterjed, az ML-alapú alkalmazások egyre gyakoribbak számos összetett üzleti probléma megoldására. Ezeknek az összetett üzleti problémáknak a megoldása gyakran több ML modell használatát igényli. Ezek a modellek szekvenciálisan kombinálhatók különféle feladatok elvégzésére, mint például az előfeldolgozás, az adatátalakítás, a modellválasztás, a következtetések generálása, a következtetések konszolidációja és az utófeldolgozás. A szervezeteknek rugalmas lehetőségekre van szükségük ezeknek az összetett ML-munkafolyamatoknak a lebonyolításához. A soros következtetési folyamatok egy olyan tervezési minta, amely ezeket a munkafolyamatokat lépések sorozatába rendezi, és minden egyes lépés gazdagítja vagy tovább feldolgozza az előző lépések által generált kimenetet, és továbbítja a kimenetet a folyamat következő lépéséhez.
Ezenkívül ezeknek a soros következtetési csővezetékeknek a következőket kell biztosítaniuk:
- Rugalmas és testreszabott megvalósítás (függőségek, algoritmusok, üzleti logika stb.)
- Megismételhető és következetes a gyártási megvalósításhoz
- Differenciálatlan nehézemelés az infrastruktúra kezelésének minimalizálásával
Ebben a bejegyzésben megvizsgáljuk a soros következtetési folyamatok néhány gyakori felhasználási esetét, és áttekintünk néhány megvalósítási lehetőséget ezekhez a használati esetekhez Amazon SageMaker. Megvitatjuk az egyes megvalósítási lehetőségek szempontjait is.
Az alábbi táblázat összefoglalja a soros következtetések különböző használati eseteit, a megvalósítási szempontokat és a lehetőségeket. Ezekről lesz szó ebben a bejegyzésben.
Használja az ügyet | Használati eset leírása | Elsődleges szempontok | Általános megvalósítási komplexitás | Ajánlott megvalósítási lehetőségek | Mintakód műtermékek és jegyzetfüzetek |
Soros következtetési folyamat (előfeldolgozási és utófeldolgozási lépésekkel) | A következtetési folyamatnak elő kell feldolgoznia a bejövő adatokat, mielőtt meghívna egy betanított modellt következtetések generálására, majd a generált következtetéseket utólag kell feldolgoznia, hogy azokat a későbbi alkalmazások könnyen felhasználhassák. | Könnyű a végrehajtás | Elő/Utó | Következtetési tároló a SageMaker Inference Toolkit segítségével | Telepítsen egy betanított PyTorch-modellt |
Soros következtetési folyamat (előfeldolgozási és utófeldolgozási lépésekkel) | A következtetési folyamatnak elő kell feldolgoznia a bejövő adatokat, mielőtt meghívna egy betanított modellt következtetések generálására, majd a generált következtetéseket utólag kell feldolgoznia, hogy azokat a későbbi alkalmazások könnyen felhasználhassák. | Leválasztás, egyszerűsített üzembe helyezés és frissítések | közepes | SageMaker következtetési folyamat | Következtetési folyamat egyedi tárolókkal és xgBoost-tal |
Sorozatmodell együttes | A következtetési folyamatnak több modellt egymás után kell tárolnia és elrendeznie, hogy minden modell javítsa az előző által generált következtetést, mielőtt létrehozná a végső következtetést. | Leválasztás, egyszerűsített telepítés és frissítés, rugalmasság a modell keretrendszer kiválasztásában | közepes | SageMaker következtetési folyamat | Következtetési csővezeték Scikit-learn és Linear Learner segítségével |
Soros következtetési folyamat (célzott modellhívással egy csoportból) | A következtetési folyamatnak az előfeldolgozási és utófeldolgozási feladatokon kívül egy adott testreszabott modellt kell meghívnia a telepített modellek csoportjából, a kérés jellemzői alapján vagy költségoptimalizálás céljából. | Költségoptimalizálás és testreszabás | Magas | SageMaker következtetési folyamat többmodell végpontokkal (MME) | Amazon SageMaker többmodell végpontok a Linear Learner segítségével |
A következő szakaszokban minden felhasználási esetet részletesebben tárgyalunk.
Soros következtetési csővezeték következtetési tárolókkal
A soros következtetési folyamatok használati eseteinek előfeltételei a bejövő adatok előfeldolgozása, mielőtt egy előre betanított ML-modellt meghívnának következtetések generálására. Ezenkívül bizonyos esetekben előfordulhat, hogy a generált következtetéseket tovább kell feldolgozni, hogy a későbbi alkalmazások könnyen felhasználhassák azokat. Ez egy gyakori forgatókönyv olyan használati esetekre, amikor egy streaming adatforrást valós időben kell feldolgozni, mielőtt modellt illeszthetnének rá. Ez a használati eset azonban kötegelt következtetésre is megnyilvánulhat.
A SageMaker lehetőséget biztosít a következtetési tárolók testreszabására és soros következtetési folyamat létrehozására. A következtetéstárolók a SageMaker Inference Toolkit és arra épülnek SageMaker Multi Model Server (MMS), amely rugalmas mechanizmust biztosít az ML modellek kiszolgálásához. A következő diagram egy referenciamintát mutat be egy soros következtetési folyamat megvalósításához következtetéstárolók használatával.
A SageMaker MMS olyan Python-szkriptet vár el, amely a következő függvényeket valósítja meg a modell betöltéséhez, a bemeneti adatok előfeldolgozásához, előrejelzések lekéréséhez a modelltől és a kimeneti adatok utófeldolgozásához:
- input_fn() – Felelős a bemeneti adatok deszerializálásáért és előfeldolgozásáért
- model_fn() – Felelős a betanított modell betöltéséért a műtárgyakból Amazon egyszerű tárolási szolgáltatás (Amazon S3)
- előre_fn() – Felelős a modellből következtetések levonásáért
- output_fn() - Felelős a kimeneti adatok (következtetések) sorosításáért és utófeldolgozásáért
A következtetési tároló testreszabásának részletes lépéseiért lásd: Saját következtetési tároló adaptálása.
A következtetési konténerek ideális tervezési mintát jelentenek soros következtetési csővezeték-használati esetekben, a következő elsődleges szempontokkal:
- Magas kohézió – A feldolgozási logika és a hozzá tartozó modell egyetlen üzleti funkcionalitást hajt végre, és ezeket együtt kell elhelyezni
- Alacsony általános késleltetés – A következtetési kérés elküldése és a válasz beérkezése között eltelt idő
Egy soros következtetési folyamatban a feldolgozási logika és a modell ugyanabban a tárolóban van beágyazva, így a meghívóhívások nagy része a tárolóban marad. Ez segít csökkenteni az ugrások teljes számát, ami jobb általános késleltetést és a folyamat érzékenységét eredményezi.
Azokban a felhasználási esetekben is, amikor a könnyű implementáció fontos kritérium, a következtetési tárolók segíthetnek, mivel a csővezeték különböző feldolgozási lépései ugyanazon a tárolón belül helyezkednek el.
Soros következtetési folyamat SageMaker következtetési folyamat segítségével
A soros következtetési folyamat egy másik változata a folyamat különböző lépései (mint például az adatok előfeldolgozása, a következtetések generálása, az adatok utófeldolgozása, valamint a formázás és szerializálás) közötti egyértelműbb szétválasztást követeli meg. Ennek számos oka lehet:
- függetlenítés – A csővezeték különböző lépéseinek világosan meghatározott célja van, és a mögöttes függőségek miatt külön konténereken kell őket futtatni. Ez azt is segíti, hogy a csővezeték jól felépített legyen.
- keretek – A csővezeték különböző lépései speciális, a célnak megfelelő keretrendszereket használnak (mint például a scikit vagy a Spark ML), ezért külön konténereken kell futtatni őket.
- Erőforrások elkülönítése – A csővezeték különböző lépései eltérő erőforrás-felhasználással rendelkeznek, ezért külön konténereken kell futtatni a nagyobb rugalmasság és irányítás érdekében.
Ezenkívül a kissé bonyolultabb soros következtetési folyamatok esetében több lépés is szükséges lehet a kérés feldolgozásához és a következtetés létrehozásához. Ezért működési szempontból előnyös lehet ezeket a lépéseket külön tárolókban tárolni a jobb funkcionális elkülönítés, valamint a könnyebb frissítések és fejlesztések megkönnyítése érdekében (egy lépés módosítása más modellek vagy feldolgozási lépések befolyásolása nélkül).
Ha a használati eset megfelel e megfontolások némelyikének, a SageMaker következtetési folyamat egyszerű és rugalmas lehetőséget kínál egy soros következtetési folyamat létrehozására. A következő diagram egy referenciamintát mutat be egy soros következtetési folyamat megvalósításához, több lépéssel, amelyeket dedikált tárolókban tárolnak egy SageMaker következtetési folyamat segítségével.
A SageMaker következtetési folyamat 2–15 konténerből álló lineáris sorozatból áll, amelyek feldolgozzák az adatokra vonatkozó következtetési kéréseket. A következtetési folyamat lehetőséget biztosít előre betanított SageMaker beépített algoritmusok vagy Docker-tárolókba csomagolt egyéni algoritmusok használatára. A tárolók ugyanazon az alapul szolgáló példányon vannak tárolva, ami segít csökkenteni a teljes várakozási időt és minimalizálni a költségeket.
A következő kódrészlet bemutatja, hogyan lehet több feldolgozási lépést és modellt kombinálni egy soros következtetési folyamat létrehozásához.
Kezdjük a Spark ML és XGBoost alapú modellek felépítésével és megadásával, amelyeket a folyamat részeként kívánunk használni:
A modellek ezután sorban vannak elrendezve a folyamatmodell-definíción belül:
A következtetési folyamat ezután egy végpont mögé kerül telepítésre valós idejű következtetéshez a gazdagép ML-példányok típusának és számának megadásával:
A teljes összeállított következtetési folyamat egy SageMaker modellnek tekinthető, amellyel valós idejű előrejelzéseket készíthet, vagy közvetlenül, külső előfeldolgozás nélkül dolgozhat fel kötegelt átalakításokat. Egy következtetési folyamatmodellben a SageMaker a meghívásokat külső alkalmazásból származó HTTP-kérések sorozataként kezeli. A folyamat első tárolója kezeli a kezdeti kérést, végrehajt bizonyos feldolgozást, majd a közbenső választ kérésként elküldi a folyamatban lévő második tárolónak. Ez a folyamatban lévő minden egyes tárolónál megtörténik, és végül visszaküldi a végső választ a hívó ügyfélalkalmazásnak.
A SageMaker következtetési folyamatok teljes mértékben felügyeltek. A folyamat üzembe helyezésekor a SageMaker telepíti és futtatja az összes meghatározott tárolót mindegyiken Amazon rugalmas számítási felhő (Amazon EC2) példányok, amelyek a végpont vagy a kötegelt átalakítási feladat részeként vannak kiépítve. Továbbá, mivel a tárolók egy helyen vannak, és ugyanazon az EC2-példányon vannak tárolva, a folyamat teljes késése csökken.
Soros modell együttes SageMaker következtetési folyamat segítségével
Az ensemble modell egy olyan megközelítés az ML-ben, ahol több ML-modellt kombinálnak, és a következtetési folyamat részeként használják fel a végső következtetések előállítására. Az ensemble modellek motivációi többek között a pontosság javítása, a modell érzékenységének csökkentése bizonyos bemeneti jellemzőkkel szemben, valamint az egyedi modell torzításának csökkentése lehet. Ebben a bejegyzésben a soros modell-együtteshez kapcsolódó használati esetekre összpontosítunk, ahol több ML-modellt szekvenciálisan kombinálnak egy soros következtetési folyamat részeként.
Nézzünk egy konkrét példát egy soros modell együtteshez, ahol csoportosítanunk kell a felhasználó feltöltött képeit bizonyos témák vagy témák alapján. Ez a folyamat három ML modellből állhat:
- Model 1 – Képet fogad be bemenetként, és a képfelbontás, tájolás és egyebek alapján értékeli a képminőséget. Ez a modell ezután megpróbálja felskálázni a képminőséget, és elküldi a feldolgozott képeket, amelyek megfelelnek egy bizonyos minőségi küszöbértéknek, a következő modellnek (2. modell).
- Model 2 – Elfogadja a Model 1-en keresztül érvényesített képeket és végrehajtja képfelismerés tárgyak, helyek, emberek, szövegek és egyéb egyéni műveletek és fogalmak azonosítása a képeken. A 2. modell kimenete, amely azonosított objektumokat tartalmaz, elküldésre kerül a 3. modellnek.
- Model 3 – Elfogadja a 2. modell kimenetét, és természetes nyelvi feldolgozási (NLP) feladatokat hajt végre, például témamodellezést a képek témák alapján történő csoportosításához. Például a képeket hely vagy azonosított személyek alapján csoportosíthatjuk. A kimenet (csoportosítások) visszaküldésre kerül az ügyfélalkalmazásnak.
A következő diagram egy referenciamintát mutat be, hogyan valósíthat meg több soros modell együttesen tárolt ML-modellt egy SageMaker következtetési folyamat segítségével.
Amint azt korábban tárgyaltuk, a SageMaker következtetési folyamatot menedzseljük, ami lehetővé teszi, hogy az ML modell kiválasztására és fejlesztésére összpontosítson, miközben csökkenti a soros ensemble pipeline felépítésével járó differenciálatlan nehézemelést.
Ezen túlmenően a korábban tárgyalt megfontolások a szétválasztással, a modellfejlesztés algoritmus- és keretrendszer-választásával, valamint a telepítéssel kapcsolatban itt is relevánsak. Például mivel minden modell egy külön tárolóban van tárolva, rugalmasan választhatja ki az egyes modellekhez és az általános használati esethez legjobban illeszkedő ML keretrendszert. Ezenkívül a szétválasztás és a működés szempontjából sokkal könnyebben folytathatja az egyes lépések frissítését vagy módosítását anélkül, hogy ez más modelleket érintene.
A SageMaker következtetési folyamat szintén integrálva van a SageMaker modellnyilvántartás modellkatalógus, verziószámítás, metaadat-kezelés és szabályozott üzembe helyezés termelési környezetekben a következetes működési bevált gyakorlatok támogatása érdekében. A SageMaker következtetési folyamat szintén integrálva van amazonfelhőóra lehetővé teszi a többkonténeres modellek megfigyelését a következtetési folyamatokban. Láthatóságot is kaphat valós idejű mérőszámok hogy jobban megértsük a folyamatban lévő egyes tárolók meghívását és késleltetését, ami segít a hibaelhárításban és az erőforrás-optimalizálásban.
Soros következtetési folyamat (célzott modellhívással egy csoportból) SageMaker következtetési folyamat segítségével
SageMaker többmodell végpontok (MME) költséghatékony megoldást kínál nagyszámú ML-modell egyetlen végpont mögé történő telepítéséhez. A többmodelles végpontok használatának motivációi közé tartozhat egy konkrét, testreszabott modell meghívása a kérés jellemzői alapján (például származás, földrajzi hely, felhasználó személyre szabása stb.), vagy egyszerűen több modell tárolása ugyanazon végpont mögött a költségoptimalizálás érdekében.
Ha több modellt telepít egyetlen többmodell-kompatibilis végponton, az összes modell megosztja a számítási erőforrásokat és a modellkiszolgáló tárolót. A SageMaker következtetési folyamat egy MME-n telepíthető, ahol a folyamatban lévő egyik tároló dinamikusan képes kiszolgálni a kéréseket a konkrét meghívott modell alapján. A folyamat szempontjából a modellek azonos előfeldolgozási követelményekkel rendelkeznek, és ugyanazt a szolgáltatáskészletet várják el, de úgy vannak kiképezve, hogy egy adott viselkedéshez igazodjanak. A következő diagram egy referenciamintát mutat be az integrált csővezeték működésére.
Az MME-k esetében az ügyfélalkalmazásból származó következtetési kérésnek meg kell határoznia a meghívandó célmodellt. A folyamat első tárolója kezeli a kezdeti kérést, végrehajt bizonyos feldolgozást, majd a közbenső választ kérésként elküldi a folyamatban lévő második tárolónak, amely több modellt is tartalmaz. A következtetési kérésben megadott célmodell alapján a modell meghívásra kerül, hogy következtetést generáljon. Az előállított következtetés a folyamatban lévő következő tárolóba kerül további feldolgozásra. Ez megtörténik a folyamatban lévő minden egyes tárolónál, és végül a SageMaker visszaküldi a végső választ a hívó ügyfélalkalmazásnak.
Egy S3 tárolóban több modellműtermék található. Egy adott modell meghívásakor a SageMaker dinamikusan betölti azt a végpontot tároló tárolóba. Ha a modell már be van töltve a konténer memóriájába, az hívás gyorsabb, mert a SageMakernek nem kell letöltenie a modellt az Amazon S3-ról. Ha a példánymemória kihasználtsága magas, és egy új modellt hívnak meg, és ezért be kell tölteni, a nem használt modellek kikerülnek a memóriából. A ki nem töltött modellek azonban a példány tárolókötetében maradnak, és később újra betölthetők a tároló memóriájába anélkül, hogy újra letöltenék őket az S3 tárolóból.
Az MME-k használata során az egyik legfontosabb szempont a modellhívási késleltetési viselkedés megértése. Amint azt korábban tárgyaltuk, a modellek meghívásakor dinamikusan betöltődnek a végpontot tároló példány tárolójának memóriájába. Ezért a modellhívás tovább tarthat, amikor először hívják meg. Ha a modell már a példánytároló memóriájában van, a következő hívások gyorsabbak. Ha egy példány memória kihasználtsága magas, és új modellt kell betölteni, a nem használt modellek betöltődnek. Ha a példány tárolókötete megtelt, a nem használt modellek törlődnek a tárolókötetről. A SageMaker teljes mértékben kezeli a modellek be- és kirakodását anélkül, hogy Önnek bármilyen konkrét intézkedést kellene tennie. Fontos azonban megérteni ezt a viselkedést, mert hatással van a modell hívási késleltetésére, és így az általános végpontok közötti késleltetésre.
Pipeline hosting lehetőségek
A SageMaker többféle lehetőséget biztosít példány típusa választható lehetőségek az ML-modellek telepítéséhez és a következtetési folyamatok kiépítéséhez, a használati eset, az átviteli sebesség és a költségigények alapján. Választhat például CPU-ra vagy GPU-ra optimalizált példányokat soros következtetési folyamatok létrehozásához, egyetlen tárolón vagy több tárolón keresztül. Vannak azonban olyan követelmények, amelyek esetében szükség van rugalmasságra és támogatásra a modellek CPU- vagy GPU-alapú példányokon való futtatásához ugyanazon a folyamaton belül a további rugalmasság érdekében.
Mostantól az NVIDIA Triton Inference Server segítségével modelleket szolgálhat ki következtetésekhez a SageMakerben heterogén számítási követelmények esetén. Nézze meg Telepítsen gyors és méretezhető mesterséges intelligenciát az NVIDIA Triton Inference Server segítségével az Amazon SageMakerben további részletekért.
Következtetés
Ahogy a szervezetek felfedezik és kiépítik az ML által hajtott új megoldásokat, az ezekhez a folyamatokhoz szükséges eszközöknek kellően rugalmasnak kell lenniük ahhoz, hogy egy adott használati eset alapján támogassák, miközben egyszerűsítik és csökkentik a folyamatos működési költségeket. A SageMaker többféle lehetőséget kínál ezeknek a soros következtetési munkafolyamatoknak a tervezésére és felépítésére, az Ön igényei alapján.
Várjuk, hogy megtudja, milyen használati eseteket épít fel soros következtetési folyamatokkal. Ha kérdése vagy visszajelzése van, kérjük, ossza meg őket a megjegyzésekben.
A szerzőkről
Rahul Sharma az AWS Data Lab vezető megoldástervezője, aki segít az AWS ügyfeleinek AI/ML megoldások tervezésében és kivitelezésében. Mielőtt csatlakozott az AWS-hez, Rahul több évet töltött a pénzügyi és biztosítási szektorban, segítve ügyfeleit adat- és elemzési platformok felépítésében.
Anand Prakash az AWS Data Lab vezető megoldási építésze. Az Anand arra összpontosít, hogy segítse ügyfeleit AI/ML, adatelemzési és adatbázis-megoldások tervezésében és felépítésében, hogy felgyorsítsák a termelés felé vezető utat.
Dhawal Patel az AWS vezető gépi tanulási építésze. Az elosztott számítástechnikával és a mesterséges intelligenciával kapcsolatos problémákon a nagyvállalatoktól a közepes méretű induló vállalkozásokig szervezetekkel dolgozott együtt. A mély tanulásra összpontosít, beleértve az NLP és a Computer Vision tartományokat. Segít az ügyfeleknek abban, hogy a SageMaker-en nagy teljesítményű modellkövetkeztetést érjenek el.
Saurabh Trikande az Amazon SageMaker Inference vezető termékmenedzsere. Szenvedélye az ügyfelekkel való együttműködés és a gépi tanulás hozzáférhetőbbé tétele. Szabadidejében Saurabh szeret túrázni, innovatív technológiákat tanulni, követi a TechCrunch-ot és a családjával tölt időt.
- Haladó (300)
- AI
- ai művészet
- ai art generátor
- van egy robotod
- Amazon gépi tanulás
- Amazon SageMaker
- mesterséges intelligencia
- mesterséges intelligencia tanúsítás
- mesterséges intelligencia a bankszektorban
- mesterséges intelligencia robot
- mesterséges intelligencia robotok
- mesterséges intelligencia szoftver
- AWS gépi tanulás
- blockchain
- blokklánc konferencia ai
- coingenius
- társalgási mesterséges intelligencia
- kriptokonferencia ai
- dall's
- mély tanulás
- google azt
- gépi tanulás
- Plató
- plato ai
- Platón adatintelligencia
- Platón játék
- PlatoData
- platogaming
- skála ai
- szintaxis
- zephyrnet