Luo Amazon SageMaker -malleja PyTorch Model Zoo PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Luo Amazon SageMaker -malleja käyttämällä PyTorch Model Zooa

Laadukkaiden, koulutettujen koneoppimismallien (ML) käyttöönotto joko erä- tai reaaliaikaisten päättelyjen suorittamiseksi on kriittinen osa lisäarvoa asiakkaille. ML-kokeiluprosessi voi kuitenkin olla työlästä – on olemassa monia lähestymistapoja, jotka vaativat huomattavan määrän aikaa. Siksi esikoulutetut ML-mallit, kuten julkaisussa esitetyt PyTorchin mallieläintarha ovat niin hyödyllisiä. Amazon Sage Maker tarjoaa yhtenäisen käyttöliittymän erilaisten ML-mallien kokeilemiseen, ja PyTorch Model Zoo mahdollistaa mallien vaihtamisen helposti standardoidulla tavalla.

Tämä blogiviesti näyttää, kuinka ML-johtopäätös tehdään SageMakerin PyTorch Model Zoo -objektin tunnistusmallilla. PyTorch Model Zoon esikoulutetut ML-mallit ovat valmiita ja niitä voidaan helposti käyttää osana ML-sovelluksia. Näiden ML-mallien asettaminen SageMaker-päätepisteeksi tai SageMaker erämuunnos online- tai offline-päätelmien tekeminen on helppoa tässä blogikirjoituksessa kuvattujen vaiheiden avulla. Käytämme a Nopeampi R-CNN objektien tunnistusmalli ennalta määritettyjen objektiluokkien rajoituslaatikoiden ennustamiseen.

Käymme läpi kattavan esimerkin Faster R-CNN -objektintunnistusmallin painojen lataamisesta niiden tallentamiseen Amazonin yksinkertainen tallennuspalvelu (Amazon S3) kauhan ja aloituspistetiedoston kirjoittamiseen ja PyTorchModel API:n avainparametrien ymmärtämiseen. Lopuksi otamme käyttöön ML-mallin, teemme siitä päätelmiä käyttämällä SageMaker Batch Transformia, tarkastamme ML-mallin tulosteen ja opimme tulkitsemaan tuloksia. Tätä ratkaisua voidaan soveltaa mihin tahansa muuhun PyTorch Model Zoon esikoulutettuun malliin. Saatavilla olevien mallien luettelon löydät kohdasta PyTorch Model Zoo -dokumentaatio.

Ratkaisun yleiskatsaus

Tämä blogikirjoitus käy läpi seuraavat vaiheet. Katso kaikkien vaiheiden täydellinen toimiva versio, katso create_pytorch_model_sagemaker.ipynb

  • Vaihe 1: Asennus
  • Vaihe 2: ML-mallin lataaminen PyTorch Model Zoosta
  • Vaihe 3 Tallenna ja lataa ML-mallin artefaktit Amazon S3:een
  • Vaihe 4: Luo ML-mallin päättelykomentosarjat
  • Vaihe 5: SageMakerin erämuunnostyön käynnistäminen
  • Vaihe 6: Visualisoi tulokset

Arkkitehtuurikaavio

Hakemistorakenne

Tämän blogin koodi löytyy tästä GitHub-arkisto. Koodikanta sisältää kaiken, mitä tarvitsemme ML-mallin artefaktien rakentamiseen, muunnostyön käynnistämiseen ja tulosten visualisointiin.

Tämä on käyttämämme työnkulku. Kaikki seuraavat vaiheet viittaavat tämän rakenteen moduuleihin.

sagemaker_pytorch_model_zoo --> root directory
    |- inference.py --> entry point file
    |- create_pytorch_model_sagemaker.ipynb --> walks through all steps in this blog post
    |- cars.jpg --> input image

- sagemaker_torch_model_zoo kansion tulisi sisältää inference.py aloituspistetiedostona ja create_pytorch_model_sagemaker.ipynb mallin painojen lataamiseksi ja tallentamiseksi, SageMaker-malliobjektin luomiseksi ja lopuksi sen siirtämiseksi SageMakerin erämuunnostyöhön. Voit tuoda omia ML-mallejasi muuttamalla polkuja Notebookin Vaihe 1: asennusosiossa ja lataamalla uusi malli Vaiheessa 2: ML-mallin lataaminen PyTorch Model Zoo -osiosta. Muut alla olevat vaiheet säilyvät samoina.

Vaihe 1: Asennus

IAM-roolit

SageMaker suorittaa toimintoja SageMakerin hallinnoimassa infrastruktuurissa. SageMaker voi suorittaa vain toimintoja, jotka on määritelty muistikirjan mukana tulevassa SageMakerin IAM-suoritusroolissa. Katso tarkemmat ohjeet IAM-roolien luomisesta ja IAM-oikeuksien hallinnasta AWS SageMaker -roolien dokumentaatio. Voimme luoda uuden roolin tai voimme saada sen SageMaker (Studio) muistikirjaoletussuoritusrooli suorittamalla seuraavat koodirivit:

import sagemaker

session = sagemaker.Session()

# Set a default S3 bucket
default_bucket = session.default_bucket()

# Get the region
region = boto3.Session().region_name

# Get the SageMaker Execution Role
role_arn = sagemaker.get_execution_role()

Yllä oleva koodi saa muistikirjan ilmentymän SageMaker-suoritusroolin. Tämä on IAM-rooli, jonka loimme SageMaker- tai SageMaker Studio -muistikirjaesiintymäämme varten.

Käyttäjän määritettävissä olevat parametrit

Tässä ovat kaikki määritettävät parametrit, joita tarvitaan SageMaker-erämuunnostyömme rakentamiseen ja käynnistämiseen:

INSTANCE_TYPE= "ml.m5.xlarge"
INSTANCE_COUNT= 1
BUCKET = os.path.join("s3://", default_bucket)

DATA_PATH= os.path.join(BUCKET, "images")
IMAGE_NAME = "cars.jpg"
RANDOM_STRING_LENGTH= 16
MODEL_NAME= "FasterRCNNResnet50"

# Needs to be set to version 1.2 or higher to enable automatic PyTorch model repackaging
FRAMEWORK_VERSION= "1.2"
ENTRY_POINT_FILE_NAME= "inference.py"

SAGEMAKER_EXECUTION_ROLE_ARN= role_arn
MODEL_ARTIFACTS_FILE_NAME= os.path.join(BUCKET, "modelzoo/fasterrcnn_resnet50_fpn/model.tar.gz")
IMAGE_URI= sagemaker.image_uris.retrieve(framework="pytorch",
region=region,
version="1.9.1",
py_version="py38",
image_scope='inference',
instance_type=INSTANCE_TYPE)

Vaihe 2: Lataa ML-malli PyTorch Model Zoosta

Seuraavaksi määritämme PyTorch Model Zoo -objektin tunnistusmallin ja tallennamme sen ML-mallin painot. Tyypillisesti tallennamme PyTorch-mallin käyttämällä .pt- tai .pth-tiedostotunnistetta. Alla oleva koodinpätkä lataa valmiiksi koulutetun Faster R-CNN ResNet50 ML -mallin PyTorch Model Zoosta:

model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)

SageMaker erämuunnos vaatii syötteenä joitain mallipainoja, joten tallennamme esiopetetun ML-mallin nimellä model.pt. Jos haluamme ladata mukautetun mallin, voimme sen sijaan tallentaa mallin painot toisesta PyTorch-mallista nimellä model.pt.

H = 1080
W = 1920
scripted_fn = torch.jit.script(model, torch.randn(1, 3, H, W))
scripted_fn.save("model.pt")

Vaihe 3: Tallenna ja lataa ML-mallin artefaktit Amazon S3:een

Koska käytämme SageMaker-työkalua ML-johtopäätöksiin, meidän on ladattava mallin painot S3-ämpäriin. Voimme tehdä tämän käyttämällä seuraavia komentoja tai lataamalla ja yksinkertaisesti vetämällä ja pudottamalla tiedosto suoraan S3:een. Seuraavat komennot pakkaavat ensin sisällä olevat tiedostot model.pt tarballiin ja kopioi mallin painot paikalliselta koneeltamme S3-ämpäriin.

Huomautuksia: Jotta voit suorittaa seuraavat komennot, sinulla on oltava AWS-komentoriviliitäntä (AWS CLI) asennettu.

tar -czvf model.tar.gz model.pt
aws s3 cp model.tar.gz $MODEL_ARTIFACTS_FILE_NAME

Seuraavaksi kopioimme syöttökuvamme S3:een. Alla on kuvan koko S3-polku.

car_image_path = os.path.join(DATA_PATH, IMAGE_NAME)

Voimme kopioida tämän kuvan S3:lle toisella aws s3 cp -komennolla.

aws s3 cp cars.jpg $car_image_path

Vaihe 4: Luo ML-mallin päättelykomentosarjat

Nyt käymme läpi aloituspistetiedostomme, inference.py moduuli. Voimme ottaa käyttöön PyTorch-mallin, joka on koulutettu SageMakerin ulkopuolella PyTorchModel-luokan avulla. Ensin instantoimme PyTorchModelZoo-objektin. Tämän jälkeen rakennamme inference.py-tulopistetiedoston ML-päätelmien suorittamiseksi käyttämällä SageMaker-erämuunnoksia Amazon S3:ssa isännöidyille esimerkkitiedoille.

PyTorchModel-objektin ymmärtäminen

- PyTorchModel luokka SageMaker Python API:ssa antaa meille mahdollisuuden tehdä ML-johtopäätöksiä ladatun malliartefaktin avulla.

PyTorchModel-luokan käynnistämiseksi meidän on ymmärrettävä seuraavat syöttöparametrit:

  • name: Mallinimi; Suosittelemme käyttämään joko mallin nimeä + päivämäärä-aikaa tai satunnaista merkkijonoa + päivämäärä-aika ainutlaatuisuuden vuoksi.
  • model_data: Pakatun ML-mallin artefaktin S3-URI.
  • entry_point: Käyttäjän määrittämä Python-tiedosto, jota Docker-päättelykuva käyttää käsittelijöiden määrittämiseen saapuville pyynnöille. Koodi määrittelee mallin lataamisen, tulon esikäsittelyn, ennustuslogiikan ja tulosteen jälkikäsittelyn.
  • framework_version: On asetettava versioon 1.2 tai uudempi, jotta PyTorch-mallin automaattinen uudelleenpakkaus voidaan ottaa käyttöön.
  • source_dir: Aloituspistetiedoston hakemisto.
  • role: IAM-rooli AWS-palvelupyyntöjen tekemiseen.
  • image_uri: Käytä tätä Amazon ECR Docker -konttikuvaa pohjana ML-mallin laskentaympäristölle.
  • sagemaker_session: SageMaker-istunto.
  • py_version: Käytettävä Python-versio

Seuraava koodinpätkä instantoi PyTorchModel-luokan suorittamaan päätelmiä käyttämällä esikoulutettua PyTorch-mallia:

model = PyTorchModel(
               name=RANDOM_STRING,
               model_data=MODEL_ARTIFACTS_FILE_NAME,
               entry_point=ENTRY_POINT_FILE_NAME,
               framework_version=FRAMEWORK_VERSION,
               role=SAGEMAKER_EXECUTION_ROLE_ARN,
               sagemaker_session=sagemaker_session,
               image_uri=IMAGE_URI,
        )

Aloituspistetiedoston (inference.py) ymmärtäminen

Parametri entry_point osoittaa Python-tiedostoon nimeltä inference.py. Tämä aloituskohta määrittää mallin latauksen, tulon esikäsittelyn, ennustuslogiikan ja tulosteen jälkikäsittelyn. Se täydentää valmiiksi rakennetun PyTorchin ML-mallin palvelukoodia SageMaker Deep Learning Container kuva.

Inference.py sisältää seuraavat toiminnot. Esimerkissämme toteutamme model_fn, input_fn, predict_fn ja output_fn toiminnot ohittamaan oletusarvoinen PyTorch-päätelmien käsittelijä.

  1. model_fn: ottaa hakemiston, joka sisältää staattiset mallin tarkistuspisteet päättelykuvassa. Avaa ja lataa mallin määritetystä polusta ja palauttaa PyTorch-mallin.
  2. input_fn: Ottaa syötteenä saapuvan pyynnön hyötykuorman (request_body) ja saapuvan pyynnön sisältötyypin (request_content_type). Hoitaa datan dekoodauksen. Tämä toiminto on säädettävä sen mukaan, mitä tuloa malli odottaa.
  3. predict_fn: Kutsuu mallia tiedoista, jotka on sarjoitettu input_fn:ssä. Suorittaa ennusteen deserialisoidulle objektille ladatulla ML-mallilla.
  4. output_fn: Sarjaa ennusteen tuloksen haluttuun vastauksen sisältötyyppiin. Muuntaa ennustamis_fn-funktiosta saadut ennusteet JSON-, CSV- tai NPY-muotoon.

Vaihe 5: SageMakerin erämuunnostyön käynnistäminen

Tässä esimerkissä saamme ML-johtopäätöstulokset SageMakerin erämuunnostyön kautta. Erämuunnostyöt ovat hyödyllisimpiä, kun haluamme saada päätelmiä tietojoukoista kerran ilman jatkuvaa päätepistettä. Instantoimme a sagemaker.transformer.Transformer objekti SageMakerin erämuunnostöiden luomiseen ja vuorovaikutukseen niiden kanssa.

transformer = model.transformer(instance_type=INSTANCE_TYPE, 
                                instance_count=INSTANCE_COUNT
                                )
transformer.transform(data=DATA_PATH,
                      data_type="S3Prefix",
                      content_type="application/x-image",
                      wait=True
                      )

Katso dokumentaatio erämuunnostyön luomisesta osoitteessa LuoTransformJob.

Vaihe 6: Visualisoi testitulokset

Kun SageMakerin erämuunnostyö on valmis, voimme ladata ML-johtopäätöstulokset Amazon S3:sta. Tätä varten siirry kohtaan AWS-hallintakonsoli ja etsi Amazon SageMaker. Vasemmassa paneelissa, alla PäättelyKatso Erämuunnostyöt.

Luo Amazon SageMaker -malleja PyTorch Model Zoo PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Valinnan jälkeen Erämuunnos, katso Web-sivu, jossa on lueteltu kaikki SageMakerin erämuunnostyöt. Voimme seurata viimeisimmän työmme edistymistä.

Luo Amazon SageMaker -malleja PyTorch Model Zoo PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Ensinnäkin työn tila on "Käynnissä". Kun se on valmis, katso, että tila muuttuu Valmis.

Luo Amazon SageMaker -malleja PyTorch Model Zoo PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Kun tila on merkitty suoritetuksi, voimme klikata työtä nähdäksesi tulokset. Tämä verkkosivu sisältää työn yhteenvedon, mukaan lukien juuri suorittamamme työn määritykset.

Luo Amazon SageMaker -malleja PyTorch Model Zoo PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Alle Lähtötietojen konfigurointi, näemme S3-lähtöpolun. Täältä löydämme ML-johtopäätöstulosteemme.

Luo Amazon SageMaker -malleja PyTorch Model Zoo PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Valitse S3-lähtöpolku ja katso [image_name].[file_type].out-tiedosto tulostiedoillamme. Tulostiedostomme sisältää luettelon kartoituksista. Esimerkkituloste:

[
  {
    "boxes": [
      [
        214.32322692871094,
        192.18418884277344,
        830.3932495117188,
        521.6996459960938
      ],
      [
        235.6244354248047,
        301.3315734863281,
        253.6448516845703,
        312.3525695800781
      ],
      [
        183.92031860351562,
        291.7759704589844,
        207.28196716308594,
        312.1448669433594
      ],
    ],
    "labels": [
      3,
      3,
      9,
    ],
    "scores": [
      0.8823906183242798,
      0.7710548639297485,
      0.4969744384288788,
    ]
  }
]

Näiden ennusteiden visualisoimiseksi luemme ensin lähtöpolun muuntajaobjektistamme.

def get_output_from_s3(s3uri, file_name):
    parsed_url = urlparse(s3uri)
    bucket_name = parsed_url.netloc
    prefix = parsed_url.path[1:]
    s3 = boto3.resource('s3')
    obj = s3.Object(bucket_name, '{}/{}'.format(prefix, file_name))
    return obj.get()["Body"].read().decode('utf-8')
    
# Output path from Batch Transform job
output_path = transformer.output_path

# Get the output file from S3
predictions = get_output_from_s3(output_path, "car.jpg.out")

Seuraavaksi käsittelemme tämän tulostiedoston ja visualisoimme ennusteemme. Alla määritämme luottamuskynnyksemme. Saamme luettelon luokista COCO-tietojoukon objektikartoitus. Päättelyn aikana malli vaatii vain syöttötensorit ja palauttaa jälkikäsitellyt ennusteet Listana[Dict[tensori]], yksi jokaiselle syötekuvalle. Dictin kentät ovat seuraavat, missä N on ilmaisujen lukumäärä:

  1. laatikot (FloatTensor[N, 4]): ennustetut laatikot [x1, y1, x2, y2] muoto, jossa 0 <= x1 < x2 <= W and 0 <= y1 < y2 <= H, Jossa W on kuvan leveys ja H on kuvan korkeus
  2. etiketit (Int64Tensor[N]): kunkin havaitsemisen ennustetut etiketit
  3. pisteet (Tensor[N]): kunkin havainnon ennustepisteet

Lisätietoja lähdöstä on kohdassa PyTorchin nopeampi R-CNN FPN -dokumentaatio.

Mallin tulos sisältää rajauslaatikoita vastaavilla luottamuspisteillä. Voimme optimoida väärien positiivisten tulosten näyttämisen poistamalla rajaukset, joiden osalta malli ei ole varma. Seuraavat koodinpätkät käsittelevät tulostiedoston ennusteita ja piirtävät rajauslaatikoita ennusteisiin, joissa pisteet ylittävät luottamuskynnyksemme. Asetamme todennäköisyysrajan, CONF_THRESH, arvoon 75 tässä esimerkissä.

def procress_batch_transform_output(predictions):
    predictions = eval(predictions)
    for pred in predictions[1:]:
        pred = pred[0]
        boxes = np.array(pred["boxes"])
        labels = np.array(pred["labels"])
        scores = np.array(pred["scores"])

        scores_idx = scores >= CONF_THRESH
        boxes_meet = boxes[scores_idx, :]
        labels_meet = labels[scores_idx]
        scores_meet = scores[scores_idx]

        labels_str = [CLASSES[i] for i in labels_meet]
        
        # Return a tuple containing labels, label index, score, and bounding box
        processed_predictions =  list(zip(labels_str, labels_meet, scores_meet, boxes_meet))
        return processed_predictions
    
    
def visualize_batch_transform_output(input_image, processed_predictions):
    # read input image from computer
    img = read_image(input_image)
    for label, label_index, score, box in processed_predictions:
        label = label + ", score: " + str(round(score, 2))
        # draw bounding box and fill color
        box = torch.tensor(box)
        box = box.unsqueeze(0)
        img = draw_bounding_boxes(img, box, width=5,labels=[label], font_size=16)

    # transform this image to PIL image
    img = torchvision.transforms.ToPILImage()(img)

    # display output
    img.show()

# Process the predictions in the output file
processed_predictions = procress_batch_transform_output(predictions)
visualize_batch_transform_output("car.jpg", processed_predictions)

Lopuksi visualisoimme nämä kartoitukset, jotta voimme ymmärtää tulostemme.

Luo Amazon SageMaker -malleja PyTorch Model Zoo PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.

Huomautuksia: jos kuva ei näy muistikirjassasi, etsi se JupyterLabin vasemmalla puolella olevasta hakemistopuusta ja avaa se sieltä.

Esimerkkikoodin suorittaminen

Jos haluat täydellisen toimivan esimerkin, kloonaa koodi tiedostoon amazon-sagemaker-examples GitHub ja suorita solut create_pytorch_model_sagemaker.ipynb muistikirja.

Yhteenveto

Tässä blogiviestissä esittelimme täydellisen esimerkin ML-päätelmien suorittamisesta PyTorch Model Zoon objektintunnistusmallilla käyttämällä SageMaker-erämuunnoksia. Käsittelimme Faster R-CNN -objektien tunnistusmallin painojen lataamista, niiden tallentamista S3-säihöön, aloituspistetiedoston kirjoittamista ja PyTorchModel-sovellusliittymän avainparametrien ymmärtämistä. Lopuksi otimme mallin käyttöön ja suoritimme ML-mallin päättelyn, visualisoimme mallin tulosteen ja opimme tulkitsemaan tuloksia.


Tietoja Tekijät

Luo Amazon SageMaker -malleja PyTorch Model Zoo PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.Dipika Khullar on ML-insinööri Amazon ML Solutions Lab. Hän auttaa asiakkaita integroimaan ML-ratkaisuja liiketoiminnan ongelmien ratkaisemiseksi. Viimeksi hän on rakentanut koulutus- ja päätelmäputkia media-asiakkaille sekä ennakoivia malleja markkinointiin.

Luo Amazon SageMaker -malleja PyTorch Model Zoo PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.Marcelo Aberle on ML-insinööri AWS AI -organisaatiossa. Hän johtaa MLOpsin ponnisteluja Amazon ML Solutions Lab, auttaa asiakkaita suunnittelemaan ja toteuttamaan skaalautuvia ML-järjestelmiä. Hänen tehtävänsä on opastaa asiakkaita heidän yrityksen ML-matkallaan ja nopeuttaa heidän ML-polkuaan tuotantoon.

Luo Amazon SageMaker -malleja PyTorch Model Zoo PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.Ninad Kulkarni on soveltuva tutkija Amazon ML Solutions Lab. Hän auttaa asiakkaita ottamaan käyttöön ML:n ja tekoälyn rakentamalla ratkaisuja heidän liiketoimintaongelmiinsa. Viimeksi hän on rakentanut ennakoivia malleja urheilu-, auto- ja media-asiakkaille.

Luo Amazon SageMaker -malleja PyTorch Model Zoo PlatoBlockchain Data Intelligencen avulla. Pystysuuntainen haku. Ai.Yash Shah on tiedepäällikkö Amazon ML Solutions Lab. Hän ja hänen ammattitutkijoistaan ​​ja ML-insinööreistä koostuva tiiminsä työskentelevät useiden ML-käyttötapausten parissa terveydenhoidosta, urheilusta, autoteollisuudesta ja teollisuudesta.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen