Platon Data Intelligence.
Pystyhaku ja Ai.

Määritä ja käytä oletusasetuksia Amazon SageMaker -resursseille SageMaker Python SDK |:n avulla Amazon Web Services

Treffi:

- Amazon SageMaker Python SDK on avoimen lähdekoodin kirjasto koneoppimismallien (ML) koulutusta ja käyttöönottoa varten Amazon Sage Maker. Yritysasiakkaat tiukasti valvotuilla aloilla, kuten terveydenhuollon ja rahoituksen alalla, asettavat suojakaiteet varmistaakseen, että heidän tietonsa on salattu ja liikenne ei kulje Internetiin. Jotta SageMaker-koulutus ja ML-mallien käyttöönotto noudattavat näitä suojakaiteita, on yleinen käytäntö asettaa rajoituksia tilille tai AWS-organisaatiot tasolla palvelunvalvontakäytäntöjen ja AWS-henkilöllisyyden ja käyttöoikeuksien hallinta (IAM) käytännöt tiettyjen IAM-roolien käytön pakottamiseksi, Amazonin virtuaalinen yksityinen pilvi (Amazon VPC) -kokoonpanot ja AWS-avainhallintapalvelu (AWS KMS) avaimet. Tällaisissa tapauksissa datatieteilijöiden on annettava nämä parametrit ML-mallin koulutus- ja käyttöönottokoodiin manuaalisesti merkitsemällä muistiin aliverkot, suojausryhmät ja KMS-avaimet. Tämä asettaa datatutkijoille velvollisuuden muistaa määrittää nämä kokoonpanot, suorittaa työnsä onnistuneesti ja välttää Access Denied -virheiden saaminen.

SageMaker Python SDK -versiosta 2.148.0 alkaen voit nyt määrittää oletusarvot parametreille, kuten IAM-rooleille, VPC:ille ja KMS-avaimille. Järjestelmänvalvojat ja loppukäyttäjät voivat alustaa AWS-infrastruktuurin primitiivit oletusarvoilla, jotka on määritetty YAML-muodossa olevassa konfiguraatiotiedostossa. Kun Python SDK on määritetty, se perii nämä arvot automaattisesti ja välittää ne taustalla oleviin SageMaker API -kutsuihin, kuten CreateProcessingJob(), CreateTrainingJob()ja CreateEndpointConfig(), ilman lisätoimenpiteitä. SDK tukee myös useita määritystiedostoja, jolloin järjestelmänvalvojat voivat asettaa määritystiedoston kaikille käyttäjille, ja käyttäjät voivat ohittaa sen käyttäjätason määrityksillä, jotka voidaan tallentaa Amazonin yksinkertainen tallennuspalvelu (Amazon S3), Amazonin elastinen tiedostojärjestelmä (Amazon EFS) varten Amazon SageMaker Studio, tai käyttäjän paikallinen tiedostojärjestelmä.

Tässä viestissä näytämme, kuinka voit luoda ja tallentaa oletusmääritystiedoston Studiossa ja käyttää SDK-oletusominaisuutta SageMaker-resurssien luomiseen.

Ratkaisun yleiskatsaus

Esittelemme tämän uuden ominaisuuden päästä päähän AWS-pilven muodostuminen malli, joka luo vaaditun infrastruktuurin ja luo Studio-toimialueen käyttöönotettuun VPC:hen. Lisäksi luomme KMS-avaimia koulutuksessa ja tehtävien käsittelyssä käytettävien volyymien salaamiseen. Vaiheet ovat seuraavat:

  1. Käynnistä tililläsi CloudFormation-pino. Vaihtoehtoisesti, jos haluat tutkia tätä ominaisuutta olemassa olevassa SageMaker-verkkotunnuksessa tai muistikirjassa, ohita tämä vaihe.
  2. Täytä config.yaml tiedosto ja tallenna tiedosto oletussijaintiin.
  3. Suorita mallimuistikirja, jossa on päästä päähän ML-käyttötapaus, mukaan lukien tietojenkäsittely, mallin koulutus ja päättely.
  4. Ohita oletusmääritysarvot.

Edellytykset

Ennen kuin aloitat, varmista, että sinulla on AWS-tili ja IAM-käyttäjä tai -rooli, jolla on järjestelmänvalvojan oikeudet. Jos olet tietotieteilijä, joka siirtää infrastruktuuriparametreja muistikirjasi resursseihin, voit ohittaa seuraavan vaiheen ympäristön määrittämisessä ja aloittaa määritystiedoston luomisen.

Jotta voit käyttää tätä ominaisuutta, muista päivittää SageMaker SDK -versiosi suorittamalla se pip install --upgrade sagemaker.

Määritä ympäristö

Ota käyttöön täydellinen infrastruktuuri, mukaan lukien verkko ja Studio-verkkotunnus, suorittamalla seuraavat vaiheet:

  1. Kloonaa GitHub-arkisto.
  2. Kirjaudu AWS-tilillesi ja avaa AWS CloudFormation -konsoli.
  3. Ota verkkoresurssit käyttöön valitsemalla Luo pino.
  4. Lataa malli alla setup/vpc_mode/01_networking.yaml.
  5. Anna pinolle nimi (esim. networking-stack), ja suorita loput vaiheet pinon luomiseksi.
  6. Ota Studio-verkkotunnus käyttöön valitsemalla Luo pino uudelleen.
  7. Lataa malli alla setup/vpc_mode/02_sagemaker_studio.yaml.
  8. Anna pinolle nimi (esim. sagemaker-stack) ja anna verkkopinon nimi pyydettäessä CoreNetworkingStackName parametri.
  9. Jatka jäljellä oleviin vaiheisiin, valitse IAM-resurssien kuittaukset ja luo pino.

Kun molempien pinojen tila päivittyy CREATE_COMPLETE, siirry seuraavaan vaiheeseen.

Luo määritystiedosto

Jos haluat käyttää SageMaker Python SDK:n oletuskokoonpanoa, luo config.yaml-tiedosto SDK:n odottamassa muodossa. Katso config.yaml-tiedoston muoto kohdasta Asetustiedoston rakenne. Riippuen työympäristöstäsi, kuten Studio-muistikirjoista, SageMaker-muistikirjan ilmentymistä tai paikallisesta IDE:stä, voit joko tallentaa määritystiedoston oletussijaintiin tai ohittaa oletusasetukset välittämällä määritystiedoston sijainnin. Katso muiden ympäristöjen oletussijainnit kohdasta Asetustiedostojen sijainnit. Seuraavat vaiheet esittelevät Studio-kannettavan ympäristön asetukset.

Luodaksesi helposti config.yaml tiedosto, suorita seuraavat solut Studio-järjestelmäpäätteessäsi ja korvaa paikkamerkit edellisen vaiheen CloudFormation-pinon nimillä:

git clone https://github.com/aws-samples/amazon-sagemaker-build-train-deploy.git
cd amazon-sagemaker-build-train-deploy
pip install boto3
python generate-defaults.py --networking-stack <network-stack-name> --sagemaker-stack <sagemaker-stack-name> # save the file to the default location
mkdir .config/sagemaker
cp user-configs.yaml ~/.config/sagemaker/config.yaml

Tämä komentosarja täyttää automaattisesti YAML-tiedoston, korvaa paikkamerkit infrastruktuurin oletusarvoilla ja tallentaa tiedoston kotikansioon. Sitten se kopioi tiedoston Studio-muistikirjojen oletussijaintiin. Tuloksena olevan konfigurointitiedoston pitäisi näyttää seuraavanlaiselta:

SageMaker: Model: EnableNetworkIsolation: false VpcConfig: SecurityGroupIds: - sg-xxxx Subnets: - subnet-xxxx - subnet-xxxx ProcessingJob: NetworkConfig: EnableNetworkIsolation: false VpcConfig: SecurityGroupIds: - sg-xxxx Subnets: - subnet-xxxx - subnet-xxxx ProcessingOutputConfig: KmsKeyId: arn:aws:kms:us-east-2:0123456789:alias/kms-defaults RoleArn: arn:aws:iam::0123456789:role/service-role/AmazonSageMakerExecutionRole-xxx TrainingJob: EnableNetworkIsolation: false VpcConfig: SecurityGroupIds: - sg-xxxx Subnets: - subnet-xxxx - subnet-xxxx
SchemaVersion: '1.0'
something: '1.0'

Jos sinulla on olemassa toimialue ja verkkoasetukset, luo config.yaml tiedosto vaaditussa muodossa ja tallenna se Studio-muistikirjojen oletussijaintiin.

Huomaa, että nämä oletusasetukset täyttävät automaattisesti määritysarvot asianmukaisille SageMaker SDK -kutsuille, eivätkä pakota käyttäjää mihinkään tiettyyn VPC:hen, aliverkkoon tai rooliin. Jos haluat käyttäjien käyttävän tiettyä kokoonpanoa tai roolia järjestelmänvalvojana, käytä IAM-ehtoavaimet pakottaaksesi oletusarvot.

Lisäksi jokaisella API-kutsulla voi olla omat kokoonpanonsa. Voit esimerkiksi määrittää edellisessä konfiguraatiotiedostoesimerkissä vpc-a ja subnet-a koulutustehtäviä varten ja määritä vpc-b ja subnet-c, subnet-d töiden käsittelyyn.

Suorita mallimuistikirja

Nyt kun olet asettanut määritystiedoston, voit aloittaa mallinrakennus- ja harjoitusmuistikirjojen käytön tavalliseen tapaan ilman, että sinun tarvitsee erikseen asettaa verkko- ja salausparametreja useimmille SDK-toiminnoille. Katso Tuetut API:t ja parametrit saadaksesi täydellisen luettelon tuetuista API-kutsuista ja parametreista.

Valitse Studion navigointiruudusta File Explorer -kuvake ja avaa 03_feature_engineering/03_feature_engineering.ipynb, kuten seuraavassa kuvakaappauksessa näkyy.

studio-tiedostojen tutkija

Suorita muistikirjan solut yksitellen ja huomaa, että et määritä lisämäärityksiä. Kun luot prosessoriobjektin, näet solutulosteet seuraavan esimerkin mukaisesti.

konfiguraatiot käytössä

Kuten tulosteessa näkyy, oletuskonfiguraatiota sovelletaan automaattisesti käsittelytyöhön ilman, että käyttäjä tarvitsee lisäsyöttöä.

Kun suoritat prosessorin seuraavan solun, voit myös tarkistaa, että oletusasetukset on asetettu tarkastelemalla työtä SageMaker-konsolissa. Valita Töiden käsittely varten Käsittely navigointiruudussa, kuten seuraavassa kuvakaappauksessa näkyy.

konsoli-käsittely-työt

Valitse käsittelytyö etuliitteellä end-to-end-ml-sm-proc, ja sinun pitäisi pystyä tarkastelemaan jo määritettyä verkkoa ja salausta.

konsoli-job-konfiguraatiot

Voit jatkaa jäljellä olevien muistikirjojen käyttöä mallin kouluttamiseksi ja käyttöönottamiseksi, ja huomaat, että infrastruktuurin oletusasetuksia sovelletaan automaattisesti sekä koulutustöihin että malleihin.

Ohita oletusasetustiedosto

Saattaa olla tapauksia, joissa käyttäjän on ohitettava oletusasetukset esimerkiksi kokeillakseen julkista Internet-yhteyttä tai päivittääkseen verkkomääritykset, jos aliverkon IP-osoitteet loppuvat. Tällaisissa tapauksissa Python SDK antaa sinun tarjota myös mukautetun sijainnin määritystiedostolle joko paikallisessa tallennustilassa tai voit osoittaa sijaintiin Amazon S3:ssa. Tässä osiossa tutkimme esimerkkiä.

Avaa user-configs.yaml tiedosto kotihakemistoosi ja päivitä EnableNetworkIsolation arvo TrueNojalla TrainingJob osiossa.

Avaa nyt sama muistikirja ja lisää seuraava solu muistikirjan alkuun:

import os
os.environ["SAGEMAKER_USER_CONFIG_OVERRIDE"] = "~/config.yaml"

Tämän solun avulla osoitat konfigurointitiedoston sijainnin SDK:hen. Nyt kun luot suoritinobjektin, huomaat, että oletusasetus on ohitettu verkon eristämisen mahdollistamiseksi, ja käsittelytyö epäonnistuu verkon eristystilassa.

Voit käyttää samaa ohitusympäristömuuttujaa määrittääksesi määritystiedoston sijainnin, jos käytät paikallista ympäristöä, kuten VSCodea.

Tee virheenkorjaus ja nouda oletusasetukset

Jos kohtaat virheitä suoritettaessa API-kutsuja muistikirjasta, nopeaa vianetsintää varten solun tulos näyttää käytetyt oletuskokoonpanot edellisen osan mukaisesti. Voit tarkastella tarkkaa Boto3-kutsua, joka on luotu oletusasetustiedostosta välitettyjen attribuuttiarvojen tarkastelemiseksi, ottamalla Boto3-lokitoiminnon käyttöön. Ota lokikirjaus käyttöön suorittamalla seuraava solu muistikirjan yläosassa:

import boto3
import logging
boto3.set_stream_logger(name='botocore.endpoint', level=logging.DEBUG)

Kaikki myöhemmät Boto3-kutsut kirjataan lokiin täydellisen pyynnön kanssa, joka näkyy lokin runko-osion alla.

Voit myös tarkastella oletuskokoonpanojen kokoelmaa käyttämällä session.sagemaker_config arvo seuraavan esimerkin mukaisesti.

session-config-arvot

Lopuksi, jos käytät Boto3:a SageMaker-resurssien luomiseen, voit noutaa oletusmääritysarvot käyttämällä sagemaker_config muuttuja. Esimerkiksi suorittaaksesi käsittelytyön 03_feature_engineering.ipynb Boto3:lla voit kirjoittaa seuraavan solun sisällön samaan muistikirjaan ja suorittaa solun:

import boto3
import sagemaker
session = sagemaker.Session()
client = boto3.client('sagemaker') # get the default values
subnet_ids = session.sagemaker_config["SageMaker"]["ProcessingJob"]['NetworkConfig']["VpcConfig"]["Subnets"]
security_groups = session.sagemaker_config["SageMaker"]["ProcessingJob"]['NetworkConfig']["VpcConfig"]["SecurityGroupIds"]
kms_key = session.sagemaker_config["SageMaker"]["ProcessingJob"]["ProcessingOutputConfig"]["KmsKeyId"]
role_arn = session.sagemaker_config["SageMaker"]["ProcessingJob"]["RoleArn"] # upload processing code
code_location = sagemaker_session.upload_data('./source_dir/preprocessor.py', bucket=s3_bucket_name, key_prefix=f'{s3_key_prefix}/code')
code_location = ('/').join(code_location.split('/')[:-1]) # create a processing job
response = client.create_processing_job( ProcessingJobName='end-to-end-ml-sm-proc-boto3', ProcessingInputs=[ { 'InputName': 'raw_data', "S3Input": { "S3Uri": raw_data_path, "LocalPath": "/opt/ml/processing/input", "S3DataType": "S3Prefix", "S3InputMode": "File", } }, { "InputName": "code", "S3Input": { "S3Uri": code_location, "LocalPath": "/opt/ml/processing/input/code", "S3DataType": "S3Prefix", "S3InputMode": "File", } } ], ProcessingOutputConfig={ 'Outputs': [ { 'OutputName': 'train_data', 'S3Output': { 'S3Uri': train_data_path, 'LocalPath': "/opt/ml/processing/train", 'S3UploadMode': 'EndOfJob' }, }, { 'OutputName': 'val_data', 'S3Output': { 'S3Uri': val_data_path, 'LocalPath': "/opt/ml/processing/val", 'S3UploadMode': 'EndOfJob' }, }, { 'OutputName': 'test_data', 'S3Output': { 'S3Uri': test_data_path, 'LocalPath': "/opt/ml/processing/test", 'S3UploadMode': 'EndOfJob' }, }, { 'OutputName': 'model', 'S3Output': { 'S3Uri': model_path, 'LocalPath': "/opt/ml/processing/model", 'S3UploadMode': 'EndOfJob' }, }, ], 'KmsKeyId': kms_key }, ProcessingResources={ 'ClusterConfig': { 'InstanceCount': 1, 'InstanceType': 'ml.m5.large', 'VolumeSizeInGB': 30, } }, AppSpecification={ "ImageUri": "257758044811.dkr.ecr.us-east-2.amazonaws.com/sagemaker-scikit-learn:0.20.0-cpu-py3", "ContainerArguments": [ "--train-test-split-ratio", "0.2" ], "ContainerEntrypoint": [ "python3", "/opt/ml/processing/input/code/preprocessor.py" ] }, NetworkConfig={ 'EnableNetworkIsolation': False, 'VpcConfig': { 'SecurityGroupIds': security_groups, 'Subnets': subnet_ids } }, RoleArn=role_arn,
)

Automatisoi asetustiedoston luonti

Järjestelmänvalvojille määritystiedoston luominen ja tiedoston tallentaminen jokaiseen SageMaker-muistikirjan ilmentymään tai Studion käyttäjäprofiiliin voi olla pelottava tehtävä. Vaikka voit suositella, että käyttäjät käyttävät yleistä tiedostoa, joka on tallennettu S3-oletussijaintiin, se asettaa ohituksen määrittämisen ylimääräisen taakan datatutkijoille.

Tämän automatisoimiseksi järjestelmänvalvojat voivat käyttää SageMaker Lifecycle Configurations (LCC) -konfiguraatioita. Studion käyttäjäprofiileihin tai muistikirjan ilmentymiin voit liittää seuraavan LCC-mallin komentosarjan oletus-LCC:ksi käyttäjän oletusarvoiseen Jupyter Server -sovellukseen:

# sample LCC script to set default config files on the user's folder
#!/bin/bash set -eux # add --endpoint-url [S3 Interface Endpoint] if using an S3 interface endpoint
aws s3 cp <s3-location-of-config-file> ~/.config/sagemaker/config.yaml
echo "config file saved in the default location"

nähdä Käytä Amazon SageMaker Studion elinkaarimäärityksiä or Mukauta kannettavan tietokoneen ilmentymä saadaksesi ohjeet oletuselinkaariskriptin luomiseen ja asettamiseen.

Puhdistaa

Kun olet lopettanut tämän ominaisuuden kokeilun, puhdista resurssit välttääksesi lisäkulujen maksamisen. Jos olet varannut uusia resursseja tässä viestissä määritellyllä tavalla, puhdista resurssit seuraavasti:

  1. Sulje Studio-sovelluksesi käyttäjäprofiilia varten. Katso Sammuta ja päivitä SageMaker Studio ja Studio-sovellukset ohjeita varten. Varmista, että kaikki sovellukset on poistettu, ennen kuin poistat pinon.
  2. Poista Studio-toimialueelle luotu EFS-taltio. Voit tarkastella verkkotunnukseen liitettyä EFS-taltiota käyttämällä a KuvaileDomain API-kutsu.
  3. Poista Studio-verkkotunnuspino.
  4. Poista Studio-toimialueelle luodut suojausryhmät. Löydät ne osoitteesta Amazonin elastinen laskentapilvi (Amazon EC2) -konsoli, jonka nimet ovat tietoturvaryhmä saapuville-nfs-d-xxx ja security-group-for-outbound-nfs-d-xxx
  5. Poista verkkopino.

Yhteenveto

Tässä viestissä keskustelimme tärkeimpien infrastruktuuriparametrien oletusarvojen määrittämisestä ja käyttämisestä SageMaker Python SDK:n avulla. Tämän ansiosta järjestelmänvalvojat voivat määrittää oletuskonfiguraatioita datatieteilijöille, mikä säästää käyttäjien ja järjestelmänvalvojien aikaa, eliminoi parametrien toistuvasta määrittelystä aiheutuvan taakan ja tuloksena on kevyempi ja hallittavampi koodi. Katso täydellinen luettelo tuetuista parametreista ja sovellusliittymistä kohdasta Oletusasetusten määrittäminen ja käyttäminen SageMaker Python SDK:lla. Jos sinulla on kysyttävää ja keskustelua, liity Koneoppimis- ja tekoälyyhteisö.


Tietoja Tekijät

Giuseppe Angelo Porcelli on koneoppimisen asiantuntijaratkaisujen pääarkkitehti Amazon Web Servicesille. Hänellä on useiden vuosien ohjelmistokehitys ja ML-tausta. Hän työskentelee kaikenkokoisten asiakkaiden kanssa ymmärtääkseen syvällisesti heidän liiketoimintaansa ja teknisiä tarpeitaan sekä suunnitellakseen tekoäly- ja koneoppimisratkaisuja, jotka hyödyntävät AWS-pilviä ja Amazon Machine Learning -pinoa parhaalla mahdollisella tavalla. Hän on työskennellyt projekteissa eri aloilla, mukaan lukien MLOps, Computer Vision, NLP, ja mukana on laaja valikoima AWS-palveluita. Vapaa-ajallaan Giuseppe pelaa jalkapalloa.

Bruno Pistone on AWS:n AI/ML Specialist Solutions -arkkitehti Milanossa. Hän työskentelee kaikenkokoisten asiakkaiden kanssa auttaakseen heitä ymmärtämään syvällisesti teknisiä tarpeitaan ja suunnittelemaan tekoäly- ja koneoppimisratkaisuja, jotka hyödyntävät AWS-pilveä ja Amazon Machine Learning -pinoa parhaalla mahdollisella tavalla. Hänen asiantuntemuksensa ovat koneoppiminen päästä päähän, koneoppimisen teollistuminen ja MLOps. Hän nauttii ajan viettämisestä ystäviensä kanssa ja uusien paikkojen tutkimisesta sekä matkustamisesta uusiin kohteisiin.

Durga Sury on ML Solutions -arkkitehti Amazon SageMaker Service SA -tiimissä. Hän haluaa tehdä koneoppimisesta kaikkien ulottuville. Neljän vuoden aikana AWS:ssä hän on auttanut luomaan AI/ML-alustoja yritysasiakkaille. Kun hän ei ole töissä, hän rakastaa moottoripyöräilyä, mysteeriromaaneja ja pitkiä kävelylenkkejä 4-vuotiaan huskynsa kanssa.

spot_img

Uusin älykkyys

spot_img

Keskustele kanssamme

Hei siellä! Kuinka voin olla avuksi?