แชร์ประสบการณ์เข้าร่วมเวิร์คชอปการตั้งค่า sharing storage อย่าง S3 หรือ EFS สำหรับ AWS Lambda หลายฟังก์ชัน #AWSreInvent
ด้วยการตั้งค่าพื้นที่จัดเก็บร่วมกันอย่าง Amazon EFS และบัคเก็ต Amazon S3 สำหรับ Amazon Lambda หลายฟังก์ชัน คุณจะสามารถสร้างระบบที่ดำเนินการประมวลผล Machine Learning ทั่วทั้งระบบได้
เริ่มต้น
ในบทความนี้จะมาแชร์ประสบการณ์การไปเข้าร่วมเวิร์คชอปและสร้างแอปพลิเคชัน AI Serverless ที่จัดเก็บข้อมูลถาวรใน Amazon S3 และ Amazon EFS
ภาพรวมของเวิร์คชอป
STG316 | Integrate serverless applications with AWS storage services
AWS Lambda is a serverless compute service that lets you run code without provisioning or managing servers. You can integrate it with Amazon EFS and Amazon S3 for data persistence, enabling increased application availability and regional resiliency. In this workshop, discover how to build your serverless AI applications with persistent data in Amazon S3 and Amazon EFS. Additionally, explore how the application can process data as its being retrieved from Amazon S3, transcribe content, and use Amazon Bedrock for summarization. Learn how to network your Lambda functions with regional storage services for external data access and how to share data between serverless functions. You must bring your laptop to participate.
STG316 | รวมแอปพลิเคชัน serverless เข้ากับบริการจัดเก็บข้อมูล AWS
AWS Lambda เป็นบริการคอมพิวเตอร์ไร้เซิร์ฟเวอร์ที่ให้คุณเรียกใช้โค้ดได้โดยไม่ต้องจัดเตรียมหรือจัดการเซิร์ฟเวอร์ คุณสามารถรวมเข้ากับ Amazon EFS และ Amazon S3 เพื่อความคงอยู่ของข้อมูล ช่วยให้ความพร้อมใช้งานของแอปพลิเคชันและความยืดหยุ่นในระดับภูมิภาคเพิ่มมากขึ้น ในเวิร์กช็อปนี้ คุณจะค้นพบวิธีสร้างแอปพลิเคชัน AI ไร้เซิร์ฟเวอร์ด้วยข้อมูลถาวรใน Amazon S3 และ Amazon EFS นอกจากนี้ คุณจะสำรวจวิธีที่แอปพลิเคชันสามารถประมวลผลข้อมูลในขณะที่ดึงมาจาก Amazon S3 ถอดเสียงเนื้อหา และใช้ Amazon Bedrock สำหรับการสรุปผล เรียนรู้วิธีเชื่อมต่อฟังก์ชัน Lambda ของคุณกับบริการจัดเก็บข้อมูลในระดับภูมิภาคสำหรับการเข้าถึงข้อมูลภายนอก และวิธีการแชร์ข้อมูลระหว่างฟังก์ชัน serverless คุณต้องนำแล็ปท็อปมาด้วยเพื่อเข้าร่วม
บรรยากาศในเวิร์คชอป
เวิร์คชอปนี้จัดขึ้นที่ห้อง Premier 315 บนชั้น 3 ของ MGN Grand
และครั้งนี้นั่งแถวหน้าอีกแล้ว ได้ยินเสียงสปีคเกอร์และเห็นสไลด์แบบชัดสุดๆ
เนื้อหาของเวิร์คชอป
เวิร์คช็อปนี้แบ่งออกเป็นโมดูลต่างๆโดยคร่าวๆและจัดการแต่ละโมดูลตามลำดับ
・ตั้งค่า S3 access point สำหรับ Lambda, Lambda Layout, IAM Role ของฟังก์ชัน Lambda
・สร้างฟังก์ชัน Lambda และ API Gateway
・เชื่อมฟังก์ชัน Lambda เข้ากับ EFS File System และบักเก็ต S3
・ตั้งค่า EFS และ S3 และรวม Lambda หลายฟังก์ชันเพื่อใช้ในโพรเซสเดียว
・แนะนำวิธีมอนิเตอร์ EFS File System และ S3 Bucket
จากโมดูลทั้งหมด ผมรู้สึกว่า 2 โมดูลแรกเป็นส่วนของเนื้อหาในการเตรียมตัวและข้อมูลอ้างอิง ส่วนเนื้อหาหลักของเวิร์คชอปคือโมดูลที่เกี่ยวกับเชื่อมโยงฟังก์ชันของ Lambda กับ EFS File System และ S3
ในเวิร์คช็อปนี้ เราได้ตั้งค่า Storage Service เช่น S3 และ EFS สำหรับ Lambda หลายฟังก์ชันให้เหมือนกับองค์ประกอบในรูปภาพด้างล่างนี้ และจัดการโครงสร้างของแต่ละ Lambda ฟังก์ชัน ให้สามารถทำงานได้อย่างถูกต้องโดยจัดการบน management console
บทบาทของ Lambda ฟังก์ชันที่เราพูดถึงในครั้งนี้มีดังนี้
・แปลงไฟล์ MP4 ที่จัดเก็บไว้ใน S3 Bucket เป็นไฟล์เสียง MP3 โดยใช้ FFMpeg
・ส่งไฟล์ MP3 ผ่าน API Gateway
・ถอดเสียงจากไฟล์ MP4 ที่จัดเก็บไว้ใน S3 Bucket ด้วย OpenAI Whisper
・สรุปข้อความโดยใช้ Claude 3 Haiku โดยใช้ข้อความที่ถอดความ
・จับภาพหน้าจอที่เกิดจากการอัพโหลดไฟล์ MP4 โดยอัตโนมัติ
・การตรวจจับวัตถุโดยใช้โมเดล Hugging Face จากการจับภาพหน้าจอ
การประมวลผลโดยหลักจะใช้ Lambda หลายฟังก์ชัน กล่าวโดยกว้างๆ ก็คือ การกำหนดค่าเพื่อให้เอาต์พุตที่ได้รับจากกระบวนการนี้ถูกจัดเก็บไว้ใน S3 และ EFS ทั่วไป และข้อมูลนี้ได้รับการอ้างอิงโดย Lambda อื่น
สำหรับครั้งนี้ ไฟล์ข้อความที่ถอดเสียง MP4 จะถูกบันทึกไว้ใน EFS
ในทางกลับกัน การจับภาพหน้าจอที่นำมาจากไฟล์ MP4 จะถูกจัดเก็บไว้ใน S3 การกำหนดค่าคือส่งการแจ้งเตือนออบเจ็กต์ S3 ไปที่ Lambda และเริ่มการทำงานของ Lambda ฟังก์ชัน
เรียนรู้วิธีการแชร์ไฟล์ของ EFS และ S3
หัวข้อนี้เป็นเนื้อหาหลักของเวิร์คชอปนี้ มี Lambda หลายฟังก์ชันที่ต้องเชื่อมต่อและสร้างให้ทำงานร่วมกัน
ตั้งค่าให้ EFS และ S3 เป็นพื้นที่จัดเก็บร่วมกัน และเชื่อมต่อกับ Lambda หลายฟังก์ชันให้ทำงานร่วมกัน เราจะได้เรียนรู้วิธีแชร์ไฟล์ไปยัง resource อื่นๆ เช่น การ Mount file ของ EFS, Lambda Access Endpoint ของ S3 และการแจ้งเตือน event ของออบเจ็กต์ S3 ไปยัง Lambda
ความน่าสนใจของเนื้อหาการประมวลผลที่ใช้งานกับ Lambda
เซสชันนี้เป็นเรื่องเกี่ยวกับการกำหนดค่า EFS และ S3 เป็นที่จัดเก็บข้อมูลร่วมกันสำหรับ Lambda แต่กระบวนการที่จะนำไปใช้กับ Lambda นั้นผมรู้สึกว่าน่าสนใจ อธิบายคร่าวๆได้ดังนี้
・ส่งไฟล์ MP3 ที่บันทึกใน S3 ผ่าน API Gateway
・การสรุปโดยใช้ Claude 3 Haiku
・การข้ามข้อความโดยใช้ OpenAI Whisper
・การตรวจจับวัตถุในไฟล์ภาพบน S3 โดยใช้โมเดล Hugging Face
เนื้อหาเต็มไปด้วยเรื่อง Machine Learning และ Generative AI
โพรเซสนี้ค่อนข้างง่ายสำหรับผม ทำให้เวิร์คชอปเป็นไปได้อย่างราบรื่น
ระยะเวลาโดยประมาณที่จำเป็นถูกกำหนดไว้แค่ 2 ชั่วโมง แต่ผมสามารถทำเสร็จภายใน 1.5 ชั่วโมง
จุดที่เป็นกังวลระหว่างการเวิร์คชอป
แม้ว่ากระบวนการจะเรียบง่าย แต่มีความกังวลเกี่ยวกับเวลาในการดำเนินการ เพราะในการใช้ Lambda ประมวลผล Machine Learning ยังไงก็น่าจะใช้เวลาตรงนี้นาน เมื่อเรียกใช้การตรวจจับวัตถุของ Hugging Face ด้วย Lambda ตรงส่วนนี้จะใช้เวลาประมวลผล 5 นาที
เมื่อดำเนินการประมวลผลที่เกี่ยวข้องกับ AI ด้วย Lambda มีหลายโพรเซสที่ต้องประมวลผลด้วยสภาพ Cold Start หรือ การเริ่มต้นระบบการทำงานของเครื่องคอมพิวเตอร์ใหม่ทั้งหมดโดยเปิดสวิตซ์ เป็นพาร์ทที่หลายคนในเวิร์คช็อปรู้สึกเหมือนกันว่าเป็นปัญหาคอขวดในการทดลองของเวิร์คชอปนี้ ในอนาคตหากจะมีการต่อยอดไปในระดับผลิตภัณฑ์ อาจจะต้องมีการปรับปรุงในมุมของ Architecture ยกใหญ่
มาสร้างพื้นที่จัดเก็บข้อมูลที่ใช้ร่วมกันสำหรับ Serverless Application ด้วย EFS/S3
อย่างที่บอกไปช่วงต้นว่าเวิร์คช็อปนี้สนุกเพราะเนื้อหาในเซสชั่นนี้ค่อนข้างตรงกับหัวข้อของเซสชั่น เรียกได้ว่าเป็นเวิร์คช็อปที่สนุกที่สุดเท่าที่เคยเข้าร่วม
บทความที่เกี่ยวข้อง
AWS Lambda คืออะไร? การแนะนำฟังก์ชันล่าสุดของ AWS (Thai)
[AWS re:Invent] Workshop : การเร่งพัฒนา API แบบ Serverless ด้วย AWS Lambda Powertools (Thai)
บทความต้นฉบับ
複数のAWS LambdaにAmazon EFSやAmazon S3などの共有ストレージを設定するワークショップに参加してきた #AWSreInvent (Japanese)