เราอยู่ในช่วงเวลาที่น่าตื่นเต้น พร้อมประกาศเกี่ยวกับเทคโนโลยีล้ำสมัยทุกสัปดาห์ OpenAI เพิ่งเปิดตัวโมเดลข้อความเป็นรูปภาพที่ทันสมัย DALLE 2
มีเพียงไม่กี่คนเท่านั้นที่สามารถเข้าถึงระบบ AI ใหม่ที่สามารถสร้างกราฟิกที่สมจริงจากคำอธิบายภาษาธรรมชาติได้ ยังคงปิดให้บริการ
จากนั้น AI ที่มีความเสถียรก็ปล่อย การแพร่กระจายที่เสถียร โมเดลซึ่งเป็นตัวแปรโอเพ่นซอร์สของ DALLE2 การเปิดตัวครั้งนี้ได้เปลี่ยนแปลงทุกอย่าง ผู้คนทั่วอินเทอร์เน็ตเผยแพร่ผลงานอย่างรวดเร็วและรู้สึกประหลาดใจกับงานศิลปะที่เหมือนจริง
การแพร่กระจายที่เสถียรคืออะไร?
การแพร่กระจายที่เสถียร เป็นโมเดลการเรียนรู้ของเครื่องที่สามารถสร้างรูปภาพจากข้อความ เปลี่ยนรูปภาพตามข้อความ และกรอกรายละเอียดบนรูปภาพที่มีความละเอียดต่ำหรือรายละเอียดต่ำ
ได้รับการฝึกอบรมเกี่ยวกับภาพถ่ายหลายพันล้านภาพและสามารถให้ผลลัพธ์เทียบเท่ากับ DALL-E2 และ กลางการเดินทาง. ความเสถียร AI คิดค้นขึ้นและเผยแพร่ต่อสาธารณะเมื่อวันที่ 22 สิงหาคม พ.ศ. 2022
แต่ด้วยทรัพยากรการคำนวณในท้องถิ่นที่จำกัด โมเดล Stable Diffusion ใช้เวลานานในการสร้างภาพคุณภาพสูง การรันโมเดลออนไลน์โดยใช้ผู้ให้บริการระบบคลาวด์ทำให้เรามีทรัพยากรการคำนวณที่แทบจะไม่มีที่สิ้นสุด และช่วยให้เราได้ผลลัพธ์ที่ยอดเยี่ยมได้เร็วกว่ามาก
การโฮสต์โมเดลเป็นไมโครเซอร์วิสยังช่วยให้แอปสร้างสรรค์อื่นๆ สามารถใช้ศักยภาพของโมเดลได้ง่ายขึ้นโดยไม่ต้องจัดการกับความซับซ้อนของการรันโมเดล ML ทางออนไลน์
ในโพสต์นี้ เราจะพยายามสาธิตวิธีพัฒนาโมเดลการแพร่กระจายที่เสถียรและปรับใช้กับ AWS
สร้างและปรับใช้การแพร่กระจายที่เสถียร
เบนโตะML และ Amazon Web Services EC2 เป็นสองตัวเลือกสำหรับการโฮสต์โมเดล Stable Diffusion ทางออนไลน์ BentoML เป็นเฟรมเวิร์กโอเพนซอร์สสำหรับการปรับขนาด เรียนรู้เครื่อง บริการ ด้วย BentoML เราจะสร้างบริการกระจายที่เชื่อถือได้และปรับใช้กับ AWS EC2
การเตรียมสภาพแวดล้อมและดาวน์โหลดโมเดลการแพร่กระจายที่เสถียร
ติดตั้งข้อกำหนดและโคลนที่เก็บ
คุณสามารถเลือกและดาวน์โหลดโมเดล Stable Diffusion Single precision เหมาะสำหรับ CPU หรือ GPU ที่มี VRAM มากกว่า 10GB ความแม่นยำครึ่งหนึ่งเหมาะอย่างยิ่งสำหรับ GPU ที่มี VRAM น้อยกว่า 10GB
การสร้างเสถียรภาพการแพร่กระจาย
เราจะสร้างบริการ BentoML เพื่อรองรับโมเดลเบื้องหลังa RESTful API. ตัวอย่างต่อไปนี้ใช้โมเดลความแม่นยำเดียวสำหรับการคาดการณ์และโมดูล service.py เพื่อเชื่อมต่อบริการกับตรรกะทางธุรกิจ เราสามารถเปิดเผยฟังก์ชันต่างๆ เป็น API ได้โดยการแท็กด้วย @svc.api
นอกจากนี้ เราสามารถกำหนดประเภทอินพุตและเอาต์พุตของ API ในพารามิเตอร์ได้ ตัวอย่างเช่น ปลายทาง txt2img รับอินพุต JSON และสร้างเอาต์พุตอิมเมจ ในขณะที่ปลายทาง img2img ยอมรับอิมเมจและอินพุต JSON และส่งคืนเอาต์พุตอิมเมจ
StableDiffusionRunnable กำหนดตรรกะการอนุมานที่จำเป็น runnable รับผิดชอบในการรันเมธอด txt2img ของโมเดลและส่งอินพุตที่เกี่ยวข้อง สำหรับการรันตรรกะการอนุมานแบบจำลองใน API นั้น Runner แบบกำหนดเองจะถูกสร้างขึ้นจาก StableDiffusionRunnable
จากนั้น ใช้คำสั่งต่อไปนี้เพื่อเริ่มบริการ BentoML สำหรับการทดสอบ ทำงานในพื้นที่ แบบจำลองการแพร่กระจายที่เสถียร การอนุมานเกี่ยวกับซีพียูค่อนข้างช้า คำขอแต่ละรายการจะใช้เวลาประมาณ 5 นาทีในการดำเนินการ
ข้อความเป็นรูปภาพ
เอาต์พุตข้อความเป็นรูปภาพ
ไฟล์ bentofile.yaml กำหนดไฟล์และการอ้างอิงที่จำเป็น
ใช้คำสั่งด้านล่างเพื่อสร้างเบนโตะ Bento คือรูปแบบการแจกจ่ายสำหรับบริการ BentoML เป็นไฟล์เก็บถาวรในตัวเองที่มีข้อมูลและการกำหนดค่าทั้งหมดที่จำเป็นในการเริ่มบริการ
เบนโตะ Stable Diffusion เสร็จเรียบร้อยแล้ว หากคุณไม่สามารถทำเบนโตะได้อย่างถูกต้อง ก็ไม่ต้องตกใจ คุณสามารถดาวน์โหลดโมเดลที่สร้างไว้ล่วงหน้าได้โดยใช้คำสั่งที่แสดงในส่วนถัดไป
โมเดลก่อนสร้าง
ต่อไปนี้เป็นรุ่นก่อนสร้าง:
ปรับใช้โมเดลการแพร่กระจายที่เสถียรกับ EC2
ในการปรับใช้เบนโตะกับ EC2 เราจะใช้ bentoctl bentoctl สามารถให้คุณปรับใช้ bentos ของคุณกับอะไรก็ได้ แพลตฟอร์มคลาวด์ โดยใช้ Terraform ในการสร้างและใช้ไฟล์ Terraform ให้ติดตั้งตัวดำเนินการ AWS EC2
ในไฟล์ config.yaml การทำให้ใช้งานได้ มีการกำหนดค่าการทำให้ใช้งานได้แล้ว โปรดอย่าลังเลที่จะแก้ไขตามความต้องการของคุณ Bento ถูกปรับใช้โดยค่าเริ่มต้นบนโฮสต์ g4dn.xlarge ด้วย การเรียนรู้ลึก ๆ AMI GPU PyTorch 1.12.0 (Ubuntu 20.04) AMI บนภูมิภาค us-west-1
สร้างไฟล์ Terraform ทันที สร้างอิมเมจ Docker และอัปโหลดไปยัง AWS ECR การอัปโหลดรูปภาพอาจใช้เวลานาน ทั้งนี้ขึ้นอยู่กับแบนด์วิดท์ของคุณ ในการปรับใช้เบนโตะกับ AWS EC2 ให้ใช้ไฟล์ Terraform
ในการเข้าถึง Swagger UI ให้เชื่อมต่อกับคอนโซล EC2 และเปิดที่อยู่ IP สาธารณะในเบราว์เซอร์ สุดท้าย หากไม่ต้องการใช้บริการ Stable Diffusion BentoML อีกต่อไป ให้ลบการปรับใช้
สรุป
คุณควรจะสามารถเห็นได้ว่า SD และรุ่นที่ใช้ร่วมกันนั้นน่าทึ่งและทรงพลังเพียงใด เวลาจะบอกได้ว่าเราจะทำซ้ำแนวคิดนี้ต่อไปหรือก้าวไปสู่แนวทางที่ซับซ้อนยิ่งขึ้น
อย่างไรก็ตาม ขณะนี้มีความคิดริเริ่มในการฝึกอบรมโมเดลที่ใหญ่กว่าด้วยการปรับเปลี่ยนเพื่อให้เข้าใจสภาพแวดล้อมและคำแนะนำได้ดีขึ้น เราพยายามพัฒนาบริการ Stable Diffusion โดยใช้ BentoML และปรับใช้กับ AWS EC2
เราสามารถเรียกใช้โมเดล Stable Diffusion บนฮาร์ดแวร์ที่ทรงพลังกว่า สร้างรูปภาพที่มีความหน่วงแฝงต่ำ และขยายได้มากกว่าคอมพิวเตอร์เครื่องเดียวด้วยการปรับใช้บริการบน AWS EC2
เขียนความเห็น