Масштабна розробка функцій із захистом конфіденційних даних за допомогою інтерактивних сеансів AWS Glue і Amazon SageMaker Studio PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Масштабна розробка функцій із захистом конфіденційних даних за допомогою інтерактивних сеансів AWS Glue і Amazon SageMaker Studio

Організації використовують послуги машинного навчання (ML) і штучного інтелекту, щоб покращити взаємодію з клієнтами, зменшити операційні витрати та відкрити нові можливості для покращення бізнес-результатів. Дані лежать в основі сценаріїв використання ML і AI і є стратегічним активом для організації. Оскільки обсяг даних зростає в геометричній прогресії, організації прагнуть створити інтегровану, економічно ефективну та продуктивну платформу даних для попередньої обробки даних, розробки функцій, створення, навчання та введення в дію моделей ML у масштабі. Щоб досягти цього, AWS пропонує уніфіковану сучасну платформу даних, яка базується на Служба простого зберігання Amazon (Amazon S3) як озеро даних із спеціально розробленими інструментами та механізмами обробки для підтримки аналітики та робочих навантажень ML. Для єдиного досвіду ML ви можете використовувати Студія Amazon SageMaker, Який пропонує рідна інтеграція з інтерактивними сеансами AWS Glue для масштабного проектування функцій із захистом конфіденційних даних. У цій публікації ми демонструємо, як реалізувати це рішення.

Amazon SageMaker – це повністю керована служба ML, яка дає змогу створювати, навчати та розгортати моделі в широкому діапазоні випадків використання. Для навчання моделі можна використовувати будь-який із вбудовані алгоритми у SageMaker, щоб швидко розпочати навчання та розгортати моделі ML.

Ключовим компонентом процесу побудови та розробки моделі є розробка функцій. Клей AWS є одним із рекомендованих варіантів для досягнення інженерних функцій у масштабі. AWS Glue дозволяє запускати інтеграцію та трансформацію даних розподіленим способом на безсерверній інфраструктурі Apache Spark і полегшує використання популярної бібліотеки Spark ML для проектування функцій і розробки моделей. Крім того, ви можете використовувати AWS Glue для додаткової обробки даних закладки для роботи, отримувати дані з понад 100 джерел за допомогою Роз'єми, а також запускати різкі або непередбачувані навантаження за допомогою автоматичне масштабування.

Ще одна важлива вимога до додатків на основі ML – безпека даних і контроль доступу. Загальноприйнятою вимогою є жорсткіший контроль над тим, хто може отримати доступ до найбільш конфіденційних даних у рамках процесу розробки функцій і створення моделі, дотримуючись принципу доступу з найменшими привілеями. Щоб досягти цього, ви можете використовувати інтеграцію з AWS Glue Формування озера AWS для посиленого управління та управління активами озера даних. За допомогою Lake Formation ви можете налаштувати детальний контроль доступу до даних і політику безпеки поверх вашого озера даних Amazon S3. Політики визначаються в централізованому місці, що дозволяє використовувати кілька аналітичних і ML-служб, таких як AWS Glue, Амазонка Афінаі SageMaker для взаємодії з даними, що зберігаються в Amazon S3.

Клей AWS містить a виявлення персональної інформації (PII). перетворення, яке надає можливість виявляти, маскувати або видаляти сутності за потреби для підвищення відповідності та управління. За допомогою перетворення ідентифікаційної інформації ви можете виявляти дані ідентифікаційної інформації в наборах даних і автоматично застосовувати точне керування доступом за допомогою Lake Formation для обмеження конфіденційних даних для різних груп користувачів.

Використовуйте футляр

Ми зосереджуємося на випадку використання моделі схильності, яка включає набір маркетингових даних клієнта та залучає двох персонажів користувача: інженера даних і спеціаліста з обробки даних. Набір даних містить інформацію про кожного клієнта, включаючи джерело потенційних клієнтів, контактні примітки, посаду, деякі позначки, перегляди сторінок за відвідування тощо. Набір даних також містить конфіденційну інформацію, наприклад особисті номери телефонів.

Інженер даних відповідає за побудову наскрізного конвеєра обробки даних, включаючи підготовку даних, попередню обробку та контроль доступу. Спеціаліст з обробки даних відповідає за розробку функцій, а також навчання та розгортання моделі ML. Зауважте, що фахівець із обробки даних не має доступу до будь-яких конфіденційних даних ідентифікаційної інформації для розробки функцій або навчання моделі ML.

У рамках цього сценарію використання розробник даних створює конвеєр даних для попередньої обробки набору даних, сканує набір даних на наявність будь-якої ідентифікаційної інформації та обмежує доступ до стовпця ідентифікаційної інформації для користувача даних. У результаті, коли фахівець із обробки даних використовує набір даних для розробки функцій і створення моделей ML, він не має доступу до конфіденційного стовпця ідентифікаційної інформації (у цьому випадку номери телефонів). Процес розробки функцій передбачає перетворення стовпців типу string у формат, оптимальний для моделей ML. Як розширений варіант використання, ви можете розширити цей шаблон доступу, щоб реалізувати безпеку на рівні рядків і клітинок за допомогою Lake Formation.

Огляд рішення

Рішення містить наступні кроки високого рівня:

  1. Налаштуйте ресурси за допомогою AWS CloudFormation.
  2. Попередньо обробіть набір даних, включаючи виявлення ідентифікаційної інформації та детальний контроль доступу, в інтерактивному сеансі AWS Glue.
  3. Виконайте розробку функцій на інтерактивному сеансі AWS Glue.
  4. Навчіть і розгорніть модель ML за допомогою вбудованого в SageMaker алгоритму XGBoost.
  5. Оцініть модель ML.

Наступна діаграма ілюструє архітектуру рішення.

Передумови

Щоб пройти цей підручник, ви повинні мати такі передумови:

Налаштуйте ресурси за допомогою AWS CloudFormation

Ця публікація містить шаблон CloudFormation для швидкого налаштування. Ви можете переглянути та налаштувати його відповідно до своїх потреб. Якщо ви віддаєте перевагу налаштуванню ресурсів на Консоль управління AWS і AWS CLI, а не AWS CloudFormation, перегляньте інструкції в додатку в кінці цієї публікації.

Шаблон CloudFormation створює такі ресурси:

Щоб створити ресурси, виконайте такі дії:

  1. Увійдіть у консоль.
  2. Вибирати Запустити стек:
    Кнопка запуску
  3. Вибирати МАЙБУТНІ.
  4. для DataEngineerPwd та DataScientistPwd, введіть власний пароль для користувачів інженерів даних і спеціалістів з обробки даних.
  5. для GlueDatabaseName, введіть demo.
  6. для GlueTableName, введіть web_marketing.
  7. для S3BucketNameForInput, введіть blog-studio-pii-dataset-.
  8. для S3BucketNameForOutput, введіть blog-studio-output-.
  9. для SageMakerDomainId, введіть свій ідентифікатор домену SageMaker, який ви підготували під час попередніх кроків.
  10. Вибирати МАЙБУТНІ.
  11. На наступній сторінці виберіть МАЙБУТНІ.
  12. Перегляньте деталі на останній сторінці та виберіть Я визнаю, що AWS CloudFormation може створювати ресурси IAM.
  13. Вибирати Створювати.

Створення стека може тривати до 10 хвилин. Стек створює ролі IAM і профілі користувачів SageMaker для двох осіб: інженера даних і спеціаліста з обробки даних. Він також створює демонстраційну базу даних і таблицю web_marketing із зразком набору даних.

Під час створення стека інженер даних має повний доступ до таблиці, але спеціаліст із даних ще не має доступу до таблиці.

Попередньо обробіть набір даних

Давайте почнемо попередню обробку даних в інтерактивному сеансі AWS Glue. Особа інженера з обробки даних хоче перевірити дані, щоб побачити, чи є конфіденційні дані чи ні, і надати мінімальний дозвіл на доступ для особи, яка займається даними. Ви можете завантажити зошит з це місце.

  1. Увійдіть у консоль за допомогою користувача data-engineer.
  2. На консолі SageMaker виберіть користувачів.
  3. Виберіть користувача інженера даних і виберіть Відкрийте Studio.
  4. Створіть новий блокнот і виберіть SparkAnalytics 1.0 та цінності зображення та Клей PySpark та цінності Ядро.
  5. Розпочніть інтерактивний сеанс за допомогою наступної магії, щоб установити новішу версію Boto3 (це потрібно для використання create_data_cells_filter метод):
    %additional_python_modules boto3==1.24.82

  6. Ініціалізація сесії:
    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. Створіть AWS Glue DynamicFrame із новоствореної таблиці та вирішити типи вибору на основі схеми каталогу, оскільки ми хочемо використовувати схему, визначену в каталозі, замість автоматично виведеної схеми на основі даних:
    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:
    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. Перевірте, чи містять стовпці, класифіковані як ідентифікаційна інформація, конфіденційні дані чи ні (якщо ні, оновіть classified_map, щоб видалити неконфіденційні стовпці):
    from pyspark.sql.functions import col
    dyf_marketing_resolved.toDF().select(*[col(c) for c in classified_map.keys()]).show()

  10. Налаштуйте дозволи Lake Formation за допомогою фільтра клітинок даних для автоматично виявлених стовпців і обмежте стовпці особою спеціаліста з даних:
    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. Увійдіть у Studio як спеціаліст із обробки даних, щоб побачити, що стовпці ідентифікаційної інформації не відображаються. Ви можете завантажити зошит з це місце.
  12. Створіть новий блокнот і виберіть SparkAnalytics 1.0 та цінності зображення та Клей PySpark та цінності Ядро:
    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()

Виконайте розробку функцій

Ми використовуємо бібліотеку Apache Spark ML, щоб виконувати розробку функцій як користувач-фахівець з обробки даних, а потім записувати вихідні дані в Amazon S3.

  1. У наступній клітинці ми застосовуємо функції з Бібліотека Apache Spark ML:
    • StringIndexer зіставляє рядковий стовпець міток зі стовпцем індексів міток.
    • OneHotEncoder відображає категоріальну ознаку, представлену як індекс мітки, у двійковий вектор із щонайбільше одним значенням, яке вказує на наявність певної категоріальної ознаки. Це перетворення використовується для алгоритмів ML, які очікують безперервних функцій.
    • VectorAssembler це трансформатор, який об’єднує заданий список стовпців в один векторний стовпець, який потім використовується для навчання моделей ML для таких алгоритмів, як логістична регресія та дерева рішень.
    #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. Остаточний трансформований DataFrame можна створити за допомогою бібліотеки Pipeline. Конвеєр визначається як послідовність етапів. Ці етапи виконуються по порядку, і вхідний DataFrame перетворюється під час проходження кожного етапу.
    df_marketing = dyf_marketing.toDF()
    pipeline = Pipeline(stages=indexers + encoders + [assembler])
    df_tfm=pipeline.fit(df_marketing).transform(df_marketing)
    

  3. Далі ми розділяємо набір даних на навчання, перевірку та тестування DataFrame і зберігаємо його у сегменті S3 для навчання моделі ML (введіть ідентифікатор свого облікового запису 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))

Навчіть і розгорніть модель ML

У попередньому розділі ми завершили розробку функцій, яка включала перетворення рядкових стовпців, таких як region, jobrole та usedpromo у формат, оптимальний для моделей ML. Ми також включили стовпці, такі як pageviewspervisit та totalwebvisits, що допоможе нам передбачити схильність клієнта купити продукт.

Тепер ми навчаємо модель ML шляхом зчитування набору даних навчання та перевірки за допомогою вбудованого в SageMaker алгоритму XGBoost. Потім ми розгортаємо модель і запускаємо перевірку точності. Ви можете завантажити зошит з це місце.

У наступній комірці ми зчитуємо дані з другого сегмента S3, який містить результати наших операцій розробки функцій. Потім ми використовуємо вбудований алгоритм XGBoost для навчання моделі.

  1. Відкрийте новий блокнот. Виберіть наука даних та цінності зображення та Python 3 та цінності Ядро (введіть ідентифікатор свого облікового запису AWS у наступному коді):
    #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. Після завершення навчання ми зможемо розгорнути модель за допомогою послуг хостингу SageMaker:
    #deploy ml model
    xgb_predictor = xgb.deploy(initial_instance_count=1,
    instance_type='ml.m4.xlarge')

Оцініть модель ML

Ми використовуємо тестовий набір даних для оцінки моделі та видаляємо кінцеву точку висновку, коли закінчимо, щоб уникнути будь-яких поточних платежів.

  1. Оцініть модель за таким кодом:
    #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))

    Точність результату вибірки становила 84.6 %. Це може дещо відрізнятися для вашого циклу через випадковий розподіл набору даних.

  2. Ми можемо видалити кінцеву точку висновку за допомогою такого коду:
    xgb_predictor.delete_endpoint(delete_endpoint_config=True)

Прибирати

Тепер до останнього кроку, очищення ресурсів.

  1. Очистіть два відра, створені за допомогою стека CloudFormation.
  2. Видаліть програми, пов’язані з користувачем profiles data-scientist та data-engineer в межах Студії.
  3. Видаліть стек CloudFormation.

Висновок

У цій публікації ми продемонстрували рішення, яке дає змогу таким особам, як інженери з обробки даних і спеціалісти з обробки даних, виконувати розробку функцій у масштабі. За допомогою інтерактивних сеансів AWS Glue ви можете легко розробляти функції в масштабі за допомогою автоматичного виявлення ідентифікаційної інформації та детального контролю доступу без необхідності керувати базовою інфраструктурою. Використовуючи Studio як єдину точку входу, ви можете отримати спрощений та інтегрований досвід для створення наскрізного робочого процесу ML: від підготовки та захисту даних до створення, навчання, налаштування та розгортання моделей ML. Щоб дізнатися більше, відвідайте Початок роботи з інтерактивними сеансами AWS Glue та Студія Amazon SageMaker.

Ми дуже раді цій новій можливості та хочемо побачити, що ви збираєтеся створити з нею!


Додаток: Налаштуйте ресурси за допомогою консолі та AWS CLI

Виконайте інструкції в цьому розділі, щоб налаштувати ресурси за допомогою консолі та AWS CLI замість шаблону CloudFormation.

Передумови

Щоб виконати цей підручник, ви повинні мати доступ до AWS CLI (див Початок роботи з AWS CLI) або скористайтеся доступом до командного рядка з AWS CloudShell.

Налаштуйте групу IAM, користувачів, ролі та політики

У цьому розділі ми створюємо двох користувачів IAM: data-engineer і data-scientist, які належать до групи IAM data-platform-group. Потім ми додаємо одну політику IAM до групи IAM.

  1. На консолі IAM, створити політику на вкладці JSON щоб створити нову керовану політику IAM з ім DataPlatformGroupPolicy. Політика дозволяє користувачам у групі отримувати доступ до Studio, але лише за допомогою профілю користувача SageMaker із тегом, який відповідає їхньому імені користувача IAM. Щоб надати дозволи, використовуйте наведений нижче документ про політику 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. Створіть групу IAM званий data-platform-group.
  3. Знайдіть і приєднайте керовану політику AWS під назвою DataPlatformGroupPolicy до групи.
  4. Створення користувачів IAM називається data-engineer і data-scientist у групі IAM data-platform-group.
  5. Створіть нову керовану політику під назвою SageMakerExecutionPolicy (введіть свій регіон та ідентифікатор облікового запису в наступному коді):
    {
       "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. Створіть нову керовану політику названий 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. Створіть роль IAM для SageMaker для інженера даних (data-engineer), який використовується як відповідна роль виконання профілю користувача. На Додати політику дозволів AmazonSageMakerFullAccess (керована політика AWS) додається за умовчанням. Пізніше ви видаляєте цю політику, щоб зберегти мінімальні привілеї.
    1. для Назва ролі, використовуйте угоду про найменування, представлену на початку цього розділу, щоб назвати роль SageMakerStudioExecutionRole_data-engineer.
    2. для Теги, додайте ключ userprofilename і значення data-engineer.
    3. Вибирати Створіть роль.
    4. Щоб додати решту політик, на Ролі на сторінці виберіть назву ролі, яку ви щойно створили.
    5. під Дозволи, видаліть політику AmazonSageMakerFullAccess.
    6. на Додати політику дозволів виберіть керовану політику AWS AwsGlueSessionUserRestrictedServiceRole та створені вами керовані клієнтом політики SageMakerExecutionPolicy та SageMakerAdminPolicy.
    7. Вибирати Додайте політику.
    8. Змінювати довірчі відносини вашої ролі:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Principal":{
                "Service":[
                   "glue.amazonaws.com",
                   "sagemaker.amazonaws.com"
                ]
             },
             "Action":"sts:AssumeRole"
          }
       ]
    }

  8. Створіть роль IAM для SageMaker для дослідника даних (data-scientist), який використовується як роль виконання відповідного профілю користувача.
    1. для Назва роліназвіть роль SageMakerStudioExecutionRole_data-scientist.
    2. для Теги, додайте ключ userprofilename і значення data-scientist.
    3. Вибирати Створіть роль.
    4. Щоб додати решту політик, на Ролі на сторінці виберіть назву ролі, яку ви щойно створили.
    5. під Дозволи, видаліть політику AmazonSageMakerFullAccess.
    6. на Додати політику дозволів виберіть керовану політику AWS AwsGlueSessionUserRestrictedServiceRole та керовану клієнтом політику SageMakerExecutionPolicy, які ви створили.
    7. Вибирати Додайте політику.
    8. Змінювати довірчі відносини вашої ролі:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Principal":{
                "Service":[
                   "glue.amazonaws.com",
                   "sagemaker.amazonaws.com"
                ]
             },
             "Action":"sts:AssumeRole"
          }
       ]
    }

Налаштувати профілі користувачів SageMaker

Щоб створити свої профілі користувачів SageMaker за допомогою studiouserid тег, виконайте наступні кроки:

  1. Використовуйте AWS CLI або CloudShell, щоб створити профіль користувача Studio для інженера даних (введіть ідентифікатор свого облікового запису та ідентифікатор домену Studio в наступному коді):
    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. Повторіть крок, щоб створити профіль користувача для спеціаліста з даних, замінивши ідентифікатор облікового запису та ідентифікатор домену 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

Створіть сегменти S3 і завантажте зразок набору даних

У цьому розділі ви створюєте два сегменти S3. Перше відро містить зразок набору даних, пов’язаних із веб-маркетингом. Друге відро використовується фахівцем з даних для зберігання результатів інженерних завдань, і цей вихідний набір даних використовується для навчання моделі ML.

Спочатку створіть сегмент S3 для вхідних даних:

  1. Завантажити набір даних.
  2. На консолі Amazon S3 виберіть Відра у навігаційній панелі.
  3. Вибирати Створити відро.
  4. для область, виберіть Регіон із доменом SageMaker, який включає створені вами профілі користувачів.
  5. для Назва відра, введіть blog-studio-pii-dataset-.
  6. Вибирати Створити відро.
  7. Виберіть створене вами відро та виберіть Завантажувати.
  8. У вибрати файли розділ, вибрати Додати файли і завантажте набір даних, який ви завантажили.
    Тепер ви створюєте відро для вихідних даних:
  9. на Відра сторінку, виберіть Створити відро.
  10. для область, виберіть Регіон із доменом SageMaker, який включає створені вами профілі користувачів.
  11. для Назва відра, введіть blog-studio-output-.
  12. Вибирати Створити відро.

Створіть базу даних і таблицю AWS Glue

У цьому розділі ви створюєте базу даних AWS Glue і таблицю для набору даних.

  1. На консолі Lake Formation, під Каталог даних на панелі навігації виберіть Бази даних.
  2. Вибирати Додати базу даних.
  3. для ІМ'Я, введіть демо.
  4. Вибирати Create database.
  5. під Каталог данихвиберіть таблиці.
  6. для ІМ'Я, введіть web_marketing.
  7. для Databaseвиберіть demo.
  8. для Включити шлях, введіть шлях вашого відра S3 для вхідних даних.
  9. для Класифікаціявиберіть CSV.
  10. під схемавиберіть Завантажити схему.
  11. Введіть наступний масив 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. Вибирати Завантажувати.
  13. Вибирати Надіслати.
  14. під Деталі таблицівиберіть Редагувати таблицю.
  15. під Властивості таблицівиберіть додавати.
  16. для ключ, введіть skip.header.line.count, А для значення, введіть 1.
  17. Вибирати зберегти.

Налаштування дозволів Lake Formation

У цьому розділі ви налаштовуєте дозволи Lake Formation, щоб дозволити роль IAM SageMakerStudioExecutionRole_data-engineer створити базу даних і зареєструвати місцезнаходження S3 в озерній формації.

Спочатку зареєструйте розташування озера даних, щоб керувати таблицями під розташуванням у дозволах Lake Formation:

  1. Вибирати Розташування озера даних.
  2. Вибирати Зареєструвати місцезнаходження.
  3. для Шлях Amazon S3, введіть s3://blog-studio-pii-dataset-/ (відро, що містить набір даних).
  4. Вибирати Зареєструвати місцезнаходження.
    Тепер ви надаєте права бази даних Lake Formation і таблиць ролям IAM SageMakerStudioExecutionRole_data-engineer та SageMakerStudioExecutionRole_data-scientist.По-перше, надайте доступ до бази даних для SageMakerStudioExecutionRole_data-engineer:
  5. під Дозволивиберіть Дозволи озера даних.
  6. під Дозвіл на данівиберіть Грант.
  7. для Директоривиберіть Користувачі та ролі IAMі виберіть роль SageMakerStudioExecutionRole_data-engineer.
  8. для Теги політики або ресурси каталогувиберіть Іменовані ресурси каталогу даних.
  9. для Бази даних, виберіть демо.
  10. для Дозволи бази даних, вибрати Super.
  11. Вибирати Грант.
    Далі надайте дозвіл для таблиці SageMakerStudioExecutionRole_data-engineer:
  12. під Дозвіл на данівиберіть Грант.
  13. для Директоривиберіть Користувачі та ролі IAMі виберіть роль SageMakerStudioExecutionRole_data-engineer.
  14. для Теги політики або ресурси каталогувиберіть Іменовані ресурси каталогу даних.
  15. для Бази данихвиберіть demo.
  16. для таблицівиберіть web_marketing.
  17. для таблиця дозволи, вибрати Super.
  18. для Доступний дозволи, вибрати Super.
  19. Вибирати Грант.
    Нарешті, надайте доступ до бази даних для SageMakerStudioExecutionRole_data-scientist:
  20. під Дозвіл на данівиберіть Грант.
  21. для Директоривиберіть Користувачі та ролі IAMі виберіть роль SageMakerStudioExecutionRole_data-scientist.
  22. для Теги політики або ресурси каталогувиберіть Іменовані ресурси каталогу даних.
  23. для Бази данихвиберіть demo.
  24. для Дозволи бази даних, вибрати Описувати.
  25. Вибирати Грант.

Про авторів

Масштабна розробка функцій із захистом конфіденційних даних за допомогою інтерактивних сеансів AWS Glue і Amazon SageMaker Studio PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Правен Кумар є архітектором аналітичних рішень в AWS, який має досвід у проектуванні, створенні та впровадженні сучасних платформ даних і аналітики з використанням хмарних сервісів. Сфера його інтересів – безсерверні технології, сучасні хмарні сховища даних, потокове передавання та програми ML.

Масштабна розробка функцій із захистом конфіденційних даних за допомогою інтерактивних сеансів AWS Glue і Amazon SageMaker Studio PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Норітака Секіяма є головним архітектором великих даних у команді AWS Glue. Йому подобається співпрацювати з різними командами, щоб досягти таких результатів, як ця публікація. У вільний час він із сім’єю любить грати у відеоігри.

Часова мітка:

Більше від AWS Машинне навчання