Klassikaliste ML-i ja LLM-ide pakkimine ja juurutamine Amazon SageMakeriga, 1. osa: PySDK täiustused | Amazoni veebiteenused

Klassikaliste ML-i ja LLM-ide pakkimine ja juurutamine Amazon SageMakeriga, 1. osa: PySDK täiustused | Amazoni veebiteenused

Amazon SageMaker on täielikult hallatav teenus, mis võimaldab arendajatel ja andmeteadlastel kiiresti ja vaevata ehitada, koolitada ja juurutada masinõppe (ML) mudeleid mis tahes ulatuses. SageMaker muudab mudelite tootmisse juurutamise otse teenuse API-kutsete kaudu lihtsaks. Mudelid on pakendatud konteineritesse, et neid oleks jõuline ja skaleeritav. Kuigi see pakub erinevaid sisenemispunkte, nagu SageMaker Python SDK, AWS SDK-d, SageMakeri konsool ja Amazon SageMaker Studio Sülearvutid, et lihtsustada koolituse ja ML-mudelite ulatuslikku juurutamist, otsivad kliendid endiselt paremaid viise oma mudelite juurutamiseks mänguväljakute testimiseks ja tootmise juurutamise optimeerimiseks.

Toome turule kaks uut viisi, kuidas SageMakeri abil mudelite pakendamise ja juurutamise protsessi lihtsustada.

Selles postituses tutvustame uut SageMaker Python SDK-d ModelBuilder kogemus, mille eesmärk on minimeerida uute SageMakeri kasutajate, näiteks andmeteadlaste õppimiskõverat, aidates samal ajal ka kogenud MLOpsi inseneridel SageMakeri hostimisteenuste kasutamist maksimeerida. See vähendab esialgse seadistamise ja juurutamise keerukust ning annab juhiseid parimate tavade kohta, kuidas SageMakeri kõiki võimalusi ära kasutada. Pakume selle uue SageMakeri funktsiooni kohta üksikasjalikku teavet ja GitHubi näiteid.

Teine uus käivitamine on SageMaker Studio uue interaktiivse juurutamise kogemuse kasutamine. Arutame seda 2. osas.

Mudelite juurutamine SageMakeri lõpp-punktis hõlmab mitmeid samme, et mudel oleks SageMakeri lõpp-punktis hostimiseks valmis. See hõlmab mudeli artefaktide õigesse vormingusse ja struktuuri seadmist, järelduskoodi loomist ja oluliste üksikasjade (nt mudeli pildi URL) täpsustamist, Amazoni lihtne salvestusteenus (Amazon S3) mudeli artefaktide asukoht, serialiseerimise ja deserialiseerimise etapid ning vajalikud AWS-i identiteedi- ja juurdepääsuhaldus (IAM) rollid, et hõlbustada sobivaid juurdepääsuõigusi. Pärast seda nõuab lõpp-punkti konfiguratsioon järelduse tüübi määramist ja vastavate parameetrite (nt eksemplaritüübid, loendused ja liikluse jaotus mudelivariantide vahel) konfigureerimist.

Et kliente SageMakeri hostimise kasutamisel veelgi aidata, tutvustasime uut ModelBuilder klassis SageMaker Python SDK, mis toob mudelite SageMakeri lõpp-punktidesse juurutamisel järgmised peamised eelised:

  • Ühtlustab juurutamiskogemust raamistike lõikes – Uus kogemus pakub järjepidevat töövoogu erinevate raamistike (nt PyTorch, TensorFlow ja XGBoost) abil loodud mudelite juurutamiseks. See lihtsustab juurutamisprotsessi.
  • Automatiseerib mudeli juurutamist – Sellised ülesanded nagu sobivate konteinerite valimine, sõltuvuste hõivamine ja serialiseerimise/deserialiseerimise käsitlemine on automatiseeritud, vähendades juurutamiseks vajalikku käsitsi tööd.
  • Pakub sujuvat üleminekut kohalikult SageMakeri hostitud lõpp-punktile – Minimaalsete koodimuudatustega saab mudeleid hõlpsalt kohalikult testimiselt üle viia SageMakeri lõpp-punktis juurutamisele. Reaalajas logid muudavad silumise sujuvaks.

Üldiselt SageMaker ModelBuilder lihtsustab ja ühtlustab mudelite pakkimisprotsessi SageMakeri järelduste tegemiseks, käsitledes madala taseme üksikasju ning pakub tööriistu lõpp-punktide testimiseks, valideerimiseks ja optimeerimiseks. See parandab arendaja tootlikkust ja vähendab vigu.

Järgmistes jaotistes sukeldume põhjalikult selle uue funktsiooni üksikasjadesse. Arutame ka, kuidas juurutada mudeleid SageMakeri hostimisel ModelBuilder, mis lihtsustab protsessi. Seejärel tutvustame teile mõned näited erinevate raamistike jaoks, et juurutada nii traditsioonilisi ML-mudeleid kui ka põhimudeleid, mis toidavad generatiivse AI kasutusjuhtumeid.

SageMaker ModelBuilderiga tutvumine

Uus ModelBuilder on Pythoni klass, mis keskendub raamistike, nagu XGBoost või PyTorch, abil loodud ML-mudelite võtmisele ja nende teisendamisele mudeliteks, mis on SageMakeris juurutamiseks valmis. ModelBuilder annab build() funktsioon, mis genereerib artefakte vastavalt mudeliserverile, ja a deploy() funktsioon, et juurutada kohapeal või SageMakeri lõpp-punktis. Selle funktsiooni kasutuselevõtt lihtsustab mudelite integreerimist SageMakeri keskkonnaga, optimeerides neid jõudluse ja skaleeritavuse huvides. Järgmine diagramm näitab, kuidas ModelBuilder töötab kõrgel tasemel.

Klassikaliste ML-i ja LLM-ide pakkimine ja juurutamine Amazon SageMakeriga, 1. osa: PySDK täiustused | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

ModelBuilderi klass

. Model Builder klass pakub erinevaid kohandamisvõimalusi. Kuid raamistiku mudeli juurutamiseks ootab mudeli koostaja lihtsalt mudelit, sisendit, väljundit ja rolli:

class ModelBuilder( model, # model id or model object role_arn, # IAM role schema_builder, # defines the input and output mode, # select between local deployment and depoy to SageMaker Endpoints ...
)

SchemaBuilder

. SchemaBuilder klass võimaldab teil määratleda oma lõpp-punkti sisendi ja väljundi. See võimaldab skeemi koostajal sisendi ja väljundi järjestamiseks ja deserialiseerimiseks genereerida vastavad järjestusfunktsioonid. Järgmine klassifail pakub kõiki kohandamise võimalusi:

class SchemaBuilder( sample_input: Any, sample_output: Any, input_translator: CustomPayloadTranslator = None, output_translator: CustomPayloadTranslator = None
)

Kuid enamikul juhtudel toimiks lihtsalt näidissisend ja -väljund. Näiteks:

input = "How is the demo going?"
output = "Comment la démo va-t-elle?"
schema = SchemaBuilder(input, output)

Näidissisendi ja -väljundi pakkumisega SchemaBuilder saab automaatselt määrata vajalikud teisendused, muutes integreerimisprotsessi arusaadavamaks. Täiustatud kasutusjuhtudel on paindlik nii sisendi kui ka väljundi jaoks kohandatud tõlkefunktsioonid, tagades, et ka keerukamaid andmestruktuure saab tõhusalt käsitleda. Näitame seda järgmistes jaotistes, juurutades erinevaid mudeleid erinevate raamistikega ModelBuilder.

Kohaliku režiimi kogemus

Selles näites kasutame ModelBuilder XGBoosti mudeli kohalikuks juurutamiseks. Režiimi abil saate vahetada kohaliku testimise ja SageMakeri lõpp-punkti juurutamise vahel. Esmalt koolitame XGBoosti mudelit (kohalikult või SageMakeris) ja salvestame mudeli artefaktid töökataloogi:

# Train the model
model = XGBClassifier()
model.fit(X_train, y_train)
model.save_model(model_dir + "/my_model.xgb")

Seejärel loome ModelBuilderi objekti, edastades tegeliku mudelobjekti SchemaBuilder mis kasutab näidistesti sisend- ja väljundobjekte (sama sisendit ja väljundit, mida kasutasime mudeli treenimisel ja testimisel), et järeldada vajalik serialiseerimine. Pange tähele, et me kasutame Mode.LOCAL_CONTAINER kohaliku juurutuse määramiseks. Pärast seda helistame ehitama funktsioon toetatud raamistiku konteineri kujutise automaatseks tuvastamiseks ja sõltuvuste otsimiseks. Vaadake järgmist koodi:

model_builder_local = ModelBuilder( model=model, schema_builder=SchemaBuilder(X_test, y_pred), role_arn=execution_role, mode=Mode.LOCAL_CONTAINER
)
xgb_local_builder = model_builder_local.build()

Lõpuks saame helistada deploy funktsioon mudelobjektis, mis pakub silumise hõlbustamiseks ka reaalajas logimist. Te ei pea määrama eksemplari tüüpi ega arvu, kuna mudel juurutatakse kohapeal. Kui sisestasite need parameetrid, siis neid ignoreeritakse. See funktsioon tagastab ennustava objekti, mida saame kasutada testandmetega ennustamiseks:

# note: all the serialization and deserialization is handled by the model builder.
predictor_local = xgb_local_builder.deploy(
# instance_type='ml.c5.xlarge',
# initial_instance_count=1
) # Make prediction for test data. predictor_local.predict(X_test)

Soovi korral saate juhtida ka mudeli laadimist ning eel- ja järeltöötlust InferenceSpec. Lisateavet anname selles postituses hiljem. Kasutades LOCAL_CONTAINER on suurepärane viis skripti kohapeal testimiseks enne SageMakeri lõpp-punkti juurutamist.

Vt model-builder-xgboost.ipynb näide, et testida juurutamist nii kohapeal kui ka SageMakeri lõpp-punktis kasutades ModelBuilder.

Kasutage SageMakeri lõpp-punktides traditsioonilisi mudeleid

Järgmistes näidetes näitame, kuidas seda kasutada ModelBuilder traditsiooniliste ML-mudelite juurutamiseks.

XGBoost mudelid

Sarnaselt eelmise jaotisega saate XGBoosti mudeli juurutada SageMakeri lõpp-punkti, muutes mode parameetri loomisel ModelBuilder objekt:

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(sample_input=sample_input, sample_output=sample_output), role_arn=execution_role, mode=Mode.SAGEMAKER_ENDPOINT
)
xgb_builder = model_builder.build()
predictor = xgb_builder.deploy( instance_type='ml.c5.xlarge', initial_instance_count=1
)

Pange tähele, et SageMakeri lõpp-punktidesse juurutamisel peate määrama eksemplari tüübi ja arvu, kui helistate deploy funktsiooni.

Vt model-builder-xgboost.ipynb näide XGBoosti mudeli juurutamiseks.

Tritoni mudelid

Võite kasutada ModelBuilder PyTorchi mudelite teenindamiseks Tritoni järeldusserver. Selleks peate määrama model_server parameeter as ModelServer.TRITON, läbima modelli ja omama a SchemaBuilder objekt, mis nõuab mudeli näidissisendeid ja -väljundeid. ModelBuilder hoolitseb ülejäänu eest teie eest.

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(sample_input=sample_input, sample_output=sample_output), role_arn=execution_role, model_server=ModelServer.TRITON, mode=Mode.SAGEMAKER_ENDPOINT
) triton_builder = model_builder.build() predictor = triton_builder.deploy( instance_type='ml.g4dn.xlarge', initial_instance_count=1
)

Viitama model-builder-triton.ipynb mudeli juurutamiseks koos Tritoniga.

Kallistavad näomudelid

Selles näites näitame teile, kuidas juurutada Hugging Face'i pakutavat eelkoolitatud trafo mudelit SageMakerile. Soovime kasutada kallistavat nägu pipeline mudeli laadimiseks, nii et loome jaoks kohandatud järeldusspetsifikatsiooni ModelBuilder:

# custom inference spec with hugging face pipeline
class MyInferenceSpec(InferenceSpec): def load(self, model_dir: str): return pipeline("translation_en_to_fr", model="t5-small") def invoke(self, input, model): return model(input) inf_spec = MyInferenceSpec()

Samuti määratleme järelduste töökoormuse sisendi ja väljundi, määratledes SchemaBuilder objekt mudeli sisendi ja väljundi põhjal:

schema = SchemaBuilder(value,output)

Seejärel loome ModelBuilder objekti ja juurutage mudel SageMakeri lõpp-punktis, järgides sama loogikat, nagu on näidatud teises näites:

builder = ModelBuilder( inference_spec=inf_spec, mode=Mode.SAGEMAKER_ENDPOINT, # you can change it to Mode.LOCAL_CONTAINER for local testing schema_builder=schema, image_uri=image,
)
model = builder.build( role_arn=execution_role, sagemaker_session=sagemaker_session,
)
predictor = model.deploy( initial_instance_count=1, instance_type='ml.g5.2xlarge'
)

Viitama model-builder-huggingface.ipynb Hugging Face torujuhtme mudeli juurutamiseks.

Juurutage SageMakeri lõpp-punktides vundamendimudeleid

Järgmistes näidetes näitame, kuidas seda kasutada ModelBuilder vundamendimudelite juurutamiseks. Nii nagu varem mainitud mudelite puhul, on vaja vaid mudeli ID-d.

Kallistamine Face Hub

Kui soovite juurutada sihtasutuse mudelit Kallistamine Face Hub, pole vaja teha muud, kui edastada eelkoolitatud mudeli ID. Näiteks juurutab järgmine koodilõik meta-laama/laama-2-7b-hf mudel kohapeal. Saate muuta režiimi Mode.SAGEMAKER_ENDPOINT SageMakeri lõpp-punktidesse juurutamiseks.

model_builder = ModelBuilder( model="meta-llama/Llama-2-7b-hf", schema_builder=SchemaBuilder(sample_input, sample_output), model_path="/home/ec2-user/SageMaker/LoadTestResources/meta-llama2-7b", #local path where artifacts will be saved mode=Mode.LOCAL_CONTAINER, env_vars={ # Llama 2 is a gated model and requires a Hugging Face Hub token. "HUGGING_FACE_HUB_TOKEN": "<YourHuggingFaceToken>" }
)
model = model_builder.build()
local_predictor = model.deploy()

Hugging Face Hubi avatavate mudelite puhul peate taotlema juurdepääsu Hugging Face Hubi kaudu ja kasutama seotud võtit, edastades selle keskkonnamuutujana HUGGING_FACE_HUB_TOKEN. Mõned Hugging Face mudelid võivad vajada kaugkoodi usaldamist. Seda saab määrata ka keskkonnamuutujaks, kasutades HF_TRUST_REMOTE_CODE. Algselt, ModelBuilder kasutab kallistava näo teksti genereerimise järeldust (TGI) konteiner Hugging Face mudelite aluskonteinerina. Kui soovite kasutada AWS Large Model Inference (LMI) konteinerid, saate seadistada model_server parameeter as ModelServer.DJL_SERVING kui konfigureerite ModelBuilder objekt

Korralik omadus ModelBuilder on võimalus kasutada konteineri parameetrite kohalikku häälestamist LOCAL_CONTAINER režiimis. Seda funktsiooni saab kasutada lihtsalt käivitades tuned_model = model.tune().

Viitama demo-model-builder-huggingface-llama2.ipynb Hugging Face Hubi mudeli juurutamiseks.

SageMaker KiirStart

Amazon SageMaker JumpStart pakub ka mitmeid eelkoolitatud vundamendimudeleid. Nii nagu Hugging Face Hubi mudeli juurutamise protsess, on ka mudeli ID nõutav. Mudeli SageMaker JumpStart juurutamine SageMakeri lõpp-punkti on sama lihtne kui järgmise koodi käivitamine:

model_builder = ModelBuilder( model="huggingface-llm-falcon-7b-bf16", schema_builder=SchemaBuilder(sample_input, sample_output), role_arn=execution_role
) sm_ep_model = model_builder.build() predictor = sm_ep_model.deploy()

Kõikide saadaolevate SageMaker JumpStart mudeli ID-de kohta vt Sisseehitatud algoritmid koos eelkoolitatud mudelitabeliga. Viitama model-builder-jumpstart-falcon.ipynb SageMaker JumpStart mudeli juurutamiseks.

Järelduskomponent

ModelBulder võimaldab mudelite juurutamiseks kasutada SageMakeri uut järelduskomponendi võimalust. Järelduskomponentide kohta lisateabe saamiseks vt Vähendage mudeli kasutuselevõtu kulusid keskmiselt 50%, kasutades SageMakeri uusimaid funktsioone. Saate kasutada juurutamiseks järelduskomponente ModelBuilder täpsustades endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED aasta deploy() meetod. Võite kasutada ka tune() meetod, mis hangib optimaalse arvu kiirendeid ja muudab seda vajadusel.

resource_requirements = ResourceRequirements( requests={ "num_accelerators": 4, "memory": 1024, "copies": 1, }, limits={},
) goldfinch_predictor_2 = model_2.deploy( mode=Mode.SAGEMAKER_ENDPOINT, endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED, ... )

Viitama model-builder-inference-component.ipynb mudeli juurutamiseks järelduskomponendina.

Kohandage ModelBuilder klassi

. ModelBuilder klass võimaldab kohandada mudeli laadimist kasutades InferenceSpec.

Lisaks saate juhtida kasuliku koormuse ja vastuse serialiseerimist ja deserialiseerimist ning kohandada eel- ja järeltöötlust, kasutades CustomPayloadTranslator. Lisaks, kui teil on vaja laiendada meie eelehitatud konteinereid mudeli juurutamiseks SageMakeris, saate kasutada ModelBuilder mudeli pakkimisprotsessi haldamiseks. Järgmises jaotises anname nende võimaluste kohta üksikasjalikumalt.

JäreldusSpec

JäreldusSpec pakub täiendavat kohandamiskihti. See võimaldab teil määratleda, kuidas mudel laaditakse ja kuidas see käsitleb sissetulevaid järeldustaotlusi. Läbi InferenceSpec, saate määrata oma mudelitele kohandatud laadimisprotseduurid, jättes vaikelaadimismehhanismidest mööda. See paindlikkus on eriti kasulik mittestandardsete mudelite või kohandatud järelduste torujuhtmetega töötamisel. Kutsumismeetodit saab kohandada, pakkudes teile võimalust kohandada seda, kuidas mudel töötleb sissetulevaid päringuid (eel- ja järeltöötlus). See kohandamine võib olla oluline tagamaks, et järeldusprotsess on vastavuses mudeli konkreetsete vajadustega. Vaadake järgmist koodi:

class InferenceSpec(abc.ABC): @abc.abstractmethod def load(self, model_dir: str): pass @abc.abstractmethod def invoke(self, input_object: object, model: object): pass

Järgmine kood näitab selle klassi kasutamise näidet:

class MyInferenceSpec(InferenceSpec): def load(self, model_dir: str): return // model object def invoke(self, input, model): return model(input)

KohandatudPayloadTranslator

SageMakeri lõpp-punktide kutsumisel saadetakse andmed erinevate MIME tüüpidega HTTP-koormuste kaudu. Näiteks lõpp-punktile järelduste tegemiseks saadetud pilt tuleb kliendi poolel teisendada baitideks ja saata HTTP kasuliku koormuse kaudu lõpp-punkti. Kui lõpp-punkt saab kasuliku koormuse, peab ta deserialiseerima baidistringi tagasi andmetüübile, mida mudel eeldab (tuntud ka kui serveripoolne deserialiseerimine). Pärast seda, kui mudel on ennustamise lõpetanud, tuleb tulemused järjestada baitideni, mida saab HTTP-koormuse kaudu kasutajale või kliendile tagasi saata. Kui klient saab vastusebaidiandmed, peab ta teostama kliendipoolse deserialiseerimise, et teisendada baitide andmed tagasi oodatud andmevormingusse (nt JSON). Vähemalt peate andmed järgmise jaoks teisendama (nagu järgmisel joonisel nummerdatud):

  1. Järelduspäringu serialiseerimine (käitleb klient)
  2. Järelduspäringu serialiseerimine (haldab server või algoritm)
  3. Mudeli esilekutsumine kasuliku koormuse vastu
  4. Vastuse kasuliku koormuse tagasisaatmine
  5. Järelduste vastuse serialiseerimine (haldab server või algoritm)
  6. Järeldusvastuse deserialiseerimine (kätleb klient)

Järgmine diagramm näitab serialiseerimise ja deserialiseerimise protsessi kutsumisprotsessi ajal.

Klassikaliste ML-i ja LLM-ide pakkimine ja juurutamine Amazon SageMakeriga, 1. osa: PySDK täiustused | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Järgmises koodilõigul näitame näidet CustomPayloadTranslator kui on vaja täiendavat kohandamist nii serialiseerimise kui ka deserialiseerimise käsitlemiseks vastavalt kliendi ja serveri poolel:

from sagemaker.serve import CustomPayloadTranslator # request translator
class MyRequestTranslator(CustomPayloadTranslator): # This function converts the payload to bytes - happens on client side def serialize_payload_to_bytes(self, payload: object) -> bytes: # converts the input payload to bytes ... ... return //return object as bytes # This function converts the bytes to payload - happens on server side def deserialize_payload_from_stream(self, stream) -> object: # convert bytes to in-memory object ... ... return //return in-memory object # response translator class MyResponseTranslator(CustomPayloadTranslator): # This function converts the payload to bytes - happens on server side def serialize_payload_to_bytes(self, payload: object) -> bytes: # converts the response payload to bytes ... ... return //return object as bytes # This function converts the bytes to payload - happens on client side def deserialize_payload_from_stream(self, stream) -> object: # convert bytes to in-memory object ... ... return //return in-memory object

aasta demo-model-builder-pytorch.ipynb sülearvuti, demonstreerime, kuidas PyTorchi mudelit hõlpsasti SageMakeri lõpp-punkti juurutada ModelBuilder koos CustomPayloadTranslator ja InferenceSpec klass.

Kasutuselevõtu etapimudel

Kui soovite mudelit järelduste tegemiseks või mudeliregistrisse lavastada, võite kasutada model.create() or model.register(). Lubatud mudel luuakse teenuses ja seejärel saate selle hiljem juurutada. Vaadake järgmist koodi:

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(X_test, y_pred), role_arn=execution_role, )
deployable_model = model_builder.build() deployable_model.create() # deployable_model.register() for model registry

Kasutage kohandatud konteinereid

SageMaker pakub eelehitatud Dockeri pildid selle sisseehitatud algoritmide ja toetatud süvaõppe raamistike jaoks, mida kasutatakse koolituseks ja järeldusteks. Kui eelehitatud SageMakeri konteiner ei vasta kõigile teie nõuetele, saate olemasolevat pilti oma vajaduste järgi laiendada. Eelehitatud pildi laiendamisega saate kasutada kaasasolevaid süvaõppe teeke ja sätteid, ilma et peaksite pilti nullist looma. Lisateavet eelehitatud konteinerite laiendamise kohta leiate SageMakeri dokumendist. ModelBuilder toetab kasutusjuhtumeid oma konteinerite toomisel, mis on laiendatud meie eelehitatud Dockeri konteineritest.

Sel juhul oma konteineri kujutise kasutamiseks peate määrama väljad image_uri ja model_server määratlemisel ModelBuilder:

model_builder = ModelBuilder( model=model, # Pass in the actual model object. its "predict" method will be invoked in the endpoint. schema_builder=SchemaBuilder(X_test, y_pred), # Pass in a "SchemaBuilder" which will use the sample test input and output objects to infer the serialization needed. role_arn=execution_role, image_uri=image_uri, # REQUIRED FOR BYOC: Passing in image hosted in personal ECR Repo model_server=ModelServer.TORCHSERVE, # REQUIRED FOR BYOC: Passing in model server of choice mode=Mode.SAGEMAKER_ENDPOINT, dependencies={"auto": True, "custom": ["protobuf==3.20.2"]}
)

Siin, image_uri on konteineri kujutis ARN, mis salvestatakse teie kontole Amazoni elastsete konteinerite register (Amazon ECR) hoidla. Üks näide on näidatud järgmiselt:

# Pulled the xgboost:1.7-1 DLC and pushed to personal ECR repo
image_uri = "<your_account_id>.dkr.ecr.us-west-2.amazonaws.com/my-byoc:xgb"

Kui image_uri on määratud ajal ModelBuilder loomise protsessi, jätab see pildi automaatse tuvastamise vahele, kuna pildi URI on esitatud. Kui model_server ei ole ModelBuilderis määratud, kuvatakse valideerimise tõrketeade, näiteks:

ValueError: Model_server must be set when image_uri is set. Supported model servers: {<ModelServer.TRITON: 5>, <ModelServer.DJL_SERVING: 4>, <ModelServer.TORCHSERVE: 1>}

Selle postituse avaldamise seisuga ModelBuilder toetab oma konteinerite toomist, mis on meie käest laiendatud eelehitatud DLC konteineri pildid või mudeliserveritega ehitatud konteinerid nagu Deep Java Library (DJL), Teksti genereerimise järeldus (TGI), TorchServeja Tritoni järeldusserver.

Kohandatud sõltuvused

Jooksmisel ModelBuilder.build(), jäädvustab see vaikimisi teie Pythoni keskkonna automaatselt a requirements.txt faili ja installib konteinerisse sama sõltuvuse. Mõnikord on teie kohalik Pythoni keskkond aga konteineris oleva keskkonnaga vastuolus. ModelBuilder pakub lihtsat viisi jäädvustatud sõltuvuste muutmiseks selliste sõltuvuskonfliktide lahendamiseks, võimaldades teil sisestada oma kohandatud konfiguratsioonid ModelBuilder. Pange tähele, et see kehtib ainult TorchServe'i ja Tritoni jaoks InferenceSpec. Näiteks saate ModelBuilderis määrata sisendparameetrite sõltuvused, mis on Pythoni sõnastik, järgmiselt.

dependency_config = { "auto" = True, "requirements" = "/path/to/your/requirements.txt" "custom" = ["module>=1.2.3,<1.5", "boto3==1.16.*", "some_module@http://some/url"]
} ModelBuilder( # Other params dependencies=dependency_config,
).build()

Määratleme järgmised väljad:

  • auto – Kas proovida automaatselt jäädvustada oma keskkonna sõltuvusi.
  • nõuded – Teejada enda juurde requirements.txt faili. (See on valikuline.)
  • tava – muude kohandatud sõltuvuste loend, mida soovite lisada või muuta. (See on valikuline.)

Kui sama moodul on määratud mitmes kohas, custom on siis kõrgeim prioriteet requirementsja auto on madalaima prioriteediga. Oletame näiteks, et automaattuvastuse ajal ModelBuilder tuvastab numpy==1.25Ja requirements.txt esitatakse fail, mis täpsustab numpy>=1.24,<1.26. Lisaks on kohandatud sõltuvus: custom = ["numpy==1.26.1"]. Sel juhul, numpy==1.26.1 valitakse, kui paigaldame konteinerisse sõltuvused.

Koristage

Kui olete mudelite testimise lõpetanud, kustutage kulude säästmiseks lõpp-punkt, kui lõpp-punkti pole enam vaja. Saate jälgida Koristage jaotises igas demomärkmikus või kasutage demo abil loodud mudeli ja lõpp-punkti kustutamiseks järgmist koodi:

predictor.delete_model()
predictor.delete_endpoint()

Järeldus

Uus SageMaker ModelBuilderi võimalus lihtsustab ML-mudelite tootmisse juurutamist SageMakeris. Käsitsedes paljusid keerulisi detaile kulisside taga, vähendab ModelBuilder uute kasutajate õppimiskõverat ja maksimeerib kogenud kasutajate kasutust. Vaid mõne koodirea abil saate juurutada nii sisseehitatud raamistikega mudeleid nagu XGBoost, PyTorch, Triton ja Hugging Face, aga ka SageMaker JumpStarti pakutavaid mudeleid SageMakeri tugevatesse skaleeritavatesse lõpp-punktidesse.

Soovitame kõigil SageMakeri kasutajatel seda uut võimalust proovida, viidates aadressile Model Builder dokumentatsiooni leht. ModelBuilder on nüüd saadaval kõigile SageMakeri kasutajatele ilma lisatasuta. Kasutage seda lihtsustatud töövoogu oma mudelite kiiremaks juurutamiseks. Ootame huviga, kuidas ModelBuilder teie mudeli arendamise elutsüklit kiirendab!

Eriline tänu Sirisha Upadhyayalale, Raymond Liule, Gary Wangile, Dhawal Patelile, Deepak Gargile ja Ram Vegirajule.


Autoritest

Klassikaliste ML-i ja LLM-ide pakkimine ja juurutamine Amazon SageMakeriga, 1. osa: PySDK täiustused | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Melanie Li, PhD, on Austraalias Sydneys asuva AWS-i AI/ML-i vanemspetsialist TAM. Ta aitab ettevõtte klientidel luua lahendusi, kasutades AWS-i tipptasemel AI/ML-i tööriistu, ning annab juhiseid ML-lahenduste väljatöötamiseks ja rakendamiseks parimate tavade alusel. Vabal ajal meeldib talle loodusega tutvuda ning pere ja sõpradega aega veeta.

Klassikaliste ML-i ja LLM-ide pakkimine ja juurutamine Amazon SageMakeriga, 1. osa: PySDK täiustused | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Marc Karp on ML arhitekt koos Amazon SageMaker Service meeskonnaga. Ta keskendub sellele, et aidata klientidel kavandada, juurutada ja hallata ML töökoormust ulatuslikult. Vabal ajal meeldib talle reisida ja avastada uusi kohti.

Klassikaliste ML-i ja LLM-ide pakkimine ja juurutamine Amazon SageMakeriga, 1. osa: PySDK täiustused | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Sam Edwards, on AWS Sydney pilveinsener (AI/ML), kes on spetsialiseerunud masinõppele ja Amazon SageMakerile. Ta on kirglik aidata klientidel lahendada masinõppe töövoogudega seotud probleeme ja luua neile uusi lahendusi. Väljaspool tööd meeldib talle reketispordiga tegeleda ja reisida.

Klassikaliste ML-i ja LLM-ide pakkimine ja juurutamine Amazon SageMakeriga, 1. osa: PySDK täiustused | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Raghu Ramesha on Amazon SageMaker Service'i meeskonna ML-lahenduste vanemarhitekt. Ta keskendub sellele, et aidata klientidel luua, juurutada ja ML-i tootmise töökoormust SageMakerile ulatuslikult üle viia. Ta on spetsialiseerunud masinõppele, tehisintellektile ja arvutinägemisvaldkondadele ning tal on magistrikraadi arvutiteaduses TÜ Dallases. Vabal ajal meeldib talle reisida ja pildistada.

Klassikaliste ML-i ja LLM-ide pakkimine ja juurutamine Amazon SageMakeriga, 1. osa: PySDK täiustused | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Shiva Raaj Kotini töötab Amazon SageMakeri järelduste tooteportfellis peamise tootejuhina. Järelduste tegemiseks keskendub ta SageMakeris mudeli juurutamisele, jõudluse häälestamisele ja optimeerimisele.

Klassikaliste ML-i ja LLM-ide pakkimine ja juurutamine Amazon SageMakeriga, 1. osa: PySDK täiustused | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.Mohan Gandhi on AWS-i vanemtarkvarainsener. Ta on olnud AWS-is viimased 10 aastat ja töötanud erinevate AWS-teenustega, nagu EMR, EFA ja RDS. Praegu on ta keskendunud SageMakeri järelduskogemuse täiustamisele. Vabal ajal naudib ta matkamist ja maratone.

Ajatempel:

Veel alates AWS-i masinõpe