Kỹ thuật tính năng quy mô lớn với khả năng bảo vệ dữ liệu nhạy cảm bằng cách sử dụng các phiên tương tác AWS Glue và Amazon SageMaker Studio PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Kỹ thuật tính năng quy mô lớn với khả năng bảo vệ dữ liệu nhạy cảm bằng phiên tương tác AWS Glue và Amazon SageMaker Studio

Các tổ chức đang sử dụng dịch vụ máy học (ML) và AI để nâng cao trải nghiệm của khách hàng, giảm chi phí vận hành và mở ra những khả năng mới để cải thiện kết quả kinh doanh. Dữ liệu củng cố các trường hợp sử dụng ML và AI và là tài sản chiến lược đối với một tổ chức. Khi dữ liệu đang phát triển với tốc độ cấp số nhân, các tổ chức đang tìm cách thiết lập một nền tảng dữ liệu tích hợp, tiết kiệm chi phí và hiệu quả để xử lý trước dữ liệu, thực hiện kỹ thuật tính năng cũng như xây dựng, đào tạo và vận hành các mô hình ML trên quy mô lớn. Để đạt được điều đó, AWS cung cấp nền tảng dữ liệu hiện đại thống nhất được hỗ trợ bởi Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) là hồ dữ liệu với các công cụ và công cụ xử lý chuyên dụng để hỗ trợ khối lượng công việc phân tích và ML. Để có trải nghiệm ML thống nhất, bạn có thể sử dụng Xưởng sản xuất Amazon SageMaker, cung cấp tích hợp tự nhiên với các phiên tương tác AWS Glue để thực hiện kỹ thuật tính năng trên quy mô lớn với tính năng bảo vệ dữ liệu nhạy cảm. Trong bài đăng này, chúng tôi trình bày cách triển khai giải pháp này.

Amazon SageMaker là dịch vụ ML được quản lý hoàn toàn cho phép bạn xây dựng, đào tạo và triển khai các mô hình trên quy mô lớn cho nhiều trường hợp sử dụng. Để đào tạo mô hình, bạn có thể sử dụng bất kỳ thuật toán tích hợp trong SageMaker để bắt đầu đào tạo và triển khai các mô hình ML một cách nhanh chóng.

Một thành phần quan trọng của quá trình xây dựng và phát triển mô hình là kỹ thuật tính năng. Keo AWS là một trong những lựa chọn được đề xuất để đạt được kỹ thuật tính năng trên quy mô lớn. AWS Glue cho phép bạn chạy tích hợp và chuyển đổi dữ liệu theo kiểu phân tán trên cơ sở hạ tầng Apache Spark không máy chủ, đồng thời giúp bạn dễ dàng sử dụng thư viện Spark ML phổ biến để phát triển mô hình và kỹ thuật tính năng. Ngoài ra, bạn có thể sử dụng AWS Glue để xử lý dữ liệu gia tăng thông qua dấu trang công việc, nhập dữ liệu từ hơn 100 nguồn bằng cách sử dụng kết nốivà chạy khối lượng công việc tăng vọt hoặc không thể đoán trước bằng cách sử dụng tự động mở rộng.

Một yêu cầu quan trọng khác đối với các ứng dụng dựa trên ML là bảo mật dữ liệu và kiểm soát truy cập. Yêu cầu chung là phải kiểm soát chặt chẽ hơn ai có thể truy cập vào dữ liệu nhạy cảm nhất như một phần của quy trình xây dựng mô hình và kỹ thuật tính năng bằng cách tuân theo nguyên tắc truy cập đặc quyền tối thiểu. Để đạt được điều này, bạn có thể sử dụng tính năng tích hợp AWS Glue với Sự hình thành hồ AWS để tăng cường quản trị và quản lý tài sản hồ dữ liệu. Với Lake Formation, bạn có thể đặt cấu hình các chính sách bảo mật và kiểm soát truy cập dữ liệu chi tiết trên hồ dữ liệu Amazon S3 của mình. Các chính sách được xác định ở một vị trí trung tâm, cho phép nhiều dịch vụ phân tích và ML, chẳng hạn như AWS Glue, amazon Athenavà SageMaker để tương tác với dữ liệu được lưu trữ trong Amazon S3.

AWS Glue bao gồm một phát hiện thông tin nhận dạng cá nhân (PII) biến đổi cung cấp khả năng phát hiện, che dấu hoặc loại bỏ các thực thể theo yêu cầu nhằm tăng cường tính tuân thủ và quản trị. Với tính năng chuyển đổi PII, bạn có thể phát hiện dữ liệu PII trong tập dữ liệu và tự động áp dụng kiểm soát truy cập chi tiết bằng cách sử dụng Lake Formation để hạn chế dữ liệu nhạy cảm cho các nhóm người dùng khác nhau.

Trường hợp sử dụng

Chúng tôi tập trung vào trường hợp sử dụng mô hình xu hướng bao gồm tập dữ liệu tiếp thị khách hàng và liên quan đến hai tính cách người dùng: kỹ sư dữ liệu và nhà khoa học dữ liệu. Tập dữ liệu chứa thông tin của mỗi khách hàng, bao gồm nguồn khách hàng tiềm năng, ghi chú liên hệ, vai trò công việc, một số cờ, số lượt xem trang trên mỗi lượt truy cập, v.v. Tập dữ liệu cũng bao gồm thông tin nhạy cảm như số điện thoại cá nhân.

Kỹ sư dữ liệu chịu trách nhiệm xây dựng quy trình xử lý dữ liệu từ đầu đến cuối, bao gồm chuẩn bị dữ liệu, tiền xử lý và kiểm soát truy cập. Nhà khoa học dữ liệu chịu trách nhiệm về kỹ thuật tính năng, đồng thời đào tạo và triển khai mô hình ML. Lưu ý rằng nhà khoa học dữ liệu không được phép truy cập bất kỳ dữ liệu nhạy cảm PII nào để phục vụ kỹ thuật tính năng hoặc đào tạo mô hình ML.

Là một phần của trường hợp sử dụng này, kỹ sư dữ liệu xây dựng một đường dẫn dữ liệu để xử lý trước tập dữ liệu, quét tập dữ liệu để tìm bất kỳ thông tin PII nào và hạn chế quyền truy cập của cột PII đối với người dùng nhà khoa học dữ liệu. Do đó, khi một nhà khoa học dữ liệu sử dụng tập dữ liệu để thực hiện kỹ thuật tính năng và xây dựng mô hình ML, họ không có quyền truy cập vào cột nhạy cảm PII (trong trường hợp này là số điện thoại). Quy trình kỹ thuật tính năng bao gồm việc chuyển đổi các cột loại chuỗi sang định dạng tối ưu cho các mô hình ML. Là trường hợp sử dụng nâng cao, bạn có thể mở rộng mẫu truy cập này để triển khai bảo mật cấp hàng và cấp ô bằng cách sử dụng Lake Formation.

Tổng quan về giải pháp

Giải pháp bao gồm các bước cấp cao sau:

  1. Thiết lập tài nguyên với Hình thành đám mây AWS.
  2. Xử lý trước tập dữ liệu, bao gồm phát hiện PII và kiểm soát truy cập chi tiết, trên phiên tương tác AWS Glue.
  3. Thực hiện kỹ thuật tính năng trên phiên tương tác AWS Glue.
  4. Huấn luyện và triển khai mô hình ML bằng thuật toán XGBoost tích hợp sẵn của SageMaker.
  5. Đánh giá mô hình ML

Sơ đồ sau minh họa kiến ​​trúc giải pháp.

Điều kiện tiên quyết

Để hoàn thành hướng dẫn này, bạn phải có các điều kiện tiên quyết sau:

Thiết lập tài nguyên với AWS CloudFormation

Bài đăng này bao gồm mẫu CloudFormation để thiết lập nhanh. Bạn có thể xem xét và tùy chỉnh nó cho phù hợp với nhu cầu của bạn. Nếu bạn thích thiết lập tài nguyên trên Bảng điều khiển quản lý AWS và AWS CLI chứ không phải AWS CloudFormation, hãy xem hướng dẫn trong phụ lục ở cuối bài này.

Mẫu CloudFormation tạo các tài nguyên sau:

  • Nhóm S3 có tập dữ liệu mẫu
  • An AWS Lambda chức năng tải dữ liệu
  • Quản lý truy cập và nhận dạng AWS (IAM) nhóm, người dùng, vai trò và chính sách
  • Cài đặt và quyền của hồ dữ liệu Lake Formation
  • Hồ sơ người dùng SageMaker

Để tạo tài nguyên của bạn, hãy hoàn thành các bước sau:

  1. Đăng nhập vào bảng điều khiển.
  2. Chọn Khởi chạy Stack:
    Nút khởi chạy
  3. Chọn Sau.
  4. Trong Kỹ sư dữ liệuPwdDữ LiệuNhà Khoa HọcPwd, hãy nhập mật khẩu của riêng bạn cho người dùng kỹ sư dữ liệu và nhà khoa học dữ liệu.
  5. Trong KeoCơ sở dữ liệuTên, đi vào demo.
  6. Trong Tên bảng keo, đi vào web_marketing.
  7. Trong S3BucketNameForInput, đi vào blog-studio-pii-dataset-.
  8. Trong S3BucketNameForOutput, đi vào blog-studio-output-.
  9. Trong Id tên miền của SageMaker, hãy nhập ID miền SageMaker mà bạn đã chuẩn bị ở các bước tiên quyết.
  10. Chọn Sau.
  11. Trên trang tiếp theo, hãy chọn Sau.
  12. Xem lại chi tiết trên trang cuối cùng và chọn Tôi xác nhận rằng AWS CloudFormation có thể tạo tài nguyên IAM.
  13. Chọn Tạo.

Việc tạo ngăn xếp có thể mất tới 10 phút. Ngăn xếp tạo các vai trò IAM và hồ sơ người dùng SageMaker cho hai nhân vật: kỹ sư dữ liệu và nhà khoa học dữ liệu. Nó cũng tạo ra một bản demo và bảng cơ sở dữ liệu web_marketing với một tập dữ liệu mẫu.

Tại thời điểm tạo ngăn xếp, nhân vật kỹ sư dữ liệu có toàn quyền truy cập vào bảng, nhưng nhân vật nhà khoa học dữ liệu chưa có bất kỳ quyền truy cập nào vào bảng.

Xử lý trước tập dữ liệu

Hãy bắt đầu xử lý trước dữ liệu trên phiên tương tác AWS Glue. Nhân vật kỹ sư dữ liệu muốn xác minh dữ liệu để xem liệu có dữ liệu nhạy cảm hay không và cấp quyền truy cập tối thiểu cho nhân vật nhà khoa học dữ liệu. Bạn có thể tải xuống sổ ghi chép từ vị trí này.

  1. Đăng nhập vào bảng điều khiển bằng người dùng kỹ sư dữ liệu.
  2. Trên bảng điều khiển SageMaker, chọn Người dùng.
  3. Chọn người dùng kỹ sư dữ liệu và chọn Mở Studio.
  4. Tạo một sổ ghi chép mới và chọn SparkAnalytics 1.0 cho Hình ảnhKeo PySpark cho Hạt nhân.
  5. Bắt đầu phiên tương tác với phép thuật sau để cài đặt phiên bản Boto3 mới hơn (điều này là bắt buộc để sử dụng create_data_cells_filter phương pháp):
    %additional_python_modules boto3==1.24.82

  6. Khởi tạo phiê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. Tạo AWS Glue DynamicFrame từ bảng mới tạo và giải quyết các loại lựa chọn dựa trên lược đồ danh mục, vì chúng tôi muốn sử dụng lược đồ được xác định trong danh mục thay vì lược đồ được suy ra tự động dựa trên dữ liệu:
    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. Xác thực trong bảng xem có bất kỳ dữ liệu PII nào bằng tính năng phát hiện PII của AWS Glue hay không:
    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. Xác minh xem các cột được phân loại là PII có chứa dữ liệu nhạy cảm hay không (nếu không, hãy cập nhậtclass_map để loại bỏ các cột không nhạy cảm):
    from pyspark.sql.functions import col
    dyf_marketing_resolved.toDF().select(*[col(c) for c in classified_map.keys()]).show()

  10. Thiết lập quyền của Lake Formation bằng bộ lọc ô dữ liệu cho các cột được phát hiện tự động và giới hạn các cột đối với tính cách nhà khoa học dữ liệu:
    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. Đăng nhập vào Studio với tư cách là nhà khoa học dữ liệu để thấy rằng các cột PII không hiển thị. Bạn có thể tải xuống sổ ghi chép từ vị trí này.
  12. Tạo một sổ ghi chép mới và chọn SparkAnalytics 1.0 cho Hình ảnhKeo PySpark cho Hạt nhâ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)
    
    dyf_marketing = glueContext.create_dynamic_frame.from_catalog(
    database="demo",
    table_name="web_marketing"
    )
    
    dyf_marketing.printSchema()

Thực hiện kỹ thuật tính năng

Chúng tôi sử dụng thư viện Apache Spark ML để thực hiện kỹ thuật tính năng với tư cách là người dùng nhà khoa học dữ liệu, sau đó ghi lại kết quả đầu ra cho Amazon S3.

  1. Trong ô tiếp theo, chúng tôi áp dụng các tính năng từ Thư viện Apache Spark ML:
    • StringIndexer ánh xạ một cột chuỗi nhãn vào một cột chỉ mục nhãn.
    • OneHotEncoder ánh xạ một đặc điểm phân loại, được biểu thị dưới dạng chỉ mục nhãn, tới một vectơ nhị phân có nhiều nhất một giá trị duy nhất cho biết sự hiện diện của một đặc điểm phân loại cụ thể. Phép biến đổi này được sử dụng cho các thuật toán ML yêu cầu các tính năng liên tục.
    • VectorAssembler là một máy biến áp kết hợp danh sách các cột nhất định thành một cột vectơ duy nhất, sau đó được sử dụng trong việc huấn luyện các mô hình ML cho các thuật toán như hồi quy logistic và cây quyết định.
    #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 được chuyển đổi cuối cùng có thể được tạo bằng thư viện Pipeline. Một đường ống được chỉ định là một chuỗi các giai đoạn. Các giai đoạn này được chạy theo thứ tự và DataFrame đầu vào được chuyển đổi khi nó đi qua từng giai đoạn.
    df_marketing = dyf_marketing.toDF()
    pipeline = Pipeline(stages=indexers + encoders + [assembler])
    df_tfm=pipeline.fit(df_marketing).transform(df_marketing)
    

  3. Tiếp theo, chúng tôi chia tập dữ liệu thành huấn luyện, xác thực và kiểm tra DataFrame rồi lưu vào nhóm S3 để huấn luyện mô hình ML (cung cấp ID tài khoản AWS của bạn bằng mã sau):
    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))

Đào tạo và triển khai mô hình ML

Trong phần trước, chúng tôi đã hoàn thành kỹ thuật tính năng, bao gồm việc chuyển đổi các cột chuỗi như region, jobroleusedpromo thành định dạng tối ưu cho các mô hình ML. Chúng tôi cũng bao gồm các cột như pageviewspervisittotalwebvisits, điều này sẽ giúp chúng tôi dự đoán xu hướng mua sản phẩm của khách hàng.

Bây giờ, chúng tôi huấn luyện mô hình ML bằng cách đọc tập dữ liệu huấn luyện và xác thực bằng thuật toán XGBoost tích hợp sẵn của SageMaker. Sau đó, chúng tôi triển khai mô hình và chạy kiểm tra độ chính xác. Bạn có thể tải xuống sổ ghi chép từ vị trí này.

Trong ô tiếp theo, chúng tôi đang đọc dữ liệu từ nhóm S3 thứ hai, bao gồm đầu ra từ các hoạt động kỹ thuật tính năng của chúng tôi. Sau đó, chúng tôi sử dụng thuật toán tích hợp XGBoost để huấn luyện mô hình.

  1. Mở một cuốn sổ mới. Chọn Khoa học dữ liệu cho Hình ảnhPython 3 cho Hạt nhân (cung cấp ID tài khoản AWS của bạn theo mã sau):
    #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. Khi quá trình đào tạo hoàn tất, chúng ta có thể triển khai mô hình bằng dịch vụ lưu trữ SageMaker:
    #deploy ml model
    xgb_predictor = xgb.deploy(initial_instance_count=1,
    instance_type='ml.m4.xlarge')

Đánh giá mô hình ML

Chúng tôi sử dụng tập dữ liệu thử nghiệm để đánh giá mô hình và xóa điểm cuối suy luận khi hoàn tất để tránh mọi khoản phí liên tục.

  1. Đánh giá mô hình với đoạn mã sau:
    #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))

    Kết quả độ chính xác khi chạy mẫu là 84.6 %. Điều này có thể hơi khác đối với lần chạy của bạn do tập dữ liệu được phân chia ngẫu nhiên.

  2. Chúng ta có thể xóa điểm cuối suy luận bằng đoạn mã sau:
    xgb_predictor.delete_endpoint(delete_endpoint_config=True)

Làm sạch

Bây giờ đến bước cuối cùng, dọn dẹp tài nguyên.

  1. Làm trống hai nhóm được tạo thông qua ngăn xếp CloudFormation.
  2. Xóa các ứng dụng được liên kết với người dùng profiles data-scientistdata-engineer trong Studio.
  3. Xóa ngăn xếp CloudFormation.

Kết luận

Trong bài đăng này, chúng tôi đã trình diễn một giải pháp cho phép các cá nhân như kỹ sư dữ liệu và nhà khoa học dữ liệu thực hiện kỹ thuật tính năng trên quy mô lớn. Với các phiên tương tác AWS Glue, bạn có thể dễ dàng đạt được kỹ thuật tính năng trên quy mô lớn với tính năng phát hiện PII tự động và kiểm soát truy cập chi tiết mà không cần quản lý bất kỳ cơ sở hạ tầng cơ bản nào. Bằng cách sử dụng Studio làm điểm truy cập duy nhất, bạn có thể có được trải nghiệm đơn giản và tích hợp để xây dựng quy trình làm việc ML toàn diện: từ chuẩn bị và bảo mật dữ liệu đến xây dựng, đào tạo, điều chỉnh và triển khai các mô hình ML. Để tìm hiểu thêm, hãy truy cập Bắt đầu với phiên tương tác AWS GlueXưởng sản xuất Amazon SageMaker.

Chúng tôi rất vui mừng về khả năng mới này và muốn biết bạn sẽ xây dựng những gì với nó!


Phụ lục: Thiết lập tài nguyên qua bảng điều khiển và AWS CLI

Hoàn thành hướng dẫn trong phần này để thiết lập tài nguyên bằng bảng điều khiển và AWS CLI thay vì mẫu CloudFormation.

Điều kiện tiên quyết

Để hoàn thành hướng dẫn này, bạn phải có quyền truy cập vào AWS CLI (xem Bắt đầu với AWS CLI) hoặc sử dụng quyền truy cập dòng lệnh từ Đám mây AWS.

Định cấu hình nhóm IAM, người dùng, vai trò và chính sách

Trong phần này, chúng tôi tạo hai người dùng IAM: kỹ sư dữ liệu và nhà khoa học dữ liệu, thuộc nhóm nền tảng dữ liệu nhóm IAM. Sau đó, chúng tôi thêm một chính sách IAM vào nhóm IAM.

  1. Trên bảng điều khiển IAM, tạo chính sách trên tab JSON để tạo một chính sách được quản lý IAM mới có tên DataPlatformGroupPolicy. Chính sách này cho phép người dùng trong nhóm truy cập Studio nhưng chỉ sử dụng hồ sơ người dùng SageMaker có thẻ khớp với tên người dùng IAM của họ. Sử dụng tài liệu chính sách JSON sau đây để cung cấp quyề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. Tạo một nhóm IAM gọi là data-platform-group.
  3. Tìm kiếm và đính kèm chính sách được quản lý AWS có tên DataPlatformGroupPolicy vào nhóm.
  4. Tạo người dùng IAM được gọi là kỹ sư dữ liệu và nhà khoa học dữ liệu trong nhóm nền tảng dữ liệu nhóm IAM.
  5. Tạo chính sách được quản lý mới có tên SageMakerExecutionPolicy (cung cấp ID khu vực và tài khoản của bạn theo mã sau):
    {
       "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. Tạo chính sách được quản lý mới tên 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. Tạo vai trò IAM dành cho SageMaker dành cho kỹ sư dữ liệu (data-engineer), được sử dụng làm vai trò thực thi của hồ sơ người dùng tương ứng. Trên Đính kèm chính sách quyền trang, AmazonSageMakerFullAccess (chính sách được quản lý bởi AWS) được đính kèm theo mặc định. Bạn xóa chính sách này sau để duy trì đặc quyền tối thiểu.
    1. Trong Tên vai trò, hãy sử dụng quy ước đặt tên được giới thiệu ở đầu phần này để đặt tên cho vai trò SageMakerStudioExecutionRole_data-engineer.
    2. Trong Tag, thêm khóa userprofilename và giá trị data-engineer.
    3. Chọn Tạo vai trò.
    4. Để thêm các chính sách còn lại, trên Vai trò trang, chọn tên vai trò bạn vừa tạo.
    5. Theo Quyền, hãy xóa chính sách AmazonSageMakerFullAccess.
    6. trên Đính kèm chính sách quyền trang, hãy chọn chính sách được quản lý AWS AwsGlueSessionUserRestrictedServiceRole cũng như các chính sách do khách hàng quản lý SageMakerExecutionPolicy và SageMakerAdminPolicy mà bạn đã tạo.
    7. Chọn Đính kèm các chính sách.
    8. Sửa đổi mối quan hệ tin cậy trong vai trò của bạn:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Principal":{
                "Service":[
                   "glue.amazonaws.com",
                   "sagemaker.amazonaws.com"
                ]
             },
             "Action":"sts:AssumeRole"
          }
       ]
    }

  8. Tạo vai trò IAM dành cho SageMaker dành cho nhà khoa học dữ liệu (nhà khoa học dữ liệu), được sử dụng làm vai trò thực thi của hồ sơ người dùng tương ứng.
    1. Trong Tên vai trò, đặt tên cho vai trò là SageMakerStudioExecutionRole_data-scientist.
    2. Trong Tag, thêm khóa userprofilename và giá trị data-scientist.
    3. Chọn Tạo vai trò.
    4. Để thêm các chính sách còn lại, trên Vai trò trang, chọn tên vai trò bạn vừa tạo.
    5. Theo Quyền, hãy xóa chính sách AmazonSageMakerFullAccess.
    6. trên Đính kèm chính sách quyền trang, hãy chọn chính sách được quản lý AWS AwsGlueSessionUserRestrictedServiceRole và chính sách do khách hàng quản lý SageMakerExecutionPolicy mà bạn đã tạo.
    7. Chọn Đính kèm các chính sách.
    8. Sửa đổi mối quan hệ tin cậy trong vai trò của bạn:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Principal":{
                "Service":[
                   "glue.amazonaws.com",
                   "sagemaker.amazonaws.com"
                ]
             },
             "Action":"sts:AssumeRole"
          }
       ]
    }

Định cấu hình hồ sơ người dùng SageMaker

Để tạo hồ sơ người dùng SageMaker của bạn bằng studiouserid đánh dấu, hãy hoàn thành các bước sau:

  1. Sử dụng AWS CLI hoặc CloudShell để tạo hồ sơ người dùng Studio cho kỹ sư dữ liệu (cung cấp ID tài khoản và ID miền Studio của bạn theo mã sau):
    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. Lặp lại bước để tạo hồ sơ người dùng cho nhà khoa học dữ liệu, thay thế ID tài khoản và ID miền 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

Tạo nhóm S3 và tải tập dữ liệu mẫu lên

Trong phần này, bạn tạo hai nhóm S3. Nhóm đầu tiên có tập dữ liệu mẫu liên quan đến tiếp thị trên web. Nhóm thứ hai được nhà khoa học dữ liệu sử dụng để lưu trữ kết quả đầu ra từ các nhiệm vụ kỹ thuật tính năng và tập dữ liệu đầu ra này được sử dụng để huấn luyện mô hình ML.

Đầu tiên, tạo nhóm S3 cho dữ liệu đầu vào:

  1. Tải về tập dữ liệu.
  2. Trên bảng điều khiển Amazon S3, chọn trong khung điều hướng.
  3. Chọn Tạo xô.
  4. Trong Khu vực, hãy chọn Khu vực có miền SageMaker bao gồm hồ sơ người dùng bạn đã tạo.
  5. Trong Tên nhóm, đi vào blog-studio-pii-dataset-.
  6. Chọn Tạo xô.
  7. Chọn nhóm bạn đã tạo và chọn Tải lên.
  8. Trong tạp chí Chọn file phần, chọn Thêm file và tải lên tập dữ liệu bạn đã tải xuống.
    Bây giờ bạn tạo nhóm cho dữ liệu đầu ra:
  9. trên trang, chọn Tạo xô.
  10. Trong Khu vực, hãy chọn Khu vực có miền SageMaker bao gồm hồ sơ người dùng bạn đã tạo.
  11. Trong Tên nhóm, đi vào blog-studio-output-.
  12. Chọn Tạo xô.

Tạo bảng và cơ sở dữ liệu AWS Glue

Trong phần này, bạn tạo cơ sở dữ liệu và bảng AWS Glue cho tập dữ liệu.

  1. Trên bảng điều khiển Lake Formation, dưới Danh mục dữ liệu trong ngăn điều hướng, chọn Cơ sở dữ liệu.
  2. Chọn Thêm cơ sở dữ liệu.
  3. Trong Họ tên, nhập bản demo.
  4. Chọn Tạo cơ sở dữ liệu.
  5. Theo Danh mục dữ liệu, chọn Bàn.
  6. Trong Họ tên, đi vào web_marketing.
  7. Trong Cơ sở dữ liệu, lựa chọn demo.
  8. Trong Bao gồm đường dẫn, hãy nhập đường dẫn của nhóm S3 để lấy dữ liệu đầu vào.
  9. Trong phân loại, chọn CSV.
  10. Theo Schema, chọn Tải lên lược đồ.
  11. Nhập mảng JSON sau vào hộp văn bản:
    [
       {
          "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. Chọn Tải lên.
  13. Chọn Gửi.
  14. Theo Chi tiết bảng, chọn Chỉnh sửa bảng.
  15. Theo Thuộc tính bảng, chọn Thêm.
  16. Trong Key, đi vào skip.header.line.count, Và cho Giá trị, nhập 1.
  17. Chọn Lưu.

Định cấu hình quyền của Lake Formation

Trong phần này bạn thiết lập quyền Lake Formation để cho phép vai trò IAM SageMakerStudioExecutionRole_data-engineer để tạo cơ sở dữ liệu và đăng ký vị trí S3 trong Lake Formation.

Đầu tiên, đăng ký vị trí hồ dữ liệu để quản lý các bảng theo vị trí trong quyền của Lake Formation:

  1. Chọn Vị trí hồ dữ liệu.
  2. Chọn Đăng ký vị trí.
  3. Trong Đường dẫn Amazon S3, đi vào s3://blog-studio-pii-dataset-/ (thùng chứa tập dữ liệu).
  4. Chọn Đăng ký vị trí.
    Bây giờ bạn cấp quyền cho cơ sở dữ liệu và bảng của Lake Formation cho các vai trò IAM SageMakerStudioExecutionRole_data-engineerSageMakerStudioExecutionRole_data-scientist.Đầu tiên, cấp quyền cơ sở dữ liệu cho SageMakerStudioExecutionRole_data-engineer:
  5. Theo Quyền, chọn Quyền của hồ dữ liệu.
  6. Theo Quyền dữ liệu, chọn Cấp.
  7. Trong Hiệu trưởng, chọn Người dùng IAM và vai tròvà chọn vai trò SageMakerStudioExecutionRole_data-engineer.
  8. Trong Thẻ chính sách hoặc tài nguyên danh mục, chọn Tài nguyên danh mục dữ liệu được đặt tên.
  9. Trong Cơ sở dữ liệu, chọn bản trình diễn.
  10. Trong Quyền cơ sở dữ liệu, chọn lớn.
  11. Chọn Cấp.
    Tiếp theo, cấp quyền cho bảng SageMakerStudioExecutionRole_data-engineer:
  12. Theo Quyền dữ liệu, chọn Cấp.
  13. Trong Hiệu trưởng, chọn Người dùng IAM và vai tròvà chọn vai trò SageMakerStudioExecutionRole_data-engineer.
  14. Trong Thẻ chính sách hoặc tài nguyên danh mục, chọn Tài nguyên danh mục dữ liệu được đặt tên.
  15. Trong Cơ sở dữ liệu, chọn demo.
  16. Trong Bàn, chọn web_marketing.
  17. Trong Bàn quyền, chọn lớn.
  18. Trong Được cấp quyền, chọn lớn.
  19. Chọn Cấp.
    Cuối cùng, cấp quyền cơ sở dữ liệu cho SageMakerStudioExecutionRole_data-scientist:
  20. Theo Quyền dữ liệu, chọn Cấp.
  21. Trong Hiệu trưởng, chọn Người dùng IAM và vai tròvà chọn vai trò SageMakerStudioExecutionRole_data-scientist.
  22. Trong Thẻ chính sách hoặc tài nguyên danh mục, chọn Tài nguyên danh mục dữ liệu được đặt tên.
  23. Trong Cơ sở dữ liệu, chọn demo.
  24. Trong Quyền cơ sở dữ liệu, chọn Mô tả.
  25. Chọn Cấp.

Về các tác giả

Kỹ thuật tính năng quy mô lớn với khả năng bảo vệ dữ liệu nhạy cảm bằng cách sử dụng các phiên tương tác AWS Glue và Amazon SageMaker Studio PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Praveen Kumar là Kiến trúc sư giải pháp phân tích tại AWS với chuyên môn thiết kế, xây dựng và triển khai các nền tảng phân tích và dữ liệu hiện đại bằng cách sử dụng các dịch vụ gốc trên đám mây. Lĩnh vực anh quan tâm là công nghệ serverless, kho dữ liệu đám mây hiện đại, phát trực tuyến và ứng dụng ML.

Kỹ thuật tính năng quy mô lớn với khả năng bảo vệ dữ liệu nhạy cảm bằng cách sử dụng các phiên tương tác AWS Glue và Amazon SageMaker Studio PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Noritaka Sekiyama là một kiến ​​trúc sư dữ liệu lớn chính trên nhóm keo AWS. Anh ấy thích hợp tác với các nhóm khác nhau để cung cấp kết quả như bài đăng này. Trong thời gian rảnh rỗi, anh thích chơi trò chơi điện tử với gia đình.

Dấu thời gian:

Thêm từ Học máy AWS