Inkrementális képzés az Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.

Inkrementális edzés az Amazon SageMaker JumpStart segítségével

Decemberben 2020, Az AWS bejelentette az Amazon SageMaker JumpStart általános elérhetőségét, képessége Amazon SageMaker amely segít gyorsan és egyszerűen elkezdeni a gépi tanulást (ML). SageMaker JumpStart Egykattintásos finomhangolást és előre betanított modellek széles skáláját kínálja a népszerű ML-feladatok között, valamint számos olyan átfogó megoldást, amelyek megoldják a gyakori üzleti problémákat. Ezek a funkciók eltávolítják az ML folyamat minden egyes lépéséből adódó nehézségeket, megkönnyítve a kiváló minőségű modellek fejlesztését, és lerövidítve a telepítéshez szükséges időt.

Az összes JumpStart tartalom korábban csak a következőn keresztül volt elérhető Amazon SageMaker Studio, amely a felhasználóbarát grafikus felület kölcsönhatásba lépni a funkcióval. Mostanában mi is bejelentette a bevezetést könnyen használható JumpStart API-k a SageMaker Python SDK kiterjesztéseként, amely lehetővé teszi a JumpStart által támogatott előre betanított modellek nagy választékának programozott telepítését és finomhangolását saját adatkészletein. Ez az indítás feloldja a JumpStart képességek használatát a kódmunkafolyamatokban, az MLOps folyamatokban, és bárhol máshol, ahol SDK-n keresztül kommunikál a SageMakerrel.

Ebben a bejegyzésben örömmel jelentjük be, hogy mostantól az összes tanítható JumpStart modell támogatja a fokozatos edzést. A növekményes betanítás lehetővé teszi a már finomhangolt modell betanítását egy kibővített adatkészlet használatával, amely egy olyan mögöttes mintát tartalmaz, amelyet a korábbi finomhangolási futtatások során nem vettek figyelembe, ami a modell gyenge teljesítményét eredményezte. A fokozatos betanítás időt és erőforrást takarít meg, mivel nem kell a modellt a semmiből áttanítani. Ha egyenesen bele szeretne ugrani az ebben a bejegyzésben ismertetett JumpStart API kódba, akkor hivatkozzon a mintafüzet.

JumpStart áttekintése

A JumpStart egy sokrétű termék, amely különböző képességeket tartalmaz, amelyek segítségével gyorsan elkezdheti az ML használatát a SageMakeren. Az írás idején a JumpStart a következőket teszi lehetővé:

  • Telepítsen előre betanított modelleket a gyakori ML-feladatokhoz – A JumpStart lehetővé teszi a gyakori ML-feladatok megoldását fejlesztési erőfeszítések nélkül azáltal, hogy könnyen telepítheti a nagy, nyilvánosan elérhető adatkészleteken előre betanított modelleket. Az ML kutatói közösség nagy erőfeszítéseket tett annak érdekében, hogy a közelmúltban kifejlesztett modellek többségét nyilvánosan elérhetővé tegyék használatra; A JumpStart több mint 300 modellből álló gyűjteményt tartalmaz, amelyek a 15 legnépszerűbb ML-feladatot ölelik fel, mint például az objektumészlelés, a szövegosztályozás és a szöveggenerálás, így a kezdők is könnyen használhatják őket. Ezek a modellek olyan népszerű modellközpontokból származnak, mint a TensorFlow, PyTorch, Hugging Face és MXNet Hub.
  • Az előre betanított modellek finomhangolása – A JumpStart lehetővé teszi az előre betanított modellek finomhangolását anélkül, hogy saját edzési algoritmust kellene írnia. Az ML-ben az egyik tartományban tanult tudás másik területre való átvitelének képességét hívják transzfer tanulás. Az átviteli tanulás segítségével pontos modelleket állíthat elő kisebb adatkészletein, sokkal alacsonyabb képzési költségekkel, mint az eredeti modell betanításával kapcsolatos költségek. A JumpStart a LightGBM, CatBoost, XGBoost és Scikit-learn alapú népszerű edzési algoritmusokat is tartalmazza, amelyeket a nulláról edzhet a táblázatos regresszióhoz és osztályozáshoz.
  • Használjon előre elkészített megoldásokat – A JumpStart 17 megoldást kínál a gyakori ML használati esetekre, mint például a kereslet-előrejelzés, valamint az ipari és pénzügyi alkalmazások, amelyeket néhány kattintással telepíthet. A megoldások teljes körű ML-alkalmazások, amelyek különböző AWS-szolgáltatásokat kapcsolnak össze egy adott üzleti felhasználási eset megoldása érdekében. Használják AWS felhőképződés sablonok és referenciaarchitektúrák a gyors üzembe helyezés érdekében, ami azt jelenti, hogy teljes mértékben testreszabhatók.
  • Használjon jegyzetfüzet-példákat a SageMaker algoritmusokhoz – A SageMaker beépített algoritmusokat kínál, amelyek segítenek az adattudósoknak és az ML-gyakorlóknak az ML modellek gyors képzésében és bevezetésében. A JumpStart mintajegyzetfüzeteket biztosít, amelyek segítségével gyorsan alkalmazhatja ezeket az algoritmusokat.
  • Tekintse át a képzési videókat és blogokat – A JumpStart számos blogbejegyzést és videót is kínál, amelyek megtanítják a SageMaker különböző funkcióinak használatát.

A JumpStart elfogadja az egyéni VPC beállításokat és AWS kulcskezelési szolgáltatás (AWS KMS) titkosítási kulcsokat, így biztonságosan használhatja a rendelkezésre álló modelleket és megoldásokat a vállalati környezetben. Biztonsági beállításait átadhatja a JumpStartnak a Studion belül vagy a SageMaker Python SDK-n keresztül.

Képosztályozás

A képbesorolás egy kép besorolását jelenti a képzési adatkészlet egyik osztálycímkéjébe. A modellt tetszőleges számú osztályba tartozó képeket tartalmazó adatkészletre finomhangolhatja. A JumpStartban finomhangolható modell egy osztályozási réteget csatol a megfelelő jellemző-kibontó modellhez, és véletlenszerű értékekre inicializálja a rétegparamétereket. Az osztályozási réteg kimeneti dimenziója a bemeneti adatokban lévő osztályok száma alapján kerül meghatározásra. A finomhangolási lépés az osztályozási réteg paramétereit hangolja, miközben a jellemző-kibontó modell paramétereit fagyasztva tartja, és visszaadja a finomhangolt modellt. A cél az előrejelzési hiba minimalizálása a bemeneti adatokban.

Adatkészletünkben a bemenet egy olyan könyvtár, amely annyi alkönyvtárat tartalmaz, ahány osztály van. Minden alkönyvtárnak tartalmaznia kell az adott osztályhoz tartozó képeket .jpg formátumban. A bemeneti könyvtárnak a következő hierarchiához kell hasonlítania, ha a képzési adatok két osztályból származó képeket tartalmaznak: roses és a dandelion:

input_directory |--roses |--abc.jpg |--def.jpg |--dandelion |--ghi.jpg |--jkl.jpg

A mappák, osztályok és .jpg fájlnevek bármilyenek lehetnek.

Mi biztosítjuk a tf_flowers1 adatkészlet, mint alapértelmezett adatkészlet a modell finomhangolásához. Ez az adatkészlet ötféle virág képét tartalmazza. Az adatkészlet letöltése innen történt TensorFlow.

Útmutató áttekintése

A következő szakaszok lépésről lépésre bemutatják a képek JumpStart segítségével történő osztályozását, mind a Studio UI, mind a JumpStart API-kon keresztül.

A következő lépéseket járjuk végig:

  1. A JumpStart elérése a Studio felhasználói felületén keresztül:
    1. Finomhangolja az előre betanított modellt.
    2. Telepítse a finomhangolt modellt.
    3. Fokozatosan képezze a finomhangolt modellt, és helyezze át újra.
  2. A JumpStart programozott használata a SageMaker Python SDK-val:
    1. Finomhangolja az előre betanított modellt.
    2. Telepítse a finomhangolt modellt.
    3. Fokozatosan képezze a finomhangolt modellt, és helyezze át újra.

A JumpStart elérése a Studio felhasználói felületén keresztül

Ebben a részben bemutatjuk, hogyan lehet finomhangolni és üzembe helyezni a JumpStart modelleket a Studio UI-n keresztül. Ezenkívül megmutatjuk, hogyan lehet fokozatosan betanítani egy korábban finomhangolt modellt.

Finomhangolja az előre betanított modellt

A következő videó bemutatja, hogyan találhat meg egy előre betanított képosztályozási modellt a JumpStart-on, és hogyan finomhangolhatja azt. A modelloldal értékes információkat tartalmaz a modellről, annak használatáról, a várható adatformátumról és néhány finomhangolási részletről.

Demonstrációs célból finomhangoljuk a modellt az alapértelmezés szerint biztosított adatkészlettel, amely a tf_flowers adatkészlet, amely különböző virágfajtákból áll. A saját adatkészlet finomhangolása magában foglalja az adatok helyes formázását (a modelloldalon leírtak szerint), majd feltölti őket a Amazon egyszerű tárolási szolgáltatás (Amazon S3), és megadja a helyét az adatforrás konfigurációjában.

Ugyanazokat az alapértelmezés szerint beállított hiperparaméter-értékeket használjuk (korszakok száma, tanulási sebesség és kötegméret). A GPU-val támogatott ml.p3.2xlarge példányt is használjuk SageMaker képzési példányunkként.

A képzési feladatot közvetlenül a Studio konzolon követheti nyomon, és értesítést kap annak befejezéséről.

Telepítse a finomhangolt modellt

A képzés befejezése után telepítheti a finomhangolt modellt ugyanarról az oldalról, amely a képzési feladat részleteit tartalmazza. Modellünk üzembe helyezéséhez egy másik példánytípust választunk, ml.p2.xlarge. Továbbra is biztosítja az alacsony következtetési késleltetéshez szükséges GPU-gyorsítást, de alacsonyabb áron. A SageMaker tárhelypéldány konfigurálása után válassza a lehetőséget Telepítése. 5–10 percbe telhet, amíg az állandó végpont elindul és fut.

Ezután a végpontja működőképes, és készen áll a következtetési kérések megválaszolására!

A következtetések levonásához szükséges idő felgyorsítása érdekében a JumpStart egy mintajegyzetfüzetet biztosít, amely bemutatja, hogyan futtathat következtetést a frissen telepített végponton. Választ Nyissa meg a Jegyzetfüzetet alatt Végpont használata a Stúdióból.

Fokozatosan képezze a finomhangolt modellt, és helyezze üzembe

Amikor a finomhangolás befejeződött, tovább képezheti a modellt a teljesítmény növelése érdekében. Ez a lépés nagyon hasonlít a kezdeti finomhangolási folyamathoz, azzal a különbséggel, hogy a már finomhangolt modellt használjuk kiindulási pontként. Használhat új adatokat, de az adatkészlet formátumának meg kell egyeznie (ugyanaz az osztálykészlet).

A JumpStart programozott használata a SageMaker SDK-val

Az előző részekben bemutattuk, hogyan használhatja a JumpStart felhasználói felületet a modellek néhány kattintással történő interaktív finomhangolására, üzembe helyezésére és fokozatos betanítására. A SageMaker SDK-ba integrált API-k használatával is használhatja a JumpStart modelljeit és egyszerű programozott finomhangolását. Most áttekintünk egy gyors példát arra, hogyan lehet megismételni az előző folyamatot. A bemutató összes lépése megtalálható a mellékelt notebookokban A JumpStart bemutatása – Képosztályozás.

Finomhangolja az előre betanított modellt

A kiválasztott modell finomhangolásához meg kell szereznünk a modell URI-jét, valamint a betanítási szkript és a betanításhoz használt tárolókép URI-jét. Szerencsére ez a három bemenet kizárólag a modell nevétől és verziójától függ (az elérhető modellek listáját lásd JumpStart elérhető modelltáblázat), és a képzés típusát. Ezt a következő kódrészlet szemlélteti:

from sagemaker import image_uris, model_uris, script_uris model_id, model_version = "pytorch-ic-mobilenet-v2", "1.0.0"
training_instance_type = "ml.p3.2xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve( region=None, framework=None, model_id=model_id, model_version=model_version, image_scope="training", instance_type=training_instance_type,
) # Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training") # Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

Visszaszerezzük a model_id ugyanazon modellnek felel meg, amelyet korábban használtunk. Az azonosítóban lévő ic a képbesorolásnak felel meg.

Most már finomhangolhatja ezt a JumpStart modellt saját egyéni adatkészletén a SageMaker SDK segítségével. Ugyanazt használjuk tf_flowers adatkészlet, amelyet nyilvánosan tárolnak az Amazon S3-on, kényelmesen a hangulatelemzésre összpontosítva. Az adatkészletet fel kell strukturálni a finomhangoláshoz, az előző részben leírtak szerint. Lásd a következő példakódot:

# URI of your training dataset
training_dataset_s3_path = "s3://jumpstart-cache-prod-us-west-2/training-datasets/tf_flowers/"
training_job_name = name_from_base(f"jumpstart-example-{model_id}-transfer-learning") # Create SageMaker Estimator instance
ic_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location,
) # Launch a SageMaker Training job by passing s3 path of the training data
ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

A kiválasztott modellünkhöz ugyanazokat az alapértelmezett hiperparamétereket kapjuk, mint amelyeket az előző részben láttunk, használatával sagemaker.hyperparameters.retrieve_default(). Ezután példányosítunk egy SageMaker becslőt, és meghívjuk a .fit metódust, hogy elkezdjük a modell finomhangolását, átadva neki az Amazon S3 URI-t a képzési adataink számára. Mint látható, a entry_point a megadott script neve transfer_learning.py (ugyanez más feladatoknál és modelleknél is), és a bemeneti adatcsatorna átadta .fit meg kell nevezni training.

A finomhangolt modell bevezetése

A képzés befejeztével üzembe helyezheti a finomhangolt modellt. Ehhez mindössze a következtetési parancsfájl URI-ját (a kódot, amely meghatározza, hogy a modellt a telepítés után miként használjuk következtetésekhez) és a következtetéstároló kép URI-ját kell megszereznünk, amely egy megfelelő modellkiszolgálót tartalmaz az általunk választott modell hosztolásához. Lásd a következő kódot:

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve( region=None, framework=None, image_scope="inference", model_id=model_id, model_version=model_version, instance_type=inference_instance_type,
)
# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve( model_id=model_id, model_version=model_version, script_scope="inference"
) endpoint_name = name_from_base(f"jumpstart-example-FT-{model_id}-") # Use the estimator from the previous step to deploy to a SageMaker endpoint
finetuned_predictor = ic_estimator.deploy( initial_instance_count=1, instance_type=inference_instance_type, entry_point="inference.py", image_uri=deploy_image_uri, source_dir=deploy_source_uri, endpoint_name=endpoint_name,
)

Néhány perc múlva a modellünk bevetésre kerül, és valós időben kaphatunk előrejelzéseket belőle!

Ezután meghívjuk a végpontot, hogy megjósoljuk, milyen típusú virágok léteznek a példaképen. Használjuk a query_endpoint és a parse_response segítő funkciók, melyeket a mellékelt rész definiál jegyzetfüzet.

query_response = finetuned_predictor.predict( img, {"ContentType": "application/x-image", "Accept": "application/json;verbose"} )
model_predictions = json.loads(query_response)
predicted_label = model_predictions["predicted_label"]
display( HTML( f'<img src={image_filename} alt={image_filename} align="left" style="width: 250px;"/>' f"<figcaption>Predicted Label: {predicted_label}</figcaption>" )
)

Fokozatosan képezze a finomhangolt modellt, és helyezze át újra

Egy finomhangolt modell teljesítményét úgy tudjuk növelni, ha új képeken tovább képezzük. Ehhez tetszőleges számú új vagy régi képet használhat, azonban az adatkészlet formátumának változatlannak kell maradnia (ugyanaz az osztálykészlet). Az inkrementális képzési lépés hasonló a finomhangolási folyamathoz, egy lényeges különbséggel: a kezdeti finomhangolásnál egy előre betanított modellel kezdünk, míg az inkrementális képzésben egy meglévő finomhangolt modellel kezdjük. Lásd a következő kódot:

last_trained_model_path = f"{s3_output_location}/{last_training_job_name}/output/model.tar.gz"
incremental_s3_output_location = f"s3://{output_bucket}/{incremental_output_prefix}/output"incremental_train_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=last_trained_model_path, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=incremental_s3_output_location, base_job_name=incremental_training_job_name,
) incremental_train_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Amikor a betanítás befejeződött, ugyanazokat a lépéseket használhatjuk, mint az előző részben leírtak a modell üzembe helyezéséhez.

Következtetés

A JumpStart a SageMaker olyan képessége, amely lehetővé teszi az ML gyors elkezdését. A JumpStart nyílt forráskódú előre betanított modelleket használ az olyan gyakori ML problémák megoldására, mint a képosztályozás, az objektumészlelés, a szövegosztályozás, a mondatpárok osztályozása és a kérdések megválaszolása.

Ebben a bejegyzésben megmutattuk, hogyan lehet finomhangolni és telepíteni egy előre betanított képosztályozási modellt. Azt is megmutattuk, hogyan lehet fokozatosan betanítani egy finomhangolt modellt a képosztályozáshoz. A JumpStart segítségével egyszerűen végrehajthatja ezt a folyamatot kódolás nélkül. Próbálja ki a megoldást saját maga, és tudassa velünk, hogyan működik a megjegyzésekben. Ha többet szeretne megtudni a JumpStartról, tekintse meg az AWS re:Invent 2020 videót Kezdje el az ML-t percek alatt az Amazon SageMaker JumpStart segítségével.

Referenciák

  1. A TensorFlow csapata, 2019

A szerzőkről

Inkrementális képzés az Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Dr. Vivek Madan az Amazon SageMaker JumpStart csapatának alkalmazott tudósa. Megszerezte a PhD fokozatot. az Illinoisi Egyetem Urbana-Champaign-ben, és a Georgia Tech posztdoktori kutatója volt. Aktív kutatója a gépi tanulásnak és az algoritmustervezésnek, és publikált előadásokat EMNLP, ICLR, COLT, FOCS és SODA konferenciákon.

Inkrementális képzés az Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.João Moura AI/ML Specialist Solutions Architect az Amazon Web Servicesnél. Leginkább az NLP-használati esetekre összpontosít, és segít ügyfeleinek a mély tanulási modell képzésében és bevezetésében. Emellett aktív támogatója az alacsony kódú ML megoldásoknak és az ML-re specializált hardvereknek.

Inkrementális képzés az Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence segítségével. Függőleges keresés. Ai.Dr. Ashish Khetan vezető alkalmazott tudós Amazon SageMaker JumpStart és a Amazon SageMaker beépített algoritmusok és segít a gépi tanulási algoritmusok fejlesztésében. A gépi tanulás és a statisztikai következtetések aktív kutatója, és számos közleményt publikált NeurIPS, ICML, ICLR, JMLR, ACL és EMNLP konferenciákon.

Időbélyeg:

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