Csökkentse a modellek Amazon SageMaker rendszerbe történő telepítéséhez szükséges időt a PlatoBlockchain Data Intelligence teszteléséhez. Függőleges keresés. Ai.

Csökkentse a modellek telepítéséhez szükséges időt az Amazon SageMakerben tesztelés céljából

Az adattudósok gyakran helyben képezik ki modelljeiket, és megfelelő tárhely-szolgáltatást keresnek modelljeik üzembe helyezéséhez. Sajnos nincs egyetlen meghatározott mechanizmus vagy útmutató az előre betanított modellek felhőbe történő telepítéséhez. Ebben a bejegyzésben a betanított modellek telepítését vizsgáljuk meg Amazon SageMaker hosting, hogy csökkentse a telepítési időt.

A SageMaker egy teljesen felügyelt gépi tanulási (ML) szolgáltatás. A SageMaker segítségével gyorsan összeállíthat és betaníthat ML modelleket, és közvetlenül telepítheti őket egy termelésre kész hosztolt környezetben. Ezenkívül nem kell szervereket kezelnie. Egy integrált Jupyter notebook környezetet kap, amely könnyen hozzáférhet adatforrásaihoz. Adatelemzést végezhet, modelljeit betaníthatja és tesztelheti saját algoritmusaival, vagy használhatja a SageMaker által biztosított ML algoritmusokat, amelyek úgy vannak optimalizálva, hogy hatékonyan futjanak több gépen elterjedt nagy adatkészletekkel szemben. A képzés és a tárhely számlázása használati percenként történik, minimális díjak és előzetes kötelezettségvállalások nélkül.

Megoldás áttekintése

Az adattudósok néha helyben képezik ki a modelleket az IDE-jük segítségével, és vagy elküldik ezeket a modelleket az ML mérnöki csapatának telepítésre, vagy egyszerűen csak helyi előrejelzéseket futtatnak nagy teljesítményű gépeken. Ebben a bejegyzésben bemutatunk egy Python-könyvtárat, amely leegyszerűsíti a modellek SageMaker-be való telepítésének folyamatát tárhely valós idejű vagy kiszolgáló nélküli végpontokon.

Ez a Python-könyvtár egyszerű felületet biztosít az adattudósoknak, hogy gyorsan elkezdhessék a SageMaker használatát anélkül, hogy ismerniük kellene a SageMaker alacsony szintű funkcióit.

Ha olyan modelljei vannak, amelyeket helyben képeztek ki a preferált IDE használatával, és szeretne hasznot húzni a felhő skálájából, akkor ennek a könyvtárnak a segítségével telepítheti modelljét a SageMaker rendszerbe. A SageMakerrel a felhő alapú ML platform összes skálázási előnye mellett hozzáférhet a célra épített oktatási eszközökhöz (elosztott képzés, hiperparaméter-hangolás), a kísérletkezeléshez, a modellkezeléshez, a torzítás észleléséhez, a modell magyarázhatóságához és sok máshoz. olyan képességek, amelyek az ML életciklusának bármely aspektusában segíthetnek. Választhat a három legnépszerűbb ML keretrendszer közül: Scikit-learn, PyTorch és TensorFlow, és kiválaszthatja a kívánt számítási típust. Az alapértelmezések az út során biztosítva vannak, így a könyvtár felhasználói anélkül telepíthetik modelleiket, hogy bonyolult döntéseket kellene hozniuk vagy új fogalmakat kellene megtanulniuk. Ebben a bejegyzésben megmutatjuk, hogyan kezdje el ezt a könyvtárat, és hogyan optimalizálja az ML-modellek telepítését a SageMaker tárhelyen.

A könyvtár megtalálható a GitHub tárház.

A SageMaker migrációs eszközkészlet

A SageMakerMigration osztály a GitHubon közzétett Python-könyvtáron keresztül érhető el. A könyvtár telepítésére vonatkozó utasítások megtalálhatók a tárolóban; ügyeljen arra, hogy kövesse a README utasítást a környezet megfelelő beállításához. A könyvtár telepítése után a bejegyzés további része a használatáról szól.

A SageMakerMigration osztály magas szintű absztrakciókból áll a SageMaker API-kon keresztül, amelyek jelentősen csökkentik a modell SageMaker rendszerbe történő telepítéséhez szükséges lépéseket, amint azt a következő ábra mutatja. Ez kísérletezésre szolgál, így a fejlesztők gyorsan elkezdhetik és tesztelhetik a SageMaker-t. Nem termelési migrációhoz készült.

A Scikit-learn, PyTorch és TensorFlow modellek esetében ez a könyvtár támogatja a betanított modellek telepítését egy valós idejű SageMaker végpontra vagy kiszolgáló nélküli végpontra. Ha többet szeretne megtudni a SageMaker következtetési lehetőségeiről, tekintse meg a következőt: Következtetési modellek telepítése.

Valós idejű vs. szerver nélküli végpontok

A valós idejű következtetés ideális olyan következtetési munkaterhelésekhez, ahol valós idejű, interaktív, alacsony késleltetési követelmények vannak. A modellt üzembe helyezheti a SageMaker tárhelyszolgáltatásokban, és olyan végpontot kaphat, amelyből következtetéseket lehet levonni. Ezek a végpontok teljes mértékben felügyeltek, és támogatják az automatikus méretezést.

A SageMaker Serverless Inference egy erre a célra kialakított következtetési lehetőség, amely megkönnyíti az ML modellek telepítését és méretezését. A Serverless Inference ideális olyan munkaterhelésekhez, amelyeknél a forgalmi kitörések között üresjáratok vannak, és elviselik a hidegindítást. A kiszolgáló nélküli végpontok automatikusan elindítják a számítási erőforrásokat, és a forgalomtól függően be- és kicsinyítik azokat, így nincs szükség a példánytípusok kiválasztására vagy a méretezési házirendek kezelésére. Ez csökkenti a kiszolgálók kiválasztásával és kezelésével járó, megkülönböztethetetlenül nehéz terheket.

A felhasználási esettől függően érdemes lehet gyorsan tárolni a modellt a SageMakeren anélkül, hogy egy példány mindig bekapcsolva lenne, és költségek merülnének fel. Ebben az esetben a kiszolgáló nélküli végpont nagyszerű megoldás.

Készítse elő a betanított modellt és következtetési szkriptet

Miután azonosította a SageMakerben telepíteni kívánt modellt, gondoskodnia kell arról, hogy a modell a megfelelő formátumban kerüljön bemutatásra a SageMaker számára. A SageMaker végpontok általában két összetevőből állnak: a betanított modellműtermékből (.pth, .pkl és így tovább) és egy következtetési szkriptből. A következtetési szkript nem mindig kötelező, de ha nincs megadva, akkor a használt kiszolgáló tároló alapértelmezett kezelői kerülnek alkalmazásra. Alapvető fontosságú ennek a szkriptnek a biztosítása, ha testre kell szabnia a bemeneti/kimeneti funkciókat a következtetések levonásához.

A betanított modelltermék egyszerűen egy mentett Scikit-learn, PyTorch vagy TensorFlow modell. A Scikit-learn esetében ez általában egy pácfájl, a PyTorch esetében ez egy .pt vagy .pth fájl, a TensorFlow esetében pedig egy eszközöket, .pb fájlokat és egyéb változókat tartalmazó mappa.

Általában szabályozni kell, hogy a modell hogyan dolgozza fel a bemenetet és hogyan hajt végre következtetést, valamint szabályoznia kell a válasz kimeneti formátumát. A SageMaker segítségével egy következtetési szkript a testreszabás hozzáadásához. A SageMaker által használt bármely következtetési szkriptnek rendelkeznie kell a következő négy kezelőfunkció közül egy vagy többel: model_fn, input_fn, predict_fnés output_fn.

Vegye figyelembe, hogy ez a négy funkció a következőkre vonatkozik PyTorch és a Scikit elsajátítható kifejezetten konténerek. A TensorFlow némileg eltérő kezelőkkel rendelkezik, mert integrálva van vele TensorFlow kiszolgálás. A TensorFlow-val végzett következtetési szkripthez kettő van modellkezelők: input_handler és output_handler. Ezeknek ismét ugyanaz az elő- és utófeldolgozási célja, amellyel Ön is dolgozhat, de kissé eltérően vannak beállítva a TensorFlow kiszolgálás. PyTorch-modellek esetén a model_fn kötelező függvény a következtetési szkriptben.

modell_fn

Ez az a függvény, amely először hívódik meg a SageMaker végpont meghívásakor. Ide írja be a kódot a modell betöltéséhez. Például:

def model_fn(model_dir):
    model = Your_Model()
    with open(os.path.join(model_dir, 'model.pth'), 'rb') as f:
        model.load_state_dict(torch.load(f))
    return model

A keretrendszertől és a modell típusától függően ez a kód változhat, de a függvénynek egy inicializált modellt kell visszaadnia.

input_fn

Ez a második függvény, amely a végpont meghívásakor kerül meghívásra. Ez a függvény a végpontra küldött adatokat következtetésre vonja, és a modell által előrejelzés generálásához szükséges formátumba elemezi. Például:

def input_fn(request_body, request_content_type):
    """An input_fn that loads a pickled tensor"""
    if request_content_type == 'application/python-pickle':
        return torch.load(BytesIO(request_body))
    else:
        # Handle other content-types here or raise an Exception
        # if the content type is not supported.
        pass

A request_body tartalmazza a modellből következtetések előállításához használandó adatokat, és ebben a függvényben elemzi, hogy a kívánt formátumban legyen.

előre_fn

Ez a harmadik függvény, amely a modell meghívásakor kerül meghívásra. Ez a függvény átveszi a visszaküldött előre feldolgozott bemeneti adatokat input_fn és az innen visszaadott modellt használja model_fn megtenni a jóslatot. Például:

def predict_fn(input_data, model):
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    model.to(device)
    model.eval()
    with torch.no_grad():
        return model(input_data.to(device))

Opcionálisan hozzáadhat output_fn hogy elemezze a kimenetét predict_fn mielőtt visszaküldi az ügyfélnek. A függvény aláírása az def output_fn(prediction, content_type).

Helyezze át az előre betanított modellt a SageMakerbe

Miután megszerezte a betanított modellfájlt és a következtetési parancsfájlt, ezeket a fájlokat egy mappába kell helyeznie az alábbiak szerint:

#SKLearn Model

model_folder/
    model.pkl
    inference.py
    
# Tensorflow Model
model_folder/
    0000001/
        assets/
        variables/
        keras_metadata.pb
        saved_model.pb
    inference.py
    
# PyTorch Model
model_folder/
    model.pth
    inference.py

Miután elkészítette a modellt és a következtetési parancsfájlt, és elmentette ebbe a mappastruktúrába, a modell készen áll a SageMakeren való telepítésre. Lásd a következő kódot:

from sagemaker_migration import frameworks as fwk

if __name__ == "__main__":
    ''' '''
    sk_model = fwk.SKLearnModel(
        version = "0.23-1", 
        model_data = 'model.joblib',
        inference_option = 'real-time',
        inference = 'inference.py',
        instance_type = 'ml.m5.xlarge'
    )
    sk_model.deploy_to_sagemaker()

A végpont üzembe helyezése után győződjön meg arról, hogy a SageMaker konzolon vagy a delete_endpoint Boto3 API hívás.

Következtetés

A SageMaker Migration Toolkit projekt célja, hogy megkönnyítse az adattudósok számára, hogy modelljeiket a SageMaker rendszerbe építsék, hogy kihasználhassák a felhőalapú következtetéseket. Az adattár tovább fog fejlődni, és több lehetőséget támogat a munkaterhelések SageMakerre való áttelepítésére. A kód nyílt forráskódú, és szívesen fogadjuk a közösségi hozzájárulásokat lehívási kéréseken és problémákon keresztül.

Nézze meg a GitHub tárház hogy többet tudjon meg a SageMaker Migration Toolkit használatáról, és bátran adjon hozzá példákat vagy funkciókéréseket a projekthez!


A szerzőkről

Csökkentse a modellek Amazon SageMaker rendszerbe történő telepítéséhez szükséges időt a PlatoBlockchain Data Intelligence teszteléséhez. Függőleges keresés. Ai.Kirit Thadaka egy ML Solutions Architect, aki az Amazon SageMaker Service SA csapatában dolgozik. Mielőtt csatlakozott volna az AWS-hez, Kirit időt töltött a korai szakaszban induló mesterséges intelligencia induló vállalkozásaiban, majd egy ideig tanácsadói tevékenységet folytatott különböző AI-kutatási, MLOps- és műszaki vezetői szerepekben.

Csökkentse a modellek Amazon SageMaker rendszerbe történő telepítéséhez szükséges időt a PlatoBlockchain Data Intelligence teszteléséhez. Függőleges keresés. Ai.Ram Vegiraju ML építész a SageMaker Service csapatánál. Arra összpontosít, hogy segítse ügyfeleit AI/ML megoldásaik kiépítésében és optimalizálásában az Amazon SageMakeren. Szabadidejében szeret utazni és írni.

Időbélyeg:

Még több AWS gépi tanulás