Um
Lambda-Instructor ist eine experimentelle Bereitstellung des Text-Ausbilders für Text-Embedding für AWS Lambda.
Ausbilder-Large ist ein Modell, das von der NLP-Gruppe der Universität von Hongkong unter der Lizenz Apache-2.0 erstellt wurde und bei Abrufaufgaben eine gute Leistung erbringt (dh das Finden von Dokumenten für einen bestimmten Satz). Ab Juni 2023 scheint es auf zahlreichen Benchmarks auf der Rangliste der Umarmung auf einem Niveau zu sein.
Potenzielle Anwendungsfälle:
- Kombination mit lokaler Schlussfolgerung: Generieren Sie eine große Anzahl von Einbettungen mit Ausbilder auf Ihrer lokalen Maschine im Voraus (gegenüber der Bezahlung von kommerziellen APIs wie OpenAIs sogar zum Testen).
- Datenresidenz: Bereitstellung der Lambda -Funktion in globalen AWS -Regionen wie Europa und den USA.
- Skalierbarkeit: AWS Lambda skaliert praktisch unbegrenzt, ohne den Overhead der Managing -Server.
- Niedrigpreiswerte Produktionsinferenz: Mit AWS Lambdas pro-Request-Preisen im Vergleich zu einem Server rund um die Uhr.
- Verwendung mit Vektor -Datenbanken: wie Chromadb oder Tinecone.
Leistung, Kosten und Einschränkungen:
- Kaltstart: Die Lambda-Funktion hat einen kalten Start von ca. 150 Sekunden (mit Ausbilderbasis etwa 50er Jahre).
- Inferenz: Die aufeinanderfolgende Anfrage wird in etwa 6 Sekunden pro Anfrage (mit Ausbilderbasis ca. 3 Sekunden) bearbeitet.
- Max. Token: Ausbilder-Large scheint mit einer Sequenzlänge von 512 Token (ca. 380 Wörtern) begrenzt zu werden, während Openais Text-Embedding-ada-ada-002 bis zu 8191 Token (ca. 6000 Wörter) unterstützt.
- Kosten: Die AWS -Lambda -Kosten können geschätzt werden auf:
- Konfiguration:
- Region: EU-Central-1 (Europa, Frankfurt)
- Armpreis: $ 0.0000133334 für jeden GB-Sekunde
- Anfragen: $ 0,20 pro 1 -m -Anfragen
- Speichergröße: 10240 MB
- Berechnung:
- Dauer: $ 0,0000133334 * 10,24 GB * 6 Sekunden = 0,000819204096 / Anfrage
- Anfragen: $ 0.20 / 1m Anfragen = 0,0000002 / Anfragen
- Gesamt = $ 0,0008194 / Anfrage
- Ab Juni 2023 ist dies teurer als das Openai -Ada V2 bei 0,0001/1K -Token nach ihrer Preissenkung um 75%.
Weitere Verbesserungen: Kosten und Kaltanfang könnten mit AWS Lambda -Bereitstellung und AWS -Rechensparplänen weiter verbessert werden. Schauen Sie sich auch den AWS -Taschenrechner für dieses Projekt mit 1M Anfragen pro Monat an.
Einsatz
Voraussetzungen
- Allgemeines AWS -Wissen ist hilfreich.
- Sie müssen Docker und Git-LFS lokal installieren lassen.
- Sie müssen AWS-SAM lokal installiert und mit Ihrem AWS-Konto konfiguriert werden.
- Eine armbasierte lokale Umgebung wird empfohlen (MAC M1/M2). Wenn Sie Probleme treffen, versuchen Sie, über eine ARM-basierte EC2-Maschine (Anleitung unten) bereitzustellen.
Aufstellen
Wir werden das Lehrermodell lokal herunterladen, die App in einem Docker-Container verpacken und es in einer ARM-basierten Lambda-Funktion bereitstellen. Wir verwenden Arm, da es bei AWS niedriger ist und sich als schneller herausstellte.
- Klonen Sie das Repository
git clone https://github.com/maxsagt/lambda-instructor.git
- Klon das Lehrer-Large-Modell zum Ordner ./app/model (siehe https://huggingface.co/hkunlp/instructor-large?clone=true)
git lfs install ./app/model
git clone https://huggingface.co/hkunlp/instructor-large ./app/model
- Bauen Sie den Docker-Container mit AWS-SAM auf
sam build --cached --parallel
- Testen Sie lokal mit der Musternutzlast im Event.json.
sam local invoke -e event.json
- In AWS bereitstellen. Beachten Sie, dass Ihr AWS -Benutzer oder Ihre Rollenanforderungen (vorübergehende) IAM -Berechtigungen für AWS CloudFormation, Elastic Container Registry, S3, Lambda und IAM.
- Erledigt. Sie finden eine Lambda -Funktion in AWS, die für die weitere Konfiguration bereit ist. Zum Beispiel:
- Testen Sie die Lambda -Funktion in der Lambda -Konsole.
- Konfigurieren Sie eine Lambda -Funktions -URL, um die Lambda -Funktion direkt über eine URL zu verwenden.
- Fügen Sie ein API -Gateway für fortgeschrittenere API -Funktionen hinzu.
Optional: Bereitstellung über eine ARM-basierte EC2-Maschine.
Wenn Sie keine ARM -Maschine zur Hand haben oder innerhalb AWS für schnelleres Hochladen des Docker -Containers bereitstellen möchten.
- Erstellen Sie eine AWS -Instanz:
- Getestet auf Ubuntu Server 22.04 LTS (HVM), SSD-Volumentyp, AMI-0329D3839379BFD15, Architektur: 64-Bit (ARM), Instanztyp: T4G.Medium, Speicherung: 20GIB GP3.
- Stellen Sie sicher, dass Ihr VPC öffentlich ist.
- Starten Sie die Instanz.
- Klicken Sie auf die Instanz und fügen Sie eine IAM -Rolle über Aktionen -> Sicherheit hinzu. Die IAM -Rolle benötigt IAM, S3, ECR, CloudFormation und Lambda Access.
- Upload Repository in Remote AWS -Instanz:
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
- Melden Sie sich bei Ihrer Instanz an und führen Sie das Beispielbereitstellungsskript aus.
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
- Erstellen und bereitstellen nach oben. Wenn der Befehl sam nicht erkannt wird, lesen Sie die SAM -Dokumentation hier.
- Vergessen Sie nicht, die Instanz nach dem Gebrauch zu beenden.
Rückmeldung
Feedback und Beiträge sind willkommen!