การเปลี่ยนกระบวนทัศน์การเรียนรู้ของเครื่องจักร (ML) มีมานานหลายทศวรรษ แต่ด้วยความพร้อมของความสามารถในการคำนวณที่ไม่มีที่สิ้นสุดแทบจะไม่เพิ่มจำนวนข้อมูลและความก้าวหน้าอย่างรวดเร็วของเทคโนโลยี ML ลูกค้าในอุตสาหกรรมต่าง ๆ กำลังใช้เทคโนโลยี ML อย่างรวดเร็ว
เมื่อไม่นานมานี้แอปพลิเคชัน AI แบบกำเนิดได้ดึงดูดความสนใจและจินตนาการของทุกคน เราอยู่ในจุดผันที่น่าตื่นเต้นอย่างแท้จริงในการยอมรับอย่างกว้างขวางของ ML และเราเชื่อว่าประสบการณ์และแอปพลิเคชันของลูกค้าทุกคนจะได้รับการคิดค้นใหม่ด้วย AI กำเนิด
Generative AI เป็นประเภทของ AI ที่สามารถสร้างเนื้อหาและแนวคิดใหม่ ๆ รวมถึงการสนทนาเรื่องราวรูปภาพวิดีโอและเพลง เช่นเดียวกับ AI ทั้งหมด Generative AI นั้นใช้พลังงานจากรุ่น ML ซึ่งเป็นรุ่นใหญ่ที่ได้รับการฝึกอบรมล่วงหน้าเกี่ยวกับข้อมูลที่กว้างใหญ่และเรียกว่าโมเดลพื้นฐาน (FMS)
ขนาดและลักษณะทั่วไปของ FMS ทำให้พวกเขาแตกต่างจากโมเดล ML แบบดั้งเดิมซึ่งโดยทั่วไปจะทำงานเฉพาะเช่นการวิเคราะห์ข้อความสำหรับความเชื่อมั่นการจำแนกภาพและแนวโน้มการพยากรณ์

ด้วยโมเดล ML แบบดั้งเดิมเพื่อให้บรรลุงานเฉพาะแต่ละงานคุณต้องรวบรวมข้อมูลที่มีป้ายกำกับฝึกอบรมแบบจำลองและปรับใช้โมเดลนั้น ด้วยโมเดลพื้นฐานแทนที่จะรวบรวมข้อมูลที่มีป้ายกำกับสำหรับแต่ละรุ่นและการฝึกอบรมหลายรุ่นคุณสามารถใช้ FM ที่ผ่านการฝึกอบรมมาก่อนเพื่อปรับงานต่างๆ นอกจากนี้คุณยังสามารถปรับแต่ง FMS เพื่อทำหน้าที่เฉพาะโดเมนที่แยกความแตกต่างให้กับธุรกิจของคุณโดยใช้ข้อมูลเพียงเล็กน้อยและการคำนวณที่จำเป็นในการฝึกอบรมแบบจำลองตั้งแต่เริ่มต้น
Generative AI มีศักยภาพที่จะขัดขวางอุตสาหกรรมหลายแห่งโดยการปฏิวัติวิธีการสร้างและบริโภคเนื้อหา การผลิตเนื้อหาต้นฉบับการสร้างรหัสการปรับปรุงการบริการลูกค้าและการสรุปเอกสารเป็นกรณีการใช้งานทั่วไปของ AI Generative
Amazon Sagemaker JumpStart ให้บริการรุ่นโอเพนซอร์ซที่ผ่านการฝึกอบรมมาก่อนสำหรับประเภทปัญหาที่หลากหลายเพื่อช่วยให้คุณเริ่มต้นด้วย ML คุณสามารถฝึกอบรมและปรับแต่งโมเดลเหล่านี้เพิ่มขึ้นก่อนการปรับใช้ JumpStart ยังมีเทมเพลตโซลูชันที่ตั้งค่าโครงสร้างพื้นฐานสำหรับกรณีการใช้งานทั่วไปและสมุดบันทึกตัวอย่างที่เรียกใช้งานได้สำหรับ ML กับ Amazon Sagemaker
ด้วยรุ่นที่ผ่านการฝึกอบรมมาก่อน 600 รุ่นที่มีอยู่และเติบโตทุกวัน Jumpstart ช่วยให้นักพัฒนาสามารถรวมเทคนิค ML ที่ทันสมัยอย่างรวดเร็วและง่ายดายเข้ากับเวิร์กโฟลว์การผลิตของพวกเขา คุณสามารถเข้าถึงรุ่นที่ผ่านการฝึกอบรมมาก่อนเทมเพลตโซลูชันและตัวอย่างผ่านหน้า Landing Page JumpStart ใน Amazon Sagemaker Studio คุณยังสามารถเข้าถึงรุ่น JumpStart โดยใช้ Sagemaker Python SDK สำหรับข้อมูลเกี่ยวกับวิธีการใช้โมเดล JumpStart โดยทางโปรแกรมดูใช้อัลกอริทึม Sagemaker JumpStart กับรุ่นที่ผ่านการฝึกอบรม
ในเดือนเมษายน 2566 AWS ได้เปิดตัว Amazon Bedrock ซึ่งเป็นวิธีการสร้างแอพที่ขับเคลื่อนด้วย AI แบบกำเนิดผ่านรุ่นที่ผ่านการฝึกอบรมมาก่อนจากสตาร์ทอัพรวมถึง AI21 Labs มานุษยวิทยาและความมั่นคง AI Amazon Bedrock ยังมีการเข้าถึงโมเดล Titan Foundation ซึ่งเป็นตระกูลของนางแบบที่ได้รับการฝึกอบรมภายใน บริษัท โดย AWS ด้วยประสบการณ์ที่ไม่มีเซิร์ฟเวอร์ของอเมซอนเบดคุณสามารถค้นหาโมเดลที่เหมาะสมสำหรับความต้องการของคุณเริ่มต้นอย่างรวดเร็วปรับแต่ง FMS แบบส่วนตัวด้วยข้อมูลของคุณเองและรวมและปรับใช้กับแอปพลิเคชันของคุณโดยใช้เครื่องมือ AWS และความสามารถที่คุณคุ้นเคย
ในโพสต์นี้เราแสดงวิธีการปรับใช้ภาพและข้อความ AI สร้างข้อความจาก JumpStart โดยใช้ AWS Cloud Development Kit (AWS CDK) AWS CDK เป็นกรอบการพัฒนาซอฟต์แวร์โอเพนซอร์ซเพื่อกำหนดทรัพยากรแอปพลิเคชันคลาวด์ของคุณโดยใช้ภาษาการเขียนโปรแกรมที่คุ้นเคยเช่น Python
เราใช้โมเดลการแพร่กระจายที่เสถียรสำหรับการสร้างภาพและโมเดล FLAN-T5-XL สำหรับการทำความเข้าใจภาษาธรรมชาติ (NLU) และการสร้างข้อความจากการกอดใบหน้าใน JumpStart
เว็บแอปพลิเคชันถูกสร้างขึ้นบน Streamlit ซึ่งเป็นไลบรารี Python โอเพนซอร์ซที่ทำให้ง่ายต่อการสร้างและแบ่งปันแอพเว็บที่สวยงามและกำหนดเองสำหรับ ML และวิทยาศาสตร์ข้อมูล เราโฮสต์เว็บแอปพลิเคชันโดยใช้ Amazon Elastic Container Service (Amazon ECS) กับ AWS Fargate และเข้าถึงได้ผ่านแอปพลิเคชันโหลดบัลแลนเซอร์ Fargate เป็นเทคโนโลยีที่คุณสามารถใช้กับ Amazon ECs เพื่อเรียกใช้คอนเทนเนอร์โดยไม่ต้องจัดการเซิร์ฟเวอร์หรือกลุ่มหรือเครื่องเสมือน จุดสิ้นสุดของรุ่น AI Generative ถูกเปิดตัวจาก JumpStart Images ใน Amazon Elastic Container Registry (Amazon ECR) ข้อมูลรุ่นถูกเก็บไว้ใน Amazon Simple Storage Service (Amazon S3) ในบัญชี JumpStart เว็บแอปพลิเคชันโต้ตอบกับรุ่นผ่าน Amazon API Gateway และ AWS Lambda ฟังก์ชั่นดังที่แสดงในแผนภาพต่อไปนี้

API Gateway ให้เว็บแอปพลิเคชันและไคลเอนต์อื่น ๆ เป็นส่วนต่อประสานมาตรฐานในขณะที่ป้องกันฟังก์ชั่นแลมบ์ดาที่เชื่อมต่อกับรุ่น สิ่งนี้ทำให้รหัสแอปพลิเคชันไคลเอนต์ง่ายขึ้นซึ่งใช้แบบจำลอง จุดสิ้นสุดของเกตเวย์ API สามารถเข้าถึงได้อย่างเปิดเผยในตัวอย่างนี้ทำให้มีความเป็นไปได้ที่จะขยายสถาปัตยกรรมนี้เพื่อใช้การควบคุมการเข้าถึง API ที่แตกต่างกันและรวมเข้ากับแอปพลิเคชันอื่น ๆ
ในโพสต์นี้เราแนะนำคุณผ่านขั้นตอนต่อไปนี้:
เราให้ภาพรวมของรหัสในโครงการนี้ในภาคผนวกเมื่อสิ้นสุดโพสต์นี้
คุณต้องมีข้อกำหนดเบื้องต้นดังต่อไปนี้:
คุณสามารถปรับใช้โครงสร้างพื้นฐานในบทช่วยสอนนี้จากคอมพิวเตอร์ในพื้นที่ของคุณหรือคุณสามารถใช้ AWS Cloud9 เป็นเวิร์กสเตชันการปรับใช้ของคุณ AWS Cloud9 มาพร้อมกับ AWS CLI, AWS CDK และ Docker หากคุณเลือกใช้ AWS Cloud9 ให้สร้างสภาพแวดล้อมจากคอนโซล AWS
ค่าใช้จ่ายโดยประมาณในการทำโพสต์นี้คือ $ 50 โดยสมมติว่าคุณปล่อยให้ทรัพยากรทำงานเป็นเวลา 8 ชั่วโมง ตรวจสอบให้แน่ใจว่าคุณลบทรัพยากรที่คุณสร้างในโพสต์นี้เพื่อหลีกเลี่ยงค่าใช้จ่ายอย่างต่อเนื่อง
หากคุณยังไม่มี AWS CLI บนเครื่องในเครื่องของคุณโปรดดูการติดตั้งหรืออัปเดต AWS CLI เวอร์ชันล่าสุดและกำหนดค่า AWS CLI
ติดตั้งชุดเครื่องมือ AWS CDK ทั่วโลกโดยใช้คำสั่ง Package Manager ต่อไปนี้:
npm install -g aws-cdk-lib@latest
เรียกใช้คำสั่งต่อไปนี้เพื่อตรวจสอบการติดตั้งที่ถูกต้องและพิมพ์หมายเลขเวอร์ชันของ AWS CDK:
cdk --version
ตรวจสอบให้แน่ใจว่าคุณติดตั้ง Docker บนเครื่องในเครื่องของคุณ ออกคำสั่งต่อไปนี้เพื่อตรวจสอบเวอร์ชัน:
docker --version
บนเครื่องในพื้นที่ของคุณ Clone the AWS CDK แอปพลิเคชันพร้อมคำสั่งต่อไปนี้:
git clone https://github.com/aws-samples/generative-ai-sagemaker-cdk-demo.git
นำทางไปยังโฟลเดอร์โครงการ:
cd generative-ai-sagemaker-cdk-demo
ก่อนที่เราจะปรับใช้แอปพลิเคชันให้ตรวจสอบโครงสร้างไดเรกทอรี:
.
├── LICENSE
├── README.md
├── app.py
├── cdk.json
├── code
│ ├── lambda_txt2img
│ │ └── txt2img.py
│ └── lambda_txt2nlu
│ └── txt2nlu.py
├── construct
│ └── sagemaker_endpoint_construct.py
├── images
│ ├── architecture.png
│ ├── ...
├── requirements-dev.txt
├── requirements.txt
├── source.bat
├── stack
│ ├── __init__.py
│ ├── generative_ai_demo_web_stack.py
│ ├── generative_ai_txt2img_sagemaker_stack.py
│ ├── generative_ai_txt2nlu_sagemaker_stack.py
│ └── generative_ai_vpc_network_stack.py
├── tests
│ ├── __init__.py
│ └── ...
└── web-app
├── Dockerfile
├── Home.py
├── configs.py
├── img
│ └── sagemaker.png
├── pages
│ ├── 2_Image_Generation.py
│ └── 3_Text_Generation.py
└── requirements.txt โฟลเดอร์ stack มีรหัสสำหรับแต่ละสแต็กในแอปพลิเคชัน AWS CDK โฟลเดอร์ code มีรหัสสำหรับฟังก์ชั่น Amazon Lambda ที่เก็บยังมีเว็บแอปพลิเคชันที่อยู่ภายใต้ web-app โฟลเดอร์
ไฟล์ cdk.json จะบอก AWS CDK Toolkit วิธีเรียกใช้แอปพลิเคชันของคุณ
แอปพลิเคชันนี้ได้รับการทดสอบในภูมิภาค us-east-1 แต่ควรทำงานในภูมิภาคใด ๆ ที่มีบริการที่จำเป็นและประเภทอินสแตนซ์การอนุมาน ml.g4dn.4xlarge ที่ระบุไว้ใน App.py
โครงการนี้ถูกตั้งค่าเหมือนโครงการ Python มาตรฐาน สร้างสภาพแวดล้อมเสมือนจริงของ Python โดยใช้รหัสต่อไปนี้:
python3 -m venv .venv
ใช้คำสั่งต่อไปนี้เพื่อเปิดใช้งานสภาพแวดล้อมเสมือนจริง:
source .venv/bin/activate
หากคุณใช้แพลตฟอร์ม Windows ให้เปิดใช้งานสภาพแวดล้อมเสมือนจริงดังนี้:
.venvScriptsactivate.bat
หลังจากเปิดใช้งานสภาพแวดล้อมเสมือนจริงแล้วอัพเกรด PIP เป็นเวอร์ชันล่าสุด:
python3 -m pip install --upgrade pip
ติดตั้งการพึ่งพาที่ต้องการ:
pip install -r requirements.txt
ก่อนที่คุณจะปรับใช้แอปพลิเคชัน AWS CDK ใด ๆ คุณจะต้องใช้พื้นที่ในบัญชีของคุณและภูมิภาคที่คุณกำลังปรับใช้ หากต้องการ bootstrap ในภูมิภาคเริ่มต้นของคุณออกคำสั่งต่อไปนี้:
cdk bootstrap
หากคุณต้องการปรับใช้ในบัญชีและภูมิภาคเฉพาะให้ออกคำสั่งต่อไปนี้:
cdk bootstrap aws://ACCOUNT-NUMBER/REGION
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่านี้เยี่ยมชมการเริ่มต้นใช้งานกับ AWS CDK
แอปพลิเคชัน AWS CDK มีหลายสแต็คดังแสดงในแผนภาพต่อไปนี้

คุณสามารถแสดงสแต็คในแอปพลิเคชัน CDK ของคุณด้วยคำสั่งต่อไปนี้:
cdk listคุณควรได้รับผลลัพธ์ต่อไปนี้:
GenerativeAiTxt2imgSagemakerStack
GenerativeAiTxt2nluSagemakerStack
GenerativeAiVpcNetworkStack
GenerativeAiDemoWebStack
คำสั่ง AWS CDK ที่มีประโยชน์อื่น ๆ :
cdk ls - แสดงรายการสแต็คทั้งหมดในแอพcdk synth - ปล่อยเทมเพลต AWS CloudFormation ที่สังเคราะห์ขึ้นcdk deploy - ปรับใช้สแต็กนี้ไปยังบัญชี AWS เริ่มต้นและภูมิภาคของคุณcdk diff - เปรียบเทียบสแต็กที่ปรับใช้กับสถานะปัจจุบันcdk docs - เปิดเอกสาร AWS CDKส่วนถัดไปแสดงวิธีการปรับใช้แอปพลิเคชัน AWS CDK
แอปพลิเคชัน AWS CDK จะถูกปรับใช้กับภูมิภาคเริ่มต้นตามการกำหนดค่าเวิร์กสเตชันของคุณ หากคุณต้องการบังคับให้การปรับใช้ในภูมิภาคเฉพาะให้ตั้งค่าตัวแปรสภาพแวดล้อม AWS_DEFAULT_REGION ของคุณตามลำดับ
ณ จุดนี้คุณสามารถปรับใช้แอปพลิเคชัน AWS CDK ก่อนอื่นคุณเปิดตัว VPC Network Stack:
cdk deploy GenerativeAiVpcNetworkStack
หากคุณได้รับแจ้งให้ป้อน y เพื่อดำเนินการปรับใช้ คุณควรเห็นรายการทรัพยากร AWS ที่ถูกจัดเตรียมไว้ในสแต็ก ขั้นตอนนี้ใช้เวลาประมาณ 3 นาทีจึงจะเสร็จสมบูรณ์
จากนั้นคุณเปิดเว็บแอปพลิเคชันสแต็ก:
cdk deploy GenerativeAiDemoWebStack
หลังจากวิเคราะห์สแต็ก AWS CDK จะแสดงรายการทรัพยากรในสแต็ก ป้อน y เพื่อดำเนินการต่อกับการปรับใช้ ขั้นตอนนี้ใช้เวลาประมาณ 5 นาที

หมายเหตุลง WebApplicationServiceURL จากเอาต์พุตตามที่คุณจะใช้ในภายหลัง นอกจากนี้คุณยังสามารถเรียกคืนได้ในภายหลังในคอนโซล CloudFormation ภายใต้เอาต์พุตสแต็ก GenerativeAiDemoWebStack
ตอนนี้เปิดสแต็กปลายทางรุ่น AI รุ่น AI:
cdk deploy GenerativeAiTxt2imgSagemakerStack
ขั้นตอนนี้ใช้เวลาประมาณ 8 นาที จุดสิ้นสุดของโมเดลการสร้างภาพถูกปรับใช้ตอนนี้เราสามารถใช้งานได้แล้ว
ตัวอย่างแรกแสดงให้เห็นถึงวิธีการใช้การแพร่กระจายที่เสถียรซึ่งเป็นเทคนิคการสร้างแบบจำลองการกำเนิดที่ทรงพลังซึ่งช่วยให้การสร้างภาพคุณภาพสูงจากข้อความแจ้งข้อความ
WebApplicationServiceURL จากผลลัพธ์ของ GenerativeAiDemoWebStack ในเบราว์เซอร์ของคุณ 
ในบานหน้าต่างการนำทางให้เลือก การสร้างภาพ
ชื่อ Sagemaker Endpoint และ API GW URL จะถูกเติมล่วงหน้า แต่คุณสามารถเปลี่ยนพรอมต์สำหรับคำอธิบายภาพได้หากคุณต้องการ
เลือก สร้างภาพ

แอปพลิเคชันจะโทรไปยังจุดสิ้นสุดของ Sagemaker ใช้เวลาสองสามวินาที รูปภาพที่มีเสน่ห์ในคำอธิบายภาพของคุณจะปรากฏขึ้น

ตัวอย่างที่สองมุ่งเน้นไปที่การใช้โมเดล FLAN-T5-XL ซึ่งเป็นรูปแบบพื้นฐานหรือรูปแบบภาษาขนาดใหญ่ (LLM) เพื่อให้ได้การเรียนรู้ในบริบทสำหรับการสร้างข้อความในขณะเดียวกันก็จัดการกับความเข้าใจภาษาธรรมชาติที่หลากหลาย (NLU) และงานการสร้างภาษาธรรมชาติ (NLG)
สภาพแวดล้อมบางอย่างอาจ จำกัด จำนวนจุดสิ้นสุดที่คุณสามารถเปิดได้ในแต่ละครั้ง หากเป็นกรณีนี้คุณสามารถเปิดจุดสิ้นสุดของ Sagemaker ทีละจุด หากต้องการหยุดจุดสิ้นสุดของ Sagemaker ในแอพ AWS CDK คุณต้องทำลายสแต็คปลายทางที่ปรับใช้และก่อนที่จะเปิดตัวสแต็คปลายทางอื่น หากต้องการลดจุดสิ้นสุดของรุ่น AI การสร้างภาพให้ออกคำสั่งต่อไปนี้:
cdk destroy GenerativeAiTxt2imgSagemakerStack
จากนั้นเปิดสแต็กปลายทางรุ่น AI รุ่น AI:
cdk deploy GenerativeAiTxt2nluSagemakerStack
ป้อน y ที่พรอมต์
หลังจากเปิดตัวสแต็กปลายทางรุ่นสร้างข้อความให้ทำตามขั้นตอนต่อไปนี้:

ด้านล่างบริบทคุณจะพบคำสั่ง prepopulated ในตัวเลือกเมนูแบบเลื่อนลง

นอกจากนี้คุณยังสามารถป้อนแบบสอบถามของคุณเองในฟิลด์ อินพุตแบบสอบถาม และเลือก สร้างการตอบกลับ

บนคอนโซล AWS CloudFormation ให้เลือก สแต็ค ในบานหน้าต่างนำทางเพื่อดูสแต็กที่ปรับใช้

บนคอนโซล Amazon ECS คุณสามารถเห็นกลุ่มในหน้า คลัสเตอร์

บนคอนโซล AWS Lambda คุณสามารถดูฟังก์ชั่นในหน้า ฟังก์ชั่น

บนคอนโซล API Gateway คุณสามารถดูจุดสิ้นสุดของเกตเวย์ API ในหน้า APIS

บนคอนโซล Sagemaker คุณสามารถดูจุดสิ้นสุดของรุ่นที่ปรับใช้ในหน้า จุดสิ้นสุด

เมื่อมีการเปิดตัวสแต็คพารามิเตอร์บางอย่างจะถูกสร้างขึ้น สิ่งเหล่านี้จะถูกเก็บไว้ในการจัดเก็บพารามิเตอร์ของ AWS Systems Manager หากต้องการดูพวกเขาให้เลือก ที่เก็บพารามิเตอร์ ในบานหน้าต่างการนำทางบนคอนโซล AWS Systems Manager

เพื่อหลีกเลี่ยงค่าใช้จ่ายที่ไม่จำเป็นทำความสะอาดโครงสร้างพื้นฐานทั้งหมดที่สร้างขึ้นด้วยคำสั่งต่อไปนี้บนเวิร์กสเตชันของคุณ:
cdk destroy --all
ป้อน y ที่พรอมต์ ขั้นตอนนี้ใช้เวลาประมาณ 10 นาที ตรวจสอบว่าทรัพยากรทั้งหมดถูกลบลงบนคอนโซลหรือไม่ นอกจากนี้ยังลบถังสินทรัพย์ S3 ที่สร้างขึ้นโดย AWS CDK บนคอนโซล Amazon S3 รวมถึงที่เก็บสินทรัพย์ใน Amazon ECR
ดังที่แสดงในโพสต์นี้คุณสามารถใช้ AWS CDK เพื่อปรับใช้รุ่น AI Generative ใน JumpStart เราแสดงตัวอย่างการสร้างภาพและตัวอย่างการสร้างข้อความโดยใช้ส่วนต่อประสานผู้ใช้ที่ขับเคลื่อนโดย Streamlit, Lambda และ API Gateway
ตอนนี้คุณสามารถสร้างโครงการ AI แบบกำเนิดของคุณโดยใช้โมเดล AI ที่ผ่านการฝึกอบรมมาแล้วใน JumpStart นอกจากนี้คุณยังสามารถขยายโครงการนี้เพื่อปรับแต่งโมเดลรากฐานสำหรับกรณีการใช้งานของคุณและการควบคุมการเข้าถึงจุดสิ้นสุดของเกตเวย์ API
เราขอเชิญคุณทดสอบโซลูชันและมีส่วนร่วมในโครงการใน GitHub
รหัสตัวอย่างนี้มีให้ภายใต้ใบอนุญาต MIT ที่แก้ไขแล้ว ดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม นอกจากนี้ตรวจสอบใบอนุญาตที่เกี่ยวข้องสำหรับการแพร่กระจายที่มั่นคงและโมเดล Flan-T5-XL บนใบหน้ากอด
Hantzley Tauckoor เป็นผู้นำสถาปัตยกรรม APJ Partner Solutions ซึ่งตั้งอยู่ในสิงคโปร์ เขามีประสบการณ์ 20 ปีในอุตสาหกรรม ICT ซึ่งประกอบไปด้วยพื้นที่การทำงานที่หลากหลายรวมถึงสถาปัตยกรรมโซลูชั่นการพัฒนาธุรกิจกลยุทธ์การขายการให้คำปรึกษาและความเป็นผู้นำ เขาเป็นผู้นำทีมสถาปนิกโซลูชั่นอาวุโสที่ช่วยให้พันธมิตรสามารถพัฒนาโซลูชั่นร่วมกันสร้างความสามารถทางเทคนิคและนำพวกเขาผ่านขั้นตอนการดำเนินการในขณะที่ลูกค้าอพยพและปรับปรุงแอพพลิเคชั่นของพวกเขาให้กับ AWS นอกบ้านเขาสนุกกับการใช้เวลากับครอบครัวดูหนังและเดินป่า
Kwonyul Choi เป็น CTO ที่ Babitalk ซึ่งเป็นแพลตฟอร์มการดูแลความงามของเกาหลีซึ่งตั้งอยู่ในกรุงโซล ก่อนหน้าบทบาทนี้ Kownyul ทำงานเป็นวิศวกรพัฒนาซอฟต์แวร์ที่ AWS โดยมุ่งเน้นไปที่ AWS CDK และ Amazon Sagemaker
Arunprasath Shankar เป็นสถาปนิกโซลูชั่นผู้เชี่ยวชาญ AI/ML อาวุโสด้วย AWS ช่วยให้ลูกค้าทั่วโลกขยายโซลูชั่น AI ของพวกเขาได้อย่างมีประสิทธิภาพและมีประสิทธิภาพในคลาวด์ ในเวลาว่างของเขาอรุณสนุกกับการดูภาพยนตร์ไซไฟและฟังดนตรีคลาสสิก
Satish Upreti เป็นผู้นำการย้ายถิ่นและการรักษาความปลอดภัย SME ในองค์กรพันธมิตรใน APJ Satish มีประสบการณ์ 20 ปีซึ่งประกอบไปด้วยคลาวด์ส่วนตัวในสถานที่และเทคโนโลยีคลาวด์สาธารณะ นับตั้งแต่เข้าร่วม AWS ในเดือนสิงหาคม 2563 ในฐานะผู้เชี่ยวชาญด้านการย้ายถิ่นเขาให้คำแนะนำทางเทคนิคและการสนับสนุนอย่างกว้างขวางแก่พันธมิตร AWS เพื่อวางแผนและดำเนินการอพยพที่ซับซ้อน
ในส่วนนี้เราให้ภาพรวมของรหัสในโครงการนี้
แอปพลิเคชัน AWS CDK
แอปพลิเคชัน AWS CDK หลักมีอยู่ในไฟล์ app.py ในไดเรกทอรีรูท โครงการประกอบด้วยหลายสแต็คดังนั้นเราต้องนำเข้าสแต็ก:
#!/usr/bin/env python3
import aws_cdk as cdk
from stack . generative_ai_vpc_network_stack import GenerativeAiVpcNetworkStack
from stack . generative_ai_demo_web_stack import GenerativeAiDemoWebStack
from stack . generative_ai_txt2nlu_sagemaker_stack import GenerativeAiTxt2nluSagemakerStack
from stack . generative_ai_txt2img_sagemaker_stack import GenerativeAiTxt2imgSagemakerStackเรากำหนดโมเดล AI กำเนิดของเราและรับ URIs ที่เกี่ยวข้องจาก Sagemaker:
from script . sagemaker_uri import *
import boto3
region_name = boto3 . Session (). region_name
env = { "region" : region_name }
#Text to Image model parameters
TXT2IMG_MODEL_ID = "model-txt2img-stabilityai-stable-diffusion-v2-1-base"
TXT2IMG_INFERENCE_INSTANCE_TYPE = "ml.g4dn.4xlarge"
TXT2IMG_MODEL_TASK_TYPE = "txt2img"
TXT2IMG_MODEL_INFO = get_sagemaker_uris ( model_id = TXT2IMG_MODEL_ID ,
model_task_type = TXT2IMG_MODEL_TASK_TYPE ,
instance_type = TXT2IMG_INFERENCE_INSTANCE_TYPE ,
region_name = region_name )
#Text to NLU image model parameters
TXT2NLU_MODEL_ID = "huggingface-text2text-flan-t5-xl"
TXT2NLU_INFERENCE_INSTANCE_TYPE = "ml.g4dn.4xlarge"
TXT2NLU_MODEL_TASK_TYPE = "text2text"
TXT2NLU_MODEL_INFO = get_sagemaker_uris ( model_id = TXT2NLU_MODEL_ID ,
model_task_type = TXT2NLU_MODEL_TASK_TYPE ,
instance_type = TXT2NLU_INFERENCE_INSTANCE_TYPE ,
region_name = region_name ) ฟังก์ชั่น get_sagemaker_uris ดึงข้อมูลโมเดลทั้งหมดจาก Amazon Jumpstart ดูสคริปต์/sagemaker_uri.py
จากนั้นเรายกตัวอย่างสแต็ค:
app = cdk . App ()
network_stack = GenerativeAiVpcNetworkStack ( app , "GenerativeAiVpcNetworkStack" , env = env )
GenerativeAiDemoWebStack ( app , "GenerativeAiDemoWebStack" , vpc = network_stack . vpc , env = env )
GenerativeAiTxt2nluSagemakerStack ( app , "GenerativeAiTxt2nluSagemakerStack" , env = env , model_info = TXT2NLU_MODEL_INFO )
GenerativeAiTxt2imgSagemakerStack ( app , "GenerativeAiTxt2imgSagemakerStack" , env = env , model_info = TXT2IMG_MODEL_INFO )
app . synth () สแต็คแรกที่เปิดตัวคือ VPC Stack, GenerativeAiVpcNetworkStack Web Application Stack, GenerativeAiDemoWebStack ขึ้นอยู่กับ VPC Stack การพึ่งพาทำผ่านพารามิเตอร์ที่ผ่าน vpc=network_stack.vpc
ดู App.py สำหรับรหัสเต็ม
VPC Network Stack
ในสแต็ค GenerativeAiVpcNetworkStack เราสร้าง VPC ด้วยซับเน็ตสาธารณะและเครือข่ายย่อยส่วนตัวที่ครอบคลุมในสองโซนความพร้อมใช้งาน (AZs):
self . output_vpc = ec2 . Vpc ( self , "VPC" ,
nat_gateways = 1 ,
ip_addresses = ec2 . IpAddresses . cidr ( "10.0.0.0/16" ),
max_azs = 2 ,
subnet_configuration = [
ec2 . SubnetConfiguration ( name = "public" , subnet_type = ec2 . SubnetType . PUBLIC , cidr_mask = 24 ),
ec2 . SubnetConfiguration ( name = "private" , subnet_type = ec2 . SubnetType . PRIVATE_WITH_EGRESS , cidr_mask = 24 )
]
)ดู /stack/generative_ai_vpc_network_stack.py สำหรับรหัสเต็ม
การสาธิตเว็บแอปพลิเคชันสแต็ก
ในสแต็ค GenerativeAiDemoWebStack เราเปิดใช้งานฟังก์ชั่นแลมบ์ดาและจุดสิ้นสุดของเกตเวย์ Amazon API ที่เกี่ยวข้องซึ่งเว็บแอปพลิเคชันโต้ตอบกับจุดสิ้นสุดของโมเดล Sagemaker ดูตัวอย่างโค้ดต่อไปนี้:
# Defines an AWS Lambda function for Image Generation service
lambda_txt2img = _lambda . Function (
self , "lambda_txt2img" ,
runtime = _lambda . Runtime . PYTHON_3_9 ,
code = _lambda . Code . from_asset ( "code/lambda_txt2img" ),
handler = "txt2img.lambda_handler" ,
role = role ,
timeout = Duration . seconds ( 180 ),
memory_size = 512 ,
vpc_subnets = ec2 . SubnetSelection (
subnet_type = ec2 . SubnetType . PRIVATE_WITH_EGRESS
),
vpc = vpc
)
# Defines an Amazon API Gateway endpoint for Image Generation service
txt2img_apigw_endpoint = apigw . LambdaRestApi (
self , "txt2img_apigw_endpoint" ,
handler = lambda_txt2img
)เว็บแอปพลิเคชันเป็นคอนเทนเนอร์และโฮสต์ใน Amazon ECS กับ Fargate ดูตัวอย่างโค้ดต่อไปนี้:
# Create Fargate service
fargate_service = ecs_patterns . ApplicationLoadBalancedFargateService (
self , "WebApplication" ,
cluster = cluster , # Required
cpu = 2048 , # Default is 256 (512 is 0.5 vCPU, 2048 is 2 vCPU)
desired_count = 1 , # Default is 1
task_image_options = ecs_patterns . ApplicationLoadBalancedTaskImageOptions (
image = image ,
container_port = 8501 ,
),
#load_balancer_name="gen-ai-demo",
memory_limit_mib = 4096 , # Default is 512
public_load_balancer = True ) # Default is Trueดู /stack/generative_ai_demo_web_stack.py สำหรับรหัสเต็ม
การสร้างภาพ Sagemaker Model endpoint endpoint
สแต็ค GenerativeAiTxt2imgSagemakerStack สร้างจุดสิ้นสุดรุ่นการสร้างภาพจาก SAGEMAKER JUMPSTART และจัดเก็บชื่อจุดสิ้นสุดในการจัดเก็บพารามิเตอร์ AWS Systems Manager พารามิเตอร์นี้จะถูกใช้โดยเว็บแอปพลิเคชัน ดูรหัสต่อไปนี้:
endpoint = SageMakerEndpointConstruct ( self , "TXT2IMG" ,
project_prefix = "GenerativeAiDemo" ,
role_arn = role . role_arn ,
model_name = "StableDiffusionText2Img" ,
model_bucket_name = model_info [ "model_bucket_name" ],
model_bucket_key = model_info [ "model_bucket_key" ],
model_docker_image = model_info [ "model_docker_image" ],
variant_name = "AllTraffic" ,
variant_weight = 1 ,
instance_count = 1 ,
instance_type = model_info [ "instance_type" ],
environment = {
"MMS_MAX_RESPONSE_SIZE" : "20000000" ,
"SAGEMAKER_CONTAINER_LOG_LEVEL" : "20" ,
"SAGEMAKER_PROGRAM" : "inference.py" ,
"SAGEMAKER_REGION" : model_info [ "region_name" ],
"SAGEMAKER_SUBMIT_DIRECTORY" : "/opt/ml/model/code" ,
},
deploy_enable = True
)
ssm . StringParameter ( self , "txt2img_sm_endpoint" , parameter_name = "txt2img_sm_endpoint" , string_value = endpoint . endpoint_name )ดู /stack/generative_ai_txt2img_sagemaker_stack.py สำหรับรหัสเต็ม
NLU และการสร้างข้อความ Sagemaker Model endpoint endpoint stack
สแต็ค GenerativeAiTxt2nluSagemakerStack สร้างจุดสิ้นสุดรุ่น NLU และการสร้างข้อความจาก JumpStart และจัดเก็บชื่อจุดสิ้นสุดในการจัดเก็บพารามิเตอร์ Systems Manager พารามิเตอร์นี้จะถูกใช้โดยเว็บแอปพลิเคชัน ดูรหัสต่อไปนี้:
endpoint = SageMakerEndpointConstruct ( self , "TXT2NLU" ,
project_prefix = "GenerativeAiDemo" ,
role_arn = role . role_arn ,
model_name = "HuggingfaceText2TextFlan" ,
model_bucket_name = model_info [ "model_bucket_name" ],
model_bucket_key = model_info [ "model_bucket_key" ],
model_docker_image = model_info [ "model_docker_image" ],
variant_name = "AllTraffic" ,
variant_weight = 1 ,
instance_count = 1 ,
instance_type = model_info [ "instance_type" ],
environment = {
"MODEL_CACHE_ROOT" : "/opt/ml/model" ,
"SAGEMAKER_ENV" : "1" ,
"SAGEMAKER_MODEL_SERVER_TIMEOUT" : "3600" ,
"SAGEMAKER_MODEL_SERVER_WORKERS" : "1" ,
"SAGEMAKER_PROGRAM" : "inference.py" ,
"SAGEMAKER_SUBMIT_DIRECTORY" : "/opt/ml/model/code/" ,
"TS_DEFAULT_WORKERS_PER_MODEL" : "1"
},
deploy_enable = True
)
ssm . StringParameter ( self , "txt2nlu_sm_endpoint" , parameter_name = "txt2nlu_sm_endpoint" , string_value = endpoint . endpoint_name )ดู /stack/generative_ai_txt2nlu_sagemaker_stack.py สำหรับรหัสเต็ม
เว็บแอปพลิเคชัน
เว็บแอปพลิเคชันอยู่ในไดเรกทอรี /เว็บแอป เป็นแอปพลิเคชั่น Streamlit ที่มีการบรรจุตาม DockerFile:
FROM --platform=linux/x86_64 python:3.9
EXPOSE 8501
WORKDIR /app
COPY requirements.txt ./requirements.txt
RUN pip3 install -r requirements.txt
COPY . .
CMD streamlit run Home.py
--server.headless true
--browser.serverAddress= "0.0.0.0"
--server.enableCORS false
--browser.gatherUsageStats falseหากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Streamlit ดูเอกสารประกอบ