A kiváló minőségű, betanított gépi tanulási (ML) modellek üzembe helyezése kötegelt vagy valós idejű következtetés végrehajtásához kritikus eleme az ügyfeleknek való értékteremtésnek. Az ML kísérletezési folyamat azonban fárasztó lehet – sok olyan megközelítés létezik, amelyek megvalósítása jelentős időt igényel. Ez az oka annak, hogy az előképzett ML modellek, mint amilyeneket a PyTorch Modell Állatkert olyan segítőkészek. Amazon SageMaker egységes felületet biztosít a különböző ML modellekkel való kísérletezéshez, a PyTorch Model Zoo pedig lehetővé teszi modelljeink egyszerű, szabványosított cseréjét.
Ez a blogbejegyzés bemutatja, hogyan lehet ML következtetést levonni a SageMaker PyTorch Model Zoo objektumészlelési modelljével. A PyTorch Model Zoo előre betanított ML modelljei készen állnak, és könnyen használhatók az ML alkalmazások részeként. Ezen ML modellek beállítása SageMaker végpontként ill SageMaker Batch Transform Az ebben a blogbejegyzésben ismertetett lépésekkel egyszerű az online vagy offline következtetések elkészítése. Használjuk a Gyorsabb R-CNN objektumészlelési modell az előre meghatározott objektumosztályok határolókereteinek előrejelzésére.
Végig járunk egy példán, a Faster R-CNN objektumészlelési modell súlyainak betöltésétől egészen a mentésükig. Amazon Simple Storage Service (Amazon S3) vödör, valamint egy belépési pont fájl írása és a PyTorchModel API kulcsparamétereinek megértése. Végül telepítjük az ML-modellt, következtetéseket vonunk le rá a SageMaker Batch Transform segítségével, megvizsgáljuk az ML-modell kimenetét, és megtanuljuk az eredmények értelmezését. Ez a megoldás a PyTorch Model Zoo bármely más előre betanított modelljére alkalmazható. Az elérhető modellek listáját lásd a PyTorch Model Zoo dokumentáció.
Megoldás áttekintése
Ez a blogbejegyzés a következő lépéseket mutatja be. Az összes lépés teljes működő verzióját lásd create_pytorch_model_sagemaker.ipynb
- 1. lépés: Beállítás
- 2. lépés: ML-modell betöltése a PyTorch Model Zoo-ból
- 3. lépés Mentse el és töltse fel az ML modell műtermékeit az Amazon S3-ra
- 4. lépés: ML-modell-következtetési szkriptek létrehozása
- 5. lépés: SageMaker kötegelt átalakítási feladat indítása
- 6. lépés: Az eredmények megjelenítése
Építészeti ábra
Könyvtárstruktúra
A blog kódja itt található GitHub tárház. A kódbázis mindent tartalmaz, amire szükségünk van az ML modell melléktermékeinek felépítéséhez, az átalakítási feladat elindításához és az eredmények megjelenítéséhez.
Ez az általunk használt munkafolyamat. A következő lépések mindegyike ennek a szerkezetnek a moduljaira vonatkozik.
A sagemaker_torch_model_zoo
mappának tartalmaznia kell inference.py
belépési pont fájlként, és a create_pytorch_model_sagemaker.ipynb a modellsúlyok betöltéséhez és mentéséhez, egy SageMaker modellobjektum létrehozásához, és végül átadja azt egy SageMaker kötegelt átalakítási feladatnak. Saját ML-modellek létrehozásához módosítsa az útvonalakat a notebook 1. lépés: beállítás szakaszában, és töltsön be egy új modellt a 2. lépés: ML-modell betöltése a PyTorch Model Zoo szakaszból. Az alábbi lépések többi része változatlan marad.
1. lépés: Beállítás
IAM szerepek
A SageMaker műveleteket hajt végre a SageMaker által kezelt infrastruktúrán. A SageMaker csak a jegyzetfüzethez tartozó SageMaker IAM-végrehajtási szerepkörében meghatározott műveleteket tudja végrehajtani. Az IAM-szerepkörök létrehozásával és az IAM-engedélyek kezelésével kapcsolatos részletesebb dokumentációért tekintse meg a AWS SageMaker szerepek dokumentációja. Létrehozhatunk új szerepet, vagy megszerezhetjük a SageMaker (Stúdió) notebookalapértelmezett végrehajtási szerepköre a következő kódsorok futtatásával:
A fenti kód megkapja a SageMaker végrehajtási szerepet a notebook példányhoz. Ez az IAM szerepkör, amelyet a SageMaker vagy a SageMaker Studio notebook példányunkhoz hoztunk létre.
Felhasználó által konfigurálható paraméterek
Itt található az összes konfigurálható paraméter, amely a SageMaker kötegelt átalakítási munkánk felépítéséhez és elindításához szükséges:
2. lépés: ML-modell betöltése a PyTorch Model Zoo-ból
Ezután megadunk egy objektumészlelési modellt a PyTorch Model Zoo-ból, és mentjük az ML modell súlyait. A PyTorch-modellt általában .pt vagy .pth fájlkiterjesztéssel mentjük el. Az alábbi kódrészlet letölt egy előre betanított Faster R-CNN ResNet50 ML modellt a PyTorch Model Zoo-ból:
model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
A SageMaker kötegelt transzformációja bemenetként igényel néhány modellsúlyt, ezért az előre betanított ML modellt model.pt néven mentjük el. Ha egyéni modellt szeretnénk betölteni, akkor a modell súlyait egy másik PyTorch modellből modell.pt néven menthetjük el.
3. lépés: Mentse el és töltse fel az ML modell műtermékeit az Amazon S3-ba
Mivel a SageMaker-t fogjuk használni az ML-következtetéshez, fel kell töltenünk a modell súlyait egy S3 tárolóba. Ezt megtehetjük a következő parancsokkal, vagy a fájl letöltésével és egyszerűen húzásával közvetlenül az S3-ba. A következő parancsok először tömörítik a fájlok csoportját model.pt
egy tarballba, és másold át a modellsúlyokat a helyi gépünkről az S3 vödörbe.
Megjegyzések: A következő parancsok futtatásához rendelkeznie kell a AWS parancssori interfész (AWS CLI) telepítve.
Ezután átmásoljuk a bemeneti képünket az S3-ba. Alább látható a kép teljes S3 elérési útja.
Ezt a képet átmásolhatjuk S3-ba egy másik aws s3 cp paranccsal.
4. lépés: ML-modell-következtetési szkriptek létrehozása
Most átnézzük a belépési pont fájlunkat, inference.py
modul. A SageMakeren kívül betanított PyTorch-modellt a PyTorchModel osztály használatával telepíthetünk. Először is példányosítjuk a PyTorchModelZoo objektumot. Ezután létrehozunk egy inference.py belépési pont fájlt, amely ML következtetést hajt végre a SageMaker kötegelt transzformációjával az Amazon S3-ban tárolt mintaadatokon.
A PyTorchModel objektum megértése
A PyTorchModel osztály a SageMaker Python API-n belül lehetővé teszi számunkra, hogy ML következtetést hajtsunk végre a letöltött modelltermékünk segítségével.
A PyTorchModel osztály elindításához meg kell értenünk a következő bemeneti paramétereket:
name
: Modell név; az egyediség érdekében javasoljuk a modellnév + dátum és idő, vagy egy véletlenszerű karakterlánc + dátum és időpont használatát.model_data
: A csomagolt ML modell melléktermékének S3 URI-ja.entry_point
: Felhasználó által definiált Python-fájl, amelyet a következtetés Docker-képfájlja használ a bejövő kérések kezelőinek meghatározásához. A kód meghatározza a modell betöltését, a bemeneti előfeldolgozást, az előrejelzési logikát és a kimeneti utófeldolgozást.framework_version
: Az automatikus PyTorch-modell-újracsomagolás engedélyezéséhez 1.2-es vagy újabb verzióra kell állítani.source_dir
: A belépési_pont fájl könyvtára.role
: IAM-szerep az AWS-szolgáltatáskérésekhez.image_uri
: Használja ezt az Amazon ECR Docker tárolóképet az ML modell számítási környezetének alapjaként.sagemaker_session
: A SageMaker munkamenet.py_version
: A használandó Python verzió
A következő kódrészlet példányosítja a PyTorchModel osztályt, hogy következtetéseket hajtson végre az előre betanított PyTorch modell segítségével:
A belépési pont fájl (inference.py) értelmezése
Az entry_point paraméter egy nevű Python-fájlra mutat inference.py
. Ez a belépési pont határozza meg a modell betöltését, a bemeneti előfeldolgozást, az előrejelzési logikát és a kimeneti utófeldolgozást. Kiegészíti az ML modell kiszolgáló kódját az előre beépített PyTorch-ban SageMaker Deep Learning Container kép.
Inference.py
a következő funkciókat fogja tartalmazni. Példánkban megvalósítjuk a model_fn
, input_fn
, predict_fn
és a output_fn
funkciók felülbírálásához alapértelmezett PyTorch következtetéskezelő.
model_fn
: Bevesz egy könyvtárat, amely statikus modellellenőrző pontokat tartalmaz a következtetési képben. Megnyitja és betölti a modellt egy megadott útvonalról, és visszaad egy PyTorch-modellt.input_fn
: Bemenetként veszi a bejövő kérés hasznos terhét (request_body) és a bejövő kérés tartalomtípusát (request_content_type). Kezeli az adatok dekódolását. Ezt a funkciót a modell által elvárt bemenethez kell igazítani.predict_fn
: Modellt hív meg az input_fn paraméterben deszerializált adatokon. Előrejelzést hajt végre a deszerializált objektumon a betöltött ML-modellel.output_fn
: Az előrejelzés eredményét a kívánt választartalom-típusba rendezi. Apredit_fn függvényből kapott előrejelzéseket JSON, CSV vagy NPY formátumokká alakítja.
5. lépés: SageMaker kötegelt átalakítási feladat indítása
Ebben a példában ML következtetési eredményeket kapunk egy SageMaker kötegelt átalakítási feladaton keresztül. A kötegelt átalakítási feladatok akkor a leghasznosabbak, ha egyszer szeretnénk következtetéseket levonni az adatkészletekből anélkül, hogy állandó végpontra lenne szükség. Példányosítjuk a sagemaker.transformer.Transformer objektum a SageMaker kötegelt átalakítási feladatok létrehozásához és interakciójához.
Tekintse meg a kötegelt átalakítási feladat létrehozásának dokumentációját a címen CreateTransformJob.
6. lépés: A teszteredmények megjelenítése
Miután a SageMaker kötegelt átalakítási feladat befejeződött, betölthetjük az ML következtetés kimeneteit az Amazon S3-ból. Ehhez navigáljon a AWS felügyeleti konzol és keresse meg az Amazon SageMaker kifejezést. A bal oldali panelen, alatta KövetkeztetésLásd: Kötegelt átalakítási feladatok.
A kiválasztás után Kötegelt átalakítás, tekintse meg az összes SageMaker kötegelt átalakítási feladatot felsoroló weboldalt. Megtekinthetjük a legutóbbi munkánk előrehaladását.
Először is, a munka állapota „Folyamatban van”. Ha ez megtörtént, tekintse meg az állapotot Befejezve.
Ha az állapotot befejezettnek jelöljük, a munkára kattintva megtekinthetjük az eredményeket. Ez a weboldal a munka összefoglalóját tartalmazza, beleértve az éppen végrehajtott munka konfigurációit.
Alatt Kimeneti adatok konfigurációja, egy S3 kimeneti útvonalat fogunk látni. Itt találjuk az ML következtetés kimenetünket.
Válassza ki az S3 kimeneti útvonalát, és nézzen meg egy [image_name].[file_type].out fájlt a kimeneti adatainkkal. A kimeneti fájlunk a leképezések listáját fogja tartalmazni. Példa kimenet:
Ezután feldolgozzuk ezt a kimeneti fájlt, és megjelenítjük előrejelzéseinket. Az alábbiakban megadjuk a bizalmi küszöbünket. Az osztályok listáját a COCO adatkészlet objektum leképezés. A következtetés során a modell csak a bemeneti tenzorokat igényli, és az utólagos feldolgozású előrejelzéseket List[Dict[tenzor]] formájában adja vissza, minden bemeneti képhez egyet. A Dict mezői a következők, ahol N az észlelések száma:
- dobozok (FloatTensor[N, 4]): az előre jelzett dobozok
[x1, y1, x2, y2]
formátumban, azzal0 <= x1 < x2 <= W and 0 <= y1 < y2 <= H
, AholW
a kép szélessége ésH
a kép magassága - címkék (
Int64Tensor[N]
): az egyes észlelések várható címkéi - pontszámok (
Tensor[N]
): az egyes észlelések előrejelzési pontszámai
A kimenettel kapcsolatos további részletekért lásd a PyTorch gyorsabb R-CNN FPN dokumentáció.
A modell kimenete határoló dobozokat tartalmaz a megfelelő megbízhatósági pontszámokkal. Optimalizálhatjuk a hamis pozitív üzenetek megjelenítését, ha eltávolítjuk azokat a határolókereteket, amelyekben a modell nem biztos. A következő kódrészletek feldolgozzák a kimeneti fájlban lévő előrejelzéseket, és határolókereteket rajzolnak azokra az előrejelzésekre, ahol a pontszám meghaladja a megbízhatósági küszöbünket. Beállítjuk a valószínűségi küszöböt, CONF_THRESH
, 75-re ebben a példában.
Végül vizualizáljuk ezeket a leképezéseket, hogy megértsük a kimenetünket.
Megjegyzések: ha a kép nem jelenik meg a jegyzetfüzetében, keresse meg a JupyterLab bal oldalán található könyvtárfában, és nyissa meg onnan.
A példakód futtatása
A teljes működő példa érdekében klónozza a kódot a amazon-sagemaker-examples GitHub és futtassa a cellákat a create_pytorch_model_sagemaker.ipynb
jegyzetfüzet.
Következtetés
Ebben a blogbejegyzésben egy végponttól végpontig terjedő példát mutattunk be az ML következtetés végrehajtására a PyTorch Model Zoo objektumészlelési modelljével a SageMaker kötegelt transzformációjával. Kitértünk a Faster R-CNN objektumészlelési modell súlyainak betöltésére, S3 tárolóba való mentésére, belépési pont fájl írására és a PyTorchModel API kulcsparamétereinek megértésére. Végül telepítettük a modellt és végrehajtottuk az ML-modell-következtetést, megjelenítettük a modell kimenetét, és megtanultuk az eredmények értelmezését.
A szerzőkről
Dipika Khullar ML mérnök a Amazon ML Solutions Lab. Segít az ügyfeleknek az ML megoldások integrálásában üzleti problémáik megoldása érdekében. Legutóbb képzési és következtetési folyamatokat épített ki a médiaügyfelek számára, valamint prediktív modelleket a marketing számára.
Marcelo Aberle ML mérnök az AWS AI szervezetben. Ő vezeti az MLOps erőfeszítéseit Amazon ML Solutions Lab, segítve az ügyfeleket a méretezhető ML rendszerek tervezésében és megvalósításában. Küldetése, hogy eligazítsa az ügyfeleket a vállalati ML útjukon, és felgyorsítsa az ML termelési folyamatot.
Ninad Kulkarni alkalmazott tudós a Amazon ML Solutions Lab. Segít az ügyfeleknek az ML és a mesterséges intelligencia alkalmazásában azáltal, hogy megoldásokat készít üzleti problémáik megoldására. Legutóbb a sport, az autóipar és a média ügyfelei számára épített prediktív modelleket.
Yash Shah tudományos menedzser a Amazon ML Solutions Lab. Alkalmazott tudósokból és ML mérnökökből álló csapatával számos ML felhasználási eseten dolgozik az egészségügyben, a sportban, az autóiparban és a gyártásban.
- AI
- ai művészet
- ai art generátor
- van egy robotod
- Amazon gépi tanulás
- Amazon ML Solutions Lab
- 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
- Technikai útmutató
- zephyrnet