ハギングフェイス推論エンドポイントの始め方
'ハギングフェイス推論エンドポイントの始め方' can be condensed to 'ハギングフェイス推論エンドポイントの始め方の要点'.
機械学習モデルのトレーニングは非常に簡単になりました。特に、事前学習済みモデルと転移学習の台頭により、簡単なことが多いです。もちろん、時にはそれほど簡単ではないこともありますが、少なくとも、モデルのトレーニングはクリティカルなアプリケーションを壊すことはありませんし、お客様にサービス品質に不満を抱かせることもありません。しかし、モデルのデプロイメントは別ですね… はい、みんな経験があります。
モデルを本番環境でデプロイするには、通常、数々の手順を踏む必要があります。モデルをコンテナにパッケージ化し、インフラストラクチャをプロビジョニングし、予測APIを作成し、セキュリティを確保し、スケーリングし、監視するなどです。正直に言って、これらのプラミングを構築するのには実際の機械学習作業の貴重な時間が奪われてしまいます。残念なことに、うまくいかないこともあります。
私たちは、新しく発表されたHugging Face Inference Endpointsを使ってこの問題を解決しようと努めています。最新の状態を維持しつつ、機械学習をますます簡単にすることを目指して、Hugging Faceハブから直接機械学習モデルをお気に入りのクラウド上の管理されたインフラストラクチャに数回のクリックでデプロイできるサービスを構築しました。シンプルで安全でスケーラブルです。すべてが手に入ります。
では、これがどのように機能するかをご紹介します!
- MTEB 大規模テキスト埋め込みベンチマーク
- PyTorch DDPからAccelerateへ、そしてTrainerへ簡単に分散トレーニングをマスターしましょう
- 🤗 Optimum IntelとOpenVINOでモデルを高速化しましょう
Inference Endpointsでモデルをデプロイする
Inference Endpointsがサポートしているタスクのリストを見て、最近AutoTrainでfood101データセット上で微調整したSwin画像分類モデルをデプロイすることにしました。このモデルの構築方法に興味がある場合は、このビデオで全体のプロセスを確認できます。
モデルページから、デプロイ
をクリックし、Inference Endpoints
を選択します。
これにより、エンドポイントの作成ページに直接移動します。
最新のリビジョンのモデルを、eu-west-1
リージョンのAWSでホストされる単一のGPUインスタンスにデプロイすることにしました。オプションで、オートスケーリングを設定することもできますし、カスタムコンテナにモデルをデプロイすることもできます。
次に、エンドポイントにアクセスできるユーザーを決定する必要があります。最もセキュアから最もセキュアまで、3つのオプションがあります:
- パブリック: エンドポイントはパブリックなHugging Faceサブネットで実行され、認証なしでインターネット上の誰でもアクセスできます。これを選択する前によく考えてください!
- プロテクテッド: エンドポイントはパブリックなHugging Faceサブネットで実行され、適切な組織トークンを持つインターネット上の誰でもアクセスできます。
- プライベート: エンドポイントはプライベートなHugging Faceサブネットで実行されます。インターネット上でアクセスできません。AWS PrivateLinkで作成されたVPCエンドポイントを使用して、AWSアカウント内のどのVPCとサブネットがエンドポイントにアクセスできるかを制御できます。
まず、プロテクテッドなエンドポイントをデプロイし、その後プライベートなエンドポイントをデプロイしましょう。
プロテクテッドなInferenceエンドポイントのデプロイ
プロテクテッド
を選択し、エンドポイントを作成
をクリックします。
数分後、エンドポイントが起動し、そのURLが表示されます。
推論ウィジェットで画像をアップロードしてすぐにテストすることができます。
もちろん、Pythonコードの数行でエンドポイントを直接呼び出すこともできます。Hugging Face APIトークンで認証します(ハブのアカウント設定で見つけることができます)。
import requests, json
API_URL = "https://oncm9ojdmjwesag2.eu-west-1.aws.endpoints.huggingface.cloud"
headers = {
"Authorization": "Bearer MY_API_TOKEN",
"Content-Type": "image/jpg"
}
def query(filename):
with open(filename, "rb") as f:
data = f.read()
response = requests.request("POST", API_URL, headers=headers, data=data)
return json.loads(response.content.decode("utf-8"))
output = query("food.jpg")
予想通り、予測結果は同じです。
[{'score': 0.9998438358306885, 'label': 'hummus'},
{'score': 6.674625183222815e-05, 'label': 'falafel'},
{'score': 6.490697160188574e-06, 'label': 'escargots'},
{'score': 5.776922080258373e-06, 'label': 'deviled_eggs'},
{'score': 5.492902801051969e-06, 'label': 'shrimp_and_grits'}]
Analytics
タブに移動すると、エンドポイントのメトリクスが表示されます。いくつかのリクエストが失敗しましたが、わざと Content-Type
ヘッダーを省略しました。
詳細を確認するためには、Logs
タブで完全なログを確認できます。
5c7fbb4485cd8w7 2022-10-10T08:19:04.915Z 2022-10-10 08:19:04,915 | INFO | POST / | Duration: 142.76 ms
5c7fbb4485cd8w7 2022-10-10T08:19:05.860Z 2022-10-10 08:19:05,860 | INFO | POST / | Duration: 148.06 ms
5c7fbb4485cd8w7 2022-10-10T09:21:39.251Z 2022-10-10 09:21:39,250 | ERROR | Content type "None" not supported. Supported content types are: application/json, text/csv, text/plain, image/png, image/jpeg, image/jpg, image/tiff, image/bmp, image/gif, image/webp, image/x-image, audio/x-flac, audio/flac, audio/mpeg, audio/wave, audio/wav, audio/x-wav, audio/ogg, audio/x-audio, audio/webm, audio/webm;codecs=opus
5c7fbb4485cd8w7 2022-10-10T09:21:44.114Z 2022-10-10 09:21:44,114 | ERROR | Content type "None" not supported. Supported content types are: application/json, text/csv, text/plain, image/png, image/jpeg, image/jpg, image/tiff, image/bmp, image/gif, image/webp, image/x-image, audio/x-flac, audio/flac, audio/mpeg, audio/wave, audio/wav, audio/x-wav, audio/ogg, audio/x-audio, audio/webm, audio/webm;codecs=opus
さて、セキュリティレベルを上げてプライベートエンドポイントをデプロイしましょう。
プライベート推論エンドポイントのデプロイ
前述の手順を繰り返し、今回は Private
を選択します。
これにより、エンドポイントが表示される AWS アカウントの識別子を求める新しいボックスが開きます。適切な ID を入力し、Create Endpoint
をクリックします。
AWS アカウント ID がわからない場合は、AWS CLI のワンライナーを使って確認できます:aws sts get-caller-identity --query Account --output text
数分後、推論エンドポイントのユーザーインターフェースには VPC サービス名の名前が表示されます。私の場合は com.amazonaws.vpce.eu-west-1.vpce-svc-07a49a19a427abad7
です。
次に、AWS コンソールを開き、VPC エンドポイントページに移動します。そして、Create endpoint
をクリックして VPC エンドポイントを作成し、AWS PrivateLink を介して推論エンドポイントにアクセスできるようにします。
要するに、上記に表示される VPC サービス名の名前を入力し、エンドポイントにアクセスできるように許可される VPC およびサブネットを選択し、適切なセキュリティグループを割り当てる必要があります。何も怖くありません。推論エンドポイントドキュメントにリストされている手順に従えば問題ありません。
VPC エンドポイントを作成した後、セットアップは以下のようになります。
インファレンスエンドポイントのユーザーインターフェースに戻り、プライベートエンドポイントは1〜2分後に実行されます。さあ、テストしてみましょう!
VPCエンドポイントにアクセス許可があるサブネットのいずれかでAmazon EC2インスタンスを起動し、インファレンスエンドポイントのURLを使用してテスト画像を予測します。
curl https://oncm9ojdmjwesag2.eu-west-1.aws.endpoints.huggingface.cloud \
-X POST --data-binary '@food.jpg' \
-H "Authorization: Bearer MY_API_TOKEN" \
-H "Content-Type: image/jpeg"
[{"score":0.9998466968536377, "label":"hummus"},
{"score":0.00006414744711946696, "label":"falafel"},
{"score":6.4065129663504194e-6, "label":"escargots"},
{"score":5.819705165777123e-6, "label":"deviled_eggs"},
{"score":5.532585873879725e-6, "label":"shrimp_and_grits"}]
<pこれで終わりです。テストが終わったら、作成したエンドポイントを削除して不要な料金を避けます。また、AWSコンソールでVPCエンドポイントも削除します。
Hugging Faceのお客様は既にインファレンスエンドポイントを使用しています。例えば、Phamilyは、#1の内蔵型慢性疾患管理および予防的ケアプラットフォームとして、HIPAA準拠のTransformer展開を簡素化し高速化するのにInference Endpointsが役立っていると教えてくれました。
さあ、あなたの番です!
インファレンスエンドポイントのおかげで、本番用のスケーラブルで安全なエンドポイントを数分で数クリックで展開することができます。ぜひ試してみてください。
サービスをさらに良くするためのアイデアはたくさんありますので、Hugging Faceフォーラムでフィードバックをお聞かせください。
お読みいただきありがとうございました。インファレンスエンドポイントをお楽しみください!
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles