เกี่ยวกับ
Lambda-Instructor เป็นการปรับใช้การทดลองของอาจารย์ผู้สอนการฝังตัวข้อความที่มีขนาดใหญ่ใน AWS Lambda
อาจารย์ใหญ่ เป็นแบบจำลองที่สร้างโดยกลุ่ม NLP ของมหาวิทยาลัยฮ่องกงภายใต้ใบอนุญาต Apache-2.0 และทำงานได้ดีในงานดึงข้อมูล (เช่นการค้นหาเอกสารที่เกี่ยวข้องสำหรับประโยคที่กำหนด) ณ เดือนมิถุนายน-20123 ดูเหมือนว่าจะอยู่ในระดับหนึ่งด้วย การฝังตัวข้อความของ Openai-ADA-002 ในเกณฑ์มาตรฐานจำนวนมากบนกระดานผู้นำหน้ากอด
กรณีการใช้งานที่มีศักยภาพ:
- จับคู่กับการอนุมานในท้องถิ่น: สร้างการฝังตัวจำนวนมากพร้อมกับ ผู้สอนที่มีขนาดใหญ่ บนเครื่องจักรในพื้นที่ของคุณล่วงหน้า (เทียบกับการจ่ายเงินสำหรับ API เชิงพาณิชย์เช่น OpenAi แม้กระทั่งสำหรับการทดสอบ)
- ข้อมูลที่อยู่อาศัย: ปรับใช้ฟังก์ชั่นแลมบ์ดาในภูมิภาค AWS ทั่วโลกรวมถึงยุโรปและสหรัฐอเมริกา
- ความสามารถในการปรับขนาด: AWS แลมบ์ดาสเกลไม่ จำกัด อย่างแท้จริงโดยไม่ต้องใช้ค่าใช้จ่ายในการจัดการเซิร์ฟเวอร์
- การอนุมานการผลิตที่มีต้นทุนต่ำ: ด้วยการกำหนดราคาต่อการกำหนดราคาของ AWS Lambda เทียบกับการเรียกใช้เซิร์ฟเวอร์ 24/7
- ใช้กับฐานข้อมูลเวกเตอร์: เช่น Chromadb หรือ Pinecone
ประสิทธิภาพต้นทุนและข้อ จำกัด :
- Cold Start: ฟังก์ชั่นแลมบ์ดาเริ่มต้นเย็นประมาณ 150 วินาที (โดยมี ฐานผู้สอน ประมาณ 50s)
- การอนุมาน: คำขอติดต่อกันจะถูกประมวลผลในเวลาประมาณ 6 วินาทีต่อคำขอ (โดยมี ฐานผู้สอน ประมาณ 3 วินาที)
- สูงสุด โทเค็น: ผู้สอนมีขนาดใหญ่ ดูเหมือนว่าจะถูกต่อยอดที่ความยาวลำดับ 512 โทเค็น (แคลิฟอร์เนีย 380 คำ) ในขณะที่ ข้อความของ OpenAI-embedding-ADA-002 รองรับโทเค็นสูงถึง 8191 (6000 คำ)
- ราคา: AWS Lambda ราคาสามารถประมาณได้ที่:
- การกำหนดค่า:
- ภูมิภาค: EU-CENTRAL-1 (ยุโรป, แฟรงค์เฟิร์ต)
- ราคาแขน: $ 0.0000133334 สำหรับทุก ๆ GB วินาที
- คำขอ: $ 0.20 ต่อคำขอ 1M
- ขนาดหน่วยความจำ: 10240 MB
- การคำนวณ:
- ระยะเวลา: $ 0.0000133334 * 10,24 GB * 6 วินาที = 0.000819204096 / คำขอ
- คำขอ: $ 0.20 / 1m คำขอ = 0.0000002 / คำขอ
- ทั้งหมด = $ 0.0008194 / คำขอ
- ณ เดือนมิถุนายน 2566 นั้นมีราคาแพงกว่า ADA V2 ของ Openai ที่โทเค็น $ 0.0001/1K หลังจากลดราคา 75%
การปรับปรุงเพิ่มเติม: ต้นทุนและการเริ่มต้นเย็นอาจได้รับการปรับปรุงเพิ่มเติมด้วย AWS แลมบ์ดาพร้อมกันและแผนการออมทรัพย์คำนวณ AWS ตรวจสอบเครื่องคิดเลข AWS ที่คำขอ 1M ต่อเดือนสำหรับโครงการนี้
การปรับใช้
ข้อกำหนดเบื้องต้น
- ความรู้ทั่วไป AWS มีประโยชน์
- คุณต้องติดตั้ง Docker และ Git-LFS ในเครื่อง
- คุณต้องติดตั้ง AWS-SAM ในเครื่องและกำหนดค่าด้วยบัญชี AWS ของคุณ
- แนะนำให้ใช้สภาพแวดล้อมในท้องถิ่นที่ใช้ ARM (MAC M1/M2) หากคุณพบปัญหาลองปรับใช้ผ่านเครื่อง EC2 ที่ใช้ ARM (คู่มือด้านล่าง)
การตั้งค่า
เราจะดาวน์โหลดโมเดลผู้สอนในเครื่องพัสดุแอพในคอนเทนเนอร์ Docker และปรับใช้กับฟังก์ชั่น Lambda ที่ใช้ ARM เรากำลังใช้แขนเนื่องจากมีราคาต่ำกว่าด้วย AWS และกลับกลายเป็นว่าเร็วขึ้น
- โคลนที่เก็บ
git clone https://github.com/maxsagt/lambda-instructor.git
- โคลนโมเดลอาจารย์ผู้สอนไปยัง โฟลเดอร์
git lfs install ./app/model
git clone https://huggingface.co/hkunlp/instructor-large ./app/model
- สร้างคอนเทนเนอร์ Docker ด้วย aws-sam
sam build --cached --parallel
- ทดสอบในเครื่องด้วยตัวอย่างตัวอย่างใน event.json
sam local invoke -e event.json
- ปรับใช้กับ AWS โปรดทราบว่าผู้ใช้ AWS หรือความต้องการบทบาทของคุณ (ชั่วคราว) สิทธิ์ IAM สำหรับ AWS Cloudformation, Elastic Container Registry, S3, Lambda และ IAM
- เสร็จแล้ว. คุณจะพบฟังก์ชั่นแลมบ์ดาใน AWS ที่พร้อมสำหรับการกำหนดค่าเพิ่มเติม ตัวอย่างเช่น:
- ทดสอบฟังก์ชั่นแลมบ์ดาในคอนโซลแลมบ์ดา
- กำหนดค่า URL ฟังก์ชั่นแลมบ์ดาเพื่อใช้ฟังก์ชั่นแลมบ์ดาโดยตรงผ่าน URL
- เพิ่มเกตเวย์ API สำหรับฟังก์ชัน API ขั้นสูง
ตัวเลือก: ปรับใช้ผ่านเครื่อง EC2 ที่ใช้ ARM
หากคุณไม่มีเครื่องแขนอยู่ในมือหรือต้องการปรับใช้ภายใน AWS เพื่ออัปโหลดคอนเทนเนอร์ Docker ได้เร็วขึ้น
- สร้างอินสแตนซ์ AWS:
- ทดสอบบนเซิร์ฟเวอร์ Ubuntu 22.04 LTS (HVM), ประเภทปริมาณ SSD, AMI-0329D3839379BFD15, สถาปัตยกรรม: 64- บิต (แขน), ประเภทอินสแตนซ์: T4G.Medium, ที่เก็บ: 20GIB GP3
- ตรวจสอบให้แน่ใจว่า VPC ของคุณเป็นสาธารณะ
- เริ่มอินสแตนซ์
- คลิกที่อินสแตนซ์และเพิ่มบทบาท IAM ผ่านการกระทำ -> ความปลอดภัย บทบาทของ IAM ต้องการ IAM, S3, ECR, CloudFormation และ Lambda Access
- อัปโหลดที่เก็บไปยังอินสแตนซ์ AWS ระยะไกล:
git clone https://github.com/maxsagt/lambda-instructor.git
cd lambda-instructor
zip -r deployment.zip . -x ' ./app/model/* '
PUBLIC_IPv4_DNS=ec2-x-xx-xxx-xxx.eu-central-1.compute.amazonaws.com
scp -o StrictHostKeyChecking=no -i " ../my_key.pem " ./deployment.zip ubuntu@ $PUBLIC_IPv4_DNS :deployment.zip
- เข้าสู่ระบบอินสแตนซ์ของคุณและดำเนินการสคริปต์การปรับใช้ตัวอย่าง
ssh -o StrictHostKeyChecking=no -i " ../my_key.pem " ubuntu@ $PUBLIC_IPv4_DNS
sudo apt install unzip
unzip -o deployment.zip
chmod +x sample_deployment.sh
sudo bash -x sample_deployment.sh
- สร้างและปรับใช้ตามข้างบน หากคำสั่ง SAM ไม่ได้รับการยอมรับอ่านเอกสาร SAM ที่นี่
- อย่าลืมยกเลิกอินสแตนซ์หลังการใช้งาน
ข้อเสนอแนะ
ยินดีต้อนรับข้อเสนอแนะและการมีส่วนร่วม!