เตรียมข้อมูลตามขนาดใน Amazon SageMaker Studio โดยใช้เซสชันโต้ตอบ AWS Glue แบบไร้เซิร์ฟเวอร์ PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

เตรียมข้อมูลตามขนาดใน Amazon SageMaker Studio โดยใช้เซสชันโต้ตอบ AWS Glue แบบไร้เซิร์ฟเวอร์

สตูดิโอ Amazon SageMaker เป็นสภาพแวดล้อมการพัฒนาแบบบูรณาการอย่างสมบูรณ์ (IDE) แห่งแรกสำหรับการเรียนรู้ของเครื่อง (ML) มีอินเทอร์เฟซแบบภาพบนเว็บเดียวที่คุณสามารถดำเนินการตามขั้นตอนการพัฒนา ML ทั้งหมด รวมถึงการจัดเตรียมข้อมูลและการสร้าง การฝึกอบรม และการปรับใช้โมเดล

AWS กาว เป็นบริการการรวมข้อมูลแบบไร้เซิร์ฟเวอร์ที่ทำให้ง่ายต่อการค้นหา จัดเตรียม และรวมข้อมูลสำหรับการวิเคราะห์ ML และการพัฒนาแอปพลิเคชัน AWS Glue ช่วยให้คุณรวบรวม แปลง ล้าง และเตรียมข้อมูลสำหรับการจัดเก็บข้อมูลใน Data Lake และไปป์ไลน์ข้อมูลได้อย่างราบรื่นโดยใช้ความสามารถที่หลากหลาย ซึ่งรวมถึง การแปลงในตัว.

วิศวกรข้อมูลและนักวิทยาศาสตร์ด้านข้อมูลสามารถเตรียมข้อมูลแบบโต้ตอบได้ในวงกว้างโดยใช้การผสานการทำงานในตัวของโน้ตบุ๊ก Studio กับเซสชัน Spark แบบไร้เซิร์ฟเวอร์ที่จัดการโดย AWS Glue เริ่มต้นในไม่กี่วินาทีและหยุดการคำนวณโดยอัตโนมัติเมื่อไม่ได้ใช้งาน เซสชันโต้ตอบของ AWS Glue จัดเตรียมแบ็คเอนด์ Spark แบบไม่มีเซิร์ฟเวอร์ตามต้องการ ปรับขนาดได้สูง เพื่อให้การเตรียมข้อมูลที่ปรับขนาดได้ภายใน Studio ประโยชน์เด่นของการใช้เซสชันโต้ตอบของ AWS Glue บนโน้ตบุ๊ก Studio ได้แก่:

  • ไม่มีคลัสเตอร์ที่จะจัดเตรียมหรือจัดการ
  • ไม่มีคลัสเตอร์ว่างที่จะจ่ายสำหรับ
  • ไม่จำเป็นต้องมีการกำหนดค่าล่วงหน้า
  • ไม่มีการแย่งชิงทรัพยากรสำหรับสภาพแวดล้อมการพัฒนาเดียวกัน
  • รันไทม์และแพลตฟอร์ม Spark แบบไร้เซิร์ฟเวอร์ที่เหมือนกันทุกประการกับงาน AWS Glue แยก แปลง และโหลด (ETL)

ในโพสต์นี้ เราจะแสดงวิธีเตรียมข้อมูลตามขนาดใน Studio โดยใช้เซสชันโต้ตอบ AWS Glue แบบไร้เซิร์ฟเวอร์

ภาพรวมโซลูชัน

เมื่อต้องการใช้โซลูชันนี้ คุณต้องทำตามขั้นตอนระดับสูงต่อไปนี้:

  1. อัปเดตของคุณ AWS Identity และการจัดการการเข้าถึง (IAM) สิทธิ์ตามบทบาท
  2. เปิดใช้เคอร์เนลเซสชันแบบโต้ตอบของ AWS Glue
  3. กำหนดค่าเซสชันแบบโต้ตอบของคุณ
  4. ปรับแต่งเซสชันแบบโต้ตอบของคุณและรันเวิร์กโหลดการเตรียมข้อมูลที่ปรับขนาดได้

อัปเดตการอนุญาตบทบาท IAM ของคุณ

ในการเริ่มต้น คุณต้องอัปเดตบทบาทการดำเนินการ IAM ของผู้ใช้ Studio ด้วยสิทธิ์ที่จำเป็น สำหรับคำแนะนำโดยละเอียด โปรดดูที่ สิทธิ์สำหรับเซสชันโต้ตอบของกาวใน SageMaker Studio.

ขั้นแรก คุณเพิ่มนโยบายที่มีการจัดการให้กับบทบาทการดำเนินการของคุณ:

  1. บนคอนโซล IAM ให้เลือก บทบาท ในบานหน้าต่างนำทาง
  2. ค้นหาบทบาทการดำเนินการของ Studio ที่คุณจะใช้ และเลือกชื่อบทบาทเพื่อไปที่หน้าสรุปบทบาท
  3. เกี่ยวกับ สิทธิ์ แท็บ บน เพิ่มสิทธิ์ เมนูให้เลือก แนบนโยบาย.
  4. เลือกนโยบายที่มีการจัดการ AmazonSageMakerFullAccess และ AwsGlueSessionUserRestrictedServiceRole
  5. Choose แนบนโยบาย.
    หน้าสรุปจะแสดงนโยบายที่มีการจัดการที่เพิ่มเข้ามาใหม่ของคุณ ตอนนี้คุณเพิ่มนโยบายที่กำหนดเองและแนบไปกับบทบาทการดำเนินการของคุณ
  6. เกี่ยวกับ เพิ่มสิทธิ์ เมนูให้เลือก สร้างนโยบายอินไลน์.
  7. เกี่ยวกับ JSON แท็บ ป้อนนโยบายต่อไปนี้:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "iam:GetRole",
                    "iam:PassRole",
                    "sts:GetCallerIdentity"
                ],
                "Resource": "*"
            }
        ]
    }

  8. แก้ไขความสัมพันธ์ที่เชื่อถือได้ของบทบาทของคุณ:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": [
                        "glue.amazonaws.com",
                        "sagemaker.amazonaws.com"
                    ]
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }

เปิดใช้เคอร์เนลเซสชันแบบโต้ตอบของ AWS Glue

หากคุณมีผู้ใช้อยู่แล้วภายในโดเมน Studio ของคุณ คุณอาจต้องมีพวกเขา ปิดและรีสตาร์ท Jupyter Server เพื่อรับอิมเมจเคอร์เนลของโน้ตบุ๊กใหม่

เมื่อโหลดซ้ำ คุณสามารถสร้างโน้ตบุ๊ก Studio ใหม่และ เลือกเคอร์เนลที่คุณต้องการ. ในตัว SparkAnalytics 1.0 รูปภาพควรจะพร้อมใช้งานแล้ว และคุณสามารถเลือกเคอร์เนล AWS Glue ที่คุณต้องการได้ (กาว Scala Spark or กาว PySpark).

กำหนดค่าเซสชันแบบโต้ตอบของคุณ

คุณสามารถกำหนดค่าเซสชันโต้ตอบของ AWS Glue ได้อย่างง่ายดายด้วยเวทย์มนตร์ของเซลล์โน้ตบุ๊กก่อนที่จะเริ่มต้น เวทย์มนตร์เป็นคำสั่งขนาดเล็กที่นำหน้าด้วย % ที่จุดเริ่มต้นของเซลล์ Jupyter ซึ่งมีทางลัดเพื่อควบคุมสภาพแวดล้อม ในเซสชันโต้ตอบของ AWS Glue เวทย์มนตร์จะใช้สำหรับความต้องการในการกำหนดค่าทั้งหมด รวมถึง:

  • %ภาค – ภูมิภาค AWS ที่จะเริ่มต้นเซสชัน ค่าเริ่มต้นคือภูมิภาคสตูดิโอ
  • %iam_role – บทบาท IAM ARN เพื่อเรียกใช้เซสชันของคุณด้วย ค่าเริ่มต้นคือบทบาทการดำเนินการ SageMaker ของผู้ใช้
  • %คนงาน_ประเภท - ประเภทของคนงานกาว AWS. ค่าเริ่มต้นคือมาตรฐาน
  • %number_of_workers – จำนวนผู้ปฏิบัติงานที่ได้รับการจัดสรรเมื่องานดำเนิน ค่าเริ่มต้นคือห้า
  • %หมดเวลาที่ไม่ได้ใช้งาน – จำนวนนาทีที่ไม่มีการใช้งานหลังจากนั้นเซสชั่นจะหมดเวลา ค่าเริ่มต้นคือ 2,880 นาที
  • %เพิ่มเติม_python_modules – รายการโมดูล Python เพิ่มเติมที่คั่นด้วยเครื่องหมายจุลภาคที่จะรวมไว้ในคลัสเตอร์ของคุณ อาจมาจาก PyPi หรือ บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (อเมซอน เอส3).
  • %%กำหนดค่า – พจนานุกรมรูปแบบ JSON ประกอบด้วย พารามิเตอร์การกำหนดค่าเฉพาะกาวของ AWS สำหรับเซสชั่น

สำหรับรายการที่ครอบคลุมของพารามิเตอร์เวทย์มนตร์ที่กำหนดค่าได้สำหรับเคอร์เนลนี้ ให้ใช้ %help ความมหัศจรรย์ภายในโน้ตบุ๊กของคุณ

เซสชันโต้ตอบ AWS Glue ของคุณจะไม่เริ่มต้นจนกว่าจะมีการเรียกใช้เซลล์ที่ไม่ใช่เวทย์มนตร์ตัวแรก

ปรับแต่งเซสชันการโต้ตอบของคุณและเรียกใช้ปริมาณงานการเตรียมข้อมูล

ตัวอย่างเช่น เซลล์โน้ตบุ๊กต่อไปนี้แสดงวิธีปรับแต่งเซสชันโต้ตอบ AWS Glue และเรียกใช้ปริมาณงานการเตรียมข้อมูลที่ปรับขนาดได้ ในตัวอย่างนี้ เราทำงาน ETL เพื่อรวบรวมข้อมูลคุณภาพอากาศสำหรับเมืองหนึ่งๆ โดยจัดกลุ่มตามชั่วโมงของวัน

เรากำหนดค่าเซสชันของเราเพื่อบันทึกบันทึก Spark ของเราไปยังบัคเก็ต S3 สำหรับการดีบักแบบเรียลไทม์ ซึ่งเราจะเห็นในโพสต์นี้ในภายหลัง ตรวจสอบให้แน่ใจว่า iam_role ที่กำลังเรียกใช้เซสชัน AWS Glue ของคุณมีสิทธิ์เขียนไปยังบัคเก็ต S3 ที่ระบุ

%help

%session_id_prefix air-analysis-
%glue_version 3.0
%idle_timeout 60
%%configure
{
"--enable-spark-ui": "true",
"--spark-event-logs-path": "s3://<BUCKET>/gis-spark-logs/"
}

ต่อไป เราโหลดชุดข้อมูลของเราโดยตรงจาก Amazon S3 หรือคุณสามารถ โหลดข้อมูลโดยใช้ AWS Glue Data Catalog ของคุณ.

from pyspark.sql.functions import split, lower, hour
print(spark.version)
day_to_analyze = "2022-01-05"
df = spark.read.json(f"s3://openaq-fetches/realtime-gzipped/{day_to_analyze}/1641409725.ndjson.gz")
df_air = spark.read.schema(df.schema).json(f"s3://openaq-fetches/realtime-gzipped/{day_to_analyze}/*")

สุดท้าย เราเขียนชุดข้อมูลที่แปลงแล้วไปยังตำแหน่งฝากข้อมูลเอาต์พุตที่เรากำหนด:

df_city = df_air.filter(lower((df_air.city)).contains('delhi')).filter(df_air.parameter == "no2").cache()
df_avg = df_city.withColumn("Hour", hour(df_city.date.utc)).groupBy("Hour").avg("value").withColumnRenamed("avg(value)", "no2_avg")
df_avg.sort("Hour").show()

# Examples of reading / writing to other data stores: 
# https://github.com/aws-samples/aws-glue-samples/tree/master/examples/notebooks

df_avg.write.parquet(f"s3://<BUCKET>/{day_to_analyze}.parquet")

หลังจากที่คุณทำงานเสร็จแล้ว คุณสามารถสิ้นสุดเซสชันแบบโต้ตอบของ AWS Glue ได้ทันทีโดยเพียงแค่ปิดเคอร์เนลโน้ตบุ๊ก Studio หรือคุณสามารถใช้ %stop_session มายากล

การดีบักและ Spark UI

ในตัวอย่างก่อนหน้านี้ เราได้ระบุ ”--enable-spark-ui”: “true” อาร์กิวเมนต์พร้อมกับ a "--spark-event-logs-path": location. สิ่งนี้จะกำหนดค่าเซสชัน AWS Glue ของเราให้บันทึกบันทึกเซสชันเพื่อให้เราสามารถใช้ Spark UI เพื่อตรวจสอบและแก้ไขข้อบกพร่องของงาน AWS Glue แบบเรียลไทม์

สำหรับกระบวนการเปิดและอ่านบันทึก Spark เหล่านั้น โปรดดูที่ เปิดตัวเซิร์ฟเวอร์ประวัติ Spark. ในภาพหน้าจอต่อไปนี้ เราได้เปิดตัวคอนเทนเนอร์ Docker ในเครื่องที่มีสิทธิ์อ่านบัคเก็ต S3 ที่มีบันทึกของเรา หรือคุณสามารถโฮสต์ an อเมซอน อีลาสติก คอมพิวท์ คลาวด์ (Amazon EC2) เพื่อทำสิ่งนี้ ตามที่อธิบายไว้ในเอกสารที่เชื่อมโยงก่อนหน้านี้

เตรียมข้อมูลตามขนาดใน Amazon SageMaker Studio โดยใช้เซสชันโต้ตอบ AWS Glue แบบไร้เซิร์ฟเวอร์ PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ราคา

เมื่อคุณใช้เซสชันแบบโต้ตอบของ AWS Glue บนโน้ตบุ๊ก Studio คุณจะถูกเรียกเก็บเงินแยกต่างหากสำหรับการใช้งานทรัพยากรบนโน้ตบุ๊ก AWS Glue และ Studio

AWS เรียกเก็บเงินสำหรับเซสชันโต้ตอบของ AWS Glue ตามระยะเวลาที่ใช้งานเซสชันและจำนวน Data Processing Unit (DPU) ที่ใช้ คุณจะถูกเรียกเก็บเงินเป็นรายชั่วโมงสำหรับจำนวน DPU ที่ใช้ในการเรียกใช้ปริมาณงานของคุณ โดยจะเรียกเก็บเงินครั้งละ 1 วินาที เซสชันแบบโต้ตอบของ AWS Glue กำหนดค่าเริ่มต้น 5 DPU และต้องมีอย่างน้อย 2 DPU นอกจากนี้ยังมีระยะเวลาการเรียกเก็บเงินขั้นต่ำ 1 นาทีสำหรับแต่ละเซสชันแบบโต้ตอบ หากต้องการดูตัวอย่างอัตราและราคากาวของ AWS หรือประมาณการค่าใช้จ่ายของคุณโดยใช้เครื่องคำนวณราคา AWS โปรดดูที่ ราคากาว AWS.

โน้ตบุ๊ก Studio ของคุณทำงานบนอินสแตนซ์ EC2 และคุณจะถูกเรียกเก็บเงินสำหรับประเภทอินสแตนซ์ที่คุณเลือก ตามระยะเวลาการใช้งาน Studio กำหนดประเภทอินสแตนซ์ EC2 เริ่มต้นให้กับ ml-t3-medium เมื่อคุณเลือก SparkAnalytics รูปภาพและเคอร์เนลที่เกี่ยวข้อง คุณสามารถเปลี่ยนประเภทอินสแตนซ์ของสมุดบันทึก Studio ให้เหมาะกับปริมาณงานของคุณได้ สำหรับข้อมูลเกี่ยวกับราคา SageMaker Studio โปรดดูที่ ราคา Amazon SageMaker.

สรุป

การผสานรวมของโน้ตบุ๊ก Studio เข้ากับเซสชันโต้ตอบของ AWS Glue ช่วยให้สามารถเตรียมข้อมูลแบบไร้เซิร์ฟเวอร์ได้อย่างราบรื่นและปรับขนาดได้สำหรับนักวิทยาศาสตร์ข้อมูลและวิศวกรข้อมูล เราขอแนะนำให้คุณลองใช้ฟังก์ชันใหม่นี้ใน Studio!

ดู เตรียมข้อมูลโดยใช้ AWS Glue Interactive Sessions สำหรับข้อมูลเพิ่มเติม


เกี่ยวกับผู้แต่ง

ฌอน มอร์แกนฌอน มอร์แกน เป็นสถาปนิกอาวุโส ML Solutions ที่ AWS เขามีประสบการณ์ในด้านเซมิคอนดักเตอร์และการวิจัยเชิงวิชาการ และใช้ประสบการณ์ของเขาเพื่อช่วยให้ลูกค้าบรรลุเป้าหมายใน AWS ในเวลาว่าง Sean เป็นผู้สนับสนุน/ผู้ดูแลโอเพ่นซอร์สที่เปิดใช้งานและเป็นหัวหน้ากลุ่มผลประโยชน์พิเศษสำหรับ TensorFlow Addons

เตรียมข้อมูลตามขนาดใน Amazon SageMaker Studio โดยใช้เซสชันโต้ตอบ AWS Glue แบบไร้เซิร์ฟเวอร์ PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.สุเมธา สวามี เป็นผู้จัดการผลิตภัณฑ์หลักที่ Amazon Web Services เขานำทีม SageMaker Studio มาสร้างเป็น IDE ทางเลือกสำหรับวิทยาศาสตร์ข้อมูลเชิงโต้ตอบและเวิร์กโฟลว์วิศวกรรมข้อมูล เขาใช้เวลา 15 ปีที่ผ่านมาในการสร้างผลิตภัณฑ์สำหรับองค์กรและผู้บริโภคที่ยึดลูกค้าเป็นหลักโดยใช้การเรียนรู้ของเครื่อง ในเวลาว่างเขาชอบถ่ายภาพธรณีวิทยาที่น่าทึ่งของภาคตะวันตกเฉียงใต้ของอเมริกา

ประทับเวลา:

เพิ่มเติมจาก AWS Machine Learning AWS