AWS Glue etkileşimli oturumları ve Amazon SageMaker Studio PlatoBlockchain Veri Zekası kullanılarak hassas veri korumasına sahip büyük ölçekli özellik mühendisliği. Dikey Arama. Ai.

AWS Glue etkileşimli oturumları ve Amazon SageMaker Studio'yu kullanarak hassas veri korumasıyla büyük ölçekli özellik mühendisliği

Kuruluşlar müşteri deneyimini geliştirmek, operasyonel maliyetleri azaltmak ve iş sonuçlarını iyileştirecek yeni olanakların kilidini açmak için makine öğrenimi (ML) ve yapay zeka hizmetlerini kullanıyor. Veriler, makine öğrenimi ve yapay zeka kullanım senaryolarının temelini oluşturur ve bir kuruluş için stratejik bir varlıktır. Veriler katlanarak artarken kuruluşlar, verileri önceden işlemek, özellik mühendisliği gerçekleştirmek ve makine öğrenimi modellerini uygun ölçekte oluşturmak, eğitmek ve operasyonel hale getirmek için entegre, uygun maliyetli ve performanslı bir veri platformu kurmanın yollarını arıyor. Bunu başarmak için AWS, aşağıdakilerle desteklenen birleşik bir modern veri platformu sunar: Amazon Basit Depolama Hizmeti (Amazon S3), analitiği ve makine öğrenimi iş yüklerini desteklemek için özel olarak oluşturulmuş araçlara ve işleme motorlarına sahip veri gölü olarak. Birleşik bir makine öğrenimi deneyimi için şunları kullanabilirsiniz: Amazon SageMaker Stüdyosu, hangi teklifler AWS Glue etkileşimli oturumlarıyla yerel entegrasyon Hassas veri korumasıyla uygun ölçekte özellik mühendisliği gerçekleştirmek. Bu yazıda bu çözümün nasıl uygulanacağını gösteriyoruz.

Amazon Adaçayı Yapıcı geniş bir kullanım senaryosu yelpazesi için uygun ölçekte modeller oluşturmanıza, eğitmenize ve dağıtmanıza olanak tanıyan, tam olarak yönetilen bir makine öğrenimi hizmetidir. Model eğitimi için aşağıdaki yöntemlerden herhangi birini kullanabilirsiniz: yerleşik algoritmalar ML modellerini hızlı bir şekilde eğitmeye ve dağıtmaya başlamak için SageMaker'da.

Model oluşturma ve geliştirme sürecinin önemli bir bileşeni özellik mühendisliğidir. AWS Tutkal geniş ölçekte özellik mühendisliği elde etmek için önerilen seçeneklerden biridir. AWS Glue, sunucusuz bir Apache Spark altyapısı üzerinde veri entegrasyonunu ve dönüşümünü dağıtılmış bir şekilde çalıştırmanıza olanak tanır ve popüler Spark ML kitaplığının özellik mühendisliği ve model geliştirme için kullanılmasını kolaylaştırır. Ayrıca, artımlı veri işleme için AWS Glue'yu kullanabilirsiniz. iş imlerikullanarak 100'den fazla kaynaktan veri alın konnektörlerikullanarak ani veya öngörülemeyen iş yüklerini çalıştırın. otomatik ölçeklendirme.

ML tabanlı uygulamalar için bir diğer önemli gereksinim ise veri güvenliği ve erişim kontrolüdür. En az ayrıcalıklı erişim ilkesini takip ederek özellik mühendisliği ve model oluşturma sürecinin bir parçası olarak en hassas verilere kimin erişebileceği konusunda daha sıkı kontrole sahip olmak yaygın bir taleptir. Bunu başarmak için AWS Glue entegrasyonunu kullanabilirsiniz. AWS Göl Oluşumu veri gölü varlıklarının daha fazla yönetişimi ve yönetimi için. Lake Formation ile Amazon S3 data lake'inizin üzerinde ayrıntılı veri erişim denetimi ve güvenlik politikaları yapılandırabilirsiniz. Politikalar merkezi bir konumda tanımlanır ve AWS Glue gibi birden fazla analize ve makine öğrenimi hizmetine olanak tanır. Amazon Atinave SageMaker, Amazon S3'te depolanan verilerle etkileşime geçmek için.

AWS Glue şunları içerir: kişisel olarak tanımlanabilir bilgilerin (PII) tespiti Daha fazla uyumluluk ve yönetişim için varlıkları gerektiği gibi algılama, maskeleme veya kaldırma yeteneği sağlayan dönüşüm. PII dönüşümüyle, veri kümelerindeki PII verilerini tespit edebilir ve farklı kullanıcı grupları için hassas verileri kısıtlamak amacıyla Lake Formation'ı kullanarak otomatik olarak ayrıntılı erişim kontrolü uygulayabilirsiniz.

Kullanım örneği

Müşteri pazarlama veri kümesini içeren ve iki kullanıcı kişiliğini (bir veri mühendisi ve veri bilimcisi) içeren bir eğilim modeli kullanım senaryosuna odaklanıyoruz. Veri kümesi, müşteri adayı kaynağı, iletişim notları, iş rolü, bazı işaretler, ziyaret başına sayfa görüntülemeleri ve daha fazlasını içeren müşteri başına bilgileri içerir. Veri kümesi ayrıca kişisel telefon numaraları gibi hassas bilgileri de içerir.

Veri mühendisi, veri hazırlama, ön işleme ve erişim kontrolü de dahil olmak üzere uçtan uca veri işleme hattının oluşturulmasından sorumludur. Veri bilimci, özellik mühendisliğinden ve ML modelinin eğitimi ve dağıtımından sorumludur. Veri bilimcisinin, özellik mühendisliği veya ML modelini eğitme amacıyla PII açısından hassas verilere erişmesine izin verilmediğini unutmayın.

Bu kullanım senaryosunun bir parçası olarak veri mühendisi, veri kümesini önceden işlemek için bir veri hattı oluşturur, veri kümesini herhangi bir PII bilgisi için tarar ve PII sütununun erişimini veri bilimci kullanıcısı ile kısıtlar. Sonuç olarak, bir veri bilimcisi veri kümesini özellik mühendisliği gerçekleştirmek ve makine öğrenimi modelleri oluşturmak için kullandığında, PII hassas sütununa (bu durumda telefon numaraları) erişimleri olmaz. Özellik mühendisliği süreci, dize türündeki sütunların ML modelleri için en uygun biçime dönüştürülmesini içerir. Gelişmiş bir kullanım örneği olarak, Lake Formation'ı kullanarak bu erişim modelini satır düzeyinde ve hücre düzeyinde güvenlik uygulayacak şekilde genişletebilirsiniz.

Çözüme genel bakış

Çözüm aşağıdaki üst düzey adımları içerir:

  1. ile kaynakları kurun AWS CloudFormation.
  2. AWS Glue etkileşimli oturumunda PII tespiti ve ayrıntılı erişim kontrolü de dahil olmak üzere veri kümesini önceden işleyin.
  3. AWS Glue etkileşimli oturumunda özellik mühendisliği gerçekleştirin.
  4. SageMaker'ın yerleşik XGBoost algoritmasını kullanarak bir ML modelini eğitin ve dağıtın.
  5. ML modelini değerlendirin.

Aşağıdaki şemada çözüm mimarisi gösterilmektedir.

Önkoşullar

Bu öğreticiyi tamamlamak için aşağıdaki önkoşullara sahip olmanız gerekir:

AWS CloudFormation ile kaynakları ayarlayın

Bu gönderi, hızlı kurulum için bir CloudFormation şablonu içerir. İhtiyaçlarınıza göre inceleyebilir ve özelleştirebilirsiniz. Kaynakları ayarlamayı tercih ediyorsanız AWS Yönetim Konsolu ve AWS CloudFormation yerine AWS CLI için bu yazının sonundaki ekte yer alan talimatlara bakın.

CloudFormation şablonu aşağıdaki kaynakları oluşturur:

  • Örnek veri kümesi içeren S3 paketleri
  • An AWS Lambda veri kümesini yükleme işlevi
  • AWS Kimlik ve Erişim Yönetimi (IAM) grubu, kullanıcılar, roller ve politikalar
  • Lake Formation veri gölü ayarları ve izinleri
  • SageMaker kullanıcı profilleri

Kaynaklarınızı oluşturmak için aşağıdaki adımları tamamlayın:

  1. Konsolda oturum açın.
  2. Klinik Yığını Başlat:
    Başlat düğmesi
  3. Klinik Sonraki.
  4. İçin Veri MühendisiPwd ve Veri BilimcisiPwd, veri mühendisi ve veri bilimci kullanıcıları için kendi şifrenizi girin.
  5. İçin TutkalVeritabanıAdı, girmek demo.
  6. İçin TutkalTabloAdı, girmek web_marketing.
  7. İçin S3BucketNameForInput, girmek blog-studio-pii-dataset-.
  8. İçin S3BucketNameForOutput, girmek blog-studio-output-.
  9. İçin SageMakerDomainId, önkoşul adımlarında hazırladığınız SageMaker alan adı kimliğinizi girin.
  10. Klinik Sonraki.
  11. Bir sonraki sayfada, seçin Sonraki.
  12. Son sayfadaki ayrıntıları gözden geçirin ve AWS CloudFormation'ın IAM kaynakları oluşturabileceğini kabul ediyorum.
  13. Klinik oluşturmak.

Yığın oluşturma 10 dakika kadar sürebilir. Yığın, iki kişi için IAM rolleri ve SageMaker kullanıcı profilleri oluşturur: veri mühendisi ve veri bilimcisi. Ayrıca bir veritabanı demosu ve tablosu oluşturur web_marketing örnek bir veri kümesiyle.

Yığın oluşturma sırasında, veri mühendisi kişiliğinin tabloya tam erişimi vardır, ancak veri bilimci kişiliğinin henüz tabloya erişimi yoktur.

Veri kümesini önceden işleyin

AWS Glue etkileşimli oturumunda verileri ön işlemeye başlayalım. Veri mühendisi kişiliği, hassas veri olup olmadığını görmek için verileri doğrulamak ve veri bilimci kişiliğine minimum erişim izni vermek ister. Not defterini şuradan indirebilirsiniz: Bu konumda.

  1. Veri mühendisi kullanıcısını kullanarak konsolda oturum açın.
  2. SageMaker konsolunda, Kullanıcılar.
  3. Veri mühendisi kullanıcısını seçin ve Stüdyo Aç.
  4. Yeni bir not defteri oluşturun ve seçin SparkAnalytics 1.0 için Resim ve Tutkal PySpark için çekirdek.
  5. Boto3'ün daha yeni sürümünü yüklemek için aşağıdaki sihirle etkileşimli bir oturum başlatın (bu, BotoXNUMX'ü kullanmak için gereklidir). create_data_cells_filter yöntem):
    %additional_python_modules boto3==1.24.82

  6. Oturumu başlatın:
    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. Yeni oluşturulan tablodan bir AWS Glue DynamicFrame oluşturun ve seçim türlerini çöz katalog şemasına dayalıdır, çünkü verilere dayalı olarak otomatik olarak çıkarılan şema yerine katalogda tanımlanan şemayı kullanmak istiyoruz:
    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. AWS Glue PII algılamayı kullanarak herhangi bir PII verisi olup olmadığını tabloda doğrulayın:
    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. PII olarak sınıflandırılan sütunların hassas veri içerip içermediğini doğrulayın (eğer değilse, hassas olmayan sütunları kaldırmak için sınıflandırılmış_map'i güncelleyin):
    from pyspark.sql.functions import col
    dyf_marketing_resolved.toDF().select(*[col(c) for c in classified_map.keys()]).show()

  10. Otomatik olarak algılanan sütunlar için bir veri hücresi filtresi kullanarak Lake Formation izinlerini ayarlayın ve sütunları veri bilimci kişiliğiyle sınırlandırın:
    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. PII sütunlarının görünür olmadığını görmek için Studio'da veri bilimci olarak oturum açın. Not defterini şuradan indirebilirsiniz: Bu konumda.
  12. Yeni bir not defteri oluşturun ve seçin SparkAnalytics 1.0 için Resim ve Tutkal PySpark için çekirdek:
    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()

Özellik mühendisliği gerçekleştirin

Veri bilimci kullanıcısı olarak özellik mühendisliği gerçekleştirmek için Apache Spark ML kitaplığını kullanıyoruz ve ardından çıktıyı Amazon S3'e geri yazıyoruz.

  1. Aşağıdaki hücrede özellikleri uyguluyoruz. Apache Spark ML kitaplığı:
    • StringIndexer etiketlerden oluşan bir dize sütununu, etiket dizinlerinden oluşan bir sütunla eşler.
    • OneHotEncoder Etiket indeksi olarak temsil edilen kategorik bir özelliği, belirli bir kategorik özelliğin varlığını gösteren en fazla tek bir değere sahip bir ikili vektörle eşleştirir. Bu dönüşüm, sürekli özellikler bekleyen ML algoritmaları için kullanılır.
    • VectorAssembler belirli bir sütun listesini tek bir vektör sütununda birleştiren ve daha sonra lojistik regresyon ve karar ağaçları gibi algoritmalar için ML modellerinin eğitiminde kullanılan bir transformatördür.
    #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. Dönüştürülen son DataFrame, Pipeline kütüphanesi kullanılarak oluşturulabilir. Bir boru hattı, bir dizi aşama olarak belirtilir. Bu aşamalar sırayla çalıştırılır ve her aşamadan geçerken girdi DataFrame dönüştürülür.
    df_marketing = dyf_marketing.toDF()
    pipeline = Pipeline(stages=indexers + encoders + [assembler])
    df_tfm=pipeline.fit(df_marketing).transform(df_marketing)
    

  3. Daha sonra, veri kümesini DataFrame'i eğitme, doğrulama ve test etme olarak bölüyoruz ve ML modelini eğitmek için S3 klasörüne kaydediyoruz (AWS hesap kimliğinizi aşağıdaki kodda belirtin):
    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))

ML modelini eğitme ve dağıtma

Önceki bölümde, gibi dize sütunlarının dönüştürülmesini içeren özellik mühendisliğini tamamladık. region, jobrole, ve usedpromo ML modelleri için en uygun formata dönüştürün. gibi sütunları da ekledik. pageviewspervisit ve totalwebvisitsBu, müşterinin bir ürünü satın alma eğilimini tahmin etmemize yardımcı olacaktır.

Artık SageMaker'ın yerleşik XGBoost algoritmasını kullanarak eğitim ve doğrulama veri kümesini okuyarak bir ML modelini eğitiyoruz. Daha sonra modeli dağıtıyoruz ve doğruluk kontrolü yapıyoruz. Not defterini şuradan indirebilirsiniz: Bu konumda.

Aşağıdaki hücrede, özellik mühendisliği operasyonlarımızın çıktısını içeren ikinci S3 grubundaki verileri okuyoruz. Daha sonra modeli eğitmek için yerleşik XGBoost algoritmasını kullanırız.

  1. Yeni bir not defteri açın. Seçmek Veri Bilim için Resim ve Python 3 için çekirdek (AWS hesap kimliğinizi aşağıdaki kodla belirtin):
    #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. Eğitim tamamlandığında modeli SageMaker barındırma hizmetlerini kullanarak dağıtabiliriz:
    #deploy ml model
    xgb_predictor = xgb.deploy(initial_instance_count=1,
    instance_type='ml.m4.xlarge')

ML modelini değerlendirin

Modeli değerlendirmek ve işimiz bittiğinde devam eden herhangi bir ücretlendirmeden kaçınmak için çıkarım uç noktasını silmek için test veri kümesini kullanırız.

  1. Modeli aşağıdaki kodla değerlendirin:
    #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))

    Numune çalışmasının doğruluk sonucu %84.6 idi. Bu, veri kümesinin rastgele bölünmesi nedeniyle çalışmanız için biraz farklı olabilir.

  2. Çıkarım uç noktasını aşağıdaki kodla silebiliriz:
    xgb_predictor.delete_endpoint(delete_endpoint_config=True)

Temizlemek

Şimdi son adıma, kaynakları temizlemeye.

  1. CloudFormation yığını aracılığıyla oluşturulan iki kovayı boşaltın.
  2. Kullanıcıyla ilişkili uygulamaları silin profiles data-scientist ve data-engineer Studio içinde.
  3. CloudFormation yığınını silin.

Sonuç

Bu yazıda, veri mühendisleri ve veri bilimcileri gibi kişilerin geniş ölçekte özellik mühendisliği gerçekleştirmesine olanak tanıyan bir çözüm gösterdik. AWS Glue etkileşimli oturumlarıyla, herhangi bir temel altyapıyı yönetmeye gerek kalmadan, otomatik PII algılama ve ayrıntılı erişim kontrolü ile uygun ölçekte özellik mühendisliğine kolayca ulaşabilirsiniz. Studio'yu tek giriş noktası olarak kullanarak uçtan uca bir ML iş akışı oluşturmak için basitleştirilmiş ve entegre bir deneyim elde edebilirsiniz: verilerin hazırlanması ve güvenliğinin sağlanmasından ML modellerinin oluşturulmasına, eğitilmesine, ayarlanmasına ve dağıtılmasına kadar. Daha fazlasını öğrenmek için şu adresi ziyaret edin: AWS Glue etkileşimli oturumlarına başlarken ve Amazon SageMaker Stüdyosu.

Bu yeni yetenek konusunda çok heyecanlıyız ve onunla neler inşa edeceğinizi görmek için sabırsızlanıyoruz!


Ek: Kaynakları konsol ve AWS CLI aracılığıyla ayarlayın

Kaynakları CloudFormation şablonu yerine konsolu ve AWS CLI'yi kullanarak ayarlamak için bu bölümdeki talimatları tamamlayın.

Önkoşullar

Bu öğreticiyi tamamlamak için AWS CLI'ye erişiminizin olması gerekir (bkz. AWS CLI'yi kullanmaya başlama) veya komut satırı erişimini kullanın AWS BulutKabuğu.

IAM grubunu, kullanıcıları, rolleri ve politikaları yapılandırma

Bu bölümde IAM grubu veri-platform-grubuna ait iki IAM kullanıcısı oluşturuyoruz: veri mühendisi ve veri bilimci. Daha sonra IAM grubuna tek bir IAM politikası ekliyoruz.

  1. IAM konsolunda, JSON sekmesinde bir politika oluşturun adlı yeni bir IAM tarafından yönetilen politika oluşturmak için DataPlatformGroupPolicy. Politika, gruptaki kullanıcıların Studio'ya erişmesine izin verir, ancak bunu yalnızca IAM kullanıcı adlarıyla eşleşen bir etikete sahip bir SageMaker kullanıcı profili kullanarak yapar. İzinleri sağlamak için aşağıdaki JSON politikası belgesini kullanın:
    {
       "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. Bir IAM grubu oluşturun denilen data-platform-group.
  3. DataPlatformGroupPolicy adlı AWS tarafından yönetilen politikayı arayın ve gruba ekleyin.
  4. IAM kullanıcıları oluşturun IAM grubu veri platformu grubu altında veri mühendisi ve veri bilimci olarak anılır.
  5. Yeni bir yönetilen politika oluşturun SageMakerExecutionPolicy adlı (aşağıdaki kodda Bölgenizi ve hesap kimliğinizi belirtin):
    {
       "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. Yeni bir yönetilen politika oluşturun adlı 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. Bir IAM rolü oluşturma İlgili kullanıcı profilinin yürütme rolü olarak kullanılan veri mühendisi (veri mühendisi) için SageMaker için. Üzerinde İzin politikası ekle sayfasında AmazonSageMakerFullAccess (AWS tarafından yönetilen politika) varsayılan olarak eklenir. Minimum ayrıcalığı korumak için bu politikayı daha sonra kaldırırsınız.
    1. İçin Rol ismi, SageMakerStudioExecutionRole_data-engineer rolünü adlandırmak için bu bölümün başında tanıtılan adlandırma kuralını kullanın.
    2. İçin Etiketler, userprofilename anahtarını ve data-engineer değerini ekleyin.
    3. Klinik Rol oluştur.
    4. Kalan politikaları eklemek için Roller sayfasında oluşturduğunuz rol adını seçin.
    5. Altında İzinler, AmazonSageMakerFullAccess politikasını kaldırın.
    6. Üzerinde İzin politikası ekle sayfasında AWS tarafından yönetilen AwsGlueSessionUserRestrictedServiceRole politikasını ve oluşturduğunuz müşteri tarafından yönetilen SageMakerExecutionPolicy ve SageMakerAdminPolicy politikalarını seçin.
    7. Klinik Politikaları ekleyin.
    8. değiştirmek Rolünüzün güven ilişkisi:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Principal":{
                "Service":[
                   "glue.amazonaws.com",
                   "sagemaker.amazonaws.com"
                ]
             },
             "Action":"sts:AssumeRole"
          }
       ]
    }

  8. Bir IAM rolü oluşturma İlgili kullanıcı profilinin yürütme rolü olarak kullanılan, veri bilimcisi (veri bilimcisi) için SageMaker için.
    1. İçin Rol ismi, rolü SageMakerStudioExecutionRole_data-scientist olarak adlandırın.
    2. İçin Etiketler, userprofilename anahtarını ve data-scientist değerini ekleyin.
    3. Klinik Rol oluştur.
    4. Kalan politikaları eklemek için Roller sayfasında oluşturduğunuz rol adını seçin.
    5. Altında İzinler, AmazonSageMakerFullAccess politikasını kaldırın.
    6. Üzerinde İzin politikası ekle sayfasında AWS tarafından yönetilen AwsGlueSessionUserRestrictedServiceRole politikasını ve oluşturduğunuz müşteri tarafından yönetilen SageMakerExecutionPolicy politikasını seçin.
    7. Klinik Politikaları ekleyin.
    8. değiştirmek Rolünüzün güven ilişkisi:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Principal":{
                "Service":[
                   "glue.amazonaws.com",
                   "sagemaker.amazonaws.com"
                ]
             },
             "Action":"sts:AssumeRole"
          }
       ]
    }

SageMaker kullanıcı profillerini yapılandırma

SageMaker kullanıcı profillerinizi oluşturmak için studiouserid etiketini kullanmak için aşağıdaki adımları tamamlayın:

  1. Veri mühendisi için Studio kullanıcı profilini oluşturmak amacıyla AWS CLI veya CloudShell'i kullanın (aşağıdaki kodda hesap kimliğinizi ve Studio etki alanı kimliğinizi belirtin):
    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. Hesap kimliğini ve Studio etki alanı kimliğini değiştirerek veri bilimci için bir kullanıcı profili oluşturmak üzere adımı tekrarlayın:
    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

S3 paketleri oluşturun ve örnek veri kümesini yükleyin

Bu bölümde iki S3 klasörü oluşturacaksınız. İlk grupta web pazarlamayla ilgili örnek bir veri kümesi bulunur. İkinci paket, veri bilimcisi tarafından özellik mühendisliği görevlerinden elde edilen çıktıları depolamak için kullanılır ve bu çıktı veri kümesi, ML modelini eğitmek için kullanılır.

Öncelikle giriş verileri için S3 paketini oluşturun:

  1. İndir veri kümesi.
  2. Amazon S3 konsolunda şunu seçin: Kepçeler Gezinti bölmesinde.
  3. Klinik Grup oluştur.
  4. İçin Bölge, oluşturduğunuz kullanıcı profillerini içeren SageMaker etki alanının bulunduğu Bölgeyi seçin.
  5. İçin Bölüm adı, girmek blog-studio-pii-dataset-.
  6. Klinik Grup oluştur.
  7. Oluşturduğunuz kovayı seçin ve Foto Yükle.
  8. içinde DOSYA SEÇİN bölümü, seçim Dosyaları ekleyin ve indirdiğiniz veri kümesini yükleyin.
    Artık çıktı verileri için paketi oluşturuyorsunuz:
  9. Üzerinde Kepçeler sayfasını seçin Grup oluştur.
  10. İçin Bölge, oluşturduğunuz kullanıcı profillerini içeren SageMaker etki alanının bulunduğu Bölgeyi seçin.
  11. İçin Bölüm adı, girmek blog-studio-output-.
  12. Klinik Grup oluştur.

AWS Glue veritabanı ve tablosu oluşturun

Bu bölümde veri kümesi için bir AWS Glue veritabanı ve tablosu oluşturacaksınız.

  1. Göl Oluşumu konsolunda, altında Veri kataloğu gezinme bölmesinde öğesini seçin. veritabanları.
  2. Klinik Veritabanı ekle.
  3. İçin Name, demoya girin.
  4. Klinik Veritabanı oluştur.
  5. Altında Veri kataloğu, seçmek tablolar.
  6. İçin Name, girmek web_marketing.
  7. İçin veritabanıseçin demo.
  8. İçin Yolu dahil et, giriş verileri için S3 klasörünüzün yolunu girin.
  9. İçin Sınıflandırma, seçmek CSV.
  10. Altında Şema, seçmek Şemayı Yükle.
  11. Metin kutusuna aşağıdaki JSON dizisini girin:
    [
       {
          "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. Klinik Foto Yükle.
  13. Klinik Gönder.
  14. Altında Tablo ayrıntıları, seçmek Tabloyu düzenle.
  15. Altında Tablo özellikleri, seçmek Ekle.
  16. İçin anahtar, girmek skip.header.line.count, Ve için Özellik, 1 girin.
  17. Klinik İndirim.

Göl Oluşumu izinlerini yapılandırma

Bu bölümde, IAM rolüne izin vermek için Göl Oluşumu izinlerini ayarlarsınız SageMakerStudioExecutionRole_data-engineer bir veritabanı oluşturmak ve Lake Formation içindeki S3 konumunu kaydetmek için.

İlk olarak, Göl Oluşumu izinlerinde konum altındaki tabloları yönetmek için veri gölü konumunu kaydedin:

  1. Klinik Veri gölü konumları.
  2. Klinik Konumu kaydet.
  3. İçin Amazon S3 yolu, girmek s3://blog-studio-pii-dataset-/ (veri kümesini içeren paket).
  4. Klinik Konumu kaydet.
    Artık Lake Formation veritabanı ve tablo izinlerini IAM rollerine veriyorsunuz SageMakerStudioExecutionRole_data-engineer ve SageMakerStudioExecutionRole_data-scientist.Öncelikle veritabanı iznini verin SageMakerStudioExecutionRole_data-engineer:
  5. Altında İzinler, seçmek Veri gölü izinleri.
  6. Altında Veri izni, seçmek Hibe.
  7. İçin müdürler, seçmek IAM kullanıcıları ve rollerive rolü seçin SageMakerStudioExecutionRole_data-engineer.
  8. İçin İlke etiketleri veya katalog kaynakları, seçmek Adlandırılmış veri kataloğu kaynakları.
  9. İçin veritabanları, demoyu seçin.
  10. İçin Veritabanı izinleri, seçmek harika.
  11. Klinik Hibe.
    Daha sonra, tabloya izin verin SageMakerStudioExecutionRole_data-engineer:
  12. Altında Veri izni, seçmek Hibe.
  13. İçin müdürler, seçmek IAM kullanıcıları ve rollerive rolü seçin SageMakerStudioExecutionRole_data-engineer.
  14. İçin İlke etiketleri veya katalog kaynakları, seçmek Adlandırılmış veri kataloğu kaynakları.
  15. İçin veritabanları, seçmek demo.
  16. İçin tablolar, seçmek web_marketing.
  17. İçin tablo izinler, seçmek harika.
  18. İçin kabul edilebilir izinler, seçmek harika.
  19. Klinik Hibe.
    Son olarak veritabanı iznini verin SageMakerStudioExecutionRole_data-scientist:
  20. Altında Veri izni, seçmek Hibe.
  21. İçin müdürler, seçmek IAM kullanıcıları ve rollerive rolü seçin SageMakerStudioExecutionRole_data-scientist.
  22. İçin İlke etiketleri veya katalog kaynakları, seçmek Adlandırılmış veri kataloğu kaynakları.
  23. İçin veritabanları, seçmek demo.
  24. İçin Veritabanı izinleri, seçmek Tanımlamak.
  25. Klinik Hibe.

Yazarlar Hakkında

AWS Glue etkileşimli oturumları ve Amazon SageMaker Studio PlatoBlockchain Veri Zekası kullanılarak hassas veri korumasına sahip büyük ölçekli özellik mühendisliği. Dikey Arama. Ai.

Praveen Kumar AWS'de bulutta yerel hizmetleri kullanarak modern veri ve analiz platformlarını tasarlama, oluşturma ve uygulama konusunda uzmanlığa sahip bir Analitik Çözüm Mimarıdır. İlgi alanları sunucusuz teknoloji, modern bulut veri ambarları, akış ve makine öğrenimi uygulamalarıdır.

AWS Glue etkileşimli oturumları ve Amazon SageMaker Studio PlatoBlockchain Veri Zekası kullanılarak hassas veri korumasına sahip büyük ölçekli özellik mühendisliği. Dikey Arama. Ai.

Noritaka Sekiyama AWS Glue ekibinde Baş Büyük Veri Mimarıdır. Bu gönderi gibi sonuçlar elde etmek için farklı ekiplerle işbirliği yapmaktan keyif alıyor. Boş zamanlarında ailesiyle video oyunları oynamaktan keyif alıyor.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi