Siirrä oppimista TensorFlow-kuvaluokitusmalleille Amazon SageMakerissa

Amazon Sage Maker tarjoaa sviitin sisäänrakennetut algoritmit, valmiiksi koulutetut mallitja valmiiksi rakennetut ratkaisumallit auttaa datatieteilijöitä ja koneoppimisen (ML) harjoittajia pääsemään nopeasti alkuun ML-mallien koulutuksessa ja käyttöönotossa. Voit käyttää näitä algoritmeja ja malleja sekä ohjattuun että ohjaamattomaan oppimiseen. Ne voivat käsitellä erityyppisiä syöttötietoja, mukaan lukien taulukko, kuva ja teksti.

Tästä päivästä alkaen SageMaker tarjoaa uuden sisäänrakennetun algoritmin kuvien luokitteluun: Kuvaluokitus – TensorFlow. Se on valvottu oppimisalgoritmi, joka tukee siirtooppimista monille esikoulutetuille malleille, jotka ovat saatavilla TensorFlow -napa. Se ottaa kuvan syötteenä ja tulostaa todennäköisyyden jokaiselle luokkatunnisteelle. Voit hienosäätää näitä esikoulutettuja malleja siirtooppimisen avulla, vaikka suuri määrä harjoituskuvia ei olisi käytettävissä. Se on saatavilla SageMakerin kautta sisäänrakennetut algoritmit samoin kuin SageMaker JumpStart UI sisällä Amazon SageMaker Studio. Katso lisätietoja sen dokumentaatiosta Kuvaluokitus – TensorFlow ja esimerkkimuistikirja SageMaker TensorFlow -kuvien luokittelun esittely.

Kuvien luokittelu TensorFlow-sovelluksella SageMakerissa tarjoaa siirtooppimista monissa TensorFlow Hubissa saatavilla olevissa esikoulutetuissa malleissa. Harjoitustiedoissa olevien luokkamerkintöjen lukumäärän mukaan esikoulutettuun TensorFlow Hub -malliin on liitetty luokituskerros. Luokittelukerros koostuu dropout-kerroksesta ja tiheästä kerroksesta, joka on täysin yhdistetty kerros 2-normin regularisaattorilla, joka alustetaan satunnaisilla painoilla. Malliharjoittelussa on hyperparametrit pudotuskerroksen pudotussuhteelle ja L2-regulaatiokerroin tiheälle kerrokselle. Sitten joko koko verkko, mukaan lukien esiopetettu malli, tai vain ylin luokituskerros voidaan hienosäätää uudella harjoitusdatalla. Tässä siirtooppimistilassa voit saavuttaa harjoittelun jopa pienemmällä tietojoukolla.

Kuinka käyttää uutta TensorFlow-kuvan luokittelualgoritmia

Tässä osiossa kuvataan, kuinka TensorFlow-kuvan luokittelualgoritmia käytetään SageMaker Python SDK. Katso lisätietoja sen käyttämisestä Studion käyttöliittymästä SageMaker JumpStart.

Algoritmi tukee siirtooppimista kohdassa luetelluille esikoulutetuille malleille TensorFlow-napamallit. Jokainen malli tunnistetaan yksilöllisesti model_id. Seuraava koodi näyttää, kuinka voit hienosäätää MobileNet V2 1.00 224 -tunnuksen model_id tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4 mukautetussa harjoitustietojoukossa. Jokaiselle model_id, aloittaakseen SageMaker-koulutustyön arviointityökalu SageMaker Python SDK:n luokkaa, sinun on noudettava Docker-kuvan URI, koulutusohjelman URI ja esikoulutettu mallin URI SageMakerin aputoimintojen kautta. Harjoituskomentosarjan URI sisältää kaiken tarvittavan koodin tietojen käsittelyyn, esiopetetun mallin lataamiseen, mallin harjoitteluun ja opetetun mallin tallentamiseen päätelmiä varten. Esiopetettu mallin URI sisältää esiopetetun malliarkkitehtuurin määritelmän ja malliparametrit. Huomaa, että Docker-kuvan URI ja harjoitusskriptin URI ovat samat kaikissa TensorFlow-kuvan luokitusmalleissa. Valmiiksi koulutettu mallin URI on tietty mallikohtainen. Valmiiksi koulutetut mallitarballit on ladattu valmiiksi TensorFlow Hubista ja tallennettu asianmukaisella malliallekirjoituksella Amazonin yksinkertainen tallennuspalvelu (Amazon S3) kauhoja, jotta koulutustyö suoritetaan verkkoeristettynä. Katso seuraava koodi:

from sagemaker import image_uris, model_uris, script_uris
from sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4", "*"
training_instance_type = "ml.p3.2xlarge"

# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)

# 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 for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-ic-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

Näiden mallikohtaisten harjoitusartefaktien avulla voit rakentaa objektin arviointityökalu luokka:

# Create SageMaker Estimator instance
tf_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,
)

Seuraavaksi sinun on ehkä muutettava harjoitushyperparametrien oletusarvoja mukautetun tietojoukon oppimisen siirtämiseksi, jotka on lueteltu hyperparametrien. Voit hakea Python-sanakirjan näistä hyperparametreista niiden oletusarvoineen soittamalla hyperparameters.retrieve_default, päivitä ne tarvittaessa ja välitä ne sitten Estimator-luokkaan. Huomaa, että joidenkin hyperparametrien oletusarvot ovat erilaiset eri malleissa. Suurille malleille oletuserän koko on pienempi ja train_only_top_layer hyperparametri on asetettu arvoon True. Hyperparametri Train_only_top_layer määrittää, mitkä mallin parametrit muuttuvat hienosäätöprosessin aikana. Jos train_only_top_layer is True, luokituskerrosten parametrit muuttuvat ja loput parametrit pysyvät vakioina hienosäätöprosessin aikana. Toisaalta jos train_only_top_layer is False, kaikki mallin parametrit ovat hienosäädettyjä. Katso seuraava koodi:

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["epochs"] = "5"

Seuraava koodi tarjoaa oletusarvoisen harjoitustietojoukon, jota isännöidään S3-ryhmissä. Tarjoamme tf_flowers tietojoukko oletustietojoukoksi mallien hienosäätöä varten. Tietojoukko sisältää kuvia viidestä kukkatyypistä. Tietojoukko on ladattu osoitteesta TensorFlow alla Apache 2.0 -lisenssi.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/tf_flowers/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

Lopuksi käynnistä SageMaker-koulutustyö mallin hienosäätöä varten soittamalla .fit Estimator-luokan objektissa, kun ohitetaan harjoitustietojoukon S3-sijainti:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Lisätietoja uuden SageMaker TensorFlow -kuvan luokittelualgoritmin käyttämisestä oppimisen siirtämiseen mukautetussa tietojoukossa, hienosäädetyn mallin käyttöönotto, johtopäätöksen tekeminen käyttöönotetusta mallista ja esikoulutetun mallin käyttöönotto sellaisenaan ilman ensimmäistä hienosäätöä. katso mukautetussa tietojoukossa seuraava esimerkkimuistikirja: SageMaker TensorFlow -kuvien luokittelun esittely.

Tulo-/lähtöliitäntä TensorFlow-kuvan luokittelualgoritmille

Voit hienosäätää jokaista luettelossa lueteltua esikoulutettua mallia TensorFlow-napamallit mihin tahansa tietojoukkoon, joka sisältää kuvia, jotka kuuluvat mihin tahansa määrään luokkia. Tavoitteena on minimoida syötetietojen ennustusvirhe. Hienosäädöllä palautettua mallia voidaan käyttää edelleen päätelmiä varten. Seuraavassa on ohjeet siitä, kuinka harjoitustiedot tulee muotoilla malliin syötettäväksi:

  • panos – Hakemisto, jossa on niin monta alihakemistoa kuin luokkia. Jokaisessa alihakemistossa tulee olla kyseiseen luokkaan kuuluvia kuvia .jpg-, .jpeg- tai .png-muodossa.
  • ulostulo – Hienosäädetty malli, jota voidaan käyttää johtopäätösten tekemiseen tai jota voidaan harjoitella lisäkoulutuksen avulla. Hienosäädettyyn malliin lisätään esi- ja jälkikäsittely-allekirjoitus siten, että se ottaa syötteeksi raakaa .jpg-kuvaa ja palauttaa luokkatodennäköisyydet. Mallien mukana tallennetaan tiedosto, joka yhdistää luokkaindeksit luokkatunnisteisiin.

Syöttöhakemiston tulee näyttää seuraavalta esimerkiltä, ​​jos harjoitustiedot sisältävät kuvia kahdesta luokasta: roses ja dandelion. S3-polun pitäisi näyttää tältä s3://bucket_name/input_directory/. Huomaa jälki / vaaditaan. Kansioiden nimet ja roses, dandelion, ja .jpg-tiedostojen nimet voivat olla mitä tahansa. S3-ämpäri opetetun mallin mukana tallennettava tarrakartoitustiedosto kartoittaa kansionimet ruusut ja voikukka mallin tulostamien luokkatodennäköisyyksien luettelon indekseihin. Kartoitus noudattaa kansioiden nimien aakkosjärjestystä. Seuraavassa esimerkissä mallin tulosteluettelon indeksi 0 vastaa dandelion, ja indeksi 1 vastaa roses.

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

Päätelmä TensorFlow-kuvan luokittelualgoritmista

Luotuja malleja voidaan isännöidä johtopäätösten tekemiseksi ja ne voivat tukea koodattuja .jpg-, .jpeg- ja .png-kuvamuotoja. application/x-image sisältötyyppi. Syötetyn kuvan kokoa muutetaan automaattisesti. Tulos sisältää todennäköisyysarvot, kaikkien luokkien luokkatunnisteet ja ennustetun nimiön, joka vastaa luokkaindeksiä suurimmalla todennäköisyydellä JSON-muotoon koodattuina. TensorFlow-kuvan luokittelumalli käsittelee yhden kuvan pyyntöä kohti ja tulostaa vain yhden rivin JSON-tiedostoon. Seuraavassa on esimerkki vastauksesta JSON:ssa:

accept: application/json;verbose

 {"probabilities": [prob_0, prob_1, prob_2, ...],
  "labels":        [label_0, label_1, label_2, ...],
  "predicted_label": predicted_label}

If accept asetetaan application/json, niin malli tulostaa vain todennäköisyyksiä. Katso lisätietoja koulutuksesta ja päätelmistä mallimuistikirjasta SageMaker TensorFlow -kuvien luokittelun esittely.

Käytä SageMakerin sisäänrakennettuja algoritmeja JumpStart-käyttöliittymän kautta

Voit myös käyttää SageMaker TensorFlow -kuvaluokitusta ja mitä tahansa muita sisäänrakennettuja algoritmeja muutamalla napsautuksella JumpStart-käyttöliittymän kautta. JumpStart on SageMaker-ominaisuus, jonka avulla voit kouluttaa ja ottaa käyttöön sisäänrakennettuja algoritmeja ja esikoulutettuja malleja erilaisista ML-kehyksistä ja mallikeskittimistä graafisen käyttöliittymän kautta. Sen avulla voit myös ottaa käyttöön täysin kehittyneitä ML-ratkaisuja, jotka yhdistävät ML-malleja ja useita muita AWS-palveluita kohdennetun käyttötilanteen ratkaisemiseksi. Tarkista Suorita tekstiluokittelu Amazon SageMaker JumpStartilla käyttämällä TensorFlow Hub- ja Hugging Face -malleja oppiaksesi kuinka JumpStartin avulla voit kouluttaa algoritmin tai esiopetetun mallin muutamalla napsautuksella.

Yhteenveto

Tässä viestissä ilmoitimme sisäänrakennetun SageMaker TensorFlow -kuvaluokitusalgoritmin käynnistämisestä. Annoimme esimerkkikoodin kuinka siirtää oppimista mukautetussa tietojoukossa käyttämällä TensorFlow Hubin esikoulutettua mallia tämän algoritmin avulla. Katso lisätietoja dokumentointi ja esimerkki muistikirja.


Tietoja kirjoittajista

Siirrä oppimista TensorFlow-kuvaluokitusmalleille Amazon SageMaker PlatoBlockchain Data Intelligencessä. Pystysuuntainen haku. Ai.Tohtori Ashish Khetan on vanhempi soveltuva tutkija Amazon SageMakerin sisäänrakennetut algoritmit ja auttaa kehittämään koneoppimisalgoritmeja. Hän sai tohtorin tutkinnon Illinois Urbana-Champaignin yliopistosta. Hän on aktiivinen koneoppimisen ja tilastollisen päättelyn tutkija, ja hän on julkaissut monia artikkeleita NeurIPS-, ICML-, ICLR-, JMLR-, ACL- ja EMNLP-konferensseissa.

Siirrä oppimista TensorFlow-kuvaluokitusmalleille Amazon SageMaker PlatoBlockchain Data Intelligencessä. Pystysuuntainen haku. Ai.Tohtori Vivek Madan on soveltuva tutkija Amazon SageMaker JumpStart -tiimi. Hän sai tohtorin tutkinnon Illinois Urbana-Champaignin yliopistosta ja oli tutkijatohtorina Georgia Techissä. Hän on aktiivinen koneoppimisen ja algoritmisuunnittelun tutkija ja julkaissut julkaisuja EMNLP-, ICLR-, COLT-, FOCS- ja SODA-konferensseissa.

Siirrä oppimista TensorFlow-kuvaluokitusmalleille Amazon SageMaker PlatoBlockchain Data Intelligencessä. Pystysuuntainen haku. Ai.João Moura on AI/ML Specialist Solutions -arkkitehti Amazon Web Servicesissä. Hän keskittyy enimmäkseen NLP-käyttötapauksiin ja auttaa asiakkaita optimoimaan syvän oppimismallin koulutusta ja käyttöönottoa. Hän on myös aktiivinen matalan koodin ML-ratkaisujen ja ML-spesifisten laitteistojen kannattaja.

Siirrä oppimista TensorFlow-kuvaluokitusmalleille Amazon SageMaker PlatoBlockchain Data Intelligencessä. Pystysuuntainen haku. Ai.Raju Penmatcha on AWS: n vanhempi AI / ML-asiantuntijaratkaisuarkkitehti. Hän työskentelee koulutuksen, valtion ja voittoa tavoittelemattomien asiakkaiden kanssa koneoppimiseen ja tekoälyyn liittyvissä projekteissa ja auttaa heitä rakentamaan ratkaisuja AWS: n avulla. Kun hän ei auta asiakkaita, hän haluaa matkustaa uusiin paikkoihin.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen