ความฉลาดทางข้อมูลเชิงกำเนิด

เร่งเวิร์กโฟลว์ ML ด้วย Amazon SageMaker Studio Local Mode และ Docker support | อเมซอนเว็บเซอร์วิส

วันที่:

เรารู้สึกตื่นเต้นที่จะประกาศความสามารถใหม่สองประการใน สตูดิโอ Amazon SageMaker ที่จะเร่งการพัฒนาซ้ำสำหรับผู้ปฏิบัติงานด้านการเรียนรู้ของเครื่อง (ML): รองรับ Local Mode และ Docker การพัฒนาโมเดล ML มักเกี่ยวข้องกับวงจรวนซ้ำที่ช้า เนื่องจากนักพัฒนาสลับระหว่างการเขียนโค้ด การฝึกอบรม และการปรับใช้ แต่ละขั้นตอนจำเป็นต้องรอให้ทรัพยากรการประมวลผลระยะไกลเริ่มต้นขึ้น ซึ่งจะทำให้การตรวจสอบการใช้งานและการตอบรับเกี่ยวกับการเปลี่ยนแปลงล่าช้า

ด้วยโหมดท้องถิ่น นักพัฒนาสามารถฝึกฝนและทดสอบโมเดล แก้ไขโค้ด และตรวจสอบไปป์ไลน์ตั้งแต่ต้นทางถึงปลายทางได้โดยตรงบนอินสแตนซ์โน้ตบุ๊ก SageMaker Studio โดยไม่ต้องปั่นทรัพยากรการประมวลผลระยะไกล ซึ่งจะช่วยลดรอบการวนซ้ำจากนาทีเหลือเพียงวินาที ซึ่งช่วยเพิ่มประสิทธิภาพการทำงานของนักพัฒนา การสนับสนุน Docker ในโน้ตบุ๊ก SageMaker Studio ช่วยให้นักพัฒนาสามารถสร้างคอนเทนเนอร์ Docker และเข้าถึงคอนเทนเนอร์ที่สร้างไว้ล่วงหน้าได้อย่างง่ายดาย โดยให้สภาพแวดล้อมการพัฒนาที่สอดคล้องกันทั่วทั้งทีม และหลีกเลี่ยงการตั้งค่าที่ใช้เวลานานและการจัดการการพึ่งพา

การสนับสนุน Local Mode และ Docker นำเสนอเวิร์กโฟลว์ที่มีประสิทธิภาพสำหรับการตรวจสอบการเปลี่ยนแปลงโค้ดและโมเดลต้นแบบโดยใช้คอนเทนเนอร์ในเครื่องที่ทำงานบนโน้ตบุ๊ก SageMaker Studio

ตัวอย่าง. ในโพสต์นี้ เราจะแนะนำคุณตลอดการตั้งค่าโหมดภายในเครื่องใน SageMaker Studio การรันงานการฝึกอบรมตัวอย่าง และการปรับใช้โมเดลบน อเมซอน SageMaker จุดสิ้นสุดจากสมุดบันทึก SageMaker Studio

โหมดท้องถิ่นของ SageMaker Studio

SageMaker Studio แนะนำโหมดท้องถิ่น ซึ่งช่วยให้คุณสามารถรันการฝึกอบรม SageMaker การอนุมาน การแปลงแบทช์ และงานการประมวลผลได้โดยตรงบนอินสแตนซ์สมุดบันทึก JupyterLab, Code Editor หรือ SageMaker Studio Classic โดยไม่ต้องใช้ทรัพยากรการประมวลผลระยะไกล ประโยชน์ของการใช้โหมดท้องถิ่น ได้แก่:

  • การตรวจสอบและทดสอบเวิร์กโฟลว์ทันทีภายในสภาพแวดล้อมการพัฒนาแบบรวม (IDE)
  • ทำซ้ำได้เร็วขึ้นผ่านการรันในพื้นที่สำหรับงานขนาดเล็กเพื่อตรวจสอบผลลัพธ์และระบุปัญหาตั้งแต่เนิ่นๆ
  • ปรับปรุงประสิทธิภาพการพัฒนาและการแก้ไขจุดบกพร่องโดยกำจัดการรอคอยงานการฝึกอบรมระยะไกล
  • แสดงความคิดเห็นทันทีเกี่ยวกับการเปลี่ยนแปลงโค้ดก่อนที่จะรันงานเต็มรูปแบบในระบบคลาวด์

รูปภาพต่อไปนี้แสดงขั้นตอนการทำงานโดยใช้โหมดภายในเครื่องบน SageMaker

เวิร์กโฟลว์โดยใช้โหมดท้องถิ่นบน SageMaker

หากต้องการใช้โหมดท้องถิ่น ให้ตั้งค่า instance_type='local' เมื่อรันงาน SageMaker Python SDK เช่น การฝึกอบรมและการอนุมาน ซึ่งจะเรียกใช้บนอินสแตนซ์ที่ SageMaker Studio IDE ของคุณใช้แทนการจัดเตรียมทรัพยากรบนคลาวด์

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

รองรับนักเทียบท่าใน SageMaker Studio

ตอนนี้ SageMaker Studio ยังเปิดใช้งานการสร้างและเรียกใช้คอนเทนเนอร์ Docker ภายในเครื่องบนอินสแตนซ์โน้ตบุ๊ก SageMaker Studio ของคุณอีกด้วย คุณสมบัติใหม่นี้ช่วยให้คุณสร้างและตรวจสอบอิมเมจ Docker ใน SageMaker Studio ก่อนที่จะใช้สำหรับการฝึกอบรมและการอนุมานของ SageMaker

แผนภาพต่อไปนี้แสดงสถาปัตยกรรมการจัดประสาน Docker ระดับสูงภายใน SageMaker Studio

สถาปัตยกรรมการประสาน Docker ระดับสูงภายใน SageMaker Studio

ด้วยการสนับสนุน Docker ใน SageMaker Studio คุณสามารถ:

  • สร้างคอนเทนเนอร์ Docker ด้วยโมเดลที่ผสานรวมและการพึ่งพาโดยตรงภายใน SageMaker Studio
  • ขจัดความจำเป็นในกระบวนการสร้าง Docker ภายนอกเพื่อทำให้การสร้างอิมเมจง่ายขึ้น
  • เรียกใช้คอนเทนเนอร์ภายในเครื่องเพื่อตรวจสอบฟังก์ชันการทำงานก่อนที่จะปรับใช้โมเดลกับการใช้งานจริง
  • นำคอนเทนเนอร์ในเครื่องกลับมาใช้ใหม่เมื่อปรับใช้กับ SageMaker สำหรับการฝึกอบรมและการโฮสต์

แม้ว่าความสามารถ Docker ขั้นสูงบางอย่าง เช่น หลายคอนเทนเนอร์และเครือข่ายแบบกำหนดเองจะไม่ได้รับการสนับสนุนในขณะที่เขียนบทความนี้ แต่ฟังก์ชันการสร้างและเรียกใช้หลักก็พร้อมใช้งานเพื่อเร่งการพัฒนาคอนเทนเนอร์สำหรับเวิร์กโฟลว์การนำคอนเทนเนอร์ของคุณเอง (BYOC)

เบื้องต้น

หากต้องการใช้โหมดภายในเครื่องในแอปพลิเคชัน SageMaker Studio คุณต้องปฏิบัติตามข้อกำหนดเบื้องต้นต่อไปนี้:

  • สำหรับการดึงภาพจาก การลงทะเบียน Amazon Elastic Container (Amazon ECR) บัญชีที่โฮสต์อิมเมจ ECR จะต้องให้สิทธิ์การเข้าถึงแก่ผู้ใช้ อัตลักษณ์และการเข้าถึงการบริหารจัดการ (IAM) บทบาท บทบาทของโดเมนต้องอนุญาตการเข้าถึง Amazon ECR ด้วย
  • หากต้องการเปิดใช้งานความสามารถ Local Mode และ Docker คุณต้องตั้งค่า EnableDockerAccess พารามิเตอร์เป็นจริงสำหรับโดเมน DockerSettings โดยใช้โปรแกรม อินเทอร์เฟซบรรทัดคำสั่ง AWS AWS (AWS CLI) ซึ่งจะทำให้ผู้ใช้ในโดเมนสามารถใช้คุณสมบัติ Local Mode และ Docker ได้ ตามค่าเริ่มต้น Local Mode และ Docker จะถูกปิดใช้งานใน SageMaker Studio แอป SageMaker Studio ที่มีอยู่จะต้องรีสตาร์ทเพื่อให้การอัปเดตบริการ Docker มีผล ต่อไปนี้เป็นตัวอย่างคำสั่ง AWS CLI สำหรับการอัปเดตโดเมน SageMaker Studio:
aws sagemaker --region <REGION> 
update-domain --domain-id <DOMAIN-ID> 
--domain-settings-for-update '{"DockerSettings": {"EnableDockerAccess": "ENABLED"}}'

  • คุณต้องอัปเดตบทบาท SageMaker IAM เพื่อให้สามารถทำได้ กดอิมเมจ Docker ไปยัง Amazon ECR:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecr:CompleteLayerUpload",
        "ecr:UploadLayerPart",
        "ecr:InitiateLayerUpload",
        "ecr:BatchCheckLayerAvailability",
        "ecr:PutImage"
      ],
      "Resource": "arn:aws:ecr:us-east-2:123456789012:repository/<repositoryname>"
    },
    {
      "Effect": "Allow",
      "Action": "ecr:GetAuthorizationToken",
      "Resource": "*"
    }
  ]
}

เรียกใช้ไฟล์ Python ในพื้นที่ SageMaker Studio โดยใช้โหมดในเครื่อง

SageMaker Studio JupyterLab และตัวแก้ไขโค้ด (อิงตาม รหัส-OSS, รหัส Visual Studio – โอเพ่นซอร์ส) ขยาย SageMaker Studio เพื่อให้คุณสามารถเขียน ทดสอบ ดีบัก และรันการวิเคราะห์และโค้ด ML โดยใช้ IDE น้ำหนักเบายอดนิยม สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีเริ่มต้นใช้งาน SageMaker Studio IDE โปรดดูที่ เพิ่มประสิทธิภาพการทำงานบน Amazon SageMaker Studio: ขอแนะนำ JupyterLab Spaces และเครื่องมือ AI เชิงสร้างสรรค์ และ ใหม่ – ตัวแก้ไขโค้ดซึ่งอิงตาม Code-OSS VS Code Open Source พร้อมใช้งานแล้วใน Amazon SageMaker Studio. ทำตามขั้นตอนต่อไปนี้:

เรียกใช้ไฟล์ Python ในพื้นที่ SageMaker Studio โดยใช้โหมดในเครื่อง เรียกใช้ไฟล์ Python ในพื้นที่ SageMaker Studio โดยใช้โหมดในเครื่อง

  • สร้างเทอร์มินัลใหม่  เรียกใช้ไฟล์ Python ในพื้นที่ SageMaker Studio โดยใช้โหมดในเครื่อง เรียกใช้ไฟล์ Python ในพื้นที่ SageMaker Studio โดยใช้โหมดในเครื่อง
  • ติดตั้งปลั๊กอิน Docker CLI และ Docker Compose โดยทำตามคำแนะนำต่อไปนี้ repo GitHub- หากคำสั่งแบบลูกโซ่ล้มเหลว ให้รันคำสั่งทีละคำสั่ง

เรียกใช้ไฟล์ Python ในพื้นที่ SageMaker Studio โดยใช้โหมดในเครื่อง เรียกใช้ไฟล์ Python ในพื้นที่ SageMaker Studio โดยใช้โหมดในเครื่อง คุณต้องอัปเดต SageMaker SDK เป็นเวอร์ชันล่าสุด

  • วิ่ง pip install sagemaker -Uq ในเทอร์มินัล

สำหรับ Code Editor เท่านั้น คุณต้องตั้งค่าสภาพแวดล้อม Python ให้ทำงานในเทอร์มินัลปัจจุบัน

  • ใน Code Editor บน เมนู File¸ เลือก การตั้งค่า และ การตั้งค่า.

เรียกใช้ไฟล์ Python ในพื้นที่ SageMaker Studio โดยใช้โหมดในเครื่อง

  • ค้นหาและเลือก เทอร์มินัล: ดำเนินการใน File Dir.

เรียกใช้ไฟล์ Python ในพื้นที่ SageMaker Studio โดยใช้โหมดในเครื่อง

  • ใน Code Editor หรือ JupyterLab ให้เปิดไฟล์ scikit_learn_script_mode_local_training_and_serving โฟลเดอร์และเรียกใช้ไฟล์ scikit_learn_script_mode_local_training_and_serving.py ไฟล์

คุณสามารถเรียกใช้สคริปต์ได้โดยเลือก วิ่ง ใน Code Editor หรือใช้ CLI ในเทอร์มินัล JupyterLab เรียกใช้ไฟล์ Python ในพื้นที่ SageMaker Studio โดยใช้โหมดในเครื่อง เรียกใช้ไฟล์ Python ในพื้นที่ SageMaker Studio โดยใช้โหมดในเครื่อง คุณจะสามารถดูว่าโมเดลได้รับการฝึกอบรมในพื้นที่อย่างไร จากนั้น คุณปรับใช้โมเดลกับตำแหน่งข้อมูล SageMaker ภายในเครื่อง และคำนวณข้อผิดพลาดรูทค่าเฉลี่ยกำลังสอง (RMSE). เรียกใช้ไฟล์ Python ในพื้นที่ SageMaker Studio โดยใช้โหมดในเครื่อง เรียกใช้ไฟล์ Python ในพื้นที่ SageMaker Studio โดยใช้โหมดในเครื่อง

จำลองการฝึกอบรมและการอนุมานใน SageMaker Studio Classic โดยใช้โหมดภายในเครื่อง

คุณยังสามารถใช้สมุดบันทึกใน SageMaker Studio Classic เพื่อรันงานการฝึกอบรมขนาดเล็กได้ CIFAR10 โดยใช้โหมดภายในเครื่อง ปรับใช้โมเดลภายในเครื่อง และดำเนินการอนุมาน

ตั้งค่าสมุดบันทึกของคุณ

หากต้องการตั้งค่าโน้ตบุ๊ก ให้ทำตามขั้นตอนต่อไปนี้:

  • เปิด SageMaker Studio Classic และโคลนสิ่งต่อไปนี้ repo GitHub.

จำลองการฝึกอบรมและการอนุมานใน SageMaker Studio Classic โดยใช้โหมดภายในเครื่อง

  • เปิด pytorch_local_mode_cifar10.ipynb notebook in blog/pytorch_cnn_cifar10.

จำลองการฝึกอบรมและการอนุมานใน SageMaker Studio Classic โดยใช้โหมดภายในเครื่อง

  • สำหรับ ภาพเลือก PyTorch 2.1.0 Python 3.10 CPU Optimized.

จำลองการฝึกอบรมและการอนุมานใน SageMaker Studio Classic โดยใช้โหมดภายในเครื่อง ยืนยันว่าสมุดบันทึกของคุณแสดงอินสแตนซ์และการเลือกเคอร์เนลที่ถูกต้อง จำลองการฝึกอบรมและการอนุมานใน SageMaker Studio Classic โดยใช้โหมดภายในเครื่อง

  • เปิดเทอร์มินัลโดยเลือก เปิดเทอร์มินัล ในอิมเมจ SageMaker ปัจจุบัน

จำลองการฝึกอบรมและการอนุมานใน SageMaker Studio Classic โดยใช้โหมดภายในเครื่อง

  • ติดตั้งปลั๊กอิน Docker CLI และ Docker Compose โดยทำตามคำแนะนำต่อไปนี้ repo GitHub.

เนื่องจากคุณใช้ Docker จาก SageMaker Studio Classic ให้ลบ sudo เมื่อรันคำสั่ง เนื่องจากเทอร์มินัลทำงานภายใต้ superuser อยู่แล้ว สำหรับ SageMaker Studio Classic คำสั่งการติดตั้งจะขึ้นอยู่กับระบบปฏิบัติการอิมเมจของแอป SageMaker Studio ตัวอย่างเช่น อิมเมจเฟรมเวิร์กแบบ DLC เป็นแบบ Ubuntu ซึ่งคำแนะนำต่อไปนี้จะใช้งานได้ อย่างไรก็ตาม สำหรับอิมเมจแบบ Debian เช่น DataScience Images คุณต้องปฏิบัติตามคำแนะนำต่อไปนี้ repo GitHub- หากคำสั่งแบบลูกโซ่ล้มเหลว ให้รันคำสั่งทีละคำสั่ง คุณควรเห็นเวอร์ชัน Docker ปรากฏขึ้น จำลองการฝึกอบรมและการอนุมานใน SageMaker Studio Classic โดยใช้โหมดภายในเครื่อง

  • เปิดหน้าต่างเทอร์มินัลทิ้งไว้ กลับไปที่สมุดบันทึก และเริ่มเรียกใช้ทีละเซลล์

ตรวจสอบให้แน่ใจว่าได้เรียกใช้เซลล์ด้วย pip install -U sagemaker แสดงว่าคุณกำลังใช้ SageMaker Python SDK เวอร์ชันล่าสุด

การฝึกอบรมในพื้นที่

เมื่อคุณเริ่มรันงานการฝึกอบรม SageMaker ในพื้นที่ คุณจะเห็นบรรทัดบันทึกต่อไปนี้:

INFO:sagemaker.local.image:'Docker Compose' found using Docker CLI.
INFO:sagemaker.local.local_session:Starting training job

สิ่งนี้บ่งชี้ว่าการฝึกอบรมดำเนินอยู่ในเครื่องโดยใช้ Docker

จำลองการฝึกอบรมและการอนุมานใน SageMaker Studio Classic โดยใช้โหมดภายในเครื่อง

อดทนไว้ในขณะที่ pytorch-training:2.1-cpu-py310 อิมเมจนักเทียบท่าถูกดึง เนื่องจากมีขนาดใหญ่ (5.2 GB) อาจใช้เวลาสักครู่

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

จากมุมมองด้านการรักษาความลับของผู้ใช้ แพลตฟอร์ม SageMaker Studio จะไม่เข้าถึงหรือจัดเก็บรูปภาพเฉพาะของผู้ใช้

เมื่อการฝึกอบรมเสร็จสิ้น คุณจะเห็นบรรทัดบันทึกความสำเร็จต่อไปนี้:

8zlz1zbfta-sagemaker-local exited with code 0
Aborting on container exit...
Container 8zlz1zbfta-sagemaker-local  Stopping
Container 8zlz1zbfta-sagemaker-local  Stopped
INFO:sagemaker.local.image:===== Job Complete =====

จำลองการฝึกอบรมและการอนุมานใน SageMaker Studio Classic โดยใช้โหมดภายในเครื่อง

การอนุมานเฉพาะที่

ทำตามขั้นตอนต่อไปนี้:

  • ปรับใช้ตำแหน่งข้อมูล SageMaker โดยใช้ SageMaker Local Mode

อดทนไว้ในขณะที่ pytorch-inference:2.1-cpu-py310 อิมเมจนักเทียบท่าถูกดึง เนื่องจากมีขนาดใหญ่ (4.32 GB) อาจใช้เวลาสักครู่

จำลองการฝึกอบรมและการอนุมานใน SageMaker Studio Classic โดยใช้โหมดภายในเครื่อง

  • เรียกใช้ตำแหน่งข้อมูล SageMaker ที่ใช้งานภายในเครื่องโดยใช้อิมเมจทดสอบ

จำลองการฝึกอบรมและการอนุมานใน SageMaker Studio Classic โดยใช้โหมดภายในเครื่อง

คุณจะสามารถดูคลาสที่ทำนายไว้ได้: กบ เรือ รถยนต์ และเครื่องบิน:

Predicted:  frog ship  car plane

จำลองการฝึกอบรมและการอนุมานใน SageMaker Studio Classic โดยใช้โหมดภายในเครื่อง

  • เนื่องจากตำแหน่งข้อมูล SageMaker Local ยังคงทำงานอยู่ ให้นำทางกลับไปที่หน้าต่างเทอร์มินัลที่เปิดอยู่และแสดงรายการคอนเทนเนอร์ที่ทำงานอยู่:

docker ps

คุณจะสามารถมองเห็นการวิ่ง pytorch-inference:2.1-cpu-py310 คอนเทนเนอร์ที่สนับสนุนตำแหน่งข้อมูล SageMaker

จำลองการฝึกอบรมและการอนุมานใน SageMaker Studio Classic โดยใช้โหมดภายในเครื่อง

  • หากต้องการปิดตำแหน่งข้อมูลท้องถิ่นของ SageMaker และหยุดคอนเทนเนอร์ที่ทำงานอยู่ เนื่องจากคุณสามารถเรียกใช้ตำแหน่งข้อมูลภายในเครื่องได้ครั้งละหนึ่งรายการเท่านั้น ให้เรียกใช้โค้ดการล้างข้อมูล

จำลองการฝึกอบรมและการอนุมานใน SageMaker Studio Classic โดยใช้โหมดภายในเครื่อง

  • เพื่อให้แน่ใจว่าคอนเทนเนอร์ Docker หยุดทำงาน คุณสามารถนำทางไปยังหน้าต่างเทอร์มินัลที่เปิดอยู่ เรียกใช้ docker ps และตรวจสอบให้แน่ใจว่าไม่มีคอนเทนเนอร์ที่ทำงานอยู่
  • หากคุณเห็นคอนเทนเนอร์ทำงานอยู่ ให้รัน docker stop <CONTAINER_ID> เพื่อหยุดมัน

เคล็ดลับในการใช้โหมดท้องถิ่นของ SageMaker

หากคุณใช้ SageMaker เป็นครั้งแรก โปรดดูที่ ฝึกโมเดลแมชชีนเลิร์นนิง- หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการปรับใช้โมเดลเพื่อการอนุมานด้วย SageMaker โปรดดูที่ ปรับใช้แบบจำลองเพื่อการอนุมาน.

โปรดคำนึงถึงคำแนะนำต่อไปนี้:

  • พิมพ์ไฟล์และโฟลเดอร์อินพุตและเอาต์พุตเพื่อทำความเข้าใจชุดข้อมูลและการโหลดโมเดล
  • ใช้ 1–2 ยุคและชุดข้อมูลขนาดเล็กเพื่อการทดสอบอย่างรวดเร็ว
  • ติดตั้งการพึ่งพาล่วงหน้าใน Dockerfile เพื่อปรับการตั้งค่าสภาพแวดล้อมให้เหมาะสม
  • แยกรหัสซีเรียลไลซ์ในปลายทางเพื่อทำการดีบัก

กำหนดค่าการติดตั้ง Docker เป็นการกำหนดค่าวงจรการใช้งาน

คุณสามารถกำหนดกระบวนการติดตั้ง Docker เป็นสคริปต์ Lifecycle Configuration (LCC) เพื่อทำให้การตั้งค่าง่ายขึ้นในแต่ละครั้งที่พื้นที่ SageMaker Studio ใหม่เริ่มต้นขึ้น LCC คือสคริปต์ที่ SageMaker เรียกใช้ระหว่างกิจกรรมต่างๆ เช่น การสร้างพื้นที่ อ้างถึง จูปิเตอร์แล็บ, ตัวแก้ไขโค้ด,หรือ SageMaker สตูดิโอคลาสสิก การตั้งค่า LCC (โดยใช้ นักเทียบท่าติดตั้ง cli เป็นข้อมูลอ้างอิง) เพื่อเรียนรู้เพิ่มเติม

กำหนดค่าการติดตั้ง Docker เป็นการกำหนดค่าวงจรการใช้งาน

กำหนดค่าการติดตั้ง Docker เป็นการกำหนดค่าวงจรการใช้งาน

สร้างและทดสอบอิมเมจ Docker แบบกำหนดเองในพื้นที่ SageMaker Studio

ในขั้นตอนนี้ คุณจะติดตั้ง Docker ภายในพื้นที่แอพ JupyterLab (หรือตัวแก้ไขโค้ด) และใช้ Docker เพื่อสร้าง ทดสอบ และเผยแพร่อิมเมจ Docker แบบกำหนดเองด้วยพื้นที่ SageMaker Studio พื้นที่ใช้เพื่อจัดการความต้องการพื้นที่เก็บข้อมูลและทรัพยากรของแอปพลิเคชัน SageMaker Studio บางแอปพลิเคชัน แต่ละช่องว่างมีความสัมพันธ์แบบ 1:1 กับอินสแตนซ์ของแอปพลิเคชัน ทุกแอปพลิเคชันที่รองรับที่สร้างขึ้นจะมีพื้นที่เป็นของตัวเอง หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับพื้นที่ SageMaker โปรดดูที่ เพิ่มประสิทธิภาพการทำงานบน Amazon SageMaker Studio: ขอแนะนำ JupyterLab Spaces และเครื่องมือ AI เชิงสร้างสรรค์- ตรวจสอบให้แน่ใจว่าคุณจัดเตรียมพื้นที่ใหม่โดยมีพื้นที่เก็บข้อมูลอย่างน้อย 30 GB เพื่อให้มีพื้นที่จัดเก็บเพียงพอสำหรับอิมเมจ Docker และอาร์ติแฟกต์

ติดตั้ง Docker ภายในช่องว่าง

หากต้องการติดตั้งปลั๊กอิน Docker CLI และ Docker Compose ภายในพื้นที่ JupyterLab ให้รันคำสั่งต่อไปนี้ repo GitHub- SageMaker สตูดิโอ รองรับเฉพาะ Docker เวอร์ชัน 20.10.X.

สร้างอิมเมจนักเทียบท่า

เพื่อยืนยันว่ามีการติดตั้ง Docker และทำงานภายในพื้นที่ JupyterLab ของคุณ ให้รันโค้ดต่อไปนี้:

# to verify docker service
sagemaker-user@default:~$ docker version
Client: Docker Engine - Community
Version:           24.0.7
API version:       1.41 (downgraded from 1.43)
Go version:        go1.20.10
Git commit:        afdd53b
Built:             Thu Oct 26 09:07:41 2023
OS/Arch:           linux/amd64
Context:           default

Server:
Engine:
Version:          20.10.25
API version:      1.41 (minimum version 1.12)
Go version:       go1.20.10
Git commit:       5df983c
Built:            Fri Oct 13 22:46:59 2023
OS/Arch:          linux/amd64
Experimental:     false
containerd:
Version:          1.7.2
GitCommit:        0cae528dd6cb557f7201036e9f43420650207b58
runc:
Version:          1.1.7
GitCommit:        f19387a6bec4944c770f7668ab51c4348d9c2f38
docker-init:
Version:          0.19.0
GitCommit:        de40ad0

หากต้องการสร้างอิมเมจ Docker แบบกำหนดเองภายในพื้นที่ JupyterLab (หรือตัวแก้ไขโค้ด) ให้ทำตามขั้นตอนต่อไปนี้:

  • สร้าง Dockerfile ที่ว่างเปล่า:

touch Dockerfile

  • แก้ไข Dockerfile ด้วยคำสั่งต่อไปนี้ ซึ่งสร้างอิมเมจเว็บเซิร์ฟเวอร์ flask อย่างง่ายจากอิมเมจ python:3.10.13-bullseye พื้นฐานที่โฮสต์บน ศูนย์กลางนักเทียบท่า:
# Use the specified Python base image
FROM python:3.10.13-bullseye

# Create a code dir
RUN mkdir /code/

# Set the working directory in the container
WORKDIR /code

# Upgrade pip and install required packages
RUN python3 -m pip install --upgrade pip && 
python3 -m pip install flask

# Copy the app.py file to the container
COPY app.py /code/

# Set the command to run the app
ENTRYPOINT ["python", "app.py"]

รหัสต่อไปนี้แสดงเนื้อหาของไฟล์แอปพลิเคชันตัวอย่างขวด app.py:

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/')
def hello():
return jsonify({"response": "Hello"})

if __name__ == '__main__':
app.run(host='0.0.0.0', port=6006)

นอกจากนี้ คุณยังสามารถอัปเดตคำสั่งอ้างอิง Dockerfile เพื่อรวมแพ็คเกจและส่วนที่คุณเลือกได้

  • สร้างอิมเมจ Docker โดยใช้ Dockerfile อ้างอิง:

docker build --network sagemaker --tag myflaskapp:v1 --file ./Dockerfile .

รวมไปถึง --network sagemaker ในคำสั่ง docker build ของคุณ ไม่เช่นนั้น build จะล้มเหลว ไม่สามารถเรียกใช้คอนเทนเนอร์ในบริดจ์เริ่มต้นของ Docker หรือเครือข่าย Docker แบบกำหนดเองได้ คอนเทนเนอร์ทำงานในเครือข่ายเดียวกันกับคอนเทนเนอร์แอปพลิเคชัน SageMaker Studio ผู้ใช้สามารถใช้ได้เฉพาะ sagemaker สำหรับชื่อเครือข่ายเท่านั้น

  • เมื่อการสร้างของคุณเสร็จสมบูรณ์ ให้ตรวจสอบว่ามีอิมเมจอยู่หรือไม่ ติดแท็กบิลด์ใหม่เป็นอิมเมจ ECR แล้วกด หากคุณประสบปัญหาเกี่ยวกับการอนุญาต ให้รันคำสั่ง aws ecr get-login-password… แล้วลองรัน Docker push/pull อีกครั้ง:
sagemaker-user@default:~$ docker image list
REPOSITORY      TAG       IMAGE ID       CREATED          SIZE
myflaskapp      v1        d623f1538f20   27 minutes ago   489MB

sagemaker-user@default:~$ docker tag myflaskapp:v1 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1

sagemaker-user@default:~$ docker image list
REPOSITORY                                                  TAG       IMAGE ID       CREATED          SIZE
123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp     latest    d623f1538f20   27 minutes ago   489MB
myflaskapp                                                  v1        d623f1538f20   27 minutes ago   489MB

sagemaker-user@default:~$ aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com

sagemaker-user@default:~$ docker push 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:latest

ทดสอบอิมเมจ Docker

การติดตั้ง Docker ภายใน JupyterLab (หรือตัวแก้ไขโค้ด) พื้นที่ SageMaker Studio ช่วยให้คุณสามารถทดสอบอิมเมจ Docker ที่สร้างไว้ล่วงหน้าหรือแบบกำหนดเองเป็นคอนเทนเนอร์ (หรือแอปพลิเคชันแบบคอนเทนเนอร์) ในส่วนนี้ เราใช้คำสั่งเรียกใช้นักเทียบท่าเพื่อจัดเตรียมคอนเทนเนอร์ Docker ภายในพื้นที่ SageMaker Studio เพื่อทดสอบปริมาณงานในคอนเทนเนอร์ เช่น บริการเว็บ REST และสคริปต์ Python ทำตามขั้นตอนต่อไปนี้:

sagemaker-user@default:~$ docker image list
REPOSITORY                                                  TAG       IMAGE ID       CREATED       SIZE

  • หากไม่มีอิมเมจทดสอบ ให้รัน docker pull เพื่อดึงอิมเมจลงในเครื่องของคุณ:

sagemaker-user@default:~$ docker pull 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1

  • หากคุณประสบปัญหาการรับรองความถูกต้อง ให้รันคำสั่งต่อไปนี้:

aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com

  • สร้างคอนเทนเนอร์เพื่อทดสอบภาระงานของคุณ:

docker run --network sagemaker 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1

สิ่งนี้จะหมุนอินสแตนซ์คอนเทนเนอร์ใหม่และรันแอปพลิเคชันที่กำหนดโดยใช้ ENTRYPOINT ของ Docker:

sagemaker-user@default:~$ docker run --network sagemaker 905418447590.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
* Serving Flask app 'app'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:6006
* Running on http://169.255.255.2:6006

  • หากต้องการทดสอบว่าจุดสิ้นสุดเว็บของคุณทำงานอยู่หรือไม่ ให้ไปที่ URL https://<sagemaker-space-id>.studio.us-east-2.sagemaker.aws/jupyterlab/default/proxy/6006/.

คุณควรเห็นการตอบสนองของ JSON คล้ายกับภาพหน้าจอต่อไปนี้

กำหนดค่าการติดตั้ง Docker เป็นการกำหนดค่าวงจรการใช้งาน

ทำความสะอาด

เพื่อหลีกเลี่ยงไม่ให้มีค่าใช้จ่ายที่ไม่จำเป็น ให้ลบทรัพยากรที่คุณสร้างขึ้นขณะเรียกใช้ตัวอย่างในโพสต์นี้:

  1. ในโดเมน SageMaker Studio ของคุณ ให้เลือก สตูดิโอคลาสสิก ในบานหน้าต่างนำทาง จากนั้นเลือก หยุด.
  2. ในโดเมน SageMaker Studio ของคุณ ให้เลือก จูปิเตอร์แล็บ or ตัวแก้ไขโค้ด ในบานหน้าต่างนำทาง เลือกแอปของคุณ จากนั้นเลือก หยุด.

สรุป

การสนับสนุนโหมดท้องถิ่นของ SageMaker Studio และ Docker ช่วยให้นักพัฒนาสามารถสร้าง ทดสอบ และทำซ้ำการใช้งาน ML ได้เร็วขึ้นโดยไม่ต้องออกจากพื้นที่ทำงาน ด้วยการให้การเข้าถึงสภาพแวดล้อมการทดสอบและเอาต์พุตได้ทันที ความสามารถเหล่านี้จึงปรับขั้นตอนการทำงานให้เหมาะสมและปรับปรุงประสิทธิภาพการทำงาน ลองใช้ SageMaker Studio Local Model และ Docker support โดยใช้ของเรา คุณสมบัติออนบอร์ดด่วนซึ่งช่วยให้คุณสามารถหมุนโดเมนใหม่สำหรับผู้ใช้คนเดียวได้ภายในไม่กี่นาที แบ่งปันความคิดของคุณในส่วนความคิดเห็น!


เกี่ยวกับผู้เขียน

Shweta SinghShweta Singh เป็นผู้จัดการผลิตภัณฑ์อาวุโสในทีมแพลตฟอร์ม Amazon SageMaker Machine Learning (ML) ที่ AWS ซึ่งเป็นผู้นำ SageMaker Python SDK เธอทำงานในตำแหน่งผลิตภัณฑ์หลายตำแหน่งใน Amazon มานานกว่า 5 ปี เธอสำเร็จการศึกษาระดับปริญญาตรีสาขาวิทยาศาสตร์สาขาวิศวกรรมคอมพิวเตอร์และปริญญาโทสาขาวิศวกรรมการเงินจากมหาวิทยาลัยนิวยอร์ก

เอตัน เซล่าเอตัน เซล่า เป็นสถาปนิกโซลูชันผู้เชี่ยวชาญด้าน AI และ Machine Learning ของ AWS เขาทำงานร่วมกับลูกค้า AWS เพื่อให้คำแนะนำและความช่วยเหลือทางเทคนิค โดยช่วยสร้างและใช้งานโซลูชัน Generative AI และ Machine Learning บน AWS ในเวลาว่าง Eitan สนุกกับการจ็อกกิ้งและอ่านบทความเกี่ยวกับแมชชีนเลิร์นนิงล่าสุด

ปรานาฟ เมอร์ธีปรานาฟ เมอร์ธี เป็นสถาปนิกโซลูชันผู้เชี่ยวชาญ AI/ML ที่ AWS เขามุ่งเน้นที่การช่วยเหลือลูกค้าในการสร้าง ฝึกอบรม ปรับใช้ และโยกย้ายปริมาณงานการเรียนรู้ของเครื่อง (ML) ไปยัง SageMaker ก่อนหน้านี้เขาเคยทำงานในอุตสาหกรรมเซมิคอนดักเตอร์ที่พัฒนาโมเดลคอมพิวเตอร์วิทัศน์ขนาดใหญ่ (CV) และการประมวลผลภาษาธรรมชาติ (NLP) เพื่อปรับปรุงกระบวนการเซมิคอนดักเตอร์โดยใช้เทคนิค ML อันล้ำสมัย ในเวลาว่าง เขาชอบเล่นหมากรุกและท่องเที่ยว คุณสามารถค้นหาปรานาฟได้ LinkedIn.

มูฟัดดาล โรฮาวาลามูฟัดดาล โรฮาวาลา เป็นวิศวกรซอฟต์แวร์ที่ AWS เขาทำงานในไลบรารี SageMaker Python SDK สำหรับ Amazon SageMaker ในเวลาว่าง เขาชอบท่องเที่ยว กิจกรรมกลางแจ้ง และเป็นแฟนฟุตบอล

จุด_img

ข่าวกรองล่าสุด

จุด_img

แชทกับเรา

สวัสดี! ฉันจะช่วยคุณได้อย่างไร?