هندسة ميزات واسعة النطاق مع حماية البيانات الحساسة باستخدام جلسات AWS Glue التفاعلية وAmazon SageMaker Studio PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

هندسة الميزات واسعة النطاق مع حماية البيانات الحساسة باستخدام جلسات AWS Glue التفاعلية و Amazon SageMaker Studio

تستخدم المؤسسات خدمات التعلم الآلي (ML) والذكاء الاصطناعي لتحسين تجربة العملاء وتقليل التكلفة التشغيلية وإطلاق العنان لإمكانيات جديدة لتحسين نتائج الأعمال. تدعم البيانات حالات استخدام تعلم الآلة والذكاء الاصطناعي وهي أحد الأصول الإستراتيجية للمؤسسة. نظرًا لأن البيانات تنمو بمعدل أسي ، تتطلع المؤسسات إلى إنشاء منصة بيانات متكاملة وفعالة من حيث التكلفة وفعالة من أجل معالجة البيانات مسبقًا وأداء هندسة الميزات وبناء نماذج ML وتدريبها وتشغيلها على نطاق واسع. لتحقيق ذلك ، تقدم AWS منصة بيانات حديثة وموحدة يتم تشغيلها بواسطة خدمة تخزين أمازون البسيطة (Amazon S3) كمخزن بيانات مع أدوات مصممة خصيصًا ومحركات معالجة لدعم التحليلات وأعباء عمل ML. للحصول على تجربة ML موحدة ، يمكنك استخدام أمازون ساجميكر ستوديو، والتي تقدم التكامل الأصلي مع جلسات AWS Glue التفاعلية لأداء هندسة الميزات على نطاق واسع مع حماية البيانات الحساسة. في هذا المنشور ، نوضح كيفية تنفيذ هذا الحل.

الأمازون SageMaker هي خدمة تعلّم آلية مُدارة بالكامل تتيح لك إنشاء نماذج وتدريبها ونشرها على نطاق واسع لمجموعة واسعة من حالات الاستخدام. للتدريب النموذجي ، يمكنك استخدام أي من خوارزميات مدمجة داخل 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 Glue ملف الكشف عن معلومات التعريف الشخصية (PII) التحويل الذي يوفر القدرة على اكتشاف أو إخفاء أو إزالة الكيانات كما هو مطلوب ، لزيادة الامتثال والحوكمة. باستخدام تحويل PII ، يمكنك اكتشاف بيانات PII في مجموعات البيانات وتطبيق التحكم الدقيق في الوصول تلقائيًا باستخدام Lake Formation لتقييد البيانات الحساسة لمجموعات مختلفة من المستخدمين.

حالة الاستخدام

نحن نركز على حالة استخدام نموذج النزعة التي تتضمن مجموعة بيانات تسويقية للعملاء وتتضمن شخصين مستخدمين: مهندس بيانات وعالم بيانات. تحتوي مجموعة البيانات على معلومات لكل عميل ، بما في ذلك مصدر العميل المتوقع وملاحظات الاتصال والدور الوظيفي وبعض العلامات ومشاهدات الصفحة لكل زيارة والمزيد. تتضمن مجموعة البيانات أيضًا معلومات حساسة مثل أرقام الهواتف الشخصية.

مهندس البيانات مسؤول عن بناء خط أنابيب معالجة البيانات من البداية إلى النهاية ، بما في ذلك إعداد البيانات والمعالجة المسبقة والتحكم في الوصول. عالم البيانات مسؤول عن هندسة الميزات ، وتدريب ونشر نموذج ML. لاحظ أنه لا يُسمح لعالم البيانات بالوصول إلى أي بيانات حساسة لمعلومات تحديد الهوية الشخصية (PII) لهندسة الميزات أو تدريب نموذج ML.

كجزء من حالة الاستخدام هذه ، يقوم مهندس البيانات ببناء خط أنابيب للمعالجة المسبقة لمجموعة البيانات ، ومسح مجموعة البيانات بحثًا عن أي معلومات PII ، ويقيد وصول عمود PII إلى مستخدم عالم البيانات. نتيجة لذلك ، عندما يستخدم عالم البيانات مجموعة البيانات لأداء هندسة الميزات وبناء نماذج ML ، فلن يتمكن من الوصول إلى العمود الحساس لمعلومات التعريف الشخصية (أرقام الهواتف ، في هذه الحالة). تتضمن عملية هندسة الميزات تحويل أعمدة من سلسلة النوع إلى تنسيق مثالي لنماذج ML. كحالة استخدام متقدمة ، يمكنك توسيع نمط الوصول هذا لتنفيذ أمان على مستوى الصف وعلى مستوى الخلية باستخدام Lake Formation.

حل نظرة عامة

يحتوي الحل على الخطوات عالية المستوى التالية:

  1. قم بإعداد الموارد باستخدام تكوين سحابة AWS.
  2. قم بإجراء معالجة مسبقة لمجموعة البيانات ، بما في ذلك اكتشاف معلومات تحديد الهوية الشخصية والتحكم الدقيق في الوصول ، في جلسة تفاعلية مع AWS Glue.
  3. قم بإجراء هندسة الميزات في جلسة تفاعلية مع AWS Glue.
  4. تدريب ونشر نموذج ML باستخدام خوارزمية XGBoost المضمنة من SageMaker.
  5. تقييم نموذج ML.

يوضح الرسم البياني التالي بنية الحل.

المتطلبات الأساسية المسبقة

لإكمال هذا البرنامج التعليمي ، يجب أن تكون لديك المتطلبات الأساسية التالية:

قم بإعداد الموارد باستخدام AWS CloudFormation

يتضمن هذا المنشور قالب CloudFormation لإعداد سريع. يمكنك مراجعته وتخصيصه ليناسب احتياجاتك. إذا كنت تفضل إعداد الموارد على وحدة تحكم إدارة AWS و AWS CLI بدلاً من AWS CloudFormation ، راجع الإرشادات الموجودة في الملحق في نهاية هذا المنشور.

يُنشئ نموذج CloudFormation الموارد التالية:

  • دلاء S3 مع عينة مجموعة بيانات
  • An AWS لامدا وظيفة لتحميل مجموعة البيانات
  • إدارة الهوية والوصول AWS (IAM) والمستخدمين والأدوار والسياسات
  • إعدادات بحيرة بيانات تكوين البحيرة والأذونات
  • ملفات تعريف مستخدمي SageMaker

لإنشاء مواردك ، أكمل الخطوات التالية:

  1. قم بتسجيل الدخول إلى وحدة التحكم.
  2. اختار قم بتشغيل Stack:
    زر التشغيل
  3. اختار التالى.
  4. في حالة DataEngineerPwd و DataScientistPwd، أدخل كلمة المرور الخاصة بك لمستخدمي مهندس البيانات وعالم البيانات.
  5. في حالة اسم قاعدة البيانات، أدخل demo.
  6. في حالة اسم الجدول الغراء، أدخل 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. قم بتسجيل الدخول إلى وحدة التحكم باستخدام مستخدم مهندس البيانات.
  2. في وحدة تحكم SageMaker ، اختر المستخدمين.
  3. حدد مستخدم مهندس البيانات واختر فتح ستوديو.
  4. قم بإنشاء دفتر ملاحظات جديد واختر SparkAnalytics 1.0 تحديث For صورة و الغراء PySpark For نواة.
  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. تحقق في الجدول مما إذا كانت هناك أي بيانات PII باستخدام اكتشاف AWS Glue PII:
    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. تحقق مما إذا كانت الأعمدة المصنفة على أنها معلومات تحديد الهوية الشخصية تحتوي على بيانات حساسة أم لا (إذا لم يكن الأمر كذلك ، فقم بتحديث خريطة مصنفة لإسقاط الأعمدة غير الحساسة):
    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 تحديث For صورة و الغراء PySpark For نواة:
    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 النهائي المحول باستخدام مكتبة خطوط الأنابيب. يتم تحديد خط الأنابيب كسلسلة من المراحل. يتم تشغيل هذه المراحل بالترتيب ويتم تحويل إدخال 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 من خلال قراءة مجموعة بيانات القطار والتحقق من الصحة باستخدام خوارزمية XGBoost المضمنة من SageMaker. ثم نقوم بنشر النموذج وإجراء فحص الدقة. يمكنك تنزيل دفتر ملاحظات من هذا الموقع.

في الخلية التالية ، نقرأ البيانات من دلو S3 الثاني ، والذي يتضمن ناتج عمليات هندسة الميزات لدينا. ثم نستخدم الخوارزمية المدمجة XGBoost لتدريب النموذج.

  1. افتح دفتر ملاحظات جديدًا. يختار العلوم البيانات For صورة و بيثون 3 For نواة (أدخل معرف حساب 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 التفاعلية ، يمكنك بسهولة تحقيق هندسة الميزات على نطاق واسع من خلال الكشف التلقائي عن معلومات تحديد الهوية الشخصية (PII) والتحكم الدقيق في الوصول دون الحاجة إلى إدارة أي بنية أساسية أساسية. باستخدام Studio كنقطة دخول واحدة ، يمكنك الحصول على تجربة مبسطة ومتكاملة لبناء سير عمل ML من طرف إلى طرف: من إعداد وتأمين البيانات إلى بناء نماذج ML والتدريب عليها وضبطها ونشرها. لمعرفة المزيد ، قم بزيارة بدء جلسات AWS Glue التفاعلية و أمازون ساجميكر ستوديو.

نحن متحمسون جدًا لهذه القدرة الجديدة ونحرص على رؤية ما ستبنيه بها!


الملحق: قم بإعداد الموارد عبر وحدة التحكم و AWS CLI

أكمل التعليمات الواردة في هذا القسم لإعداد الموارد باستخدام وحدة التحكم و AWS CLI بدلاً من نموذج CloudFormation.

المتطلبات الأساسية المسبقة

لإكمال هذا البرنامج التعليمي ، يجب أن يكون لديك حق الوصول إلى AWS CLI (انظر بدء استخدام AWS CLI) أو استخدم وصول سطر الأوامر من أوس كلاودشيل.

تكوين مجموعة IAM والمستخدمين والأدوار والسياسات

في هذا القسم ، نقوم بإنشاء اثنين من مستخدمي IAM: مهندس بيانات وعالم بيانات ، ينتميان إلى مجموعة منصة بيانات مجموعة IAM. ثم نضيف سياسة 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 يسمى مهندس البيانات وعالم البيانات ضمن مجموعة منصة البيانات لمجموعة IAM.
  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 لمهندس البيانات (مهندس البيانات) ، والذي يتم استخدامه كدور تنفيذ لملف تعريف المستخدم المقابل. على ال إرفاق سياسة الأذونات الصفحة ، يتم إرفاق AmazonSageMakerFullAccess (سياسة AWS المُدارة) افتراضيًا. قمت بإزالة هذه السياسة لاحقًا للحفاظ على الحد الأدنى من الامتياز.
    1. في حالة اسم الدور، استخدم اصطلاح التسمية المقدم في بداية هذا القسم لتسمية الدور SageMakerStudioExecutionRole_data-engineer.
    2. في حالة علامات ، أضف اسم المستخدم الرئيسي ومهندس بيانات القيمة.
    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 لعالم البيانات (عالم البيانات) ، والذي يستخدم كدور تنفيذ لملف تعريف المستخدم المقابل.
    1. في حالة اسم الدور، قم بتسمية الدور SageMakerStudioExecutionRole_data- عالم.
    2. في حالة علامات ، أضف اسم المستخدم الرئيسي وعالم بيانات القيمة.
    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. على وحدة تحكم تشكيل البحيرة ، تحت كتالوج البيانات في جزء التنقل ، اختر قواعد بيانات.
  2. اختار أضف قاعدة البيانات.
  3. في حالة الاسم، أدخل العرض.
  4. اختار إنشاء قاعدة البيانات.
  5. تحت كتالوج البيانات، اختر طاولات الطعام.
  6. في حالة الاسم، أدخل web_marketing.
  7. في حالة قاعدة البيانات، حدد 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 للسماح بدور 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. في حالة أذونات قاعدة البيانات ، حدد فائق.
  11. اختار منحة.
    بعد ذلك ، امنح إذن الجدول لـ SageMakerStudioExecutionRole_data-engineer:
  12. تحت إذن البيانات، اختر منحة.
  13. في حالة مدراء، اختر مستخدمي IAM وأدوارها، وحدد الدور SageMakerStudioExecutionRole_data-engineer.
  14. في حالة علامات السياسة أو موارد الكتالوج، اختر موارد كتالوج البيانات المسماة.
  15. في حالة قواعد بيانات، اختر demo.
  16. في حالة طاولات الطعام، اختر web_marketing.
  17. في حالة طاولات ومكاتب أذونات ، حدد فائق.
  18. في حالة مقبول أذونات ، حدد فائق.
  19. اختار منحة.
    أخيرًا ، امنح إذن قاعدة البيانات لـ SageMakerStudioExecutionRole_data-scientist:
  20. تحت إذن البيانات، اختر منحة.
  21. في حالة مدراء، اختر مستخدمي IAM وأدوارها، وحدد الدور SageMakerStudioExecutionRole_data-scientist.
  22. في حالة علامات السياسة أو موارد الكتالوج، اختر موارد كتالوج البيانات المسماة.
  23. في حالة قواعد بيانات، اختر demo.
  24. في حالة أذونات قاعدة البيانات ، حدد وصف.
  25. اختار منحة.

حول المؤلف

هندسة ميزات واسعة النطاق مع حماية البيانات الحساسة باستخدام جلسات AWS Glue التفاعلية وAmazon SageMaker Studio PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

برافين كومار، لاعب كريكيت هندي هو مهندس حلول تحليلات في AWS يتمتع بخبرة في تصميم وبناء وتنفيذ منصات البيانات والتحليلات الحديثة باستخدام الخدمات السحابية الأصلية. مجالات اهتماماته هي التكنولوجيا بدون خادم ، ومستودعات البيانات السحابية الحديثة ، والتدفق ، وتطبيقات ML.

هندسة ميزات واسعة النطاق مع حماية البيانات الحساسة باستخدام جلسات AWS Glue التفاعلية وAmazon SageMaker Studio PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

نوريتاكا سيكياما هو مهندس رئيسي للبيانات الضخمة في فريق AWS Glue. إنه يستمتع بالتعاون مع فرق مختلفة لتقديم نتائج مثل هذه المشاركة. في أوقات فراغه ، يستمتع بلعب ألعاب الفيديو مع عائلته.

الطابع الزمني:

اكثر من التعلم الآلي من AWS