Kustannustehokas ML-päätelmä Amazon SageMaker PlatoBlockchain Data Intelligencen monikehysmalleilla. Pystysuuntainen haku. Ai.

Kustannustehokas ML-päätelmä Amazon SageMakerin monikehysmalleilla 

Koneoppiminen (ML) on osoittautunut yhdeksi menestyneimmistä ja laajimmalle levinneistä teknologian sovelluksista, joka vaikuttaa useille eri aloille ja vaikuttaa miljardeihin käyttäjiin joka päivä. Tämän nopean ML:n käyttöönoton myötä kaikilla toimialoilla yritykset kohtaavat haasteita tukea matalan latenssin ennusteita ja korkeaa käytettävyyttä maksimoimalla resurssien käytön ja alentamalla niihin liittyviä kustannuksia. Koska jokaisella ML-kehyksellä on omat riippuvuutensa ja kunkin kehyksen käyttöönottovaiheet ovat erilaisia, eri kehyksiin rakennettujen mallien käyttöönotto tuotannossa ja kunkin päätepisteen hallinta muuttuu yhä monimutkaisemmaksi.

Amazon Sage Maker multi-container endpoints (MCE) mahdollistaa mallien ryhmittelemisen eri kehyksissä ja niiden käyttöönoton samassa isännässä luoden yhden päätepisteen. Voit tarjota säilöjä eri kehyksille, joita käytät mallien rakentamiseen, ja SageMaker ottaa kaikki nämä säilöt ja sijoittaa ne yhden päätepisteen taakse. Voit esimerkiksi ladata PyTorch- ja TensorFlow-mallin kahteen omistettuun päätepisteeseen, jotka palvelevat samoja tai täysin erilaisia ​​käyttötapauksia, ja molemmissa malleissa on ajoittaista saapuvaa liikennettä, joka ei käytä resurssejaan äärimmäisenä. Tällaisessa skenaariossa voit yhdistää ne säilöillä yhdeksi päätepisteeksi MCE:n avulla, mikä parantaa resurssien käyttöä ja vähentää kustannuksia, jotka aiheutuvat molempien mallien palvelemisesta eri päätepisteistä.

Monisäilön päätepisteet tarjoavat skaalautuvan ja kustannustehokkaan ratkaisun jopa 15 eri ML-kehysten, mallipalvelimien ja algoritmien käyttöönottamiseksi, jotka palvelevat samaa tai eri käyttötapausta, mikä tarkoittaa, että mallit voidaan rakentaa erilaisille ML-kehyksille tai välittäjille. vaiheet kaikkien näiden säiliöiden ja mallien välillä. Kaikkiin näihin malleihin pääsee yksitellen suoran kutsun kautta tai ne voidaan ommella liukuhihnaksi sarjakutsulla, jossa yhden mallin tulos on seuraavan mallin syöte.

Tässä viestissä keskustelemme kustannustehokkaan ML-päätelmän suorittamisesta SageMakerin monikehysmalleilla.

MCE-kutsumallit

SageMaker MCE -suora kutsuminen on hyödyllistä tapauksissa, joissa olet yhdistänyt toisiinsa liittymättömät mallit MCE-päätepisteeseen tai suoritat A/B-testiä MCE-päätepisteen takana olevien mallien välillä niiden suorituskyvyn mittaamiseksi. Voit kutsua tiettyä säilöä suoraan API-kutsussa ja saada ennusteen kyseisestä mallista.

Sarjakutsulla voit ommella yhteen 2–15 säilöä ja yhden tulosteesta tulee peräkkäin seuraavan säilön syöte. Tämä on ihanteellinen käyttötapaus, jos sinulla on esimerkiksi monivaiheinen ennusteputki, jossa Scikit-learn-mallia käytetään väliennusteeseen ja tulos syötetään TensorFlow-malliin lopullista päättelyä varten. Sen sijaan, että ne otetaan käyttöön eri päätepisteinä ja toinen sovellus tai työ organisoi ne ja tekisi useita API-kutsuja, voit ottaa ne käyttöön SageMaker MCE:nä, abstrakti logiikasta ja asettaa ne sarjakutsulle, jossa SageMaker hallitsee tiedonsiirtoa yhden säilön välillä. toiseen automaattisesti ja lähettää lopullisen säilön tulosteen API-pyynnön tehneelle asiakkaalle.

SageMaker MCE -sarjakutsu on pohjimmiltaan erilainen kuin SageMakerin sarjapäätelmäliukuhihna (lisätietoja alla olevissa osioissa). Sarjapäättelyputkisto on suunnattu enemmän monimutkaisten ML-työnkulkujen järjestämiseen, kuten tietojen esikäsittelyyn, mallikokonaisuuden rakentamiseen, ehdollisten tarkistusten toteuttamiseen sen määrittämiseksi, mikä malli vedetään, tai ennusteen jälkikäsittelyyn, joka sisältää liiketoimintalogiikkaa ennen kuin ennuste lähetetään loppupään sovelluksiin. . Sitä vastoin MCE-sarjakutsu on suunniteltu yhdistämään 2–14 mallia liukuhihnaksi johtopäätöksiä varten, ja jokainen malli ottaa syötteenä edellisen mallin ennusteen.

Kaikki MCE:n säilöt ovat aina palvelussa ja muistissa, joten päätepistettä kutsuttaessa ei ole kylmäkäynnistystä. MCE:t parantavat myös päätepisteiden käyttöä ja parantavat kustannuksia, koska mallit otetaan käyttöön yhden päätepisteen takana ja ne jakavat taustalla olevan laskentaesiintymän sen sijaan, että kukin malli käyttäisi yksittäisiä laskentaresursseja.

Katsotaanpa muutamia käyttötapauksia ja katsotaan, kuinka voit käyttää SageMaker MCE:itä ML-päätelmien optimointiin.

Käyttötapaukset SageMaker MCE:ille

Oletetaan, että sinulla on kaksi mielialan luokittelumallia, yksi englannin kielelle ja toinen saksan kielelle, ja nämä mallit palvelevat eri maantieteellisiä alueita ja liikennettä tulee eri aikoina vuorokaudessa. Sen sijaan, että kaksi päätepistettä olisi käynnissä 24/7, voit ottaa ne molemmat käyttöön yhdeksi päätepisteeksi MCE:n avulla ja käyttää niitä suoran kutsun avulla, mikä optimoi resurssien käytön ja kustannukset. Katso seuraava koodi:

englishModel = {
   'Image': container1,
   'ContainerHostname': englishModel }; ...
 
germanModel = {
   'Image': container2,
   'ContainerHostname': germanModel }; ...
 
sm.create_model(
   InferenceExecutionConfig = {'Mode': 'Direct'},
   Containers = [englishModel, germanModel], ...)
sm.create_endpoint_config(EndpointConfigName = ‘my-mce-epc’,
    ProductionVariants=[{
        'InstanceType':        ‘ml.m4.xlarge’,
        'InitialInstanceCount': 2,
        'InitialVariantWeight': 1,
        'ModelName':            ‘my-multi-model-name’,
        'VariantName':          'AllTraffic'}])
sm.create_endpoint(EndpointName = ‘my-mce-endpoint’, 
                  EndpointConfigName = ‘my-mce-epc’)

Tässä esimerkissä meillä on kaksi mallia (englishModel ja germanModel), ja määritämme säiliöt SageMakerissa create_model rakentaa ja määritellä InferenceExecutionConfig "Suorana". Nyt voimme kutsua päätepisteen päätelmiä varten ja määritellä TargetContainerHostname kuin jompikumpi englishModel or germanModel riippuen API-kutsun soittavasta asiakkaasta:

sm.invoke_endpoint(        
   EndpointName = endpoint_name,
   TargetContainerHostname = englishModel,
   Body = body, ...)

Voit myös käyttää suoraa kutsua MCE:ssä suorittaaksesi A/B-testejä ja vertaillaksesi suorituskykyä mallien välillä.

Seuraava kaavio kuvaa arkkitehtuuriamme.

Vastaavasti muissa ML-käyttötapauksissa, kun koulutettua mallia käytetään pyynnön käsittelyyn, malli vastaanottaa dataa muodossa, joka on esikäsiteltävä (esimerkiksi esiteltävä), ennen kuin se voidaan välittää algoritmille päättelyä varten. Kun ML-algoritmit ketjutetaan yhteen, yhden mallin tulos toimii syötteenä seuraavalle ennen lopullisen tuloksen saavuttamista. Tässä tapauksessa voit rakentaa SageMaker MCE -sarjaputken, jossa säiliöt keskustelevat keskenään määritetyssä järjestyksessä. create_model rakentaa sen sijaan, että otat jokaisen mallin käyttöön eri päätepisteissä ja kirjoitat itsenäisen logiikan, joka helpottaa tiedonkulkua kaikkien näiden mallien ja API-kutsujen välillä. Seuraava kaavio havainnollistaa tätä arkkitehtuuria.

Kustannustehokas ML-päätelmä Amazon SageMaker PlatoBlockchain Data Intelligencen monikehysmalleilla. Pystysuuntainen haku. Ai.

Tässä käyttötapauksessa käytämme seuraavaa koodia:

sm_model = PipelineModel(name=model_name, role=aws_role, models=[Processing-1, Processing-2, Inference-1, Inference-2]) 

predictor = sm_model.deploy(initial_instance_count=1, instance_type="ml.c4.xlarge")                  
response = runtime.invoke_endpoint( 
EndpointName=predictor.endpoint,                                
    Body=body,...)

Tässä esimerkissä meillä on kaksi käsittelysäiliötä (Processing-1 ja Processing-2) ominaisuuksien käsittelyä ja datamuunnoksia varten sekä kaksi päättelysäilöä (Inference-1 ja Inference-2) suorittaaksesi ML-malliennusteita esikäsitellylle tiedolle. The PipelineModel instanssin avulla voit määrittää päättelyputken, joka koostuu neljän kontin lineaarisesta sekvenssistä, jotka käsittelevät datan päättelypyyntöjä. Säilöt sijaitsevat samassa ilmentymässä, joten voit suorittaa päätelmiä pienellä viiveellä.

Skaalaa usean mallin päätepisteitä suurelle määrälle malleja

SageMakerin usean mallin päätepisteiden edut lisääntyvät mallin konsolidoinnin laajuuden mukaan. Voit nähdä kustannussäästöjä isännöimällä kahta mallia yhdellä päätepisteellä, ja käyttötapauksissa, joissa on satoja tai tuhansia malleja, säästöt ovat paljon suuremmat.

MCE-päätepisteiden skaalaus on myös yksinkertaista käyttämällä SageMakerVariantInvocationsPerInstance ennalta määritetty metriikka, joka antaa keskimääräisen määrän kertoja minuutissa, jolloin mallin päätepisteen kutakin esiintymää kutsutaan määrittämään TargetScaling käytäntö. SageMaker säätää dynaamisesti mallille varattujen ilmentymien määrää vasteena työmääräsi muutoksiin. Kun työmäärä kasvaa, automaattinen skaalaus tuo enemmän esiintymiä verkkoon ja latautuu kohdemalleilla ja säilöillä pyyntöjen palvelemiseksi. Kun työmäärä vähenee, automaattinen skaalaus poistaa tarpeettomat esiintymät ja purkaa mallisäiliöt, jotta säilöt eivät kuluta resursseja, etkä maksa käyttämättömistä ilmentymistä. Ensimmäisen tietyn mallin pyynnön suorittamiseen kuluva aika kokee lisäviivettä (kutsutaan kylmäkäynnistykseksi), josta malli ladataan Amazonin yksinkertainen tallennuspalvelu (Amazon S3) ja lataa se muistiin. Seuraavat kutsut päättyvät ilman lisäkustannuksia, koska malli on jo ladattu. Katso seuraava koodi:

# AutoScaling client
asg = boto3.client('application-autoscaling')

# Resource type is variant and the unique identifier is the resource ID.
resource_id=f"endpoint/{endpoint_name}/variant/AllTraffic"

# scaling configuration
response = asg.register_scalable_target(
    ServiceNamespace='sagemaker', #
    ResourceId=resource_id,
    ScalableDimension='sagemaker:variant:DesiredInstanceCount', 
    MinCapacity=1,
    MaxCapacity=4
)
#Target Scaling
response = asg.put_scaling_policy(
    PolicyName=f'Request-ScalingPolicy-{endpoint_name}',
    ServiceNamespace='sagemaker',
    ResourceId=resource_id,
    ScalableDimension='sagemaker:variant:DesiredInstanceCount',
    PolicyType='TargetTrackingScaling',
    TargetTrackingScalingPolicyConfiguration={
        'TargetValue': 70.0, # Threshold
        'PredefinedMetricSpecification': {
            'PredefinedMetricType': 'SageMakerVariantInvocationsPerInstance',
        },
        'ScaleInCooldown': 300, # duration until scale in
        'ScaleOutCooldown': 60 # duration between scale out
    }
)

Edellisen esimerkkikäytännön kokoonpanon mukaisesti käytämme SageMakerVariantInvocationsPerInstance ennalta määritetty metriikka, jolla voit säätää muunnelmien lukumäärää niin, että jokaisella esiintymällä on InvocationsPerInstance mittari 70.

Voimme myös skaalata SageMaker MCE:itä omien mukautettujen mittareittemme, kuten esim CPUUtilization, MemoryUtilization, GPUUtilization, GPUMemoryUtilizationtai DiskUtilization, suurentaa tai pienentää esiintymien määrää tietyn resurssin käytön perusteella. Lisätietoja on kohdassa Skaalaa automaattisesti Amazon SageMaker -mallit.

On suositeltavaa, että kunkin säilön mallilla on samanlaiset laskenta- ja latenssivaatimukset jokaisessa päättelypyynnössä, koska jos liikenne MCE:hen siirtyy korkean suorittimen käyttöasteen mallista alhaisen prosessorin käyttöasteen malliin, mutta puhelun kokonaismäärä pysyy samana, päätepiste ei skaalaa, ja esiintymiä ei ehkä ole tarpeeksi käsittelemään kaikkia korkean suorittimen käyttöasteen malliin liittyviä pyyntöjä.

Turvalliset MCE:t

MCE:issä, joissa on suora kutsu, useita säilöjä isännöidään yhdessä esiintymässä jakamalla muistia ja tallennustilaa. On tärkeää suojata säilöt, ylläpitää pyyntöjen oikeaa kartoitusta kohdesäilöihin ja tarjota käyttäjille oikea käyttöoikeus kohdesäilöihin. Voit rajoittaa invoke_endpoint pääsy rajoitettuun joukkoon säiliöitä MCE:n sisällä käyttämällä sagemaker:TargetContainerHostname AWS-henkilöllisyyden ja käyttöoikeuksien hallinta (IAM) ehtoavain. SageMaker käyttää IAM-roolit tarjota IAM-identiteettiin perustuvia käytäntöjä, joiden avulla voit määrittää sallittuja tai kiellettyjä toimia ja resursseja sekä ehtoja, joilla toiminnot sallitaan tai kielletään. Seuraavat käytännöt osoittavat, kuinka puhelut rajoitetaan päätepisteen tiettyihin säilöihin:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "sagemaker:InvokeEndpoint"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:sagemaker:region:account-id:endpoint/endpoint_name",
            "Condition": {
                "StringLike": {
                    "sagemaker:TargetContainerHostname": ["customIps*", "common*"]
                }
            }
        }
    ]
}

Tarkkaile usean mallin päätepisteitä Amazon CloudWatch -mittareiden avulla

Jotta voit tehdä kompromisseja hinnan ja suorituskyvyn välillä, sinun kannattaa testata usean mallin päätepisteitä malleilla ja edustavalla liikenteellä omasta sovelluksestasi. SageMaker tarjoaa lisämittareita amazonin pilvikello usean mallin päätepisteille, jotta voit määrittää päätepisteen käytön ja välimuistin osumasuhteen ja optimoida päätepisteesi. Mittarit ovat seuraavat:

  • ModelLoadingWaitTime – Aika, jonka kutsupyyntö odottaa kohdemallin lataamista tai lataamista päättelyn suorittamiseksi.
  • ModelUnloadingTime – Aika, joka kuluu mallin purkamiseen säiliön läpi UnloadModel API-kutsu.
  • Mallin latausaika – Aika, joka kuluu mallin lataamiseen Amazon S3:sta.
  • Mallin latausaika – Aika, joka kuluu mallin lataamiseen säiliön läpi LoadModel API-kutsu.
  • ModelCacheHit - Lukumäärä InvokeEndpoint pyynnöt lähetetään päätepisteeseen, jossa malli oli jo ladattu. Ottamalla Average tilasto näyttää niiden pyyntöjen suhteen, joissa malli oli jo ladattu.
  • LoadedModelCount – Päätepisteen säiliöihin ladattujen mallien lukumäärä. Tämä mittari lähetetään esiintymää kohden. The Average Tilasto, jonka jakso on 1 minuutti, kertoo sinulle ladattujen mallien keskimääräisen määrän esiintymää kohden ja Sum tilasto kertoo päätepisteen kaikissa esiintymissä ladattujen mallien kokonaismäärän. Mallit, joita tämä mittari seuraa, eivät välttämättä ole ainutlaatuisia, koska voit ladata mallin useisiin säilöihin päätepisteessä.

On myös useita muita mittareita, joita jokainen esiintymässä käynnissä oleva säilö käyttää, kuten Invocations joka ilmoittaa numeron InvokeEndpoint päätepisteen sisällä olevaan säiliöön lähetetyt pyynnöt, ContainerLatency antaa aika, jonka päätepiste kesti, ennen kuin kohdesäilö tai kaikki sarjakutsussa olevat säilöt vastasivat SageMakerista katsottuna, ja CPUUtilization ja MemoryUtilizaton ilmaisee CPU-yksiköt ja muistin prosenttiosuuden.

Yhteenveto

Viestissä keskustelimme siitä, kuinka SageMaker-monisäiliöpäätepisteet voivat olla hyödyllisiä kustannusten ja resurssien käytön optimoinnissa. Esimerkkejä MCE:n käytöstä ovat seuraavat, mutta eivät rajoitu näihin:

  • Isännöintimalleja eri kehyksissä (kuten TensorFlow, PyTorch ja Scikit-learn), joilla ei ole tarpeeksi liikennettä instanssin täyden kapasiteetin kyllästämiseksi
  • Isännöintimalleja samasta viitekehyksestä erilaisilla ML-algoritmeilla (kuten suositukset, ennusteet tai luokittelu) ja käsittelijätoiminnot
  • Samanlaisten arkkitehtuurien vertailut eri kehysversioissa (kuten TensorFlow 1.x vs. TensorFlow 2.x) skenaarioissa, kuten A/B-testauksessa

SageMaker MCE:t tukevat jopa 15 säilön käyttöönottoa reaaliaikaisissa päätepisteissä ja niiden kutsumista itsenäisesti alhaisen latenssin päätelmien ja kustannussäästöjen saavuttamiseksi. Mallit voivat olla täysin heterogeenisia, ja niissä on oma itsenäinen tarjoilupino. Voit joko kutsua näitä säilöjä peräkkäin tai erikseen jokaiselle pyynnölle. Useiden mallien turvallinen isännöinti eri kehyksistä yhdessä ilmentymässä voi säästää jopa 90 % kustannuksissa verrattuna mallien isännöintiin erillisissä yhden ilmentymän päätepisteissä.


Tietoja kirjoittajista

Kustannustehokas ML-päätelmä Amazon SageMaker PlatoBlockchain Data Intelligencen monikehysmalleilla. Pystysuuntainen haku. Ai.Dhawal Patel on AWS:n koneoppimisarkkitehti. Hän on työskennellyt organisaatioiden kanssa suurista yrityksistä keskikokoisiin startup-yrityksiin hajautettuun tietojenkäsittelyyn ja tekoälyyn liittyvissä ongelmissa. Hän keskittyy syväoppimiseen, mukaan lukien NLP- ja tietokonenäköalueet. Hän auttaa asiakkaita tekemään korkean suorituskyvyn mallipäätelmiä Amazon SageMakerissa.

Kustannustehokas ML-päätelmä Amazon SageMaker PlatoBlockchain Data Intelligencen monikehysmalleilla. Pystysuuntainen haku. Ai.Vikram Elango on vanhempi AI/ML Specialist Solutions -arkkitehti Amazon Web Servicesissä Virginiassa Yhdysvalloissa. Vikram auttaa globaaleja rahoitus- ja vakuutusalan asiakkaita suunnittelu- ja ajatusjohtajuudella rakentamaan ja ottamaan käyttöön koneoppimissovelluksia mittakaavassa. Hän keskittyy tällä hetkellä luonnollisen kielen käsittelyyn, vastuulliseen tekoälyyn, päätelmien optimointiin ja ML:n skaalaukseen koko yrityksessä. Vapaa-ajallaan hän nauttii matkustamisesta, vaeltamisesta, ruoanlaitosta ja telttailusta perheensä kanssa.

Kustannustehokas ML-päätelmä Amazon SageMaker PlatoBlockchain Data Intelligencen monikehysmalleilla. Pystysuuntainen haku. Ai.Saurabh Trikande on Amazon SageMaker Inferencen -tuotepäällikkö. Hän on intohimoinen asiakkaiden kanssa työskentelyyn, ja häntä motivoi tavoite demokratisoida koneoppimista. Hän keskittyy ydinhaasteisiin, jotka liittyvät monimutkaisten ML-sovellusten käyttöönottoon, usean vuokralaisen ML-malleihin, kustannusten optimointiin ja syvän oppimismallien käyttöönoton helpottamiseen. Vapaa-ajallaan Saurabh nauttii vaelluksesta, innovatiivisten teknologioiden oppimisesta, TechCrunchia seuraamisesta ja perheen kanssa viettämisestä.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen