Enostavno pakirajte in uvedite klasične ML in LLM z Amazon SageMaker, 1. del: Izboljšave PySDK | Spletne storitve Amazon

Enostavno pakirajte in uvedite klasične ML in LLM z Amazon SageMaker, 1. del: Izboljšave PySDK | Spletne storitve Amazon

Amazon SageMaker je v celoti upravljana storitev, ki razvijalcem in podatkovnim znanstvenikom omogoča hitro in enostavno gradnjo, usposabljanje in uvajanje modelov strojnega učenja (ML) v poljubnem obsegu. SageMaker omogoča preprosto uvajanje modelov v proizvodnjo neposredno prek klicev API-ja v storitev. Modeli so pakirani v vsebnike za robustne in razširljive uvedbe. Čeprav ponuja različne vstopne točke, kot so SDK SageMaker Python, SDK-ji AWS, konzola SageMaker in Amazon SageMaker Studio prenosnike za poenostavitev procesa usposabljanja in uvajanja modelov ML v velikem obsegu, stranke še vedno iščejo boljše načine za uvajanje svojih modelov za testiranje na igriščih in optimizacijo uvajanja proizvodnje.

Uvajamo dva nova načina za poenostavitev postopka pakiranja in uvajanja modelov z uporabo SageMakerja.

V tej objavi predstavljamo nov SDK za SageMaker Python ModelBuilder izkušenj, katerega cilj je zmanjšati učno krivuljo za nove uporabnike SageMaker, kot so podatkovni znanstveniki, hkrati pa pomaga izkušenim inženirjem MLOps povečati uporabo storitev gostovanja SageMaker. Zmanjšuje zapletenost začetne nastavitve in uvajanja ter zagotavlja smernice o najboljših praksah za izkoriščanje vseh zmogljivosti SageMakerja. Nudimo podrobne informacije in primere GitHub za to novo zmogljivost SageMaker.

Druga novost je uporaba nove interaktivne izkušnje uvajanja v SageMaker Studio. O tem razpravljamo v 2. delu.

Razmestitev modelov v končno točko SageMaker vključuje niz korakov, da pripravite model za gostovanje na končni točki SageMaker. To vključuje pridobivanje artefaktov modela v pravilni obliki in strukturi, ustvarjanje sklepne kode in določanje bistvenih podrobnosti, kot je URL slike modela, Preprosta storitev shranjevanja Amazon (Amazon S3) lokacija artefaktov modela, koraki serializacije in deserializacije ter potrebni AWS upravljanje identitete in dostopa (IAM) za omogočanje ustreznih dovoljenj za dostop. Po tem konfiguracija končne točke zahteva določitev vrste sklepanja in konfiguracijo ustreznih parametrov, kot so vrste primerkov, število in porazdelitev prometa med različicami modela.

Za dodatno pomoč našim strankam pri uporabi gostovanja SageMaker smo uvedli novost ModelBuilder razred v SDK SageMaker Python, ki prinaša naslednje ključne prednosti pri uvajanju modelov v končne točke SageMaker:

  • Poenoti izkušnjo uvajanja v različnih ogrodjih – Nova izkušnja zagotavlja dosleden potek dela za uvajanje modelov, izdelanih z uporabo različnih ogrodij, kot so PyTorch, TensorFlow in XGBoost. To poenostavi postopek uvajanja.
  • Avtomatizira uvajanje modela – Naloge, kot je izbira ustreznih vsebnikov, zajemanje odvisnosti in obravnava serializacije/deserializacije, so avtomatizirane, kar zmanjšuje ročni napor, potreben za uvajanje.
  • Omogoča gladek prehod z lokalne na končno točko, ki jo gosti SageMaker – Z minimalnimi spremembami kode je mogoče modele enostavno preklopiti z lokalnega testiranja na uvajanje na končni točki SageMaker. Živi dnevniki omogočajo brezhibno odpravljanje napak.

Na splošno, SageMaker ModelBuilder poenostavlja in racionalizira postopek pakiranja modela za sklepanje SageMaker z obravnavanjem podrobnosti na nizki ravni in zagotavlja orodja za testiranje, validacijo in optimizacijo končnih točk. To izboljša produktivnost razvijalcev in zmanjša število napak.

V naslednjih razdelkih se podrobno poglobimo v podrobnosti te nove funkcije. Razpravljamo tudi o tem, kako uvesti modele v gostovanje SageMaker z uporabo ModelBuilder, kar poenostavi postopek. Nato vas vodimo skozi nekaj primerov za različna ogrodja za uvajanje tradicionalnih modelov ML in temeljnih modelov, ki poganjajo generativne primere uporabe AI.

Spoznavanje SageMaker ModelBuilder

Novi ModelBuilder je razred Python, osredotočen na sprejemanje modelov ML, zgrajenih z uporabo ogrodij, kot sta XGBoost ali PyTorch, in njihovo pretvorbo v modele, ki so pripravljeni za uvajanje v SageMaker. ModelBuilder določa build() funkcija, ki generira artefakte glede na strežnik modela, in a deploy() funkcijo za lokalno uvajanje ali na končno točko SageMaker. Uvedba te funkcije poenostavlja integracijo modelov z okoljem SageMaker ter jih optimizira za zmogljivost in razširljivost. Naslednji diagram prikazuje, kako ModelBuilder deluje na visokem nivoju.

Enostavno pakirajte in uvedite klasične ML in LLM z Amazon SageMaker, 1. del: Izboljšave PySDK | Amazon Web Services PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Razred ModelBuilder

O ModelBuilder ponuja različne možnosti za prilagajanje. Vendar pa graditelj modela za uvedbo modela ogrodja samo pričakuje model, vhod, izhod in vlogo:

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

O SchemaBuilder razred vam omogoča, da definirate vhod in izhod za vašo končno točko. Izdelovalcu sheme omogoča ustvarjanje ustreznih ranžirnih funkcij za serializacijo in deserializacijo vhoda in izhoda. Naslednja datoteka razreda ponuja vse možnosti za prilagajanje:

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

Vendar bi v večini primerov deloval samo vzorčni vnos in izhod. Na primer:

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

Z zagotavljanjem vhodnih in izhodnih vzorcev, SchemaBuilder lahko samodejno določi potrebne transformacije, zaradi česar je proces integracije preprostejši. Za naprednejše primere uporabe je na voljo prilagodljivost za zagotavljanje funkcij prevajanja po meri tako za vhod kot za izhod, kar zagotavlja, da je mogoče učinkovito obravnavati tudi kompleksnejše podatkovne strukture. To prikazujemo v naslednjih razdelkih z uporabo različnih modelov z različnimi okviri ModelBuilder.

Izkušnja lokalnega načina

V tem primeru uporabljamo ModelBuilder za lokalno uvedbo modela XGBoost. Način lahko uporabite za preklapljanje med lokalnim testiranjem in uvajanjem v končno točko SageMaker. Najprej usposobimo model XGBoost (lokalno ali v SageMakerju) in shranimo artefakte modela v delovni imenik:

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

Nato ustvarimo objekt ModelBuilder s posredovanjem dejanskega objekta modela, the SchemaBuilder ki uporablja vzorčne testne vhodne in izhodne objekte (isti vhod in izhod, ki smo jih uporabili pri usposabljanju in testiranju modela), da sklepa o potrebni serializaciji. Upoštevajte, da uporabljamo Mode.LOCAL_CONTAINER da določite lokalno namestitev. Po tem pokličemo izgradnjo funkcijo za samodejno prepoznavanje podprte slike vsebnika ogrodja in iskanje odvisnosti. Oglejte si naslednjo kodo:

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

Končno lahko pokličemo deploy funkcijo v objektu modela, ki omogoča tudi beleženje v živo za lažje odpravljanje napak. Ni vam treba določiti vrste instance ali števila, ker bo model uveden lokalno. Če ste navedli te parametre, bodo prezrti. Ta funkcija bo vrnila objekt napovedovalca, ki ga lahko uporabimo za izdelavo napovedi s testnimi podatki:

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

Po želji lahko nadzorujete tudi nalaganje modela ter predobdelavo in naknadno obdelavo z uporabo InferenceSpec. Več podrobnosti navajamo kasneje v tej objavi. Uporaba LOCAL_CONTAINER je odličen način za lokalno testiranje skripta pred uvedbo na končno točko SageMaker.

Glejte model-builder-xgboost.ipynb primer za preizkušanje uvajanja tako lokalno kot na končno točko SageMaker z uporabo ModelBuilder.

Razmestite tradicionalne modele v končne točke SageMaker

V naslednjih primerih prikazujemo, kako uporabljati ModelBuilder za uvajanje tradicionalnih modelov ML.

Modeli XGBoost

Podobno kot v prejšnjem razdelku lahko uvedete model XGBoost v končno točko SageMaker tako, da spremenite mode parameter pri ustvarjanju ModelBuilder predmet:

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
)

Upoštevajte, da morate pri uvajanju v končne točke SageMaker podati vrsto primerka in število primerkov, ko kličete deploy Funkcija.

Glejte model-builder-xgboost.ipynb primer za uvedbo modela XGBoost.

Modeli Triton

Lahko uporabite ModelBuilder za serviranje modelov PyTorch Triton Inference Server. Za to morate določiti model_server parameter kot ModelServer.TRITON, opraviti model in imeti a SchemaBuilder objekt, ki zahteva vzorčne vhode in izhode iz modela. ModelBuilder bo poskrbel za ostalo namesto vas.

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
)

Nanašati se na model-builder-triton.ipynb za uvedbo modela s Tritonom.

Modeli Hugging Face

V tem primeru vam pokažemo, kako razmestiti vnaprej pripravljen model transformatorja, ki ga Hugging Face nudi SageMakerju. Želimo uporabiti Hugging Face pipeline za nalaganje modela, zato ustvarimo specifikacijo sklepanja po meri za 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()

Definiramo tudi vhod in izhod delovne obremenitve sklepanja z definiranjem SchemaBuilder objekt, ki temelji na vhodu in izhodu modela:

schema = SchemaBuilder(value,output)

Nato ustvarimo ModelBuilder in razmestite model na končno točko SageMaker po isti logiki, kot je prikazano v drugem primeru:

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

Nanašati se na model-builder-huggingface.ipynb za uvedbo modela cevovoda Hugging Face.

Razmestite temeljne modele v končne točke SageMaker

V naslednjih primerih prikazujemo, kako uporabljati ModelBuilder za postavitev modelov temeljev. Tako kot prej omenjeni modeli je vse, kar je potrebno, ID modela.

Hugging Face Hub

Če želite razmestiti temeljni model iz Hugging Face Hub, vse kar morate storiti je, da posredujete predhodno usposobljen ID modela. Naslednji delček kode na primer uvede meta-lama/lama-2-7b-hf model lokalno. Način lahko spremenite v Mode.SAGEMAKER_ENDPOINT za uvedbo v končne točke SageMaker.

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

Za zaprte modele v Hugging Face Hub morate zahtevati dostop prek Hugging Face Hub in uporabiti povezani ključ, tako da ga posredujete kot spremenljivko okolja HUGGING_FACE_HUB_TOKEN. Nekateri modeli Hugging Face morda zahtevajo zaupanje oddaljene kode. Nastavite ga lahko kot spremenljivko okolja tudi z uporabo HF_TRUST_REMOTE_CODE. Privzeto, ModelBuilder bo uporabil sklep o generiranju besedila z objemajočim obrazom (TGI) vsebnik kot osnovni vsebnik za modele Hugging Face. Če želite uporabiti AWS Large Model Inference (LMI) zabojniki, lahko nastavite model_server parameter kot ModelServer.DJL_SERVING ko konfigurirate ModelBuilder predmet.

Lepa lastnost ModelBuilder je zmožnost izvajanja lokalnega prilagajanja parametrov vsebnika, ko uporabljate LOCAL_CONTAINER način. To funkcijo lahko uporabite s preprostim tekom tuned_model = model.tune().

Nanašati se na demo-model-builder-huggingface-llama2.ipynb za uvedbo modela Hugging Face Hub.

SageMaker JumpStart

Amazon SageMaker JumpStart ponuja tudi številne vnaprej pripravljene modele temeljev. Tako kot postopek uvajanja modela iz Hugging Face Hub je potreben ID modela. Namestitev modela SageMaker JumpStart na končno točko SageMaker je tako preprosta kot zagon naslednje kode:

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

Za vse razpoložljive ID-je modelov SageMaker JumpStart glejte Vgrajeni algoritmi z vnaprej pripravljeno tabelo modelov. Nanašati se na model-builder-jumpstart-falcon.ipynb za uvedbo modela SageMaker JumpStart.

Komponenta sklepanja

ModelBulder omogoča uporabo nove zmožnosti komponente sklepanja v SageMakerju za uvajanje modelov. Za več informacij o komponentah sklepanja glejte Zmanjšajte stroške uvajanja modela v povprečju za 50 % z uporabo najnovejših funkcij SageMakerja. Komponente sklepanja lahko uporabite za uvajanje s ModelBuilder z navedbo endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED v deploy() metoda. Uporabite lahko tudi tune() metodo, ki pridobi optimalno število pospeševalnikov, in jo po potrebi spremenite.

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

Nanašati se na model-builder-inference-component.ipynb za uvedbo modela kot komponente sklepanja.

Prilagodite razred ModelBuilder

O ModelBuilder vam omogoča prilagajanje nalaganja modela z uporabo InferenceSpec.

Poleg tega lahko nadzorujete serializacijo in deserializacijo koristnega tovora in odziva ter prilagodite predprocesiranje in naknadno obdelavo z CustomPayloadTranslator. Poleg tega, ko morate razširiti naše vnaprej zgrajene vsebnike za uvajanje modela v SageMaker, lahko uporabite ModelBuilder za upravljanje postopka pakiranja modela. V naslednjem razdelku nudimo več podrobnosti o teh zmožnostih.

InferenceSpec

InferenceSpec ponuja dodatno plast prilagajanja. Omogoča vam, da določite, kako se model naloži in kako bo obravnaval dohodne zahteve za sklepanje. Skozi InferenceSpec, lahko za svoje modele določite postopke nalaganja po meri, tako da obidete privzete mehanizme nalaganja. Ta prilagodljivost je še posebej koristna pri delu z nestandardnimi modeli ali cevovodi sklepanja po meri. Metodo priklica je mogoče prilagoditi, kar vam omogoča, da prilagodite, kako model obdeluje dohodne zahteve (predobdelava in naknadna obdelava). Ta prilagoditev je lahko bistvena za zagotovitev, da je postopek sklepanja usklajen s posebnimi potrebami modela. Oglejte si naslednjo kodo:

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

Naslednja koda prikazuje primer uporabe tega razreda:

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

CustomPayloadTranslator

Pri priklicu končnih točk SageMaker se podatki pošljejo prek koristnih podatkov HTTP z različnimi vrstami MIME. Na primer, sliko, poslano končni točki za sklepanje, je treba pretvoriti v bajte na strani odjemalca in poslati prek koristnega tovora HTTP na končno točko. Ko končna točka prejme obremenitev, mora deserializirati bajtni niz nazaj na podatkovni tip, ki ga pričakuje model (znan tudi kot deserializacija na strani strežnika). Ko model konča predvidevanje, je treba rezultate serializirati v bajte, ki jih je mogoče poslati nazaj prek uporabniškega tovora HTTP uporabniku ali odjemalcu. Ko odjemalec prejme odzivne podatke o bajtih, mora izvesti deserializacijo na strani odjemalca, da pretvori podatke o bajtih nazaj v pričakovano obliko podatkov, kot je JSON. Vsaj podatke morate pretvoriti za naslednje (kot je oštevilčeno v naslednjem diagramu):

  1. Serializacija zahteve za sklepanje (obravnava odjemalec)
  2. Deserializacija zahteve po sklepanju (obdeluje strežnik ali algoritem)
  3. Priklic modela proti koristnemu tovoru
  4. Pošiljanje odgovora nazaj
  5. Serializacija odgovora sklepanja (ki jo upravlja strežnik ali algoritem)
  6. Deserializacija odziva sklepanja (obravnava odjemalec)

Naslednji diagram prikazuje postopek serializacije in deserializacije med postopkom klica.

Enostavno pakirajte in uvedite klasične ML in LLM z Amazon SageMaker, 1. del: Izboljšave PySDK | Amazon Web Services PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

V naslednjem delčku kode prikazujemo primer CustomPayloadTranslator ko je potrebna dodatna prilagoditev za obravnavanje serializacije in deserializacije na strani odjemalca oziroma strežnika:

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

v demo-model-builder-pytorch.ipynb prenosnik, prikazujemo, kako preprosto uvesti model PyTorch v končno točko SageMaker z uporabo ModelBuilder s CustomPayloadTranslator in InferenceSpec razred.

Fazni model za uvajanje

Če želite uprizoriti model za sklepanje ali v registru modelov, lahko uporabite model.create() or model.register(). Omogočen model se ustvari v storitvi, nato pa ga lahko uvedete pozneje. Oglejte si naslednjo kodo:

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

Uporabite vsebnike po meri

SageMaker ponuja vnaprej zgrajene slike Dockerja za svoje vgrajene algoritme in podprta ogrodja globokega učenja, ki se uporabljajo za usposabljanje in sklepanje. Če vnaprej zgrajena posoda SageMaker ne izpolnjuje vseh vaših zahtev, lahko razširite obstoječo sliko, da bo ustrezala vašim potrebam. Z razširitvijo vnaprej izdelane slike lahko uporabite vključene knjižnice in nastavitve za globoko učenje, ne da bi morali ustvariti sliko od začetka. Za več podrobnosti o tem, kako razširiti vnaprej zgrajene vsebnike, glejte dokument SageMaker. ModelBuilder podpira primere uporabe, ko prinašate svoje vsebnike, ki so razširjeni iz naših vnaprej zgrajenih vsebnikov Docker.

Če želite v tem primeru uporabiti lastno sliko vsebnika, morate nastaviti polja image_uri in model_server pri definiranju 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"]}
)

Tukaj je image_uri bo ARN slike vsebnika, ki je shranjen v vašem računu Registar elastičnih zabojnikov Amazon (Amazon ECR) repozitorij. En primer je prikazan takole:

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

Ko image_uri je nastavljen, med ModelBuilder gradnjo, bo preskočil samodejno zaznavanje slike, ko je na voljo URI slike. če model_server ni nastavljen v ModelBuilderju, boste prejeli sporočilo o napaki pri preverjanju, na primer:

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

Od objave te objave, ModelBuilder podpira prinašanje lastnih zabojnikov, ki so razširjeni od naših vnaprej zgrajene slike vsebnika DLC ali vsebniki, zgrajeni z modeli strežnikov, kot je Deep Java Library (DJL), Sklepanje o ustvarjanju besedila (TGI), TorchServein Triton sklepni strežnik.

Odvisnosti po meri

Pri teku ModelBuilder.build(), privzeto samodejno zajame vaše okolje Python v a requirements.txt in namesti isto odvisnost v vsebnik. Vendar pa bo včasih vaše lokalno okolje Python v konfliktu z okoljem v vsebniku. ModelBuilder ponuja preprost način za spreminjanje zajetih odvisnosti, da odpravite takšne konflikte odvisnosti, tako da vam omogoči, da svoje konfiguracije po meri zagotovite v ModelBuilder. Upoštevajte, da je to samo za TorchServe in Triton with InferenceSpec. V ModelBuilderju lahko na primer določite odvisnosti vhodnega parametra, ki je slovar Python, kot sledi:

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

Določimo naslednja polja:

  • avto – Ali želite poskusiti samodejno zajeti odvisnosti v vašem okolju.
  • Zahteve – Niz poti do svojega requirements.txt mapa. (To ni obvezno.)
  • po meri – Seznam vseh drugih odvisnosti po meri, ki jih želite dodati ali spremeniti. (To ni obvezno.)

Če je isti modul podan na več mestih, custom potem bo imel najvišjo prednost requirementsin auto bo imel najnižjo prednost. Na primer, recimo, da med samodejnim zaznavanjem ModelBuilder zazna numpy==1.25In requirements.txt na voljo je datoteka, ki določa numpy>=1.24,<1.26. Poleg tega obstaja odvisnost po meri: custom = ["numpy==1.26.1"]. V tem primeru, numpy==1.26.1 bo izbran, ko v vsebnik namestimo odvisnosti.

Čiščenje

Ko končate s preizkušanjem modelov, je najbolje, da izbrišete končno točko, da prihranite stroške, če končna točka ni več potrebna. Lahko sledite Čiščenje v vsakem od predstavitvenih zvezkov ali uporabite naslednjo kodo za brisanje modela in končne točke, ustvarjene s predstavitvijo:

predictor.delete_model()
predictor.delete_endpoint()

zaključek

Nova zmogljivost SageMaker ModelBuilder poenostavi postopek uvajanja modelov ML v produkcijo na SageMaker. Z obravnavanjem številnih zapletenih podrobnosti v zakulisju ModelBuilder skrajša krivuljo učenja za nove uporabnike in poveča uporabo za izkušene uporabnike. Z le nekaj vrsticami kode lahko uvedete modele z vgrajenimi ogrodji, kot so XGBoost, PyTorch, Triton in Hugging Face, ter modele, ki jih ponuja SageMaker JumpStart, v robustne, razširljive končne točke na SageMakerju.

Spodbujamo vse uporabnike SageMakerja, da preizkusijo to novo zmožnost tako, da si ogledajo ModelBuilder stran z dokumentacijo. ModelBuilder je zdaj na voljo vsem uporabnikom SageMaker brez dodatnih stroškov. Izkoristite ta poenostavljen potek dela za hitrejšo uvedbo svojih modelov. Veselimo se, da bomo slišali, kako ModelBuilder pospeši vaš življenjski cikel razvoja modela!

Posebna zahvala Sirishi Upadhyayala, Raymondu Liuju, Garyju Wangu, Dhawalu Patelu, Deepaku Gargu in Ramu Vegiraju.


O avtorjih

Enostavno pakirajte in uvedite klasične ML in LLM z Amazon SageMaker, 1. del: Izboljšave PySDK | Amazon Web Services PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Melanie Li, PhD, je višji strokovnjak za AI/ML TAM pri AWS s sedežem v Sydneyju v Avstraliji. Pomaga poslovnim strankam zgraditi rešitve z uporabo najsodobnejših orodij AI/ML na AWS in zagotavlja smernice za arhitekturo in implementacijo rešitev ML z najboljšimi praksami. V prostem času rada raziskuje naravo in preživlja čas z družino in prijatelji.

Enostavno pakirajte in uvedite klasične ML in LLM z Amazon SageMaker, 1. del: Izboljšave PySDK | Amazon Web Services PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Marc Karp je arhitekt ML pri ekipi Amazon SageMaker Service. Osredotoča se na pomoč strankam pri načrtovanju, uvajanju in upravljanju delovnih obremenitev ML v velikem obsegu. V prostem času rad potuje in raziskuje nove kraje.

Enostavno pakirajte in uvedite klasične ML in LLM z Amazon SageMaker, 1. del: Izboljšave PySDK | Amazon Web Services PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Sam Edwards, je inženir v oblaku (AI/ML) pri AWS Sydney, specializiran za strojno učenje in Amazon SageMaker. Strastno želi pomagati strankam pri reševanju težav, povezanih s poteki dela strojnega učenja, in ustvarjati nove rešitve zanje. Zunaj dela uživa v športu z loparjem in potovanjih.

Enostavno pakirajte in uvedite klasične ML in LLM z Amazon SageMaker, 1. del: Izboljšave PySDK | Amazon Web Services PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Raghu Ramesha je višji arhitekt rešitev ML pri ekipi storitve Amazon SageMaker. Osredotoča se na pomoč strankam pri izgradnji, uvajanju in selitvi proizvodnih delovnih obremenitev ML na SageMaker v velikem obsegu. Specializiran je za področje strojnega učenja, umetne inteligence in računalniškega vida ter ima magisterij iz računalništva na UT Dallas. V prostem času rada potuje in fotografira.

Enostavno pakirajte in uvedite klasične ML in LLM z Amazon SageMaker, 1. del: Izboljšave PySDK | Amazon Web Services PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Shiva Raaj Kotini deluje kot glavni produktni vodja v portfelju sklepnih izdelkov Amazon SageMaker. Osredotoča se na uvajanje modela, prilagajanje zmogljivosti in optimizacijo v SageMakerju za sklepanje.

Enostavno pakirajte in uvedite klasične ML in LLM z Amazon SageMaker, 1. del: Izboljšave PySDK | Amazon Web Services PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Mohan Gandhi je višji programski inženir pri AWS. Z AWS je zaposlen zadnjih 10 let in je delal na različnih storitvah AWS, kot so EMR, EFA in RDS. Trenutno je osredotočen na izboljšanje SageMaker Inference Experience. V prostem času se ukvarja s pohodništvom in maratoni.

Časovni žig:

Več od Strojno učenje AWS