Suorita ensemble ML -malleja Amazon SageMaker PlatoBlockchain Data Intelligencessä. Pystysuuntainen haku. Ai.

Suorita ensemble ML -malleja Amazon SageMakerissa

Mallin käyttöönotto koneoppimisessa (ML) on yhä monimutkaisempaa. Haluat ottaa käyttöön yhden ML-mallin lisäksi suuria ryhmiä ML-malleja, jotka esitetään kokonaistyönkulkuina. Nämä työnkulut koostuvat useista ML-malleista. Näiden ML-mallien tuottaminen on haastavaa, koska sinun on noudatettava erilaisia ​​suorituskyky- ja latenssivaatimuksia.

Amazon Sage Maker tukee yhden esiintymän kokoonpanoja Triton-päätepalvelin. Tämän ominaisuuden avulla voit ajaa mallikokonaisuuksia, jotka sopivat yhteen esiintymään. Kulissien takana SageMaker hyödyntää Triton Inference Server -palvelinta hallitakseen kokonaisuutta kaikissa päätepisteen takana olevissa esiintymissä ja maksimoidakseen suorituskyvyn ja laitteiston käytön erittäin alhaisella (yksinumeroisella millisekunnin) päättelyviiveellä. Tritonin avulla voit myös valita laajasta valikoimasta tuettuja ML-kehyksiä (mukaan lukien TensorFlow, PyTorch, ONNX, XGBoost ja NVIDIA TensorRT) ja infrastruktuurin taustaohjelmia, mukaan lukien GPU:t, CPU:t ja AWS Inferencia.

Tämän SageMaker-ominaisuuden avulla voit optimoida työkuormasi välttämällä kalliita verkkoviiveitä ja hyödyntämällä laskenta- ja datapaikalisuuden etuja ensemble-johtopäätösputkien osalta. Tässä viestissä keskustelemme Triton Inference Serverin käytön eduista ja pohdimme, onko tämä oikea vaihtoehto työkuormituksellesi.

Ratkaisun yleiskatsaus

Triton Inference Server on suunniteltu antamaan tiimille mahdollisuus ottaa käyttöön, ajaa ja skaalata koulutettuja tekoälymalleja mistä tahansa kehyksestä missä tahansa GPU- tai CPU-pohjaisessa infrastruktuurissa. Lisäksi se on optimoitu tarjoamaan korkean suorituskyvyn mittakaavassa olevia päätelmiä ominaisuuksilla, kuten dynaaminen erä, samanaikaiset ajot, optimaalinen mallin konfigurointi, mallien kokoonpanoominaisuudet ja suoratoistotulojen tuki.

Työkuormissa tulee ottaa huomioon Tritonin tarjoamat ominaisuudet varmistaakseen, että heidän mallejaan voidaan palvella. Triton tukee useita suosittuja kehyksiä, kuten TensorFlow, PyTorch, ONNX, XGBoost ja NVIDIA TensorRT. Triton tukee myös erilaisia ​​taustaohjelmia joita tarvitaan, jotta algoritmit toimivat oikein. Sinun tulee varmistaa, että nämä taustajärjestelmät tukevat mallejasi, ja jos taustaohjelma ei tue, Triton antaa sinun ottaa käyttöön omasi ja integroida sen. Sinun tulee myös varmistaa, että algoritmiversiosi on tuettu, sekä varmistaa, että vastaava taustaohjelma hyväksyy mallin artefaktit. Tarkistaaksesi, tuetaanko tiettyä algoritmiasi, katso Triton Inference Server -taustaohjelma luettelo NVIDIA:n ylläpitämistä natiivisti tuetuista taustajärjestelmistä.

Joissakin tapauksissa mallisi tai mallikokonaisuutesi eivät välttämättä toimi Tritonissa ilman lisäponnistusta, esimerkiksi jos algoritmillesi ei ole natiivisti tuettua taustaohjelmaa. On myös muita huomioitavia seikkoja, kuten hyötykuorman muoto ei ehkä ole ihanteellinen, varsinkin kun hyötykuorman koko saattaa olla suuri pyyntöösi nähden. Kuten aina, sinun tulee vahvistaa suorituskykysi näiden työkuormien käyttöönoton jälkeen varmistaaksesi, että odotuksesi täyttyvät.

Otetaan kuvan luokittelun hermoverkkomalli ja katsotaan kuinka voimme nopeuttaa työtaakkaamme. Tässä esimerkissä käytämme NVIDIA DALI -taustajärjestelmää nopeuttamaan esikäsittelyämme kokonaisuutemme yhteydessä.

Luo Triton-mallikokonaisuuksia

Triton Inference Server yksinkertaistaa tekoälymallien käyttöönottoa mittakaavassa. Triton Inference Serverin mukana tulee kätevä ratkaisu, joka yksinkertaistaa esi- ja jälkikäsittelyputkien rakentamista. Triton Inference Server -alusta tarjoaa ensemble-schedulerin, jonka avulla voit rakentaa johtamisprosessiin osallistuvien ensemble-mallien liukuhihnaa varmistaen samalla tehokkuuden ja optimoinnin suorituskyvyn.

Triton Inference Server palvelee malleja mallivarastoista. Katsotaanpa DALI-esikäsittelymallin, TensorFlow-aloitusmallin V3-mallin ja mallikokonaisuuden sisältävän ensemble-mallin mallivaraston asettelua. Jokainen alihakemisto sisältää vastaavien mallien arkistotiedot. The config.pbtxt tiedosto kuvaa mallien mallikokoonpanon. Jokaisessa hakemistossa on oltava yksi numeerinen alikansio mallin kutakin versiota kohti, ja sitä ajaa erityinen Tritonin tukema taustaohjelma.

NVIDIA Triton -mallivarasto

NVIDIA DALI

Tässä viestissä käytämme NVIDIA Data Loading Library (DALI) -mallia esikäsittelymallina malliryhmässämme. NVIDIA DALI on kirjasto tietojen lataamista ja esikäsittelyä varten syväoppimissovellusten nopeuttamiseksi. Se tarjoaa kokoelman optimoituja rakennuspalikoita kuva-, video- ja äänidatan lataamista ja käsittelyä varten. Voit käyttää sitä kannettavana korvikkeena sisäänrakennetuille tiedonlataajille ja dataiteraattojille suosituissa syväoppimiskehyksissä.

NVIDIA Dali

Seuraava koodi näyttää DALI-taustajärjestelmän mallikokoonpanon:

name: "dali"
backend: "dali"
max_batch_size: 256
input [
  {
    name: "DALI_INPUT_0"
    data_type: TYPE_UINT8
    dims: [ -1 ]
  }
]
output [
  {
    name: "DALI_OUTPUT_0"
    data_type: TYPE_FP32
    dims: [ 299, 299, 3 ]
  }
]
parameters: [
  {
    key: "num_threads"
    value: { string_value: "12" }
  }
]

Alkuperäinen V3 malli

Tässä viestissä näytämme, kuinka DALIa käytetään mallikokonaisuudessa, jossa on Inception V3. Inception V3 TensorFlow esiopetettu malli tallennetaan GraphDef-muotoon yhtenä tiedostona nimeltä model.graphdef. config.pbtxt tiedosto sisältää tietoja mallin nimestä, alustasta, max_batch_sizesekä panos- ja tuotossopimukset. Suosittelemme asettamaan max_batch_size kokoonpano pienemmäksi kuin alkuperäisen V3-mallin eräkoko. Tarratiedostossa on luokkatunnisteet 1,000 XNUMX eri luokalle. Kopioimme aloitusluokittelumallin tarrat kohteeseen inception_graphdef mallivaraston hakemistosta. Tarratiedosto sisältää 1,000 XNUMX luokkatunnistetta IMAGEnet luokituksen tietojoukko.

name: "inception_graphdef"
platform: "tensorflow_graphdef"
max_batch_size: 256
input [
  {
    name: "input"
    data_type: TYPE_FP32
    format: FORMAT_NHWC
    dims: [ 299, 299, 3 ]
  }
]
output [
  {
    name: "InceptionV3/Predictions/Softmax"
    data_type: TYPE_FP32
    dims: [ 1001 ]
    label_filename: "inception_labels.txt"
  }
]

Triton-yhtye

Seuraava koodi näyttää DALI-esikäsittelyn ja kuvan luokituksen kokonaismallin mallikonfiguraation:

name: "ensemble_dali_inception"
platform: "ensemble"
max_batch_size: 256
input [
  {
    name: "INPUT"
    data_type: TYPE_UINT8
    dims: [ -1 ]
  }
]
output [
  {
    name: "OUTPUT"
    data_type: TYPE_FP32
    dims: [ 1001 ]
  }
]
ensemble_scheduling {
  step [
    {
      model_name: "dali"
      model_version: -1
      input_map {
        key: "DALI_INPUT_0"
        value: "INPUT"
      }
      output_map {
        key: "DALI_OUTPUT_0"
        value: "preprocessed_image"
      }
    },
    {
      model_name: "inception_graphdef"
      model_version: -1
      input_map {
        key: "input"
        value: "preprocessed_image"
      }
      output_map {
        key: "InceptionV3/Predictions/Softmax"
        value: "OUTPUT"
      }
    }
  ]
}

Luo SageMaker-päätepiste

SageMaker-päätepisteet mahdollistaa reaaliaikaisen isännöinnin, jossa vaaditaan millisekunnin vasteaika. SageMaker ottaa mallin isännöinnin hallinnan erittelemättömän raskaan noston ja sillä on kyky skaalata automaattisesti. Lisäksi tarjolla on myös useita ominaisuuksia, kuten useiden malliesi varianttien isännöinti, mallien A/B-testaus, integrointi amazonin pilvikello saada mallin suorituskyvyn havaittavuus ja mallin ajautumisen seuranta.

Luodaan SageMaker-malli mallin artefakteista, joihin lähetimme Amazonin yksinkertainen tallennuspalvelu (Amazon S3).

Seuraavaksi tarjoamme myös ylimääräisen ympäristömuuttujan: SAGEMAKER_TRITON_DEFAULT_MODEL_NAME, joka määrittää Tritonin lataaman mallin nimen. Tämän avaimen arvon tulee vastata Amazon S3:een ladatun mallipaketin kansion nimeä. Tämä muuttuja on valinnainen tapauksissa, joissa käytät yhtä mallia. Ensemble-mallien tapauksessa tämä avain on määritettävä, jotta Triton käynnistyy SageMakerissa.

Lisäksi voit asettaa SAGEMAKER_TRITON_BUFFER_MANAGER_THREAD_COUNT ja SAGEMAKER_TRITON_THREAD_COUNT lankojen määrän optimoimiseksi.

container = {
    "Image": triton_image_uri,
    "ModelDataUrl": model_uri,
    "Environment": {"SAGEMAKER_TRITON_DEFAULT_MODEL_NAME": "ensemble_dali_inception"},
}
create_model_response = sm_client.create_model(
    ModelName=sm_model_name, ExecutionRoleArn=role, PrimaryContainer=container
)

Edellisellä mallilla luomme päätepisteen konfiguraation, jossa voimme määrittää päätepisteeseen haluttujen esiintymien tyypin ja määrän:

create_endpoint_config_response = sm_client.create_endpoint_config(
    EndpointConfigName=endpoint_config_name,
    ProductionVariants=[
        {
            "InstanceType": instance_type,
            "InitialVariantWeight": 1,
            "InitialInstanceCount": 1,
            "ModelName": sm_model_name,
            "VariantName": "AllTraffic",
        }
    ],
)
endpoint_config_arn = create_endpoint_config_response["EndpointConfigArn"]

Käytämme tätä päätepistemääritystä uuden SageMaker-päätepisteen luomiseen ja odotamme käyttöönoton päättymistä. Tila muuttuu InServiceksi, kun käyttöönotto onnistuu.

create_endpoint_response = sm_client.create_endpoint(
    EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name
)
endpoint_arn = create_endpoint_response["EndpointArn"]

Päätelmän hyötykuorma

Syötteen hyötykuorman kuva kulkee esikäsittelyn DALI-liukuhihnan läpi ja sitä käytetään Triton Inference Serverin tarjoamassa ensemble-skelderissä. Rakennamme päätelmäpäätepisteeseen välitettävän hyötykuorman:

payload = {
    "inputs": [
        {
            "name": "INPUT",
            "shape": rv2.shape,
            "datatype": "UINT8",
            "data": rv2.tolist(),
        }
    ]
}

Ensemble-päätelmä

Kun päätepiste on käynnissä, voimme käyttää esimerkkikuvaa johtopäätöspyynnön suorittamiseen käyttämällä JSON-tiedostomuotoa. Päättelypyyntömuodossa Triton käyttää KFServing-yhteisön standardipäätelmäprotokollia.

response = runtime_sm_client.invoke_endpoint(
    EndpointName=endpoint_name, ContentType="application/octet-stream", Body=json.dumps(payload)
)
print(json.loads(response["Body"].read().decode("utf8")))

Kanssa binary+json -muodossa, meidän on määritettävä pyynnön metatietojen pituus otsikossa, jotta Triton voi jäsentää binaarisen hyötykuorman oikein. Tämä tehdään käyttämällä mukautettua Content-Type-otsikkoa application/vnd.sagemaker-triton.binary+json;json-header-size={}.

Tämä on eri asia kuin an Inference-Header-Content-Length otsikko erillisellä Triton-palvelimella, koska mukautetut otsikot eivät ole sallittuja SageMakerissa.

Tritonclient-paketti tarjoaa apumenetelmiä hyötykuorman luomiseen ilman, että sinun tarvitsee tietää spesifikaation yksityiskohtia. Käytämme seuraavia menetelmiä muuntaaksemme päättelypyyntömme binäärimuotoon, joka tarjoaa pienemmät viiveet päätelmille. Katso GitHub muistikirja täytäntöönpanon yksityiskohtia varten.

response = runtime_sm_client.invoke_endpoint(
    EndpointName=endpoint_name,
    ContentType="application/vnd.sagemaker-triton.binary+json;json-header-size={}".format(
        header_length
    ),
    Body=request_body,
)

Yhteenveto

Tässä viestissä esittelimme, kuinka voit tuottaa mallikokonaisuuksia, jotka toimivat yhdessä esiintymässä SageMakerissa. Tämä suunnittelumalli voi olla hyödyllinen minkä tahansa esi- ja jälkikäsittelylogiikan yhdistämisessä päättelyennusteiden kanssa. SageMaker käyttää Tritonia ensemble-päätelmän suorittamiseen yksittäisessä säilössä esiintymässä, joka tukee kaikkia tärkeimpiä kehyksiä.

Katso lisää näytteitä SageMakerin Triton-yhtyeistä osoitteesta GitHub repo. Kokeile!


Tietoja Tekijät

Suorita ensemble ML -malleja Amazon SageMaker PlatoBlockchain Data Intelligencessä. Pystysuuntainen haku. Ai.James Park on ratkaisuarkkitehti Amazon Web Servicesissä. Hän työskentelee Amazon.comin kanssa suunnitella, rakentaa ja ottaa käyttöön teknologiaratkaisuja AWS:ssä, ja hän on erityisen kiinnostunut tekoälystä ja koneoppimisesta. Vapaa-ajallaan hän etsii uusia kulttuureja, uusia kokemuksia ja pysyy ajan tasalla viimeisimmistä teknologiatrendeistä.

Suorita ensemble ML -malleja Amazon SageMaker PlatoBlockchain Data Intelligencessä. Pystysuuntainen haku. Ai.Vikram Elango on vanhempi AI/ML Specialist Solutions -arkkitehti Amazon Web Servicesissä Virginiassa Yhdysvalloissa. Vikram auttaa 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.

Suorita ensemble ML -malleja Amazon SageMaker PlatoBlockchain Data Intelligencessä. 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 vaeltamisesta, innovatiivisten teknologioiden oppimisesta, TechCrunchien seuraamisesta ja perheensä kanssa viettämisestä.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen