Több ezer ML-modell skálázása és következtetése az Amazon SageMaker | segítségével Amazon webszolgáltatások

Több ezer ML-modell skálázása és következtetése az Amazon SageMaker | segítségével Amazon webszolgáltatások

Ahogy a gépi tanulás (ML) egyre elterjedtebbé válik az iparágak széles körében, a szervezetek egyre inkább úgy érzik, hogy nagyszámú ML modellt kell betanítani és kiszolgálni, hogy megfeleljenek ügyfeleik sokrétű igényeinek. A szoftver, mint szolgáltatás (SaaS) szolgáltatók számára különösen a modellek ezrei hatékony és költséghatékony betanításának és kiszolgálásának képessége kulcsfontosságú ahhoz, hogy versenyképesek maradjanak a gyorsan fejlődő piacon.

Több ezer modell betanítása és kiszolgálása robusztus és méretezhető infrastruktúrát igényel Amazon SageMaker tud segíteni. A SageMaker egy teljesen felügyelt platform, amely lehetővé teszi a fejlesztők és adattudósok számára az ML modellek gyors építését, betanítását és üzembe helyezését, miközben az AWS Cloud infrastruktúra használatának költségmegtakarítási előnyeit is kínálja.

Ebben a bejegyzésben megvizsgáljuk, hogyan használhatja a SageMaker funkcióit, beleértve Amazon SageMaker feldolgozás, SageMaker képzési munkák és SageMaker többmodell végpontok (MME) modellek ezrei betanításához és kiszolgálásához költséghatékony módon. A leírt megoldás használatának megkezdéséhez tekintse meg a mellékelt jegyzetfüzetet GitHub.

Felhasználási eset: Energia-előrejelzés

Ebben a bejegyzésben egy ISV-cég szerepét vállaljuk, amely energiafogyasztásuk nyomon követésével és előrejelzésekkel segíti ügyfeleit fenntarthatóbbá tenni. Cégünknek 1,000 ügyfele van, akik szeretnék jobban megérteni energiafelhasználásukat, és megalapozott döntéseket hozni környezetterhelésük csökkentésével kapcsolatban. Ehhez szintetikus adatkészletet használunk, és ennek alapján tanítunk egy ML-modellt próféta hogy minden ügyfél energiafogyasztási előrejelzést készítsen. A SageMaker segítségével ezt az 1,000 modellt hatékonyan betaníthatjuk és kiszolgálhatjuk, ügyfeleinknek pontos és gyakorlatias betekintést nyújtva energiafelhasználásukba.

A generált adatkészletben három szolgáltatás található:

  • Ügyfél-azonosító – Ez egy egész szám azonosító minden ügyfél számára, 0 és 999 között.
  • időbélyeg – Ez egy dátum/idő érték, amely az energiafogyasztás mérésének időpontját jelzi. Az időbélyegek véletlenszerűen jönnek létre a kódban megadott kezdési és befejezési dátumok között.
  • fogyasztás – Ez egy lebegő érték, amely az energiafogyasztást jelzi, tetszőleges mértékegységben mérve. A fogyasztási értékeket véletlenszerűen generálják 0-1,000 között, szinuszos szezonalitás mellett.

Megoldás áttekintése

Több ezer ML modell hatékony betanításához és kiszolgálásához a következő SageMaker funkciókat használhatjuk:

  • SageMaker feldolgozás – A SageMaker Processing egy teljesen felügyelt adat-előkészítő szolgáltatás, amely lehetővé teszi adatfeldolgozási és modellértékelési feladatok elvégzését a bemeneti adatokon. A SageMaker Processing segítségével nyers adatokat alakíthat át a betanításhoz és következtetésekhez szükséges formátumba, valamint futtathatja a modellek kötegelt és online kiértékelését.
  • SageMaker képzési munkák – A SageMaker képzési feladatok segítségével modelleket taníthat különféle algoritmusokra és bemeneti adattípusokra, és megadhatja a betanításhoz szükséges számítási erőforrásokat.
  • SageMaker MME-k – A több modellből álló végpontok lehetővé teszik több modell tárolását egyetlen végponton, ami megkönnyíti a több modellből származó előrejelzések kiszolgálását egyetlen API használatával. A SageMaker MME-k időt és erőforrásokat takaríthatnak meg azáltal, hogy csökkentik a több modellből származó előrejelzések kiszolgálásához szükséges végpontok számát. Az MME-k támogatják a CPU és a GPU által támogatott modellek üzemeltetését is. Vegye figyelembe, hogy forgatókönyvünkben 1,000 modellt használunk, de ez nem korlátozza magát a szolgáltatást.

A következő ábra a megoldás architektúráját mutatja be.

architektúra, amely megjeleníti a leírt folyamatot

A munkafolyamat a következő lépéseket tartalmazza:

  1. A SageMaker Processing szolgáltatást használjuk az adatok előfeldolgozására, és ügyfélenként egyetlen CSV-fájl létrehozására és tárolására Amazon egyszerű tárolási szolgáltatás (Amazon S3).
  2. A SageMaker képzési feladat úgy van konfigurálva, hogy beolvassa a SageMaker feldolgozási feladat kimenetét, és kör-robin módon elküldje a képzési példányoknak. Ne feledje, hogy ez azzal is elérhető Amazon SageMaker csővezetékek.
  3. A modelltermékeket az Amazon S3-ban tárolja a képzési feladat, és közvetlenül a SageMaker MME-ből szolgálják ki.

Méretezze a képzést több ezer modellre

Több ezer modell betanításának skálázása lehetséges a distribution paramétere TrainingInput osztályt a SageMaker Python SDK-ban, amely lehetővé teszi annak megadását, hogy az adatok hogyan legyenek elosztva több betanítási példány között egy betanítási feladathoz. Három lehetőség van a distribution paraméter: FullyReplicated, ShardedByS3Keyés ShardedByRecord Az ShardedByS3Key Az opció azt jelenti, hogy a betanítási adatokat az S3 objektumkulcs feldarabolja, és minden betanítási példány az adatok egyedi részhalmazát kapja, elkerülve a párhuzamosságot. Miután a SageMaker átmásolta az adatokat a képzési tárolókba, elolvashatjuk a mappa- és fájlstruktúrát, hogy egyedi modellt taníthassunk ügyfélfájlonként. A következő egy példa kódrészlet:

# Assume that the training data is in an S3 bucket already, pass the parent folder
s3_input_train = sagemaker.inputs.TrainingInput( s3_data='s3://my-bucket/customer_data', distribution='ShardedByS3Key'
) # Create a SageMaker estimator and set the training input
estimator = sagemaker.estimator.Estimator(...)
estimator.fit(inputs=s3_input_train)

Minden SageMaker képzési feladat tárolja a modellben elmentett modellt /opt/ml/model a képzési konténer mappáját, mielőtt archiválná a model.tar.gz fájlt, majd feltölti az Amazon S3-ra a képzési munka befejezése után. A hatékony felhasználók a SageMaker Pipelines segítségével automatizálhatják ezt a folyamatot. Ha több modellt tárol ugyanazon a képzési feladaton keresztül, a SageMaker egyetlent hoz létre model.tar.gz fájl, amely tartalmazza az összes betanított modellt. Ez azt jelentené, hogy a modell kiszolgálásához először ki kell csomagolnunk az archívumot. Ennek elkerülésére használjuk ellenőrzőpontok hogy megmentsük az egyes modellek állapotát. A SageMaker lehetőséget biztosít a képzési feladat során létrehozott ellenőrzőpontok átmásolására az Amazon S3-ra. Itt az ellenőrzőpontokat egy előre megadott helyre kell menteni, az alapértelmezett értékkel /opt/ml/checkpoints. Ezek az ellenőrző pontok felhasználhatók a képzés egy későbbi időpontban történő folytatására, vagy modellként használhatók egy végponton. A magas szintű összefoglalóért arról, hogy a SageMaker képzési platform hogyan kezeli a betanítási adatkészletek, modellműtermékek, ellenőrzőpontok és kimenetek tárolási útvonalait az AWS Cloud tárolás és a SageMaker oktatási munkái között, tekintse meg a következőt: Amazon SageMaker képzési tárolómappák képzési adatkészletekhez, ellenőrző pontokhoz, modelltermékekhez és kimenetekhez.

A következő kód fiktív kódot használ model.save() funkció belsejében train.py a képzési logikát tartalmazó szkript:

import tarfile
import boto3
import os [ ... argument parsing ... ] for customer in os.list_dir(args.input_path): # Read data locally within the Training job df = pd.read_csv(os.path.join(args.input_path, customer, 'data.csv')) # Define and train the model model = MyModel() model.fit(df) # Save model to output directory with open(os.path.join(output_dir, 'model.json'), 'w') as fout: fout.write(model_to_json(model)) # Create the model.tar.gz archive containing the model and the training script with tarfile.open(os.path.join(output_dir, '{customer}.tar.gz'), "w:gz") as tar: tar.add(os.path.join(output_dir, 'model.json'), "model.json") tar.add(os.path.join(args.code_dir, "training.py"), "training.py")

Méretezhet következtetést több ezer modellre a SageMaker MME-kkel

A SageMaker MME-k lehetővé teszik több modell egyidejű kiszolgálását egy végpont-konfiguráció létrehozásával, amely tartalmazza az összes kiszolgálni kívánt modell listáját, majd létrehoz egy végpontot a végpont-konfiguráció használatával. Nem szükséges minden alkalommal újratelepíteni a végpontot, amikor új modellt ad hozzá, mert a végpont automatikusan kiszolgálja a megadott S3 útvonalakon tárolt összes modellt. Ezt azzal érik el Több modell szerver (MMS), egy nyílt forráskódú keretrendszer az ML-modellek kiszolgálására, amely tárolókba telepíthető, hogy az új MME konténer API-k követelményeinek megfelelő kezelőfelületet biztosítson. Ezenkívül használhat más típusú szervereket, beleértve TorchServe és a Triton. Az MMS az egyéni tárolójába telepíthető a SageMaker Inference Toolkit. Ha többet szeretne megtudni arról, hogyan konfigurálhatja a Dockerfile-t úgy, hogy tartalmazza az MMS-t, és hogyan használja azt a modellek kiszolgálására, tekintse meg a következőt: Készítse el saját tárolóját a SageMaker többmodell végpontjaihoz.

A következő kódrészlet bemutatja, hogyan hozhat létre MME-t a SageMaker Python SDK használatával:

from sagemaker.multidatamodel import MultiDataModel # Create the MultiDataModel definition
multimodel = MultiDataModel( name='customer-models', model_data_prefix=f's3://{bucket}/scaling-thousand-models/models', model=your_model,
) # Deploy on a real-time endpoint
predictor = multimodel.deploy( initial_instance_count=1, instance_type='ml.c5.xlarge',
)

Amikor az MME él, meghívhatjuk előrejelzések generálásához. A meghívások bármelyik AWS SDK-ban, valamint a SageMaker Python SDK-val elvégezhetők, amint az a következő kódrészletben látható:

predictor.predict( data='{"period": 7}', # the payload, in this case JSON target_model='{customer}.tar.gz' # the name of the target model
)

Modell hívásakor a modell kezdetben az Amazon S3-ból töltődik be a példányra, ami hidegindítást eredményezhet új modell hívásakor. A gyakran használt modellek gyorsítótárban vannak a memóriában és a lemezen, hogy alacsony késleltetésű következtetéseket lehessen levonni.

Következtetés

A SageMaker egy hatékony és költséghatékony platform több ezer ML modell képzéséhez és kiszolgálásához. Funkciói, köztük a SageMaker Processing, a betanítási feladatok és az MME-k lehetővé teszik a szervezetek számára, hogy modellek ezreit hatékonyan képezzék ki és szolgálják ki méretben, miközben az AWS Cloud infrastruktúra használatának költségmegtakarítási előnyeiből is profitálnak. Ha többet szeretne megtudni arról, hogyan használhatja a SageMaker-t több ezer modell betanítására és kiszolgálására, tekintse meg a következőt: Adatfeldolgozás, Tanítson modellt az Amazon SageMakerrel és a Több modellt is tárolhat egy tárolóban egy végpont mögött.


A szerzőkről

Davide képeDavide Gallitelli az EMEA régióban az AI/ML speciális megoldások építésze. Székhelye Brüsszelben van, és szorosan együttműködik az ügyfelekkel a Benelux államokban. Egészen kicsi kora óta fejlesztő, 7 évesen kezdett el kódolni. Az AI/ML-t az egyetemen kezdte tanulni, és azóta beleszeretett.

Maurits képeMaurits de Groot az amszterdami székhelyű Amazon Web Services megoldástervezője. Szeret gépi tanulással kapcsolatos témákon dolgozni, és előszeretettel foglalkozik a startupokkal. Szabadidejében szeret síelni és squashozni.

Időbélyeg:

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