Inženiring funkcij velikega obsega z zaščito občutljivih podatkov z uporabo interaktivnih sej AWS Glue in podatkovne inteligence PlatoBlockchain Amazon SageMaker Studio. Navpično iskanje. Ai.

Inženiring funkcij velikega obsega z zaščito občutljivih podatkov z uporabo interaktivnih sej AWS Glue in Amazon SageMaker Studio

Organizacije uporabljajo storitve strojnega učenja (ML) in AI za izboljšanje uporabniške izkušnje, zmanjšanje operativnih stroškov in odklepanje novih možnosti za izboljšanje poslovnih rezultatov. Podatki podpirajo primere uporabe ML in AI in so strateška prednost organizacije. Ker podatki rastejo z eksponentno hitrostjo, si organizacije prizadevajo vzpostaviti integrirano, stroškovno učinkovito in zmogljivo podatkovno platformo za predhodno obdelavo podatkov, izvajanje inženiringa funkcij ter gradnjo, usposabljanje in operacionalizacijo modelov ML v velikem obsegu. Da bi to dosegli, AWS ponuja enotno sodobno podatkovno platformo, ki jo poganja Preprosta storitev shranjevanja Amazon (Amazon S3) kot podatkovno jezero z namensko izdelanimi orodji in procesorji za podporo analitiki in delovnim obremenitvam ML. Za enotno izkušnjo ML lahko uporabite Amazon SageMaker Studio, ki ponuja izvorna integracija z interaktivnimi sejami AWS Glue za izvajanje inženiringa funkcij v velikem obsegu z zaščito občutljivih podatkov. V tej objavi prikazujemo, kako implementirati to rešitev.

Amazon SageMaker je v celoti upravljana storitev ML, ki vam omogoča gradnjo, usposabljanje in uvajanje modelov v velikem obsegu za širok nabor primerov uporabe. Za usposabljanje modelov lahko uporabite katerega koli od vgrajeni algoritmi znotraj SageMakerja, da hitro začnete z usposabljanjem in uvajanjem modelov ML.

Ključna komponenta procesa gradnje in razvoja modela je inženiring funkcij. AWS lepilo je ena od priporočenih možnosti za doseganje inženiringa funkcij v velikem obsegu. AWS Glue vam omogoča izvajanje integracije in transformacije podatkov na porazdeljen način na brezstrežniški infrastrukturi Apache Spark in olajša uporabo priljubljene knjižnice Spark ML za inženiring funkcij in razvoj modelov. Poleg tega lahko uporabite AWS Glue za inkrementalno obdelavo podatkov prek delovni zaznamki, prejemajte podatke iz več kot 100 virov z uporabo priključki, in izvajajte nenadne ali nepredvidljive delovne obremenitve z uporabo samodejno skaliranje.

Druga pomembna zahteva za aplikacije, ki temeljijo na ML, je varnost podatkov in nadzor dostopa. Običajna zahteva je strožji nadzor nad tem, kdo lahko dostopa do najobčutljivejših podatkov kot del procesa inženiringa funkcij in gradnje modela z upoštevanjem načela dostopa z najmanjšimi pravicami. Če želite to doseči, lahko uporabite integracijo AWS Glue z Oblikovanje jezera AWS za povečano upravljanje in upravljanje sredstev podatkovnega jezera. Z Lake Formation lahko konfigurirate natančen nadzor dostopa do podatkov in varnostne politike na vrhu podatkovnega jezera Amazon S3. Politike so definirane na osrednji lokaciji, kar omogoča več analitičnih storitev in storitev ML, kot je AWS Glue, Amazonska Atenain SageMaker za interakcijo s podatki, shranjenimi v Amazon S3.

AWS Glue vključuje a odkrivanje osebno določljivih podatkov (PII). preoblikovanje, ki omogoča odkrivanje, maskiranje ali odstranjevanje entitet, kot je potrebno, za večjo skladnost in upravljanje. S pretvorbo PII lahko zaznate podatke PII v naborih podatkov in samodejno uporabite natančen nadzor dostopa z uporabo Lake Formation, da omejite občutljive podatke za različne skupine uporabnikov.

Uporaba primera

Osredotočeni smo na primer uporabe modela nagnjenosti, ki vključuje nabor podatkov o trženju strank in vključuje dve uporabniški osebi: podatkovnega inženirja in podatkovnega znanstvenika. Nabor podatkov vsebuje informacije za posamezne stranke, vključno z virom potencialnih strank, kontaktnimi opombami, delovno vlogo, nekaterimi oznakami, ogledi strani na obisk in še več. Nabor podatkov vključuje tudi občutljive podatke, kot so osebne telefonske številke.

Podatkovni inženir je odgovoren za izgradnjo cevovoda za obdelavo podatkov od konca do konca, vključno s pripravo podatkov, predprocesiranjem in nadzorom dostopa. Podatkovni znanstvenik je odgovoren za inženiring funkcij ter usposabljanje in uvajanje modela ML. Upoštevajte, da podatkovni znanstvenik ne sme dostopati do občutljivih podatkov PII za inženiring funkcij ali usposabljanje modela ML.

Kot del tega primera uporabe podatkovni inženir zgradi podatkovni cevovod za predhodno obdelavo nabora podatkov, pregleda nabor podatkov za vse informacije, ki omogočajo osebno prepoznavo, in omeji dostop do stolpca PII uporabniku podatkovnega znanstvenika. Posledično, ko podatkovni znanstvenik uporablja nabor podatkov za izvajanje inženiringa funkcij in izdelavo modelov ML, nima dostopa do občutljivega stolpca PII (v tem primeru telefonske številke). Postopek inženiringa funkcij vključuje pretvorbo stolpcev vrste niz v obliko, ki je optimalna za modele ML. Kot napreden primer uporabe lahko razširite ta vzorec dostopa za implementacijo varnosti na ravni vrstice in celice z uporabo Lake Formation.

Pregled rešitev

Rešitev vsebuje naslednje korake na visoki ravni:

  1. Nastavite vire z Oblikovanje oblaka AWS.
  2. Vnaprej obdelajte nabor podatkov, vključno z odkrivanjem PII in podrobnim nadzorom dostopa, v interaktivni seji AWS Glue.
  3. Izvedite inženiring funkcij na interaktivni seji AWS Glue.
  4. Usposobite in uvedite model ML z uporabo algoritma XGBoost, vgrajenega v SageMaker.
  5. Ocenite model ML.

Naslednji diagram prikazuje arhitekturo rešitev.

Predpogoji

Če želite dokončati to vadnico, morate imeti naslednje predpogoje:

Nastavite vire z AWS CloudFormation

Ta objava vključuje predlogo CloudFormation za hitro nastavitev. Lahko ga pregledate in prilagodite svojim potrebam. Če raje nastavite vire na Konzola za upravljanje AWS in AWS CLI namesto AWS CloudFormation, si oglejte navodila v dodatku na koncu te objave.

Predloga CloudFormation ustvari naslednje vire:

  • Vedra S3 z vzorčnim naborom podatkov
  • An AWS Lambda funkcijo za nalaganje nabora podatkov
  • AWS upravljanje identitete in dostopa (IAM), uporabniki, vloge in pravilniki
  • Nastavitve in dovoljenja podatkovnega jezera Lake Formation
  • Uporabniški profili SageMaker

Če želite ustvariti vire, izvedite naslednje korake:

  1. Prijavite se v konzolo.
  2. Izberite Izstrelite sklad:
    Gumb za zagon
  3. Izberite Naslednji.
  4. za DataEngineerPwd in DataScientistPwd, vnesite svoje geslo za uporabnike podatkovnega inženirja in podatkovnega znanstvenika.
  5. za GlueDatabaseName, vnesite demo.
  6. za GlueTableName, vnesite web_marketing.
  7. za S3BucketNameForInput, vnesite blog-studio-pii-dataset-.
  8. za S3BucketNameForOutput, vnesite blog-studio-output-.
  9. za SageMakerDomainId, vnesite svoj ID domene SageMaker, ki ste ga pripravili v predpogojnih korakih.
  10. Izberite Naslednji.
  11. Na naslednji strani izberite Naslednji.
  12. Preglejte podrobnosti na zadnji strani in izberite Priznavam, da lahko AWS CloudFormation ustvari vire IAM.
  13. Izberite ustvarjanje.

Ustvarjanje sklada lahko traja do 10 minut. Sklad ustvari vloge IAM in uporabniške profile SageMaker za dve osebi: podatkovnega inženirja in podatkovnega znanstvenika. Ustvari tudi predstavitev baze podatkov in tabelo web_marketing z vzorčnim naborom podatkov.

V času ustvarjanja sklada ima oseba podatkovnega inženirja popoln dostop do tabele, osebnost podatkovnega znanstvenika pa še nima dostopa do tabele.

Vnaprej obdelajte nabor podatkov

Začnimo s predhodno obdelavo podatkov v interaktivni seji AWS Glue. Oseba podatkovnega inženirja želi preveriti podatke, da ugotovi, ali obstajajo občutljivi podatki ali ne, in podeliti minimalno dovoljenje za dostop osebi podatkovnega znanstvenika. Zvezek lahko prenesete iz tej lokaciji.

  1. Prijavite se v konzolo z uporabnikom data-engineer.
  2. Na konzoli SageMaker izberite uporabniki.
  3. Izberite uporabnika podatkovnega inženirja in izberite Odprti studio.
  4. Ustvarite nov zvezek in izberite SparkAnalytics 1.0 za Image in Lepilo PySpark za Kernel.
  5. Začnite interaktivno sejo z naslednjo čarovnijo, da namestite novejšo različico Boto3 (to je potrebno za uporabo create_data_cells_filter metoda):
    %additional_python_modules boto3==1.24.82

  6. Inicializacija seje:
    import boto3
    import sys
    from awsglue.transforms import *
    from awsglue.utils import getResolvedOptions
    from pyspark.context import SparkContext
    from awsglue.context import GlueContext
    from awsglue.job import Job
    
    sc = SparkContext.getOrCreate()
    glueContext = GlueContext(sc)
    spark = glueContext.spark_session
    job = Job(glueContext)

  7. Ustvarite AWS Glue DynamicFrame iz novo ustvarjene tabele in razrešite vrste izbire na podlagi kataloške sheme, ker želimo uporabiti shemo, definirano v katalogu, namesto samodejno ugotovljene sheme na podlagi podatkov:
    dyf_marketing = glueContext.create_dynamic_frame.from_catalog(
    database="demo",
    table_name="web_marketing"
    )
    
    dyf_marketing_resolved = dyf_marketing.resolveChoice(
    choice="match_catalog",
    database="demo",
    table_name="web_marketing"
    )
    
    dyf_marketing_resolved.printSchema()

  8. V tabeli preverite, ali obstajajo podatki PII z zaznavanjem PII AWS Glue:
    from awsglueml.transforms import EntityDetector
    
    entities_filter = [
    "EMAIL",
    "CREDIT_CARD",
    "IP_ADDRESS",
    "MAC_ADDRESS",
    "PHONE_NUMBER"
    ]
    entity_detector = EntityDetector()
    classified_map = entity_detector.classify_columns(dyf_marketing_resolved, entities_filter, 1.0, 0.1)
    print(classified_map)

  9. Preverite, ali stolpci, razvrščeni kot PII, vsebujejo občutljive podatke ali ne (če ne, posodobite classified_map, da izpustite neobčutljive stolpce):
    from pyspark.sql.functions import col
    dyf_marketing_resolved.toDF().select(*[col(c) for c in classified_map.keys()]).show()

  10. Nastavite dovoljenja Lake Formation z uporabo filtra podatkovnih celic za samodejno zaznane stolpce in omejite stolpce na osebo podatkovnega znanstvenika:
    lakeformation = boto3.client('lakeformation')
    sts = boto3.client('sts')
    
    account_id = sts.get_caller_identity().get('Account')
    
    # Create a data cell filter for excluding phone_number column
    lakeformation.create_data_cells_filter(
    TableData={
    'TableCatalogId': account_id,
    'DatabaseName': 'demo',
    'TableName': 'web_marketing',
    'Name': 'pii',
    'RowFilter': {
    'AllRowsWildcard': {}
    
    },
    'ColumnWildcard': {
    'ExcludedColumnNames': list(classified_map.keys())
    }
    }
    )
    
    # Grant permission on the data cell filter
    lakeformation.grant_permissions(
    Principal={
    'DataLakePrincipalIdentifier': f'arn:aws:iam::{account_id}:role/SageMakerStudioExecutionRole_data-scientist'
    },
    Resource={
    'DataCellsFilter': {
    'TableCatalogId': account_id,
    'DatabaseName': 'demo',
    'TableName': 'web_marketing',
    'Name': 'pii'
    }
    },
    Permissions=[
    'SELECT'
    ]
    )

  11. Prijavite se v Studio kot podatkovni znanstvenik in preverite, ali stolpci PII niso vidni. Zvezek lahko prenesete iz tej lokaciji.
  12. Ustvarite nov zvezek in izberite SparkAnalytics 1.0 za Image in Lepilo PySpark za Kernel:
    import boto3
    import sys
    from awsglue.transforms import *
    from awsglue.utils import getResolvedOptions
    from pyspark.context import SparkContext
    from awsglue.context import GlueContext
    from awsglue.job import Job
    
    sc = SparkContext.getOrCreate()
    glueContext = GlueContext(sc)
    spark = glueContext.spark_session
    job = Job(glueContext)
    
    dyf_marketing = glueContext.create_dynamic_frame.from_catalog(
    database="demo",
    table_name="web_marketing"
    )
    
    dyf_marketing.printSchema()

Izvedite inženiring funkcij

Knjižnico Apache Spark ML uporabljamo za izvajanje inženiringa funkcij kot uporabnik podatkovnega znanstvenika in nato zapišemo izhod v Amazon S3.

  1. V naslednji celici uporabimo funkcije iz Knjižnica Apache Spark ML:
    • StringIndexer preslika nizovni stolpec oznak v stolpec indeksov oznak.
    • OneHotEncoder preslika kategorično značilnost, predstavljeno kot indeks oznake, v binarni vektor z največ eno samo eno vrednostjo, ki označuje prisotnost določene kategorične značilnosti. Ta transformacija se uporablja za algoritme ML, ki pričakujejo neprekinjene funkcije.
    • VectorAssembler je transformator, ki združuje dani seznam stolpcev v en sam vektorski stolpec, ki se nato uporablja pri usposabljanju modelov ML za algoritme, kot so logistična regresija in drevesa odločanja.
    #feature engineering by using string indexer and one hot encoding from spark ML library
    from pyspark.ml.feature import StringIndexer, VectorIndexer, OneHotEncoder, VectorAssembler
    from pyspark.ml import Pipeline
    
    cols = ['lastcampaignactivity','region','viewedadvertisement','usedpromo','jobrole']
    
    int_cols = ['pageviewspervisit','totaltimeonwebsite','totalwebvisits',]
    
    indexers = [
    StringIndexer(inputCol=c, outputCol="{0}_indexed".format(c))
    for c in cols
    ]
    
    encoders = [
    OneHotEncoder(
    inputCol=indexer.getOutputCol(),
    outputCol="{0}_encoded".format(indexer.getOutputCol()))
    for indexer in indexers
    ]
    
    assembler = VectorAssembler(
    inputCols=[encoder.getOutputCol() for encoder in encoders]+int_cols,
    outputCol="features"
    )

  2. Končni transformirani DataFrame je mogoče ustvariti s knjižnico Pipeline. Cevovod je določen kot zaporedje stopenj. Te stopnje potekajo po vrstnem redu in vhodni DataFrame se preoblikuje, ko gre skozi vsako stopnjo.
    df_marketing = dyf_marketing.toDF()
    pipeline = Pipeline(stages=indexers + encoders + [assembler])
    df_tfm=pipeline.fit(df_marketing).transform(df_marketing)
    

  3. Nato razdelimo nabor podatkov v DataFrame za usposabljanje, validacijo in testiranje ter ga shranimo v vedro S3 za usposabljanje modela ML (v naslednji kodi vnesite ID računa AWS):
    from pyspark.ml.functions import vector_to_array
    
    #set s3 output location for feature engineering output
    bucket='blog-studio-output-'
    
    #convert sparse to dense vector
    df_tfm=df_tfm.select('converted',vector_to_array("features").alias("features_array"))
    
    #split features array into individual columns
    df_tfm=df_tfm.select([df_tfm.converted] + [df_tfm.features_array[i] for i in range(17)])
    
    #split the overall dataset into 70-20-10 training , validation and test
    (train_df, validation_df, test_df) = df_tfm.randomSplit([0.7,0.2,0.1])
    
    #write back train, validation and test datasets to S3
    train_df.write
    .option("header","false")
    .csv('s3://{}/web-marketing/processed/training/'.format(bucket))
    
    validation_df.write
    .option("header","false")
    .csv('s3://{}/web-marketing/processed/validation/'.format(bucket))
    
    test_df.write
    .option("header","false")
    .csv('s3://{}/web-marketing/processed/test/'.format(bucket))

Usposobite in uvedite model ML

V prejšnjem razdelku smo dokončali inženiring funkcij, ki je vključeval pretvorbo stolpcev nizov, kot je npr region, jobrolein usedpromo v obliko, ki je optimalna za modele ML. Vključili smo tudi rubrike kot npr pageviewspervisit in totalwebvisits, ki nam bo pomagal predvideti nagnjenost stranke k nakupu izdelka.

Zdaj usposabljamo model ML z branjem nabora podatkov o usposabljanju in validaciji z uporabo algoritma XGBoost, ki je vgrajen v SageMaker. Nato razmestimo model in izvedemo preverjanje točnosti. Zvezek lahko prenesete iz tej lokaciji.

V naslednji celici beremo podatke iz drugega vedra S3, ki vključuje rezultate naših operacij inženiringa funkcij. Nato uporabimo vgrajeni algoritem XGBoost za usposabljanje modela.

  1. Odprite nov zvezek. Izberite Znanost podatki za Image in Python 3 za Kernel (vnesite ID računa AWS v naslednjo kodo):
    #set s3 bucket location for training data
    import sagemaker
    import boto3
    from sagemaker import get_execution_role
    
    container = sagemaker.image_uris.retrieve(region=boto3.Session().region_name,
    framework='xgboost', version='latest')
    bucket='blog-studio-output-'
    prefix='web-marketing/processed'
    
    #read train and validation input datasets
    s3_input_train = sagemaker.inputs.TrainingInput(s3_data='s3://{}/{}/training/'
    .format(bucket, prefix), content_type='csv')
    s3_input_validation = sagemaker.inputs.TrainingInput(s3_data='s3://{}/{}/validation/'
    .format(bucket, prefix), content_type='csv')
    
    #train xgb model
    sess = sagemaker.Session()
    from sagemaker import get_execution_role
    
    xgb = sagemaker.estimator.Estimator(
    container,
    role=get_execution_role(),
    instance_count=1,
    instance_type='ml.m4.xlarge',
    output_path='s3://{}/{}/output'
    .format(bucket, prefix),
    sagemaker_session=sess
    )
    
    xgb.set_hyperparameters(
    max_depth=5,
    eta=0.2,
    gamma=4,
    min_child_weight=6,
    subsample=0.8,
    silent=0,
    objective='binary:logistic',
    num_round=100
    )
    
    xgb.fit({'train': s3_input_train, 'validation': s3_input_validation})

  2. Ko je usposabljanje končano, lahko uvedemo model z uporabo storitev gostovanja SageMaker:
    #deploy ml model
    xgb_predictor = xgb.deploy(initial_instance_count=1,
    instance_type='ml.m4.xlarge')

Ocenite model ML

Testni nabor podatkov uporabljamo za ovrednotenje modela in izbrišemo končno točko sklepanja, ko končamo, da se izognemo kakršnim koli tekočim bremenitvam.

  1. Ocenite model z naslednjo kodo:
    #create csv serialiser to run accuracy on test dataset
    xgb_predictor.serializer = sagemaker.serializers.CSVSerializer()
    
    #read test dataset
    import io
    import pandas as pd
    
    s3 = boto3.resource('s3')
    bucket_obj = s3.Bucket(bucket)
    
    test_line = []
    test_objs = bucket_obj.objects.filter(Prefix="web-marketing/processed/test")
    for obj in test_objs:
    try:
    key = obj.key
    body = obj.get()['Body'].read()
    temp = pd.read_csv(io.BytesIO(body),header=None, encoding='utf8',sep=',')
    test_line.append(temp)
    except:
    continue
    
    test_df = pd.concat(test_line)
    
    #predict results using deployed model
    import numpy as np
    def predict(data, predictor, rows=500 ):
    split_array = np.array_split(data, int(data.shape[0] / float(rows) + 1))
    predictions = ''
    for array in split_array:
    predictions = ','.join([predictions, predictor.predict(array).decode('utf-8')])
    return np.fromstring(predictions[1:], sep=',')
    
    #drop the target variable in test_df and make prediction
    predictions = predict(test_df.drop(test_df.columns[0], axis=1).to_numpy(), xgb_predictor)
    
    #calculate accuracy using sklearn library
    from sklearn.metrics import accuracy_score, confusion_matrix
    y_pred=np.round(predictions)
    y_true=test_df.iloc[:,0].values.tolist()
    print('Accuracy score: ',accuracy_score(y_true, y_pred))
    print('Confusion matrix: n',confusion_matrix(y_true, y_pred))

    Rezultat točnosti vzorca je bil 84.6 %. Zaradi naključne razdelitve nabora podatkov je to lahko nekoliko drugačno za vaš tek.

  2. Končno točko sklepanja lahko izbrišemo z naslednjo kodo:
    xgb_predictor.delete_endpoint(delete_endpoint_config=True)

Čiščenje

Zdaj pa k zadnjemu koraku, čiščenju virov.

  1. Izpraznite dve vedri, ustvarjeni prek sklada CloudFormation.
  2. Izbrišite aplikacije, povezane z uporabnikom profiles data-scientist in data-engineer znotraj Studia.
  3. Izbrišite sklad CloudFormation.

zaključek

V tej objavi smo prikazali rešitev, ki osebam, kot so podatkovni inženirji in podatkovni znanstveniki, omogoča izvajanje inženiringa funkcij v velikem obsegu. Z interaktivnimi sejami AWS Glue lahko enostavno dosežete inženiring funkcij v velikem obsegu s samodejnim zaznavanjem PII in natančnim nadzorom dostopa, ne da bi morali upravljati kakršno koli osnovno infrastrukturo. Če uporabljate Studio kot enotno vstopno točko, lahko dobite poenostavljeno in integrirano izkušnjo za izgradnjo celovitega poteka dela ML: od priprave in zavarovanja podatkov do gradnje, usposabljanja, prilagajanja in uvajanja modelov ML. Če želite izvedeti več, obiščite Začetek uporabe interaktivnih sej AWS Glue in Amazon SageMaker Studio.

Zelo smo navdušeni nad to novo zmogljivostjo in želimo videti, kaj boste z njo zgradili!


Dodatek: Nastavite vire prek konzole in AWS CLI

Izpolnite navodila v tem razdelku za nastavitev virov s konzolo in AWS CLI namesto predloge CloudFormation.

Predpogoji

Če želite dokončati to vadnico, morate imeti dostop do AWS CLI (glejte Začetek uporabe AWS CLI) ali uporabite dostop do ukazne vrstice iz AWS CloudShell.

Konfigurirajte skupino IAM, uporabnike, vloge in pravilnike

V tem razdelku ustvarimo dva uporabnika IAM: data-engineer in data-scientist, ki pripadata skupini IAM data-platform-group. Nato v skupino IAM dodamo eno samo politiko IAM.

  1. Na konzoli IAM, ustvarite pravilnik na zavihku JSON za ustvarjanje novega pravilnika, ki ga upravlja IAM z imenom DataPlatformGroupPolicy. Pravilnik dovoljuje uporabnikom v skupini dostop do programa Studio, vendar le z uporabo uporabniškega profila SageMaker z oznako, ki se ujema z njihovim uporabniškim imenom IAM. Za zagotavljanje dovoljenj uporabite naslednji dokument pravilnika JSON:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Action":[
                "sagemaker:DescribeDomain",
                "sagemaker:ListDomains",
                "sagemaker:ListUserProfiles",
                "sagemaker:ListApps"
             ],
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"AmazonSageMakerStudioReadOnly"
          },
          {
             "Action":"sagemaker:AddTags",
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"AmazonSageMakerAddTags"
          },
          {
             "Condition":{
                "StringEquals":{
                   "sagemaker:ResourceTag/studiouserid":"${aws:username}"
                }
             },
             "Action":[
                "sagemaker:CreatePresignedDomainUrl",
                "sagemaker:DescribeUserProfile"
             ],
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"AmazonSageMakerAllowedUserProfile"
          },
          {
             "Condition":{
                "StringNotEquals":{
                   "sagemaker:ResourceTag/studiouserid":"${aws:username}"
                }
             },
             "Action":[
                "sagemaker:CreatePresignedDomainUrl",
                "sagemaker:DescribeUserProfile"
             ],
             "Resource":"*",
             "Effect":"Deny",
             "Sid":"AmazonSageMakerDeniedUserProfiles"
          }
       ]
    }

  2. Ustvarite skupino IAM se imenuje data-platform-group.
  3. Poiščite in skupini priložite upravljano politiko AWS z imenom DataPlatformGroupPolicy.
  4. Ustvarite uporabnike IAM imenovan podatkovni inženir in podatkovni znanstvenik v skupini IAM data-platform-group.
  5. Ustvarite nov upravljani pravilnik z imenom SageMakerExecutionPolicy (vnesite svojo regijo in ID računa v naslednji kodi):
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Action":[
                "sagemaker:DescribeDomain",
                "sagemaker:ListDomains",
                "sagemaker:ListUserProfiles",
                "sagemaker:ListApps"
             ],
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"AmazonSageMakerStudioReadOnly"
          },
          {
             "Action":"sagemaker:AddTags",
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"AmazonSageMakerAddTags"
          },
          {
             "Action":[
                "sagemaker:CreateTrainingJob",
                "sagemaker:DescribeTrainingJob",
                "logs:DescribeLogStreams",
                "sagemaker:CreateModel",
                "sagemaker:CreateEndpointConfig",
                "sagemaker:CreateEndpoint",
                "sagemaker:DescribeEndpoint",
                "sagemaker:InvokeEndpoint",
                "sagemaker:DeleteEndpointConfig",
                "sagemaker:DeleteEndpoint"
             ],
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"AmazonSageMakerTrainingAndDeploy"
          },
          {
             "Action":"sagemaker:*App",
             "Resource":"arn:aws:sagemaker:::app/*/${aws:PrincipalTag/userprofilename}/*",
             "Effect":"Allow",
             "Sid":"AmazonSageMakerAllowedApp"
          },
          {
             "Action":"sagemaker:*App",
             "Effect":"Deny",
             "NotResource":"arn:aws:sagemaker:::app/*/${aws:PrincipalTag/userprofilename}/*",
             "Sid":"AmazonSageMakerDeniedApps"
          },
          {
             "Action":[
                "glue:GetTable",
                "glue:GetTables",
                "glue:SearchTables",
                "glue:GetDatabase",
                "glue:GetDatabases",
                "glue:GetPartition",
                "glue:GetPartitions"
             ],
             "Resource":[
                "arn:aws:glue:::table/demo/*",
                "arn:aws:glue:::database/demo",
                "arn:aws:glue:::catalog"
             ],
             "Effect":"Allow",
             "Sid":"GlueCatalogPermissions"
          },
          {
             "Action":[
                "lakeformation:GetDataAccess",
                "lakeformation:StartQueryPlanning",
                "lakeformation:GetQueryState",
                "lakeformation:GetWorkUnits",
                "lakeformation:GetWorkUnitResults"
             ],
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"LakeFormationPermissions"
          },
          {
             "Effect":"Allow",
             "Action":[
                "s3:CreateBucket",
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListBucket",
                "s3:DeleteObject"
             ],
             "Resource":[
                "arn:aws:s3:::blog-studio-output-",
                "arn:aws:s3:::blog-studio-output-/*"
             ]
          },
          {
             "Action":[
                "iam:PassRole",
                "iam:GetRole",
                "sts:GetCallerIdentity"
             ],
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"AmazonSageMakerStudioIAMPassRole"
          },
          {
             "Action":"sts:AssumeRole",
             "Resource":"*",
             "Effect":"Deny",
             "Sid":"DenyAssummingOtherIAMRoles"
          }
       ]
    }

  6. Ustvarite nov upravljani pravilnik imenovan SageMakerAdminPolicy:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Action":[
                "lakeformation:GrantPermissions",
                "lakeformation:RevokePermissions",
                "lakeformation:ListPermissions",
                "lakeformation:BatchGrantPermissions",
                "lakeformation:BatchRevokePermissions",
                "lakeformation:CreateDataCellsFilter",
                "lakeformation:DeleteDataCellsFilter",
                "lakeformation:ListDataCellsFilter",
                "glue:GetUserDefinedFunctions",
                "glue:BatchGetCustomEntityTypes"
             ],
             "Resource":"*",
             "Effect":"Allow",
             "Sid":"GlueLakeFormationPermissions"
          }
       ]
    }

  7. Ustvari IAM vlogo za SageMaker za podatkovnega inženirja (data-engineer), ki se uporablja kot ustrezna izvršilna vloga uporabniškega profila. Na Priloži pravilnik o dovoljenjih strani, je privzeto priložen AmazonSageMakerFullAccess (pravilnik, ki ga upravlja AWS). Ta pravilnik pozneje odstranite, da ohranite minimalne privilegije.
    1. za Ime vloge, za poimenovanje vloge SageMakerStudioExecutionRole_data-engineer uporabite dogovor o poimenovanju, predstavljen na začetku tega razdelka.
    2. za oznake, dodajte ključ userprofilename in vrednost data-engineer.
    3. Izberite Ustvari vlogo.
    4. Če želite dodati preostale politike, na vloge izberite ime vloge, ki ste jo pravkar ustvarili.
    5. Pod Dovoljenja, odstranite pravilnik AmazonSageMakerFullAccess.
    6. o Priloži pravilnik o dovoljenjih izberite pravilnik AWS AwsGlueSessionUserRestrictedServiceRole ter pravilnika SageMakerExecutionPolicy in SageMakerAdminPolicy, ki ste ju ustvarili.
    7. Izberite Priložite pravilnike.
    8. spreminjanje zaupni odnos vaše vloge:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Principal":{
                "Service":[
                   "glue.amazonaws.com",
                   "sagemaker.amazonaws.com"
                ]
             },
             "Action":"sts:AssumeRole"
          }
       ]
    }

  8. Ustvari IAM vlogo za SageMaker za podatkovnega znanstvenika (data-scientist), ki se uporablja kot ustrezna izvršilna vloga uporabniškega profila.
    1. za Ime vloge, poimenujte vlogo SageMakerStudioExecutionRole_data-scientist.
    2. za oznake, dodajte ključ userprofilename in vrednost data-scientist.
    3. Izberite Ustvari vlogo.
    4. Če želite dodati preostale politike, na vloge izberite ime vloge, ki ste jo pravkar ustvarili.
    5. Pod Dovoljenja, odstranite pravilnik AmazonSageMakerFullAccess.
    6. o Priloži pravilnik o dovoljenjih izberite pravilnik, ki ga upravlja AWS, AwsGlueSessionUserRestrictedServiceRole, in pravilnik, ki ga upravlja stranka, SageMakerExecutionPolicy, ki ste ga ustvarili.
    7. Izberite Priložite pravilnike.
    8. spreminjanje zaupni odnos vaše vloge:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Principal":{
                "Service":[
                   "glue.amazonaws.com",
                   "sagemaker.amazonaws.com"
                ]
             },
             "Action":"sts:AssumeRole"
          }
       ]
    }

Konfigurirajte uporabniške profile SageMaker

Če želite ustvariti svoje uporabniške profile SageMaker z studiouserid oznako, izvedite naslednje korake:

  1. Uporabite AWS CLI ali CloudShell, da ustvarite uporabniški profil Studio za podatkovnega inženirja (vnesite ID svojega računa in ID domene Studio v naslednji kodi):
    aws sagemaker create-user-profile --domain-id  --user-profile-name data-engineer --tags Key=studiouserid,Value=data-engineer --user-settings ExecutionRole=arn:aws:iam:::role/SageMakerStudioExecutionRole_data-engineer

  2. Ponovite korak, da ustvarite uporabniški profil za podatkovnega znanstvenika, pri čemer zamenjate ID računa in ID domene Studio:
    aws sagemaker create-user-profile --domain-id  --user-profile-name data-scientist --tags Key=studiouserid,Value=data-scientist --user-settings ExecutionRole=arn:aws:iam:::role/SageMakerStudioExecutionRole_data-scientist

Ustvarite vedra S3 in naložite vzorčni nabor podatkov

V tem razdelku ustvarite dve vedri S3. Prvo vedro vsebuje vzorčni nabor podatkov, povezanih s spletnim trženjem. Drugo vedro podatkovni znanstvenik uporablja za shranjevanje rezultatov nalog inženiringa funkcij, ta izhodni nabor podatkov pa se uporablja za usposabljanje modela ML.

Najprej ustvarite vedro S3 za vhodne podatke:

  1. Prenos nabor podatkov.
  2. Na konzoli Amazon S3 izberite Žlice v podoknu za krmarjenje.
  3. Izberite Ustvari vedro.
  4. za Regija, izberite regijo z domeno SageMaker, ki vključuje uporabniške profile, ki ste jih ustvarili.
  5. za Ime vedra, vnesite blog-studio-pii-dataset-.
  6. Izberite Ustvari vedro.
  7. Izberite vedro, ki ste ga ustvarili, in izberite Pošiljanje.
  8. v izberite datoteke oddelek, izberite Dodaj datoteke in naložite nabor podatkov, ki ste ga prenesli.
    Zdaj ustvarite vedro za izhodne podatke:
  9. o Žlice stran, izberite Ustvari vedro.
  10. za Regija, izberite regijo z domeno SageMaker, ki vključuje uporabniške profile, ki ste jih ustvarili.
  11. za Ime vedra, vnesite blog-studio-output-.
  12. Izberite Ustvari vedro.

Ustvarite bazo podatkov in tabelo AWS Glue

V tem razdelku ustvarite zbirko podatkov AWS Glue in tabelo za nabor podatkov.

  1. Na konzoli Lake Formation pod Katalog podatkov v podoknu za krmarjenje izberite Baze podatkov.
  2. Izberite Dodaj bazo podatkov.
  3. za Ime, vnesite demo.
  4. Izberite Ustvarite bazo podatkov.
  5. Pod Katalog podatkov, izberite Mize.
  6. za Ime, vnesite web_marketing.
  7. za Baze podatkovtako, da izberete demo.
  8. za Vključi pot, vnesite pot vašega vedra S3 za vhodne podatke.
  9. za Razvrstitev, izberite CSV.
  10. Pod Shema, izberite Naloži shemo.
  11. V besedilno polje vnesite naslednjo matriko JSON:
    [
       {
          "Name":"lastcampaignactivity",
          "Type":"string"
       },
       {
          "Name":"pageviewspervisit",
          "Type":"double"
       },
       {
          "Name":"totaltimeonwebsite",
          "Type":"bigint"
       },
       {
          "Name":"totalwebvisits",
          "Type":"bigint"
       },
       {
          "Name":"attendedmarketingevent",
          "Type":"string"
       },
       {
          "Name":"organicsearch",
          "Type":"string"
       },
       {
          "Name":"viewedadvertisement",
          "Type":"string"
       },
       {
          "Name":"leadsource",
          "Type":"string"
       },
       {
          "Name":"jobrole",
          "Type":"string"
       },
       {
          "Name":"contactnotes",
          "Type":"string"
       },
       {
          "Name":"leadprofile",
          "Type":"string"
       },
       {
          "Name":"usedpromo",
          "Type":"string"
       },
       {
          "Name":"donotreachout",
          "Type":"boolean"
       },
       {
          "Name":"city",
          "Type":"string"
       },
       {
          "Name":"converted",
          "Type":"bigint"
       },
       {
          "Name":"region",
          "Type":"string"
       },
       {
          "Name":"phone_number",
          "Type":"string"
       }
    ]

  12. Izberite Pošiljanje.
  13. Izberite Prijave se.
  14. Pod Podrobnosti tabele, izberite Uredi tabelo.
  15. Pod Lastnosti tabele, izberite Dodaj.
  16. za Ključne, vnesite skip.header.line.countIn za vrednost, vnesite 1.
  17. Izberite Shrani.

Konfigurirajte dovoljenja Lake Formation

V tem razdelku nastavite dovoljenja Lake Formation, da omogočite vlogo IAM SageMakerStudioExecutionRole_data-engineer ustvariti bazo podatkov in registrirati lokacijo S3 znotraj jezerske formacije.

Najprej registrirajte lokacijo podatkovnega jezera za upravljanje tabel pod lokacijo v dovoljenjih Lake Formation:

  1. Izberite Lokacije podatkovnega jezera.
  2. Izberite Registriraj lokacijo.
  3. za Pot Amazon S3, vnesite s3://blog-studio-pii-dataset-/ (vedro, ki vsebuje nabor podatkov).
  4. Izberite Registriraj lokacijo.
    Zdaj vlogam IAM dodelite dovoljenja baze podatkov in tabel Lake Formation SageMakerStudioExecutionRole_data-engineer in SageMakerStudioExecutionRole_data-scientist.Najprej podelite dovoljenje za bazo podatkov za SageMakerStudioExecutionRole_data-engineer:
  5. Pod Dovoljenja, izberite Dovoljenja podatkovnega jezera.
  6. Pod Dovoljenje za podatke, izberite Grant.
  7. za Ravnatelji, izberite Uporabniki in vloge IAMin izberite vlogo SageMakerStudioExecutionRole_data-engineer.
  8. za Oznake pravilnika ali viri kataloga, izberite Viri imenskega kataloga podatkov.
  9. za Baze podatkov, izberite demo.
  10. za Dovoljenja baze podatkov, izberite Super.
  11. Izberite Grant.
    Nato dodelite dovoljenje za tabelo SageMakerStudioExecutionRole_data-engineer:
  12. Pod Dovoljenje za podatke, izberite Grant.
  13. za Ravnatelji, izberite Uporabniki in vloge IAMin izberite vlogo SageMakerStudioExecutionRole_data-engineer.
  14. za Oznake pravilnika ali viri kataloga, izberite Viri imenskega kataloga podatkov.
  15. za Baze podatkov, izberite demo.
  16. za Mize, izberite web_marketing.
  17. za Tabela dovoljenja, izberite Super.
  18. za Dopustno dovoljenja, izberite Super.
  19. Izberite Grant.
    Končno podelite dovoljenje za bazo podatkov za SageMakerStudioExecutionRole_data-scientist:
  20. Pod Dovoljenje za podatke, izberite Grant.
  21. za Ravnatelji, izberite Uporabniki in vloge IAMin izberite vlogo SageMakerStudioExecutionRole_data-scientist.
  22. za Oznake pravilnika ali viri kataloga, izberite Viri imenskega kataloga podatkov.
  23. za Baze podatkov, izberite demo.
  24. za Dovoljenja baze podatkov, izberite Opišite.
  25. Izberite Grant.

O avtorjih

Inženiring funkcij velikega obsega z zaščito občutljivih podatkov z uporabo interaktivnih sej AWS Glue in podatkovne inteligence PlatoBlockchain Amazon SageMaker Studio. Navpično iskanje. Ai.

Praveen Kumar je arhitekt analitičnih rešitev pri AWS s strokovnim znanjem in izkušnjami pri načrtovanju, gradnji in implementaciji sodobnih podatkovnih in analitičnih platform z uporabo storitev v oblaku. Področja njegovih interesov so brezstrežniška tehnologija, sodobna podatkovna skladišča v oblaku, pretakanje in aplikacije ML.

Inženiring funkcij velikega obsega z zaščito občutljivih podatkov z uporabo interaktivnih sej AWS Glue in podatkovne inteligence PlatoBlockchain Amazon SageMaker Studio. Navpično iskanje. Ai.

Noritaka Sekiyama je glavni arhitekt velikih podatkov v skupini AWS Glue. Uživa v sodelovanju z različnimi ekipami, da doseže rezultate, kot je ta objava. V prostem času z družino rad igra video igre.

Časovni žig:

Več od Strojno učenje AWS