について
Lambda-Instructorは、 AWS Lambdaでのテキスト埋め込みモデルのインストラクターと驚異の実験的な展開です。
インストラクター・ラージは、香港大学のNLPグループによってApache-2.0ライセンスの下で構築されたモデルであり、検索タスク(つまり、特定の文の関連文書を見つける)でうまく機能します。 2023年6月の時点で、Hugging Face Leaderboardの多数のベンチマークにわたってOpenaiのテキスト埋め込み型ADA-002があるレベルにあるようです。
潜在的なユースケース:
- ローカル推論とのペア:ローカルマシンにインストラクターとlargeを備えた多数の埋め込みを事前に生成します(または、テスト用のOpenaiなどの商用APIの支払いを行います)。
- データレジデンシー:ヨーロッパや米国を含む世界のAWS地域にラムダ機能を展開します。
- スケーラビリティ: AWS Lambdaは、サーバーの管理のオーバーヘッドなしで、事実上無制限にスケーリングします。
- 低コストの生産推論: AWS Lambdaのレクエストごとの価格設定と24時間年中無休でサーバーを実行します。
- Vectorデータベースで使用: ChromaDBやPineconeなど。
パフォーマンス、コスト、および制限:
- コールドスタート:ラムダ機能のコールドスタートは約150秒です(インストラクターベースでは約50秒)。
- 推論:連続したリクエストは、リクエストごとに約6秒で処理されます(インストラクターベースでは約3秒)。
- マックス。トークン:インストラクターと驚異は、512トークン(約380ワード)のシーケンス長(約380ワード)で締めくくられているようですが、OpenaiのText-Beding-Ada-002は最大8191トークン(約6000ワード)をサポートしています。
- コスト: AWSラムダのコストは、
- 構成:
- 地域:EU-Central-1(ヨーロッパ、フランクフルト)
- 腕の価格:GB秒ごとに0.0000133334ドル
- リクエスト:100万のリクエストあたり0.20ドル
- メモリサイズ:10240 MB
- 計算:
- 期間:$ 0.0000133334 * 10,24 GB * 6秒= 0.000819204096 /リクエスト
- リクエスト:$ 0.20 / 1Mリクエスト= 0.0000002 /リクエスト
- 合計= $ 0.0008194 /リクエスト
- 2023年6月の時点で、75%の価格削減後、OpenaiのADA V2よりも高価です。
さらなる改善: AWS Lambdaが並行性とAWSの計算貯蓄計画により、コストとコールドスタートをさらに改善することができます。また、このプロジェクトの月額1MリクエストでAWS計算機をご覧ください。
展開
前提条件
- 一般的なAWSの知識が役立ちます。
- DockerとGit-LFSをローカルにインストールする必要があります。
- AWS-SAMをローカルにインストールし、AWSアカウントで構成する必要があります。
- アームベースのローカル環境が推奨されます(Mac M1/M2)。問題が発生した場合は、ARMベースのEC2マシンを介して展開してみてください(以下のガイド)。
設定
インストラクターモデルをローカルにダウンロードし、アプリをDockerコンテナにパッケージ化し、アームベースのLambda関数に展開します。 AWSを使用した低コストであり、より速くなることが判明したため、ARMを使用しています。
- リポジトリをクローンします
git clone https://github.com/maxsagt/lambda-instructor.git
- インストラクター - ラージモデルを./app/modelフォルダーにクローンします(https://huggingface.co/hkunlp/instructor-large?clone=trueを参照)
git lfs install ./app/model
git clone https://huggingface.co/hkunlp/instructor-large ./app/model
- AWS-SAMでDockerコンテナを構築します
sam build --cached --parallel
- event.jsonのサンプルペイロードでローカルでテストします。
sam local invoke -e event.json
- AWSに展開します。 AWSユーザーまたは役割のニーズ(一時的な)IAM CloudFormation、Elastic Container Registry、S3、Lambda、およびIAMのIAM許可があることに注意してください。
- 終わり。 AWSには、さらに構成の準備ができているLambda機能があります。例えば:
- ラムダコンソールでラムダ関数をテストします。
- ラムダ関数URLを構成して、URLを介してラムダ関数を直接使用します。
- より高度なAPI関数については、APIゲートウェイを追加します。
オプション:アームベースのEC2マシンを介して展開します。
手元にアームマシンを持っていない場合、またはDockerコンテナのアップロードを速くするためにAWS内に展開したい場合。
- AWSインスタンスを作成します:
- Ubuntu Server 22.04 LTS(HVM)、SSDボリュームタイプ、AMI-0329D3839379BFD15、アーキテクチャ:64ビット(ARM)、インスタンスタイプ:T4G.Medium、ストレージ:20GIB GP3
- VPCが公開されていることを確認してください。
- インスタンスを開始します。
- インスタンスをクリックして、アクション - >セキュリティを介してIAMロールを追加します。 IAMの役割には、IAM、S3、ECR、CloudFormation、Lambdaアクセスが必要です。
- リモート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ドキュメントをお読みください。
- 使用後にインスタンスを終了することを忘れないでください。
フィードバック
フィードバックと貢献は大歓迎です!