Ota käyttöön Amazon SageMaker Autopilot -malleja palvelimettomiin päätepisteisiin PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Ota Amazon SageMaker Autopilot -mallit käyttöön palvelimettomissa päätepisteissä

Amazon SageMaker -autopilotti rakentaa, kouluttaa ja virittää automaattisesti parhaat koneoppimismallit (ML) tietojesi perusteella, ja samalla voit säilyttää täyden hallinnan ja näkyvyyden. Autopilot voi myös ottaa käyttöön koulutettuja malleja reaaliaikaisiin päätepisteisiin automaattisesti.

Jos sinulla on työkuormia, joissa on piikkisiä tai arvaamattomia liikennemalleja, jotka kestävät kylmäkäynnistyksen, mallin käyttöönotto palvelimettomaan päätepäätepisteeseen olisi kustannustehokkaampaa.

Amazon SageMaker -palvelimeton johtopäätös on tarkoitukseen rakennettu päättelyvaihtoehto, joka on ihanteellinen työkuormille, joissa liikenne on arvaamatonta ja joka kestää kylmäkäynnistystä. Toisin kuin reaaliaikainen päätelmäpäätepiste, jota tukee pitkäkestoinen laskentaesiintymä, palvelimettomat päätepisteet tarjoavat resursseja tarpeen mukaan sisäänrakennetulla automaattisella skaalauksella. Palvelimettomat päätepisteet skaalautuvat automaattisesti saapuvien pyyntöjen määrän perusteella ja pienentävät resurssit nollaan, kun saapuvia pyyntöjä ei ole, mikä auttaa sinua minimoimaan kustannukset.

Tässä viestissä näytämme, kuinka Autopilot-koulutettuja malleja voidaan ottaa käyttöön palvelimettomissa päätepisteissä käyttämällä Boto3 kirjastot varten Amazon Sage Maker.

Autopilotin harjoitustilat

Ennen kuin luot Autopilot-kokeen, voit joko antaa Autopilotin valita harjoitustilan automaattisesti tai voit valita harjoitustilan manuaalisesti.

Autopilotti tukee tällä hetkellä kolmea harjoitustilaa:

  • auto – Tietojoukon koon perusteella Autopilot valitsee automaattisesti joko yhdistämis- tai HPO-tilan. Yli 100 Mt:n tietojoukoille Autopilot valitsee HPO:n; muussa tapauksessa se valitsee kokoonpanon.
  • Kokoonpano – Autopilotti käyttää AutoGluon ensemble-tekniikkaa käyttämällä mallien pinoamista ja tuottaa optimaalisen ennustavan mallin.
  • Hyperparametrien optimointi (HPO) – Autopilotti löytää mallin parhaan version säätämällä hyperparametreja Bayes-optimoinnin tai monitarkkuuden optimoinnin avulla, kun suoritat koulutustöitä tietojoukossasi. HPO-tila valitsee tietojoukollesi sopivimmat algoritmit ja valitsee parhaan valikoiman hyperparametreja mallien virittämiseksi.

Lisätietoja Autopilotin harjoittelutiloista on kohdassa Harjoitustilat.

Ratkaisun yleiskatsaus

Tässä viestissä käytämme UCI-pankkimarkkinointi Tietojoukko ennustaa, tilaako asiakas pankin tarjoaman määräaikaistalletuksen. Tämä on binääriluokitusongelmatyyppi.

Käynnistämme kaksi Autopilot-työtä käyttämällä Boto3-kirjastot SageMakerille. Ensimmäisessä työssä valitaan harjoitusmuotona kokoonpanoa. Otamme sitten käyttöön yhden ensemble-mallin, joka on luotu palvelimettomaan päätepisteeseen ja lähetämme päättelypyynnöt tälle isännöidylle päätepisteelle.

Toinen työ käyttää HPO-koulutustilaa. Luokitteluongelmatyypeille Autopilot luo kolme päättelysäilöä. Puramme nämä kolme päättelysäilöä ja otamme ne käyttöön erillisiin palvelimettomiin päätepisteisiin. Sitten lähetämme päättelypyynnöt näihin isännöityihin päätepisteisiin.

Lisätietoja regressio- ja luokitteluongelmatyypeistä on kohdassa Päätelmäsäiliön määritelmät regressio- ja luokitteluongelmatyypeille.

Voimme myös käynnistää Autopilot-työt Amazon SageMaker Studio UI. Jos käynnistät töitä käyttöliittymästä, varmista, että sammutat Automaattinen käyttöönotto vaihtoehto Käyttöönotto ja lisäasetukset osio. Muussa tapauksessa Autopilot ottaa käyttöön parhaan ehdokkaan reaaliaikaiseen päätepisteeseen.

Edellytykset

Varmista, että sinulla on uusin Boto3-versio ja SageMaker Python -paketit asennettuna:

pip install -U boto3 sagemaker

Tarvitsemme SageMaker-pakettiversion >= 2.110.0 ja Boto3-versio >= boto3-1.24.84.

Käynnistä Autopilot-työ kokoonpanotilassa

Autopilot-työn käynnistämiseksi SageMaker Boto3 -kirjastojen avulla käytämme luo_auto_ml_job API. Sitten menemme sisään AutoMLJobConfig, InputDataConfigja AutoMLJobObjective syötteinä create_auto_ml_job. Katso seuraava koodi:

bucket = session.default_bucket()
role = sagemaker.get_execution_role()
prefix = "autopilot/bankadditional"
sm_client = boto3.Session().client(service_name='sagemaker',region_name=region)

timestamp_suffix = strftime('%d%b%Y-%H%M%S', gmtime())
automl_job_name = f"uci-bank-marketing-{timestamp_suffix}"
max_job_runtime_seconds = 3600
max_runtime_per_job_seconds = 1200
target_column = "y"
problem_type="BinaryClassification"
objective_metric = "F1"
training_mode = "ENSEMBLING"

automl_job_config = {
    'CompletionCriteria': {
      'MaxRuntimePerTrainingJobInSeconds': max_runtime_per_job_seconds,
      'MaxAutoMLJobRuntimeInSeconds': max_job_runtime_seconds
    },    
    "Mode" : training_mode
}

automl_job_objective= { "MetricName": objective_metric }

input_data_config = [
    {
      'DataSource': {
        'S3DataSource': {
          'S3DataType': 'S3Prefix',
          'S3Uri': f's3://{bucket}/{prefix}/raw/bank-additional-full.csv'
        }
      },
      'TargetAttributeName': target_column
    }
  ]

output_data_config = {
	    'S3OutputPath': f's3://{bucket}/{prefix}/output'
	}


sm_client.create_auto_ml_job(
				AutoMLJobName=auto_ml_job_name,
				InputDataConfig=input_data_config,
				OutputDataConfig=output_data_config,
				AutoMLJobConfig=automl_job_config,
				ProblemType=problem_type,
				AutoMLJobObjective=automl_job_objective,
				RoleArn=role)

Autopilotti palauttaa BestCandidate malliobjekti, jolla on InferenceContainers tarvitaan mallien käyttöönottamiseksi päätepisteiden päättelemiseksi. Saadaksesi BestCandidate käytämme edellisessä työssä describe_automl_job toiminto:

job_response = sm_client.describe_auto_ml_job(AutoMLJobName=automl_job_name)
best_candidate = job_response['BestCandidate']
inference_container = job_response['BestCandidate']['InferenceContainers'][0]
print(inference_container)

Ota koulutettu malli käyttöön

Otamme nyt käyttöön edellisen päätelmäsäiliön palvelimettomaan päätepisteeseen. Ensimmäinen vaihe on luoda malli johtopäätössäilöstä ja sitten luoda päätepistemääritys, jossa määritämme MemorySizeInMB ja MaxConcurrency arvot palvelimettomalle päätepisteelle yhdessä mallin nimen kanssa. Lopuksi luomme päätepisteen yllä luodulla päätepistekokoonpanolla.

Suosittelemme valitsemaan omasi päätepisteen muistin koko mallisi koon mukaan. Muistin koon tulee olla vähintään yhtä suuri kuin mallisi koko. Palvelimettomassa päätepisteessäsi on RAM-muistin vähimmäiskoko 1024 Mt (1 Gt) ja suurin valittavissa oleva RAM-koko on 6144 Mt (6 Gt).

Valittavissa olevat muistikoot ovat 1024 Mt, 2048 Mt, 3072 Mt, 4096 Mt, 5120 Mt tai 6144 Mt.

Jotta voit määrittää, onko palvelimeton päätepiste oikea käyttöönottovaihtoehto kustannusten ja suorituskyvyn kannalta, suosittelemme tutustumaan SageMaker Serverless Inference Benchmarking Toolkit, joka testaa erilaisia ​​päätepistekokoonpanoja ja vertaa optimaalisinta vastaavaan reaaliaikaiseen isännöintiinstanssiin.

Huomaa, että palvelimettomat päätepisteet hyväksyvät vain SingleModel päätelmäsäiliöille. Autopilotti yhdistämistilassa luo yhden mallin, joten voimme ottaa tämän mallisäiliön käyttöön sellaisenaan päätepisteeseen. Katso seuraava koodi:

# Create Model
	model_response = sm_client.create_model(
				ModelName=model_name,
				ExecutionRoleArn=role,
				Containers=[inference_container]
	)

# Create Endpoint Config
	epc_response = sm_client.create_endpoint_config(
		EndpointConfigName = endpoint_config_name,
		ProductionVariants=[
			{
				"ModelName": model_name,
				"VariantName": "AllTraffic",
				"ServerlessConfig": {
					"MemorySizeInMB": memory,
					"MaxConcurrency": max_concurrency
				}
			}
		]
	)

# Create Endpoint
	ep_response = sm_client.create_endpoint(
		EndpointName=endpoint_name,
		EndpointConfigName=endpoint_config_name
	)

Kun palvelimeton päättelypäätepiste on InService, voimme testata päätepistettä lähettämällä päättelypyynnön ja tarkkailla ennusteita. Seuraava kaavio havainnollistaa tämän asennuksen arkkitehtuuria.

Huomaa, että voimme lähettää raakadataa hyötykuormana päätepisteeseen. Autopilotin luoma kokonaisuusmalli yhdistää automaattisesti kaikki tarvittavat ominaisuusmuunnos- ja käänteismerkkimuunnosvaiheet sekä algoritmimalli ja -paketit yhdeksi malliksi.

Lähetä päättelypyyntö koulutetulle mallille

Käytä seuraavaa koodia lähettääksesi päätelmät mallistasi, joka on koulutettu kokoonpanotilassa:

from sagemaker.predictor import Predictor
from sagemaker.serializers import CSVSerializer


payload = "34,blue-collar,married,basic.4y,no,no,no,telephone,may,tue,800,4,999,0,nonexistent,1.1,93.994,-36.4,4.857,5191.0"

predictor = Predictor(
        endpoint_name=endpoint,
        sagmaker_session=session,
        serializer=CSVSerializer(),
    )

prediction = predictor.predict(payload).decode(‘utf-8’)
print(prediction)

Käynnistä Autopilot Job HPO-tilassa

HPO-tilassa, varten CompletionCriteria, sitä paitsi MaxRuntimePerTrainingJobInSeconds ja MaxAutoMLJobRuntimeInSeconds, voisimme myös määritellä MaxCandidates rajoittaaksesi Autopilot-työn luomien ehdokkaiden määrää. Huomaa, että nämä ovat valinnaisia ​​parametreja ja ne on asetettu vain rajoittamaan työn suoritusaikaa esittelyä varten. Katso seuraava koodi:

training_mode = "HYPERPARAMETER_TUNING"

automl_job_config["Mode"] = training_mode
automl_job_config["CompletionCriteria"]["MaxCandidates"] = 15
hpo_automl_job_name =  f"{model_prefix}-HPO-{timestamp_suffix}"

response = sm_client.create_auto_ml_job(
					  AutoMLJobName=hpo_automl_job_name,
					  InputDataConfig=input_data_config,
					  OutputDataConfig=output_data_config,
					  AutoMLJobConfig=automl_job_config,
					  ProblemType=problem_type,
					  AutoMLJobObjective=automl_job_objective,
					  RoleArn=role,
					  Tags=tags_config
				)

Saadaksesi BestCandidate edelliseen työhön voimme jälleen käyttää describe_automl_job toiminto:

job_response = sm_client.describe_auto_ml_job(AutoMLJobName=automl_job_name)
best_candidate = job_response['BestCandidate']
inference_containers = job_response['BestCandidate']['InferenceContainers']
print(inference_containers)

Ota koulutettu malli käyttöön

Autopilotti HPO-tilassa luokitteluongelmatyypille luo kolme päättelysäilöä.

Ensimmäinen säilö käsittelee ominaisuuden muunnosvaiheet. Seuraavaksi algoritmisäiliö luo predicted_label suurimmalla todennäköisyydellä. Lopuksi jälkikäsittelyn päättelysäilö suorittaa käänteisen muunnoksen ennustetulle tarralle ja kartoittaa sen alkuperäiseen etikettiin. Lisätietoja on kohdassa Päätelmäsäiliön määritelmät regressio- ja luokitteluongelmatyypeille.

Puramme nämä kolme päättelysäilöä ja otamme ne käyttöön erillisiin palvelimettomiin päätepisteisiin. Päätelmiä varten kutsumme päätepisteet peräkkäin lähettämällä hyötykuorman ensin ominaisuuden muunnossäilölle, välittämällä sitten tämän säilön tuotoksen algoritmisäiliöön ja välittämällä lopuksi tulos edellisestä päättelysäilystä jälkikäsittelysäilöön, joka tulostaa ennustetun etiketin.

Seuraava kaavio havainnollistaa tämän asennuksen arkkitehtuuria. kaavio, joka havainnollistaa Autopilot-mallia HPO-tilassa, joka on otettu käyttöön kolmeen palvelimettomaan päätepisteeseen

Poimimme kolme päättelysäiliötä BestCandidate seuraavalla koodilla:

job_response = sm_client.describe_auto_ml_job(AutoMLJobName=automl_job_name)
inference_containers = job_response['BestCandidate']['InferenceContainers']

models = list()
endpoint_configs = list()
endpoints = list()

# For brevity, we've encapsulated create_model, create endpoint_config and create_endpoint as helper functions
for idx, container in enumerate(inference_containers):
    (status, model_arn) = create_autopilot_model(
								    sm_client,
								    automl_job_name,
            						role,
								    container,
								    idx)
    model_name = model_arn.split('/')[1]
    models.append(model_name)

    endpoint_config_name = f"epc-{model_name}"
    endpoint_name = f"ep-{model_name}"
    (status, epc_arn) = create_serverless_endpoint_config(
								    sm_client,
								    endpoint_config_name,
								    model_name,
            						memory=2048,
								    max_concurrency=10)
	endpoint_configs.append(endpoint_config_name)

	response = create_serverless_endpoint(
								    sm_client,
								    endpoint_name,
								    endpoint_config_name)
	endpoints.append(endpoint_name)

Lähetä päättelypyyntö koulutetulle mallille

Päätelmiä varten lähetämme hyötykuorman järjestyksessä: ensin ominaisuusmuunnossäiliöön, sitten mallisäilöyn ja lopuksi käänteismerkkimuunnossäiliöön.

visuaalinen päättelypyyntövirta kolmesta päättelysäiliöstä HPO-tilasta

Katso seuraava koodi:

from sagemaker.predictor import Predictor
from sagemaker.serializers import CSVSerializer

payload = "51,technician,married,professional.course,no,yes,no,cellular,apr,thu,687,1,0,1,success,-1.8,93.075,-47.1,1.365,5099.1"


for _, endpoint in enumerate(endpoints):
    try:
        print(f"payload: {payload}")
        predictor = Predictor(
            endpoint_name=endpoint,
            sagemaker_session=session,
            serializer=CSVSerializer(),
        )
        prediction = predictor.predict(payload)
        payload=prediction
    except Exception as e:
        print(f"Error invoking Endpoint; {endpoint} n {e}")
        break

Tämän esimerkin täydellinen toteutus on saatavilla seuraavassa jupyterissä muistikirja.

Puhdistaa

Voit puhdistaa resursseja poistamalla luodut palvelimettomat päätepisteet, päätepistemääritykset ja mallit:

sm_client = boto3.Session().client(service_name='sagemaker',region_name=region)

for _, endpoint in enumerate(endpoints):
    try:
        sm_client.delete_endpoint(EndpointName=endpoint)
    except Exception as e:
        print(f"Exception:n{e}")
        continue
        
for _, endpoint_config in enumerate(endpoint_configs):
    try:
        sm_client.delete_endpoint_config(EndpointConfigName=endpoint_config)
    except Exception as e:
        print(f"Exception:n{e}")
        continue

for _, autopilot_model in enumerate(models):
    try:
        sm_client.delete_model(ModelName=autopilot_model)
    except Exception as e:
        print(f"Exception:n{e}")
        continue

Yhteenveto

Tässä viestissä osoitimme, kuinka voimme ottaa käyttöön Autopilotin luomia malleja sekä ensemble- että HPO-tiloissa palvelimettomissa päätepäätepisteissä. Tämä ratkaisu voi nopeuttaa kykyäsi käyttää ja hyödyntää kustannustehokkaita ja täysin hallittuja ML-palveluita, kuten Autopilotia, luodaksesi malleja nopeasti raakatiedoista ja ottaa ne sitten käyttöön täysin hallituissa palvelimettomissa päätepisteissä, joissa on sisäänrakennettu automaattinen skaalaus kustannusten vähentämiseksi. .

Suosittelemme kokeilemaan tätä ratkaisua yrityksesi KPI-arvoihin liittyvän tietojoukon kanssa. Voit katsoa Jupyter-muistikirjassa toteutettua ratkaisua GitHub repo.

Lisäviitteet


kirjailijasta

Ota käyttöön Amazon SageMaker Autopilot -malleja palvelimettomiin päätepisteisiin PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Praveen Chamarthi on vanhempi AI/ML-asiantuntija Amazon Web Services -palvelussa. Hän on intohimoinen AI/ML:stä ja kaikesta AWS:stä. Hän auttaa asiakkaita kaikkialla Amerikassa skaalaamaan, innovoimaan ja hallitsemaan ML-työkuormia tehokkaasti AWS:ssä. Vapaa-ajallaan Praveen pitää lukemisesta ja scifi-elokuvista.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen