Futtasson szöveggenerálást GPT és Bloom modellekkel az Amazon SageMaker JumpStart rendszeren

Decemberben 2020, Az AWS bejelentette - a Amazon SageMaker JumpStart, képessége Amazon SageMaker amely segít gyorsan és egyszerűen elkezdeni a gépi tanulást (ML). A JumpStart az előre betanított modellek széles skálájának egy kattintással történő finomhangolását és telepítését biztosítja a népszerű ML-feladatok között, valamint a gyakori üzleti problémákat megoldó végpontok közötti megoldások választékát. 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.

Ez a bejegyzés a negyedik a JumpStart bizonyos ML feladatokhoz való használatáról szóló sorozatban. Ban,-ben első poszt, megmutattuk, hogyan kell futtatni a képosztályozás használati eseteit a JumpStarton. Ban,-ben második bejegyzés, bemutattuk, hogyan kell futtatni a szövegosztályozás használati eseteit. Ban,-ben harmadik poszt, lefuttattuk a képszegmentálás használati eseteit.

Ebben a bejegyzésben lépésről lépésre bemutatjuk az előre betanított szöveggenerálási modellek telepítését. Két módot kutatunk ugyanazon eredmény elérésére: a JumpStart grafikus felületén keresztül Amazon SageMaker Studio, és programozottan keresztül JumpStart API-k.

Ha közvetlenül bele szeretne ugrani a JumpStart API-kódba, amelyet ebben a bejegyzésben áttekintünk, tekintse meg a következő Jupyter-jegyzetfüzetet: A JumpStart – Szöveggenerálás bemutatása.

JumpStart áttekintése

A JumpStart segít az ML modellek használatának megkezdésében számos feladathoz anélkül, hogy egyetlen kódsort is meg kellene írnia. Jelenleg 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ó 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é tegye. 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.
  • 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 tartományba 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 olyan 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.
  • Tekintse meg a SageMaker algoritmusokkal kapcsolatos notebook-példákat – 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 használhatja 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.

Szöveggenerálás, GPT-2 és Bloom

A szöveggenerálás olyan szöveg létrehozásának feladata, amely gördülékeny és megkülönböztethetetlennek tűnik az ember által írt szövegtől. Úgy is ismert, mint természetes nyelv generációja.

A GPT-2 egy népszerű transzformátor alapú szöveggeneráló modell. Előképzett egy nagy mennyiségű nyers angol szövegre, emberi címkézés nélkül. Arra a feladatra tanítják, ahol egy részleges sorozat (mondat vagy szövegrész) alapján a modellnek meg kell jósolnia a sorozat következő szavát vagy jelzőjét.

A Bloom szintén egy transzformátor alapú szöveggeneráló modell, és a GPT-2-höz hasonlóan van kiképezve. Bloom azonban 46 különböző nyelven és 13 programozási nyelven van előképzett. A következő példa a szöveggenerálás futtatására a Bloom modellel:

Input: "Some people like dogs, some people like cats"
Output: "Some people like dogs, some people like cats some people like birds, some people like fish,"

Megoldás áttekintése

A következő szakaszok lépésről lépésre bemutatják a következtetések végrehajtását, mind a Studio felhasználói felületén, mind a JumpStart API-kon keresztül. A következő lépéseket járjuk végig:

  1. Hozzáférés a JumpStarthoz a Studio felhasználói felületén keresztül az előre betanított modell telepítéséhez és lefuttatásához.
  2. Használja programozottan a JumpStartot a SageMaker Python SDK-val az előre betanított modell üzembe helyezéséhez és a következtetés futtatásához.

A Studio felhasználói felületén keresztül érheti el a JumpStart programot, és futtasson következtetést egy előre betanított modellel

Ebben a részben bemutatjuk, hogyan lehet betanítani és telepíteni a JumpStart modelleket a Studio felhasználói felületén keresztül.

A következő videó bemutatja, hogyan találhat meg egy előre betanított szöveggenerálási modellt a JumpStarton, és hogyan telepítheti azt. A modelloldal értékes információkat tartalmaz a modellről és annak használatáról. A JumpStartban elérhető bármely előre betanított modell üzembe helyezhető. Következtetéshez az ml.p3.2xlarge példánytípust választjuk, mert ez biztosítja az alacsony következtetési késleltetéshez szükséges GPU-gyorsítást alacsony áron. A SageMaker tárhelypéldány konfigurálása után válassza a lehetőséget Telepítése. 20–25 percbe telhet, amíg az állandó végpont elindul és fut.

Amint a végpontja működőképes, készen áll arra, hogy válaszoljon a következtetési kérésekre!

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 Használja a Studio végpontját.

A JumpStart programozott használata a SageMaker SDK-val

Az előző részben bemutattuk, hogyan használhatja a JumpStart UI-t egy előre betanított modell interaktív, néhány kattintással történő telepítésére. A JumpStart modelljeit azonban programozottan is használhatja a SageMaker SDK-ba integrált API-k használatával.

Ebben a részben áttekintünk egy gyors példát arra vonatkozóan, hogyan replikálhatja az előző folyamatot a SageMaker SDK-val. Kiválasztunk egy megfelelő előre betanított modellt a JumpStartban, telepítjük ezt a modellt egy SageMaker-végpontra, és következtetést futtatunk a telepített végponton. A bemutató összes lépése megtalálható a mellékelt notebookban A JumpStart – Szöveggenerálás bemutatása.

Telepítse az előre betanított modellt

A SageMaker egy olyan platform, amely széles körben használja a Docker-konténereket építési és futási feladatokhoz. A JumpStart a rendelkezésre álló keretrendszer-specifikusat használja SageMaker Deep Learning tárolók (DLC-k). Először lekérünk minden további csomagot, valamint szkripteket, amelyekkel kezelhetjük a képzést és a következtetéseket a kiválasztott feladathoz. Végül az előre betanított modelltermékeket külön lekérjük model_uris, amely rugalmasságot biztosít a platform számára. Tetszőleges számú, ugyanarra a feladatra előre betanított modellt használhat egyetlen következtetési szkripttel. Lásd a következő kódot:

model_id, model_version = "huggingface-textgeneration-bloom-560m", "*"

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve(
    region=None,
    framework=None,  # automatically inferred from model_id
    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")

base_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="inference")

A Bloom egy nagyon nagy modell, és akár 20-25 percig is eltarthat a telepítés. Használhat kisebb modellt is, például GPT-2-t. Előre betanított GPT-2 modell üzembe helyezéséhez beállíthatja model_id = huggingface-textgeneration-gpt2. A JumpStartban elérhető egyéb modellek listáját lásd: JumpStart elérhető modelltáblázat.

Ezután az erőforrásokat a SageMaker modell példány és telepítsen egy végpontot:

# Create the SageMaker model instance
model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",  # entry point file in source_dir and present in deploy_source_uri
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name,
)

# deploy the Model. Note that we need to pass Predictor class when we deploy model through Model class,
# for being able to run inference through the sagemaker API.
base_model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    predictor_cls=Predictor,
    endpoint_name=endpoint_name,
)

Modellünk bevezetése után valós időben kaphatunk előrejelzéseket belőle!

Következtetés futtatása

A következő kódrészlet bepillantást nyújt a kimenetek megjelenésébe. Ahhoz, hogy kéréseket küldhessen egy telepített modellnek, beviteli szöveget kell megadni a utf-8 kódolt formátum.

def query(model_predictor, text):
    """Query the model predictor."""

    encoded_text = json.dumps(text).encode("utf-8")

    query_response = model_predictor.predict(
        encoded_text,
        {
            "ContentType": "application/x-text",
            "Accept": "application/json",
        },
    )
    return query_response

A végpont válasz egy JSON-objektum, amely tartalmazza a bemeneti szöveget, majd a generált szöveget:

def parse_response(query_response):
    """Parse response and return the generated text."""

    model_predictions = json.loads(query_response)
    generated_text = model_predictions["generated_text"]
    return generated_text
    
text = "Some people like dogs, some people like cats"
query_response = query(model_predictor, text)
parse_response(query_response)

Eredményünk a következő:

"Some people like dogs, some people like cats some people like birds, some people like fish,"

Következtetés

Ebben a bejegyzésben bemutattuk, hogyan telepíthet egy előre betanított szöveggeneráló modellt a JumpStart segítségével. Ezt megteheti anélkül, hogy kódot kellene írnia. Próbálja ki a megoldást saját maga, és küldje el nekünk észrevételeit. Ha többet szeretne megtudni a JumpStartról és arról, hogyan használhatja a nyílt forráskódú, előre betanított modelleket számos más ML-feladathoz, tekintse meg a következőt AWS re:Invent 2020 videó.


A szerzőkről

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr. Vivek Madan az Amazon SageMaker JumpStart csapatának alkalmazott tudósa. PhD fokozatát az Illinoisi Egyetemen szerezte, az 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.

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.Santosh Kulkarni az Amazon Web Services vállalati megoldások építésze, aki sportügyfelekkel dolgozik Ausztráliában. Szenvedélyesen épít nagyszabású elosztott alkalmazásokat üzleti problémák megoldására, felhasználva tudását az AI/ML, a big data és a szoftverfejlesztés terén.

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr. Ashish Khetan vezető alkalmazott tudós az Amazon SageMaker beépített algoritmusaival, és segít gépi tanulási algoritmusok fejlesztésében. PhD fokozatát az Illinois Urbana Champaign Egyetemen szerezte. 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