Käitage ansambli ML-mudeleid rakenduses Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Käitage rakenduses Amazon SageMaker ansambli ML mudeleid

Mudelite juurutamine masinõppes (ML) muutub üha keerukamaks. Soovite juurutada mitte ainult ühte ML-mudelit, vaid suuri ML-mudelite rühmi, mis on esindatud ansambli töövoogudena. Need töövood koosnevad mitmest ML-mudelist. Nende ML-mudelite tootmine on keeruline, kuna peate järgima erinevaid jõudlus- ja latentsusnõudeid.

Amazon SageMaker toetab ühe eksemplari ansambleid koos Tritoni järeldusserver. See võimalus võimaldab teil käitada mudeliansambleid, mis mahuvad ühele eksemplarile. Kulisside taga kasutab SageMaker Triton Inference Serverit, et hallata ansamblit igal lõpp-punkti taga oleval eksemplaril, et maksimeerida läbilaskevõimet ja riistvara kasutust ülimadala (ühekohalise millisekundilise) järelduste latentsusega. Tritoniga saate valida ka paljude toetatud ML-raamistike (sh TensorFlow, PyTorch, ONNX, XGBoost ja NVIDIA TensorRT) ja infrastruktuuri taustaprogrammide, sealhulgas GPU-de, CPU-de ja AWS Inferentia.

Selle SageMakeri võimalusega saate optimeerida oma töökoormust, vältides kulukat võrgu latentsust ja kasutades ära arvutus- ja andmepaikudest ansambel-järelduskonveierite eeliseid. Selles postituses käsitleme Triton Inference Serveri kasutamise eeliseid ja kaalume, kas see on teie töökoormuse jaoks õige valik.

Lahenduse ülevaade

Triton Inference Server on loodud selleks, et võimaldada meeskondadel juurutada, käitada ja skaleerida koolitatud AI mudeleid mis tahes raamistikust mis tahes GPU- või CPU-põhises infrastruktuuris. Lisaks on see optimeeritud pakkuma suure jõudlusega järeldusi mastaabis selliste funktsioonidega nagu dünaamiline komplekteerimine, samaaegsed käitused, optimaalne mudeli konfiguratsioon, mudelite komplekti võimalused ja voogesituse sisendite tugi.

Töökoormused peaksid võtma arvesse võimalusi, mida Triton pakub, et tagada nende mudelite teenindamine. Triton toetab mitmeid populaarseid raamistikke, sealhulgas TensorFlow, PyTorch, ONNX, XGBoost ja NVIDIA TensorRT. Triton toetab ka erinevaid taustaprogramme mis on vajalikud algoritmide õigeks tööks. Peaksite tagama, et need taustaprogrammid toetaksid teie mudeleid ja kui taustaprogramm seda ei tee, võimaldab Triton teil oma mudeleid juurutada ja selle integreerida. Samuti peaksite kontrollima, kas teie algoritmi versioon on toetatud, ja veenduma, et mudeli artefaktid on vastava taustaprogrammi poolt aktsepteeritavad. Kontrollimaks, kas teie konkreetne algoritm on toetatud, vaadake Tritoni järeldusserveri taustaprogramm NVIDIA hooldatavate taustaprogrammide loendi jaoks.

Võib esineda olukordi, kus teie mudelid või mudelikomplektid ei tööta Tritonis ilma suuremat pingutust nõudmata, näiteks kui teie algoritmi jaoks pole algselt toetatud taustaprogrammi. Arvesse tuleb võtta ka teisi kaalutlusi, näiteks kasuliku koormuse vorming ei pruugi olla ideaalne, eriti kui teie kandevõime võib teie taotluse jaoks olla suur. Nagu alati, peaksite pärast nende töökoormuste juurutamist oma jõudlust kinnitama, et tagada teie ootuste täitmine.

Võtame piltide klassifitseerimise närvivõrgu mudeli ja vaatame, kuidas saame oma töökoormust kiirendada. Selles näites kasutame oma eeltöötluse kiirendamiseks oma ansambli kontekstis NVIDIA DALI taustaprogrammi.

Looge Tritoni mudeliansambleid

Triton Inference Server lihtsustab tehisintellekti mudelite ulatuslikku juurutamist. Triton Inference Server on varustatud mugava lahendusega, mis lihtsustab eel- ja järeltöötluse torujuhtmete ehitamist. Platvorm Triton Inference Server pakub ansamblite planeerijat, mida saate kasutada järeldusprotsessis osalevate ansamblimudelite konveieri loomiseks, tagades samal ajal tõhususe ja optimeerides läbilaskevõimet.

Triton Inference Server teenindab mudeleid mudelihoidlatest. Vaatame DALI eeltöötlusmudelit, TensorFlow inception V3 mudelit ja mudelite ansambli konfiguratsiooni sisaldava ansamblimudeli mudelihoidla paigutust. Iga alamkataloog sisaldab vastavate mudelite hoidlateavet. The config.pbtxt fail kirjeldab mudelite mudeli konfiguratsiooni. Igal kataloogil peab mudeli iga versiooni jaoks olema üks numbriline alamkaust ja seda juhib spetsiaalne taustaprogramm, mida Triton toetab.

NVIDIA Tritoni mudelihoidla

NVIDIA DALI

Selle postituse jaoks kasutame oma mudelite komplektis eeltöötlusmudelina NVIDIA andmete laadimise raamatukogu (DALI). NVIDIA DALI on andmebaas andmete laadimiseks ja eeltöötluseks, et kiirendada süvaõppe rakendusi. See pakub optimeeritud ehitusplokkide kogumit pildi-, video- ja heliandmete laadimiseks ja töötlemiseks. Saate seda kasutada populaarsete süvaõppe raamistike sisseehitatud andmelaadijate ja andmeiteraatorite kaasaskantava lisana.

NVIDIA Dali

Järgmine kood näitab DALI taustaprogrammi mudeli konfiguratsiooni:

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" }
  }
]

Alguse V3 mudel

Selle postituse jaoks näitame, kuidas DALI-d kasutatakse mudeliansamblis koos Inception V3-ga. Inception V3 TensorFlow eelkoolitatud mudel salvestatakse GraphDef-vormingus ühe failina nimega model.graphdef. config.pbtxt fail sisaldab teavet mudeli nime, platvormi, max_batch_sizening sisend- ja väljundlepingud. Soovitame seadistada max_batch_size konfiguratsiooni väiksemaks kui algse V3 mudeli partii suurus. Sildifailis on klassisildid 1,000 erineva klassi jaoks. Kopeerime algklassifikatsiooni mudeli sildid lehele inception_graphdef kataloog mudelihoidlas. Siltide fail sisaldab 1,000 klassi silti IMAGEnet klassifikatsiooni andmestik.

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"
  }
]

Tritoni ansambel

Järgmine kood näitab DALI eeltöötluse ja kujutise klassifitseerimise jaoks mõeldud ansamblimudeli mudelikonfiguratsiooni:

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"
      }
    }
  ]
}

Looge SageMakeri lõpp-punkt

SageMakeri lõpp-punktid võimaldavad reaalajas hostimist, kus on vaja millisekundi reageerimisaega. SageMaker võtab mudelite hostimise haldamise diferentseerimata raskuste poole ja tal on automaatse skaleerimise võimalus. Lisaks pakutakse ka mitmeid võimalusi, sealhulgas teie mudeli mitme variandi majutamine, mudelite A/B testimine, integreerimine Amazon CloudWatch mudeli jõudluse jälgitavus ja mudeli triivi jälgimine.

Loome mudeliartefaktidest, millesse üles laadisime, SageMakeri mudeli Amazoni lihtne salvestusteenus (Amazon S3).

Järgmisena pakume ka täiendava keskkonnamuutuja: SAGEMAKER_TRITON_DEFAULT_MODEL_NAME, mis määrab Tritoni poolt laaditava mudeli nime. Selle võtme väärtus peaks ühtima Amazon S3 üles laaditud mudelipaketi kausta nimega. See muutuja on valikuline juhtudel, kui kasutate ühte mudelit. Ansamblimudelite puhul tuleb see võti määrata, et Triton SageMakeris käivituks.

Lisaks saate määrata SAGEMAKER_TRITON_BUFFER_MANAGER_THREAD_COUNT ja SAGEMAKER_TRITON_THREAD_COUNT lõimede arvu optimeerimiseks.

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
)

Eelmise mudeliga loome lõpp-punkti konfiguratsiooni, kus saame määrata lõpp-punktis soovitud eksemplaride tüübi ja arvu:

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"]

Kasutame seda lõpp-punkti konfiguratsiooni uue SageMakeri lõpp-punkti loomiseks ja ootame juurutamise lõpetamist. Kui juurutamine õnnestub, muutub olekuks InService.

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

Järeldus kasulik koormus

Sisend kasuliku koormuse kujutis läbib eeltöötluse DALI konveieri ja seda kasutatakse Triton Inference Serveri pakutavas ansambli planeerijas. Koostame kasuliku koormuse, mis edastatakse järelduse lõpp-punkti:

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

Ansambli järeldus

Kui lõpp-punkt töötab, saame kasutada näidiskujutist järelduspäringu tegemiseks, kasutades kasuliku koormuse vorminguna JSON-i. Järelduspäringu vormingu jaoks kasutab Triton kogukonna standardseid järeldusprotokolle KFServing.

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")))

Koos binary+json vormingus, peame päises määrama päringu metaandmete pikkuse, et Triton saaks binaarset kasulikku koormust õigesti sõeluda. Seda tehakse kohandatud sisutüübi päise abil application/vnd.sagemaker-triton.binary+json;json-header-size={}.

See erineb rakenduse kasutamisest Inference-Header-Content-Length päis eraldiseisvas Tritoni serveris, kuna kohandatud päised pole SageMakeris lubatud.

Tritonclienti pakett pakub kasulikke meetodeid kasuliku koormuse genereerimiseks, ilma et peaksite spetsifikatsiooni üksikasju teadma. Järelduspäringu teisendamiseks binaarvormingusse kasutame järgmisi meetodeid, mis tagavad järelduste tegemise väiksema latentsusaega. Vaadake GitHubi märkmik rakendamise üksikasjade jaoks.

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,
)

Järeldus

Selles postituses näitasime, kuidas saate luua mudeliansambleid, mis töötavad SageMakeris ühel eksemplaril. See kujundusmuster võib olla kasulik mis tahes eel- ja järeltöötlusloogika kombineerimisel järelduste prognoosidega. SageMaker kasutab Tritonit ansambli järelduse käitamiseks ühes konteineris eksemplaris, mis toetab kõiki peamisi raamistikke.

Lisateavet SageMakeri Tritoni ansamblite näidistest leiate aadressilt GitHub repo. Proovi!


Autoritest

Käitage ansambli ML-mudeleid rakenduses Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Jamesi park on Amazon Web Servicesi lahenduste arhitekt. Ta teeb koostööd Amazon.com-iga, et kavandada, ehitada ja juurutada AWS-is tehnoloogilised lahendused ning ta on eriti huvitatud AI-st ja masinõppest. Vabal ajal meeldib talle otsida uusi kultuure, uusi kogemusi ning olla kursis uusimate tehnoloogiatrendidega.

Käitage ansambli ML-mudeleid rakenduses Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Vikram Elango on Ameerika Ühendriikides Virginias asuva Amazon Web Servicesi AI/ML-lahenduste vanemarhitekt. Vikram aitab finants- ja kindlustussektori klientidel projekteerimise ja ideede juhtimisel luua ja juurutada laialdaselt masinõpperakendusi. Praegu on ta keskendunud loomuliku keele töötlemisele, vastutustundlikule AI-le, järelduste optimeerimisele ja ML-i skaleerimisele kogu ettevõttes. Vabal ajal meeldib talle perega reisida, matkata, süüa teha ja telkida.

Käitage ansambli ML-mudeleid rakenduses Amazon SageMaker PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Saurabh Trikande on Amazon SageMaker Inference'i vanemtootejuht. Ta on kirglik töö klientidega ja teda motiveerib eesmärk demokratiseerida masinõpe. Ta keskendub põhiprobleemidele, mis on seotud keeruliste ML-rakenduste, mitme rentniku ML-mudelite, kulude optimeerimise ja süvaõppemudelite juurutamise kättesaadavamaks muutmisega. Vabal ajal naudib Saurabh matkamist, uuenduslike tehnoloogiate õppimist, TechCrunchi jälgimist ja perega aega veetmist.

Ajatempel:

Veel alates AWS-i masinõpe