Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStart PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStartin avulla

Toimialojen, kuten vähittäiskaupan, pankkitoiminnan, rahoituksen, terveydenhuollon, tuotannon ja luotonannon, organisaatiot joutuvat usein käsittelemään valtavia määriä jäsentelemättömiä tekstidokumentteja, jotka tulevat eri lähteistä, kuten uutisista, blogeista, tuotearvosteluista, asiakastukikanavista ja sosiaalisessa mediassa. Nämä asiakirjat sisältävät tärkeitä tietoja, jotka ovat avainasemassa tärkeiden liiketoimintapäätösten tekemisessä. Organisaation kasvaessa on haaste saada kriittistä tietoa näistä asiakirjoista. Luonnollisen kielenkäsittelyn (NLP) ja koneoppimistekniikoiden (ML) edistymisen ansiosta voimme löytää näistä tekstidokumenteista nopeasti ja tarkasti arvokkaita oivalluksia ja yhteyksiä, mikä auttaa yrityksiä tekemään laadukkaita liiketoimintapäätöksiä ajoissa. Täysin hallitut NLP-palvelut ovat myös nopeuttaneet NLP:n käyttöönottoa. Amazonin käsitys on täysin hallittu palvelu, jonka avulla voit rakentaa tarpeitasi vastaavia mukautettuja NLP-malleja ilman ML-asiantuntemusta.

Tässä postauksessa näytämme, kuinka hyödynnetään huippuluokan ML-tekniikoita viiden erilaisen NLP-tehtävän ratkaisemiseen: dokumenttien yhteenveto, tekstin luokittelu, kysymyksiin vastaaminen, nimettyjen entiteettien tunnistus ja suhteiden purkaminen. Näytämme kunkin NLP-tehtävän käytön Amazon Sage Maker suorittaaksesi seuraavat toiminnot:

  • Ota käyttöön ja suorita johtopäätös esiopetetulla mallilla
  • Hienosäädä esikoulutettu malli uudella mukautetulla tietojoukolla
  • Paranna hienosäätösuorituskykyä edelleen Automaattinen SageMaker-viritys
  • Arvioi mallin suorituskykyä pitkitystestidatan perusteella erilaisten arviointimittojen avulla

Vaikka käsittelemme tässä viestissä viittä erityistä NLP-tehtävää, voit käyttää tätä ratkaisua mallina yleistääksesi esikoulutettujen mallien hienosäätöä omalla tietojoukollasi ja suorittaaksesi sen jälkeen hyperparametrien optimoinnin tarkkuuden parantamiseksi.

JumpStart-ratkaisumallit

Amazon SageMaker JumpStart tarjoaa yhden napsautuksen, päästä päähän -ratkaisuja moniin yleisiin ML-käyttötapauksiin. Tutustu seuraaviin käyttötapauksiin saadaksesi lisätietoja käytettävissä olevista ratkaisumalleista:

JumpStart-ratkaisumallit kattavat erilaisia ​​käyttötapauksia, joista jokaisen alla on tarjolla useita erilaisia ​​ratkaisumalleja (tämä Document Understanding -ratkaisu on "Poimi ja analysoi dataa asiakirjoista" käyttötapauksen alla).

Valitse JumpStart-aloitussivulta ratkaisumalli, joka sopii parhaiten käyttötilanteeseesi. Lisätietoja yksittäisistä ratkaisuista kussakin käyttötapauksessa ja JumpStart-ratkaisun käynnistämisestä on kohdassa Ratkaisumallit.

Ratkaisun yleiskatsaus

Seuraava kuva näyttää, kuinka voit käyttää tätä ratkaisua SageMaker-komponenttien kanssa. SageMaker-koulutustehtäviä käytetään erilaisten NLP-mallien kouluttamiseen, ja SageMaker-päätepisteitä käytetään mallien käyttöönottoon kussakin vaiheessa. Käytämme Amazonin yksinkertainen tallennuspalvelu (Amazon S3) yhdessä SageMakerin kanssa harjoitustietojen ja malliesineiden tallentamiseen ja amazonin pilvikello koulutuksen ja päätepisteiden tulosten kirjaamiseen.

Avaa Asiakirjan ymmärtäminen -ratkaisu

Siirry Document Understanding -ratkaisuun JumpStartissa.

Nyt voimme tarkastella lähemmin joitain tähän ratkaisuun sisältyviä resursseja, alkaen esittelymuistikirjasta.

Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStart PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Demo muistikirja

Voit käyttää esittelymuistikirjaa esimerkkitietojen lähettämiseen jo käyttöön otettuihin mallipäätepisteisiin asiakirjan yhteenveto- ja kysymyksiin vastaamista varten. Esittelymuistikirjan avulla saat nopeasti käytännön kokemusta kyselemällä esimerkkitietoja.

Kun olet käynnistänyt Document Understanding -ratkaisun, avaa esittelymuistikirja valitsemalla Käytä päätepistettä Notebookissa.

Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStart PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Sukellaan syvemmälle tämän ratkaisun viiteen päämuistikirjaan.

Edellytykset

In Amazon SageMaker Studio, varmista, että käytät PyTorch 1.10 Python 3.8 CPU Optimized image/ydin avataksesi muistikirjat. Koulutuksessa käytetään viittä ml.g4dn.2xsuuria esiintymää, joten sinun tulee nostaa a palvelurajan korotuspyyntö jos tilisi vaatii korotettuja rajoja tälle tyypille.

Tekstiluokittelu

Tekstin luokittelu tarkoittaa syötelauseen luokittelua johonkin harjoitustietojoukon luokkatunnisteista. Tämä muistikirja näyttää kuinka käyttää JumpStart API tekstin luokittelua varten.

Ota käyttöön ja suorita päättely esikoulutetulla mallilla

Tekstin luokittelumalli, jonka olemme päättäneet käyttää, perustuu tekstin upotukseen (tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2) malli alkaen TensorFlow -napa, joka on esikoulutettu Wikipedia- ja BookCorpus-tietosarjoihin.

Käytössä oleva malli luodaan liittämällä binäärinen luokituskerros tekstin upotusmallin tulosteeseen ja hienosäätämällä sitten koko mallia SST-2 tietojoukko, joka koostuu positiivisista ja negatiivisista elokuva-arvosteluista.

Jotta voimme tehdä päätelmiä tässä mallissa, meidän on ensin ladattava päättelysäilö (deploy_image_uri), johtopäätös (deploy_source_uri) ja esikoulutettu malli (base_model_uri). Välitämme ne sitten parametreina SageMaker-malliobjektin luomiseksi, jonka voimme sitten ottaa käyttöön:

model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name_tc,
)
# deploy the Model.
base_model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    endpoint_name=endpoint_name_tc,
)

Mallin käyttöönoton jälkeen kokoamme esimerkkisyötteitä ja teemme kyselyn päätepisteestä:

text1 = "astonishing ... ( frames ) profound ethical and philosophical questions in the form of dazzling pop entertainment" 
text2 = "simply stupid , irrelevant and deeply , truly , bottomlessly cynical "

Seuraava koodi näyttää vastauksemme:

Inference:
Input text: 'astonishing ... ( frames ) profound ethical and philosophical questions in the form of dazzling pop entertainment'
Model prediction: [0.000452966779, 0.999547064]
Labels: [0, 1]
Predicted Label: 1 # value 0 means negative sentiment and value 1 means positive sentiment

Inference:
Input text: 'simply stupid , irrelevant and deeply , truly , bottomlessly cynical '
Model prediction: [0.998723, 0.00127695734]
Labels: [0, 1]
Predicted Label: 0

Hienosäädä esikoulutettu malli mukautetussa tietojoukossa

Kävelimme juuri läpi juoksevan päättelyn esikoulutetulla BERT-mallilla, joka oli hienosäädetty SST-2 aineisto.

Seuraavaksi keskustelemme mallin hienosäätämisestä mukautetussa tietojoukossa, jossa on useita luokkia. Tietojoukko, jota käytämme hienosäätöön, on edelleen SST-2 tietojoukko. Voit korvata tämän tietojoukon millä tahansa sinua kiinnostavalla tietojoukolla.

Haemme koulutus Docker-säilön, koulutusalgoritmin lähteen ja esikoulutetun mallin:

from sagemaker import image_uris, model_uris, script_uris, hyperparameters

model_id, model_version = model_id, "*" # all the other options of model_id are the same as the one in Section 2.
training_instance_type = config.TRAINING_INSTANCE_TYPE

# 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"
)

Algoritmikohtaisten hyperparametrien osalta aloitamme hakemalla Python-sanakirjan harjoitushyperparametreistä, jotka algoritmi hyväksyy oletusarvoillaan. Voit ohittaa ne mukautetuilla arvoilla seuraavan koodin osoittamalla tavalla:

from sagemaker import hyperparameters

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)

# [Optional] Override default hyperparameters with custom values
hyperparameters["batch-size"] = "64"
hyperparameters["adam-learning-rate"] = "1e-6"

Tietojoukko (SST-2) on jaettu koulutus-, validointi- ja testisarjoihin, joissa harjoitusjoukkoa käytetään mallin sopimiseen, validointijoukkoa käytetään HPO:lle käytettävien arviointimittojen laskemiseen ja testijoukkoa käytetään pidätystietona mallin suorituskyvyn arvioimiseksi. Seuraavaksi juna- ja validointitietojoukko ladataan Amazon S3:een ja sitä käytetään harjoitustyön hienosäätötyön käynnistämiseen:

# Create SageMaker Estimator instance
tc_estimator = Estimator(
    role=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,
    tags=[{'Key': config.TAG_KEY, 'Value': config.SOLUTION_PREFIX}],
    base_job_name=training_job_name,
)

training_data_path_updated = f"s3://{config.S3_BUCKET}/{prefix}/train"
# Launch a SageMaker Training job by passing s3 path of the training data
tc_estimator.fit({"training": training_data_path_updated}, logs=True)

Kun hienosäätötyö on valmis, otamme mallin käyttöön, teemme johtopäätöksen kestotestitietojoukosta ja laskemme arviointimitat. Koska se on binääriluokitustehtävä, käytämme tarkkuuspisteet ja F1 pisteet arviointimittareina. Suurempi arvo tarkoittaa parempaa suorituskykyä. Seuraava kuvakaappaus näyttää tuloksemme.

Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStart PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Paranna hienosäätösuorituskykyä SageMakerin automaattisen mallin virityksen avulla

Tässä vaiheessa näytämme, kuinka voit parantaa mallin suorituskykyä entisestään hienosäätämällä mallia SageMakerin automaattisella mallivirityksellä. Automaattinen mallin viritys, joka tunnetaan myös nimellä hyperparametrioptimointi (HPO), löytää mallin parhaan version suorittamalla useita koulutustöitä tietojoukossasi määrittämiesi hyperparametrien avulla. Sitten se valitsee hyperparametriarvot, jotka johtavat malliin, joka toimii parhaiten valitsemasi mittarin mukaan validointitietojoukossa.

Ensin asetimme tavoitteeksi validointitietojen tarkkuuspisteet (val_accuracy) ja määritteli viritystyölle mittareita määrittämällä tavoitemittarin nimen ja säännöllisen lausekkeen (regex). Säännöllistä lauseketta käytetään vastaamaan algoritmin lokitulostusta ja keräämään mittareiden numeeriset arvot. Seuraavaksi määritämme hyperparametrialueet, joista valitaan parhaat hyperparametriarvot. Asetamme viritystöiden kokonaismääräksi kuusi ja jaamme nämä työt kolmelle eri kohdalle Amazonin elastinen laskentapilvi (Amazon EC2) -esiintymät rinnakkaisten viritystöiden suorittamiseen. Katso seuraava koodi:

# Define objective metric per framework, based on which the best model will be selected.
metric_definitions_per_model = {
    "tensorflow": {
        "metrics": [{"Name": "val_accuracy", "Regex": "val_accuracy: ([0-9.]+)"}],
        "type": "Maximize",
    }
}

# You can select from the hyperparameters supported by the model, and configure ranges of values to be searched for training the optimal model.(https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-ranges.html)
hyperparameter_ranges = {
    "adam-learning-rate": ContinuousParameter(0.00001, 0.01, scaling_type="Logarithmic")
}

# Increase the total number of training jobs run by AMT, for increased accuracy (and training time).
max_jobs = 6
# Change parallel training jobs run by AMT to reduce total training time, constrained by your account limits.
# if max_jobs=max_parallel_jobs then Bayesian search turns to Random.
max_parallel_jobs = 3

Välitämme nämä arvot luodaksemme SageMaker Estimator -objektin, samalla tavalla kuin teimme edellisessä hienosäätövaiheessa. Sen sijaan, että soittaisit fit toiminto Estimator esine, ohitamme Estimator objekti parametrina Hyperparametri Viritin rakentaja ja soita fit sen toiminto viritystöiden käynnistämiseksi:

hp_tuner = HyperparameterTuner(
    tc_estimator,
    metric_definitions["metrics"][0]["Name"],
    hyperparameter_ranges,
    metric_definitions["metrics"],
    max_jobs=max_jobs,
    max_parallel_jobs=max_parallel_jobs,
    objective_type=metric_definitions["type"],
    base_tuning_job_name=tuning_job_name,
)

# Launch a SageMaker Tuning job to search for the best hyperparameters
hp_tuner.fit({"training": training_data_path_updated})

Kun viritystyöt on suoritettu, otamme käyttöön mallin, joka antaa validointitietojoukon parhaan arviointimittarin pistemäärän, teemme johtopäätökset samalle viivästystestitietojoukolle, jota teimme edellisessä osiossa, ja laskemme arviointimittarit.

Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStart PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Tulokset osoittavat, että automaattisella mallivirityksellä valittu malli on huomattavasti parempi kuin edellisessä osiossa hienosäädetty malli pitotestiaineistossa.

Nimetty kokonaisuuden tunnistus

Nimettyjen entiteettien tunnistus (NER) on prosessi, jossa nimetyt entiteetit havaitaan ja luokitellaan ennalta määritettyihin luokkiin, kuten henkilöiden, organisaatioiden, sijaintien ja määrien nimiin. NER:lle on olemassa monia todellisia käyttötapauksia, kuten suositusmoottorit, asiakastukikorttien luokittelu ja osoittaminen oikealle osastolle, olennaisten tietojen poimiminen terveydenhuollon potilasraporteista sekä sisällön luokittelu uutisista ja blogeista.

Ota käyttöön ja suorita päättely esikoulutetulla mallilla

Käytämme En_core_web_md malli spacy kirjasto. spaCy on avoimen lähdekoodin NLP-kirjasto, jota voidaan käyttää erilaisiin tehtäviin ja jossa on sisäänrakennetut menetelmät NER:lle. Käytämme AWS PyTorch Deep Learning Containeria (DLC) komentosarjatilassa ja asennamme spaCy-kirjaston riippuvuutena säilön päälle.

Seuraavaksi aloituskohta skriptille (argumentti entry_point.py) on määritetty, joka sisältää kaiken koodin lataamista ja lataamista varten En_core_web_md mallintaa ja tehdä päätelmiä päätepisteeseen lähetettävistä tiedoista. Lopuksi meidän on vielä tarjottava model_data esikoulutettuna mallina päättelylle. Koska esikoulutettu En_core_web_md malli ladataan lennossa, mikä on määritelty merkintäskriptissä, tarjoamme tyhjän arkistotiedoston. Kun päätepiste on otettu käyttöön, voit kutsua päätepisteen suoraan muistikirjasta SageMaker Python SDK:n avulla. Predictor. Katso seuraava koodi:

model = PyTorchModel(
    model_data=f"{config.SOURCE_S3_PATH}/artifacts/models/empty.tar.gz",
    entry_point="entry_point.py",
    source_dir="../containers/entity_recognition",
    role=config.IAM_ROLE,
    framework_version="1.5.0",
    py_version="py3",
    code_location="s3://" + config.S3_BUCKET + "/code",
    env={
        "MMS_DEFAULT_RESPONSE_TIMEOUT": "3000"
    }
)
predictor = model.deploy(
    endpoint_name=endpoint_name,
    instance_type=config.HOSTING_INSTANCE_TYPE,
    initial_instance_count=1,
    serializer=JSONSerializer(),
    deserializer=JSONDeserializer()
)

Mallin syöttödata on tekstidokumentti. Nimetty entiteettimalli poimii tekstidokumentista substantiivikappaleet ja nimetyt entiteetit ja luokittelee ne useisiin eri tyyppeihin (kuten ihmiset, paikat ja organisaatiot). Esimerkkitulo ja -lähtö näkyvät seuraavassa koodissa. The start_char parametri osoittaa merkkipoikkeaman jakson alussa, ja end_char osoittaa jalan loppua.

data = {'text': 'Amazon SageMaker is a fully managed service that provides every developer and data scientist with the ability to build, train, and deploy machine learning (ML) models quickly.'}
response = predictor.predict(data=data)

print(response['entities'])
print(response['noun_chunks'])

[{'text': 'Amazon SageMaker', 'start_char': 0, 'end_char': 16, 'label': 'ORG'}]
[{'text': 'Amazon SageMaker', 'start_char': 0, 'end_char': 16}, {'text': 'a fully managed service', 'start_char': 20, 'end_char': 43}, {'text': 'that', 'start_char': 44, 'end_char': 48}, {'text': 'every developer and data scientist', 'start_char': 58, 'end_char': 92}, {'text': 'the ability', 'start_char': 98, 'end_char': 109}, {'text': 'ML', 'start_char': 156, 'end_char': 158}]

Hienosäädä esikoulutettu malli mukautetussa tietojoukossa

Tässä vaiheessa näytämme, kuinka voit hienosäätää valmiiksi koulutettuja NER-kielimalleja omassa tietojoukossasi. Hienosäätövaihe päivittää mallin parametrit omien tietojesi ominaispiirteiden tallentamiseksi ja tarkkuuden parantamiseksi. Käytämme WikiANN (PAN-X) -tietojoukon hienosäätääksesi DistilBERT-pohjainen koteloton Hugging Face muuntajamalli.

Tietojoukko on jaettu koulutus-, validointi- ja testijoukkoon.

Seuraavaksi määritämme mallin hyperparametrit ja käytämme AWS Hugging Face DLC:tä komentosarjatilassa (argumentti entry_point) käynnistääksesi hienosäätötyön:

hyperparameters = {
    "pretrained-model": "distilbert-base-uncased",
    "learning-rate": 2e-6,
    "num-train-epochs": 2,
    "batch-size": 16,
    "weight-decay": 1e-5,
    "early-stopping-patience": 2,
}

ner_estimator = HuggingFace(
    pytorch_version='1.10.2',
    py_version='py38',
    transformers_version="4.17.0",
    entry_point='training.py',
    source_dir='../containers/entity_recognition/finetuning',
    hyperparameters=hyperparameters,
    role=aws_role,
    instance_count=1,
    instance_type=training_instance_type,
    output_path=f"s3://{bucket}/{prefix}/output",
    code_location=f"s3://{bucket}/{prefix}/output",
    tags=[{'Key': config.TAG_KEY, 'Value': config.SOLUTION_PREFIX}],
    sagemaker_session=sess,
    volume_size=30,
    env={
        'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'
    },
    base_job_name = training_job_name
)

Kun hienosäätötyö on valmis, otamme käyttöön päätepisteen ja teemme kyselyn siitä päätepisteestä pitotestitiedoilla. Päätepisteen kyselyä varten jokainen tekstimerkkijono on muunnettava yhdeksi tai useaksi tokeniksi ja lähetettävä muuntajamalliin. Jokainen merkki saa ennustetun nimetyn entiteettitunnisteen. Koska jokainen tekstimerkkijono voidaan jakaa yhdeksi tai useaksi tunnisteeksi, meidän on kopioitava merkkijonon perustotuukseksi nimetty entiteettitagi kaikkiin siihen liittyviin merkkeihin. Mukana toimitettu muistikirja opastaa sinua tämän saavuttamiseksi.

Lopuksi käytämme Hugging Facen sisäänrakennettuja arviointimittareita peräkkäinen laskea arviointipisteitä pitotestin tiedoista. Käytetyt arviointimittarit ovat yleinen tarkkuus, yleinen palautus, yleinen F1 ja tarkkuus. Seuraava kuvakaappaus näyttää tuloksemme.

Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStart PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Paranna hienosäätösuorituskykyä SageMakerin automaattisen mallin virityksen avulla

Tekstiluokituksen tapaan näytämme, kuinka voit parantaa mallin suorituskykyä entisestään hienosäätämällä mallia SageMakerin automaattisella mallivirityksellä. Viritystyön suorittamiseksi meidän on määritettävä objektiivinen mittari, jota haluamme käyttää mallin suorituskyvyn arvioimiseen validointitietojoukossa (tässä tapauksessa F1-pisteet), hyperparametrialueet parhaiden hyperparametriarvojen valitsemiseksi sekä viritystyön kokoonpanot, kuten esim. viritystöiden enimmäismäärä ja samanaikaisesti käynnistettävien rinnakkaisten töiden määrä:

hyperparameters_range = {
    "learning-rate": ContinuousParameter(1e-5, 0.1, scaling_type="Logarithmic"),
    "weight-decay": ContinuousParameter(1e-6, 1e-2, scaling_type="Logarithmic"),
}

tuner = HyperparameterTuner(
    estimator,
    "f1",
    hyperparameters_range,
    [{"Name": "f1", "Regex": "'eval_f1': ([0-9.]+)"}],
    max_jobs=6,
    max_parallel_jobs=3,
    objective_type="Maximize",
    base_tuning_job_name=tuning_job_name,
)

tuner.fit({
    "train": f"s3://{bucket}/{prefix}/train/",
    "validation": f"s3://{bucket}/{prefix}/validation/",
}, logs=True)

Kun viritystyöt on suoritettu, otamme käyttöön mallin, joka antaa validointitietojoukon parhaan arviointimittarin pistemäärän, teemme johtopäätökset samalle viivästystestitietojoukolle, jota teimme edellisessä osiossa, ja laskemme arviointimittarit.

Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStart PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Näemme, että HPO-mallilla saavutetaan huomattavasti parempi suorituskyky kaikilla mittareilla.

Kysymykseen vastaaminen

Kysymyksiin vastaaminen on hyödyllistä, kun haluat kysyä suuresta tekstimäärästä tiettyä tietoa. Sen avulla käyttäjä voi ilmaista kysymyksen luonnollisella kielellä ja saada välittömän ja lyhyen vastauksen. NLP:llä toimivia kysymyksiin vastausjärjestelmiä voidaan käyttää hakukoneissa ja puhelinkeskusteluliitännöissä.

Ota käyttöön ja suorita päättely esikoulutetulla mallilla

Valmiiksi koulutettu mallimme on EQA (Extractive Question Response) -malli bert-large-uncased-koko-sana-masking-finetuned-squad rakennettu Hugging Facen Transformer-malliin. Käytämme AWS PyTorch DLC:tä komentosarjatilassa ja asennamme muuntajat kirjasto kontin päällä olevana riippuvuutena. Kuten NER-tehtävässä, tarjoamme argumentissa tyhjän arkistotiedoston model_data koska esikoulutettu malli ladataan lennossa. Kun päätepiste on otettu käyttöön, voit kutsua päätepisteen suoraan muistikirjasta SageMaker Python SDK:n avulla. Predictor. Katso seuraava koodi:

model = PyTorchModel(
    model_data=f"{config.SOURCE_S3_PATH}/artifacts/models/empty.tar.gz",
    entry_point="entry_point.py",
    source_dir="../containers/question_answering",
    role=config.IAM_ROLE,
    framework_version="1.5.0",
    py_version="py3",
    code_location="s3://" + config.S3_BUCKET + "/code",
    env={
        "MODEL_ASSETS_S3_BUCKET": config.SOURCE_S3_BUCKET,
        "MODEL_ASSETS_S3_PREFIX": f"{config.SOURCE_S3_PREFIX}/artifacts/models/question_answering/",
        "MMS_DEFAULT_RESPONSE_TIMEOUT": "3000",
    },
)

Kun päätepiste on otettu käyttöön onnistuneesti ja ennustaja on määritetty, voimme kokeilla kysymykseen vastausmallia esimerkkisyötteillä. Tämä malli on esikoulutettu Stanfordin kysymys- ja vastaustietojoukko (SQuAD) tietojoukko. Tämä tietojoukko otettiin käyttöön siinä toivossa, että se edistäisi kysymysten vastausmallinnuksen alaa. Se on luetun ymmärtämisen tietojoukko, joka koostuu kohdista, kysymyksistä ja vastauksista.

Meidän tarvitsee vain rakentaa sanakirjaobjekti kahdella avaimella. context on teksti, josta haluamme hakea tietoja. question on luonnollisen kielen kysely, joka määrittää, mitä tietoja olemme kiinnostuneita poimimaan. Me kutsumme predict ennustajallamme, ja meidän pitäisi saada vastaus päätepisteestä, joka sisältää todennäköisimpiä vastauksia:

data = {'question': 'what is my name?', 'context': "my name is thom"}
response = predictor.predict(data=data)

Meillä on vastaus, ja voimme tulostaa todennäköisimmin edellisestä tekstistä poimitut vastaukset. Jokaisella vastauksella on luotettavuuspiste, jota käytetään luokitteluun (mutta tätä pistettä ei pidä tulkita todelliseksi todennäköisyydeksi). Kirjaimellisen vastauksen lisäksi saat myös vastauksen alku- ja loppumerkkiindeksit alkuperäisestä kontekstista:

print(response['answers'])
[{'score': 0.9793591499328613, 'start': 11, 'end': 15, 'answer': 'thom'}, 
{'score': 0.02019440196454525, 'start': 0, 'end': 15, 'answer': 'my name is thom'}, 
{'score': 4.349117443780415e-05, 'start': 3, 'end': 15, 'answer': 'name is thom'}]

Nyt hienosäädämme tätä mallia omalla mukautetulla tietojoukollamme saadaksemme parempia tuloksia.

Hienosäädä esikoulutettu malli mukautetussa tietojoukossa

Tässä vaiheessa näytämme, kuinka voit hienosäätää valmiiksi koulutettuja kielimalleja EQA:lle omassa tietojoukossasi. Hienosäätövaihe päivittää mallin parametrit omien tietojesi ominaispiirteiden tallentamiseksi ja tarkkuuden parantamiseksi. Käytämme SQUAD2.0 tietojoukko tekstin upotusmallin hienosäätämiseksi bert-base-uncased Hugging Facesta. Hienosäätöön käytettävissä oleva malli liittää tekstin upotusmalliin vastauksen poimivan kerroksen ja alustaa kerroksen parametrit satunnaisiin arvoihin. Hienosäätövaihe hienosäätää kaikki mallin parametrit minimoimaan ennustusvirheen tulodatassa ja palauttaa hienosäädetyn mallin.

Kuten tekstin luokittelutehtävä, tietojoukko (SQuAD2.0) on jaettu koulutukseen, validointiin ja testijoukkoon.

Seuraavaksi määritämme mallin hyperparametrit ja käytämme JumpStart API hienosäätötyön käynnistäminen:

hyperparameters = {'epochs': '3', 'adam-learning-rate': '2e-05', 'batch-size': '16'}

eqa_estimator = Estimator(
    role=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,
    tags=[{'Key': config.TAG_KEY, 'Value': config.SOLUTION_PREFIX}],
    base_job_name=training_job_name,
    debugger_hook_config=False,
)

training_data_path_updated = f"s3://{config.S3_BUCKET}/{prefix}/train"
# Launch a SageMaker Training job by passing s3 path of the training data
eqa_estimator.fit({"training": training_data_path_updated}, logs=True)

Kun hienosäätötyö on valmis, otamme mallin käyttöön, teemme johtopäätöksen kestotestitietojoukosta ja laskemme arviointimitat. Käytetyt arviointimittarit ovat keskimääräinen tarkka vastaavuuspiste ja keskimääräinen F1-pistemäärä. Seuraava kuvakaappaus näyttää tulokset.

Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStart PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Paranna hienosäätösuorituskykyä SageMakerin automaattisen mallin virityksen avulla

Edellisten osioiden tapaan käytämme a HyperparameterTuner vastustaa viritystöiden käynnistämistä:

hyperparameter_ranges = {
    "adam-learning-rate": ContinuousParameter(0.00001, 0.01, scaling_type="Logarithmic"),
    "epochs": IntegerParameter(3, 10),
    "train-only-top-layer": CategoricalParameter(["True", "False"]),
}

hp_tuner = HyperparameterTuner(
    eqa_estimator,
    metric_definitions["metrics"][0]["Name"],
    hyperparameter_ranges,
    metric_definitions["metrics"],
    max_jobs=max_jobs,
    max_parallel_jobs=max_parallel_jobs,
    objective_type=metric_definitions["type"],
    base_tuning_job_name=training_job_name,
)

# Launch a SageMaker Tuning job to search for the best hyperparameters
hp_tuner.fit({"training": training_data_path_updated})

Kun viritystyöt on suoritettu, otamme käyttöön mallin, joka antaa validointitietojoukon parhaan arviointimittarin pistemäärän, teemme johtopäätökset samalle viivästystestitietojoukolle, jota teimme edellisessä osiossa, ja laskemme arviointimittarit.

Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStart PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Näemme, että HPO:lla varustettu malli näyttää huomattavasti paremman suorituskyvyn pitotestidatalla.

Suhteen purkaminen

Suhteiden purkaminen on tehtävä poimia tekstistä semanttisia suhteita, joita yleensä esiintyy kahden tai useamman entiteetin välillä. Suhteiden poimiminen on tärkeä rooli jäsennellyn tiedon poimimisessa jäsentämättömistä lähteistä, kuten raakatekstistä. Tässä muistikirjassa esittelemme kaksi käyttötapausta suhteen poimimiseen.

Hienosäädä esikoulutettu malli mukautetussa tietojoukossa

Käytämme suhteen poimintamallia, joka on rakennettu a BERT-pohjainen koteloton malli, jossa käytetään muuntajia Hugging Face muuntajat kirjasto. Hienosäätömalli liittää lineaarisen luokittelukerroksen, joka ottaa tekstin upotusmallin tulostaman merkkiupotusten parin ja alustaa kerroksen parametrit satunnaisiin arvoihin. Hienosäätövaihe hienosäätää kaikki mallin parametrit minimoimaan ennustusvirheen tulodatassa ja palauttaa hienosäädetyn mallin.

Aineisto, jonka mallia hienosäädämme, on SemEval-2010 Tehtävä 8. Hienosäädöllä palautettua mallia voidaan käyttää edelleen päätelmiä varten.

Tietojoukko sisältää koulutus-, validointi- ja testisarjat.

Käytämme AWS PyTorch DLC:tä SageMaker Python SDK:n komentosarjatilan kanssa, jossa transformers kirjasto asennetaan riippuvuutena säilön päälle. Määrittelemme SageMakerin PyTorch estimaattori ja joukko hyperparametrejä, kuten esiopetettu malli, oppimisnopeus ja epookkiluvut hienosäädön suorittamiseksi. Suhteen erotusmallin hienosäätökoodi on määritelty kohdassa entry_point.py. Katso seuraava koodi:

hyperparameters = {
    "pretrained-model": "bert-base-uncased",
    "learning-rate": 0.0002,
    "max-epoch": 2,
    "weight-decay": 0,
    "batch-size": 16,
    "accumulate-grad-batches": 2,
    "gradient-clip-val": 1.0
}

re_estimator = PyTorch(
    framework_version='1.5.0',
    py_version='py3',
    entry_point='entry_point.py',
    source_dir='../containers/relationship_extraction',
    hyperparameters=hyperparameters,
    role=aws_role,
    instance_count=1,
    instance_type=train_instance_type,
    output_path=f"s3://{bucket}/{prefix}/output",
    code_location=f"s3://{bucket}/{prefix}/output",
    base_job_name=training_job_name,
    tags=[{'Key': config.TAG_KEY, 'Value': config.SOLUTION_PREFIX}],
    sagemaker_session=sess,
    volume_size=30,
    env={
        'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'
    },
    debugger_hook_config=False
)

re_estimator.fit(
    {
        "train": f"s3://{bucket}/{prefix}/train/",
        "validation": f"s3://{bucket}/{prefix}/validation/",
    }
)

Koulutustehtävän suorittaminen kestää noin 31 minuuttia. Käytämme tätä mallia tehdäksemme päätelmiä pitotestijoukosta ja arvioidaksemme tuloksia käyttämällä tarkkuus, F1 makroja F1 mikro tulokset. Seuraava kuvakaappaus näyttää arviointipisteet.

Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStart PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Paranna hienosäätösuorituskykyä SageMakerin automaattisen mallin virityksen avulla

Edellisten osioiden tapaan käytämme a HyperparameterTuner objekti vuorovaikutuksessa SageMakerin hyperparametrien virityssovellusliittymien kanssa. Voimme aloittaa hyperparametrien viritystyön soittamalla fit menetelmä:

hyperparameters = {
    "max-epoch": 2,
    "weight-decay": 0,
    "batch-size": 16,
    "accumulate-grad-batches": 2,
    "gradient-clip-val": 1.0
}

estimator = PyTorch(
    framework_version='1.5.0',
    py_version='py3',
    entry_point='entry_point.py',
    source_dir='../containers/relationship_extraction',
    hyperparameters=hyperparameters,
    role=aws_role,
    instance_count=1,
    instance_type=train_instance_type,
    output_path=f"s3://{bucket}/{prefix}/output",
    code_location=f"s3://{bucket}/{prefix}/output",
    base_job_name=tuning_job_name,
    tags=[{'Key': config.TAG_KEY, 'Value': config.SOLUTION_PREFIX}],
    sagemaker_session=sess,
    volume_size=30,
    env={
        'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'
    },
    debugger_hook_config=False
    
    re_tuner = HyperparameterTuner(
    estimator,
    metric_definitions["metrics"][0]["Name"],
    hyperparameter_ranges,
    metric_definitions["metrics"],
    max_jobs=max_jobs,
    max_parallel_jobs=max_parallel_jobs,
    objective_type=metric_definitions["type"],
    base_tuning_job_name=tuning_job_name,
)

re_tuner.fit({
    "train": f"s3://{bucket}/{prefix}/train/",
    "validation": f"s3://{bucket}/{prefix}/validation/",
})

Kun hyperparametrien viritystyö on valmis, teemme päättelyn ja tarkistamme arviointipisteet.

Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStart PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Voimme nähdä, että malli, jossa on HPO, näyttää paremman suorituskyvyn pitotestitiedoissa.

Asiakirjan yhteenveto

Asiakirjan tai tekstin yhteenveto on tehtävä tiivistää suuria määriä tekstidataa pienemmäksi osajoukoksi merkityksellisiä lauseita, jotka edustavat alkuperäisen sisällön tärkeintä tai oleellisinta tietoa. Asiakirjan yhteenveto on hyödyllinen tekniikka tärkeiden tietojen tislaamiseen suurista tekstidatamääristä muutamaan lauseeseen. Tekstin yhteenvetoa käytetään monissa käyttötapauksissa, kuten asiakirjojen käsittelyssä ja tiedon poimimisessa blogeista, artikkeleista ja uutisista.

Tämä muistikirja esittelee asiakirjan yhteenvetomallin käyttöönoton T5-pohja mistä Hugging Face muuntajat kirjasto. Testaamme myös käyttöönotettuja päätepisteitä tekstiartikkelin avulla ja arvioimme tuloksia käyttämällä sisäänrakennettua Hugging Face -arviointimittaria RED.

Kuten kysymysvastaamiseen ja NER-muistikirjoihin, käytämme PyTorchModel SageMaker Python SDK:sta yhdessä an entry_point.py komentosarja, joka lataa T5-perusmallin HTTPS-päätepisteeseen. Kun päätepiste on otettu käyttöön onnistuneesti, voimme lähettää tekstiartikkelin päätepisteeseen saadaksemme ennustevastauksen:

ARTICLE = """ Documents are a primary tool for communication,
collaboration, record keeping, and transactions across industries,
including financial, medical, legal, and real estate. The format of data
can pose an extra challenge in data extraction, especially if the content
is typed, handwritten, or embedded in a form or table. Furthermore,
extracting data from your documents is manual, error-prone, time-consuming,
expensive, and does not scale. Amazon Textract is a machine learning (ML)
service that extracts printed text and other data from documents as well as
tables and forms. We’re pleased to announce two new features for Amazon
Textract: support for handwriting in English documents, and expanding
language support for extracting printed text from documents typed in
Spanish, Portuguese, French, German, and Italian. Many documents, such as
medical intake forms or employment applications, contain both handwritten
and printed text. The ability to extract text and handwriting has been a
need our customers have asked us for. Amazon Textract can now extract
printed text and handwriting from documents written in English with high
confidence scores, whether it’s free-form text or text embedded in tables
and forms. Documents can also contain a mix of typed text or handwritten
text. The following image shows an example input document containing a mix
of typed and handwritten text, and its converted output document.."""

data = {'text': ARTICLE}
response = predictor.predict(data=data)
print(response['summary'])

"""Amazon Textract is a machine learning (ML) service that extracts printed text 
and other data from documents as well as tables and forms . 
customers can now extract and process documents in more languages .
support for handwriting in english documents and expanding language support for extracting 
printed text ."""

Seuraavaksi arvioimme ja vertaamme tekstiartikkelia ja yhteenvetotulosta ROUGE-mittarin avulla. Lasketaan kolme arviointimittaria: rougeN, rougeLja rougeLsum. rougeN mittaa vastaavuuksien määrää n-grams mallin luoman tekstin (yhteenvedon tulos) ja a. välillä reference (sijoita teksti). Mittarit rougeL ja rougeLsum mittaa pisimmät vastaavat sanasekvenssit etsimällä pisimpiä yhteisiä osamerkkijonoja luoduista ja viiteyhteenvedoista. Jokaiselle mittarille lasketaan tarkkuuden, muistamisen ja F1-pisteiden luottamusvälit.Katso seuraava koodi:

results = rouge.compute(predictions=[response['summary']], references=[ARTICLE])

rouge1: AggregateScore(low=Score(precision=1.0, recall=0.1070615034168565, fmeasure=0.1934156378600823), 
mid=Score(precision=1.0, recall=0.1070615034168565, fmeasure=0.1934156378600823), high=Score(precision=1.0, recall=0.1070615034168565, fmeasure=0.1934156378600823))

rouge2: AggregateScore(low=Score(precision=0.9565217391304348, recall=0.1004566210045662, fmeasure=0.18181818181818182), 
mid=Score(precision=0.9565217391304348, recall=0.1004566210045662, fmeasure=0.18181818181818182), high=Score(precision=0.9565217391304348, recall=0.1004566210045662, 
fmeasure=0.18181818181818182))

rougeL: AggregateScore(low=Score(precision=0.8085106382978723, recall=0.08656036446469248, fmeasure=0.15637860082304528), 
mid=Score(precision=0.8085106382978723, recall=0.08656036446469248, fmeasure=0.15637860082304528), high=Score(precision=0.8085106382978723, recall=0.08656036446469248, 
fmeasure=0.15637860082304528))

rougeLsum: AggregateScore(low=Score(precision=0.9787234042553191, recall=0.10478359908883828, fmeasure=0.18930041152263374), 
mid=Score(precision=0.9787234042553191, recall=0.10478359908883828, fmeasure=0.18930041152263374), high=Score(precision=0.9787234042553191, recall=0.10478359908883828, 
fmeasure=0.18930041152263374))

Puhdistaa

Tälle ratkaisulle luodut resurssit voidaan poistaa käyttämällä Poista kaikki resurssit -painiketta SageMaker Studio IDE:stä. Jokaisessa muistikirjassa on myös puhdistusosio, jossa on koodi päätepisteiden poistamista varten.

Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStart PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Yhteenveto

Tässä viestissä osoitimme, kuinka käyttää huippuluokan ML-tekniikoita viiden erilaisen NLP-tehtävän ratkaisemiseen: dokumenttien yhteenveto, tekstin luokittelu, kysymykset ja vastaukset, nimettyjen entiteettien tunnistus ja suhteiden purkaminen Jumpstartilla. Aloita Jumpstartilla nyt!


Tietoja Tekijät

Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStart PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.Tohtori Xin Huang on Amazon SageMaker JumpStartin ja Amazon SageMakerin sisäänrakennettujen algoritmien soveltava tutkija. Hän keskittyy skaalautuvien koneoppimisalgoritmien kehittämiseen. Hänen tutkimusintressiään ovat luonnollisen kielen prosessointi, selitettävissä oleva syvä oppiminen taulukkotiedoista ja ei-parametrisen aika-avaruusklusteroinnin robusti analyysi. Hän on julkaissut monia artikkeleita ACL-, ICDM-, KDD-konferensseissa ja Royal Statistical Society: Series A -lehdessä.

Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStart PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.Vivek Gangasani on vanhempi koneoppimisratkaisuarkkitehti Amazon Web Servicesissä. Hän auttaa startup-yrityksiä rakentamaan ja toteuttamaan AI/ML-sovelluksia. Hän keskittyy tällä hetkellä yhdistämään taustansa Containers- ja Machine Learning -alalla tarjotakseen ratkaisuja MLOps-, ML-päätelmä- ja matalan koodin ML:ssä. Vapaa-ajallaan hän nauttii uusien ravintoloiden kokeilemisesta ja uusien tekoälyn ja syväoppimisen trendien tutkimisesta.

Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStart PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.Geremy Cohen on AWS-ratkaisuarkkitehti, jossa hän auttaa asiakkaita rakentamaan huippuluokan pilvipohjaisia ​​ratkaisuja. Vapaa-ajallaan hän nauttii lyhyistä kävelyretkistä rannalla, tutustu lahden alueeseen perheensä kanssa, korjaa asiat talon ympäri, rikkoo talon ympärillä ja grillaa.

Tunnista tärkeimmät oivallukset tekstidokumenteista hienosäädön ja HPO:n avulla Amazon SageMaker JumpStart PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.Neelam Koshiya on AWS: n yritysratkaisuarkkitehti. Hänen nykyinen painopiste on auttaa yritysasiakkaita heidän pilvipalvelumatkalla strategisten liiketoimintatulosten saavuttamiseksi. Vapaa-ajallaan hän nauttii lukemisesta ja ulkona olemisesta.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen