Skaalaa koulutus ja päättele tuhansia ML-malleja Amazon SageMakerin avulla Amazon Web Services

Skaalaa koulutus ja päättele tuhansia ML-malleja Amazon SageMakerin avulla Amazon Web Services

Koneoppimisen (ML) yleistyessä useilla toimialoilla organisaatiot havaitsevat tarpeen kouluttaa ja palvella suuria määriä ML-malleja vastatakseen asiakkaidensa erilaisiin tarpeisiin. Erityisesti ohjelmiston palveluntarjoajille (SaaS) on kyky kouluttaa ja palvella tuhansia malleja tehokkaasti ja kustannustehokkaasti kilpailukykyisenä nopeasti kehittyvillä markkinoilla.

Tuhansien mallien kouluttaminen ja palveleminen vaatii vankan ja skaalautuvan infrastruktuurin Amazon Sage Maker voi auttaa. SageMaker on täysin hallittu alusta, jonka avulla kehittäjät ja datatieteilijät voivat rakentaa, kouluttaa ja ottaa käyttöön ML-malleja nopeasti ja tarjoaa samalla AWS-pilviinfrastruktuurin käytön kustannussäästöetuja.

Tässä viestissä tutkimme, kuinka voit käyttää SageMaker-ominaisuuksia, mukaan lukien Amazon SageMaker -käsittely, SageMaker-koulutustyöt ja SageMaker-monimallipäätepisteet (MME), joiden avulla voit kouluttaa ja palvella tuhansia malleja kustannustehokkaalla tavalla. Pääset alkuun kuvaillun ratkaisun kanssa tutustumalla mukana tulevaan muistikirjaan GitHub.

Käyttötapaus: Energian ennustaminen

Tässä postauksessa otamme ISV-yrityksen roolin, joka auttaa asiakkaitaan tulemaan kestävämmiksi seuraamalla heidän energiankulutustaan ​​ja tarjoamalla ennusteita. Yrityksellämme on 1,000 asiakasta, jotka haluavat ymmärtää paremmin energiankäyttöään ja tehdä tietoisia päätöksiä ympäristövaikutusten vähentämiseksi. Tätä varten käytämme synteettistä tietojoukkoa ja koulutamme siihen perustuvan ML-mallin profeetta kunkin asiakkaan tehtäväksi tehdä energiankulutusennusteita. SageMakerin avulla voimme tehokkaasti kouluttaa ja palvella näitä 1,000 XNUMX mallia ja tarjota asiakkaillemme tarkkoja ja käytännöllisiä tietoja heidän energiankäytöstään.

Luodussa tietojoukossa on kolme ominaisuutta:

  • Asiakas ID – Tämä on kokonaislukutunniste jokaiselle asiakkaalle, joka vaihtelee välillä 0–999.
  • aikaleima – Tämä on päivämäärä/aika-arvo, joka osoittaa ajan, jolloin energiankulutus mitattiin. Aikaleimat luodaan satunnaisesti koodissa määritettyjen alkamis- ja lopetuspäivien välillä.
  • kulutus – Tämä on kelluva arvo, joka ilmaisee energiankulutuksen, mitattuna jollakin mielivaltaisella yksiköllä. Kulutusarvot generoidaan satunnaisesti välillä 0–1,000 XNUMX sinimuotoisella kausivaihtelulla.

Ratkaisun yleiskatsaus

Voimme käyttää seuraavia SageMaker-ominaisuuksia kouluttaaksemme ja palvellaksemme tehokkaasti tuhansia ML-malleja:

  • SageMaker-käsittely – SageMaker Processing on täysin hallittu tietojen valmistelupalvelu, jonka avulla voit suorittaa syötetietojesi tietojenkäsittely- ja mallinarviointitehtäviä. Voit käyttää SageMaker Processingia muuntaaksesi raakadataa koulutusta ja päätelmiä varten tarvittavaan muotoon sekä suorittaaksesi mallien erä- ja online-arviointeja.
  • SageMaker koulutustyöt – Voit käyttää SageMaker-harjoitustehtäviä mallien kouluttamiseen erilaisilla algoritmeilla ja syötetietotyypeillä sekä määrittää koulutukseen tarvittavat laskentaresurssit.
  • SageMaker MME:t – Usean mallin päätepisteiden avulla voit isännöidä useita malleja yhdessä päätepisteessä, mikä tekee useiden mallien ennusteiden tarjoamisesta helppoa yhden API:n avulla. SageMaker MME:t voivat säästää aikaa ja resursseja vähentämällä useiden mallien ennusteiden palvelemiseen tarvittavien päätepisteiden määrää. MME:t tukevat sekä CPU- että GPU-tuettujen mallien isännöintiä. Huomaa, että skenaariossamme käytämme 1,000 XNUMX mallia, mutta tämä ei rajoita itse palvelua.

Seuraava kaavio kuvaa ratkaisuarkkitehtuuria.

arkkitehtuuri, joka näyttää kuvatun prosessin

Työnkulku sisältää seuraavat vaiheet:

  1. Käytämme SageMaker Processingia tietojen esikäsittelyyn ja yksittäisen CSV-tiedoston luomiseen asiakasta kohti ja sen tallentamiseen Amazonin yksinkertainen tallennuspalvelu (Amazon S3).
  2. SageMaker-koulutustyö on määritetty lukemaan SageMaker Processing -työn tulos ja jakamaan se kiertoteitse koulutustapahtumiin. Huomaa, että tämä voidaan saavuttaa myös Amazon SageMaker -putkistot.
  3. Mallin artefaktit tallennetaan Amazon S3:een koulutustyön mukaan, ja ne toimitetaan suoraan SageMaker MME:stä.

Skaalaa koulutus tuhansiin malleihin

Tuhansien mallien koulutuksen skaalaaminen on mahdollista kautta distribution parametri Koulutussyöttö luokka SageMaker Python SDK:ssa, jonka avulla voit määrittää, kuinka tiedot jaetaan useille koulutusesiintymille koulutustyötä varten. Vaihtoehtoja on kolme distribution parametri: FullyReplicated, ShardedByS3Keyja ShardedByRecord. ShardedByS3Key Vaihtoehto tarkoittaa, että harjoitustiedot jaetaan S3-objektiavaimella, jolloin jokainen harjoitusinstanssi vastaanottaa yksilöllisen osajoukon dataa, jolloin vältetään päällekkäisyys. Kun SageMaker on kopioinut tiedot koulutussäiliöihin, voimme lukea kansio- ja tiedostorakenteen ja kouluttaa yksilöllisen mallin asiakastiedostoa kohden. Seuraavassa on esimerkkikoodinpätkä:

# Assume that the training data is in an S3 bucket already, pass the parent folder
s3_input_train = sagemaker.inputs.TrainingInput( s3_data='s3://my-bucket/customer_data', distribution='ShardedByS3Key'
) # Create a SageMaker estimator and set the training input
estimator = sagemaker.estimator.Estimator(...)
estimator.fit(inputs=s3_input_train)

Jokainen SageMaker-koulutustyö tallentaa malliin, joka on tallennettu /opt/ml/model koulutussäiliön kansio ennen sen arkistointia a model.tar.gz tiedostoon ja lataa sen sitten Amazon S3:een koulutustyön päätyttyä. Tehokäyttäjät voivat myös automatisoida tämän prosessin SageMaker Pipelinesin avulla. Kun useita malleja tallennetaan saman koulutustyön kautta, SageMaker luo yhden model.tar.gz tiedosto, joka sisältää kaikki koulutetut mallit. Tämä tarkoittaisi sitä, että meidän on ensin purettava arkisto, jotta voimme palvella mallia. Tämän välttämiseksi käytämme tarkistuspisteitä yksittäisten mallien tilan säästämiseksi. SageMaker tarjoaa toiminnon kopioida koulutustyön aikana luodut tarkistuspisteet Amazon S3:een. Tässä tarkistuspisteet on tallennettava ennalta määritettyyn paikkaan oletusasetuksena /opt/ml/checkpoints. Näitä tarkistuspisteitä voidaan käyttää koulutuksen jatkamiseen myöhemmin tai mallina päätepisteessä. Katso korkeatasoinen yhteenveto siitä, kuinka SageMaker-koulutusalusta hallitsee harjoitustietojoukkojen, malliartefaktien, tarkistuspisteiden ja tulosteiden tallennuspolkuja AWS-pilvitallennusten ja SageMakerin koulutustöiden välillä. Amazon SageMaker Training -tallennuskansiot harjoitustietosarjoille, tarkistuspisteille, malliartefakteille ja tulosteille.

Seuraava koodi käyttää kuvitteellista model.save() toimivat train.py harjoituslogiikan sisältävä skripti:

import tarfile
import boto3
import os [ ... argument parsing ... ] for customer in os.list_dir(args.input_path): # Read data locally within the Training job df = pd.read_csv(os.path.join(args.input_path, customer, 'data.csv')) # Define and train the model model = MyModel() model.fit(df) # Save model to output directory with open(os.path.join(output_dir, 'model.json'), 'w') as fout: fout.write(model_to_json(model)) # Create the model.tar.gz archive containing the model and the training script with tarfile.open(os.path.join(output_dir, '{customer}.tar.gz'), "w:gz") as tar: tar.add(os.path.join(output_dir, 'model.json'), "model.json") tar.add(os.path.join(args.code_dir, "training.py"), "training.py")

Skaalaa johtopäätös tuhansiin malleihin SageMaker MME:illä

SageMaker MME:iden avulla voit palvella useita malleja samanaikaisesti luomalla päätepistemäärityksen, joka sisältää luettelon kaikista palvelevista malleista, ja luomalla sitten päätepisteen käyttämällä kyseistä päätepistemääritystä. Päätepistettä ei tarvitse ottaa uudelleen käyttöön joka kerta, kun lisäät uuden mallin, koska päätepiste palvelee automaattisesti kaikkia määritettyihin S3-polkuihin tallennettuja malleja. Tämä saavutetaan Monimallipalvelin (MMS), avoimen lähdekoodin kehys ML-mallien palvelemiseen, jotka voidaan asentaa säilöihin tarjoamaan käyttöliittymän, joka täyttää uusien MME-säilösovellusliittymien vaatimukset. Lisäksi voit käyttää muita mallipalvelimia, mukaan lukien SoihtuPalvelu ja Triton. MMS voidaan asentaa mukautettuun säilön kautta SageMaker Inference Toolkit. Lisätietoja Docker-tiedoston määrittämisestä sisällyttämään MMS-viestit ja käyttämään sitä mallien palvelemiseen on osoitteessa Rakenna oma säiliö SageMakerin usean mallin päätepisteille.

Seuraava koodinpätkä näyttää, kuinka MME luodaan SageMaker Python SDK:lla:

from sagemaker.multidatamodel import MultiDataModel # Create the MultiDataModel definition
multimodel = MultiDataModel( name='customer-models', model_data_prefix=f's3://{bucket}/scaling-thousand-models/models', model=your_model,
) # Deploy on a real-time endpoint
predictor = multimodel.deploy( initial_instance_count=1, instance_type='ml.c5.xlarge',
)

Kun MME on live-tilassa, voimme kutsua sitä ennusteiden luomiseksi. Kutsut voidaan tehdä missä tahansa AWS SDK:ssa sekä SageMaker Python SDK:lla, kuten seuraavassa koodinpätkässä näkyy:

predictor.predict( data='{"period": 7}', # the payload, in this case JSON target_model='{customer}.tar.gz' # the name of the target model
)

Mallia kutsuttaessa malli ladataan alun perin Amazon S3:sta instanssiin, mikä voi aiheuttaa kylmäkäynnistyksen uutta mallia kutsuttaessa. Usein käytetyt mallit tallennetaan välimuistiin ja levylle alhaisen latenssin päätelmien aikaansaamiseksi.

Yhteenveto

SageMaker on tehokas ja kustannustehokas alusta tuhansien ML-mallien koulutukseen ja palvelemiseen. Sen ominaisuudet, mukaan lukien SageMaker Processing, koulutustyöt ja MME:t, antavat organisaatioille mahdollisuuden kouluttaa ja palvella tehokkaasti tuhansia malleja mittakaavassa, samalla kun ne hyötyvät AWS Cloud -infrastruktuurin käytön kustannussäästöeduista. Lisätietoja SageMakerin käyttämisestä tuhansien mallien koulutukseen ja palvelemiseen on osoitteessa Käsittele tietoja, Kouluta malli Amazon SageMakerilla ja Isännöi useita malleja yhdessä säilössä yhden päätepisteen takana.


Tietoja Tekijät

Kuva DavidestaDavide Gallitelli on AI/ML:n erikoisratkaisuarkkitehti EMEA-alueella. Hänen kotipaikkansa on Bryssel ja työskentelee tiiviisti asiakkaiden kanssa kaikkialla Benelux-maissa. Hän on ollut kehittäjä pienestä pitäen, aloitti koodaamisen 7-vuotiaana. Hän aloitti tekoälyn/ML:n opiskelun yliopistossa ja on siitä lähtien rakastunut siihen.

Kuva MauritsistaMaurits de Groot on ratkaisuarkkitehti Amazon Web Servicesissä Amsterdamissa. Hän haluaa työskennellä koneoppimiseen liittyvien aiheiden parissa ja hänellä on taipumus startup-yrityksiin. Vapaa-ajallaan hän harrastaa hiihtoa ja squashia.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen