なぜ私たちはHugging Face Inference Endpointsに切り替えるのか、そしてあなたも切り替えるべきかもしれません
なぜHugging Face Inference Endpointsに切り替えるのか、そしてあなたも切り替えるべきかもしれません
Hugging Faceは最近、Inference Endpointsをリリースしました。これは、彼らが言うように「トランスフォーマーを本番環境で解決する」というものです。Inference Endpointsは、次のことができるマネージドサービスです:
- Hugging Face Hub上で(ほぼ)任意のモデルをデプロイする
- 任意のクラウド(AWS、Azure、GCPも近日中に)にデプロイする
- GPUを含むさまざまなインスタンスタイプで実行する
- 私たちは、CPU上で推論を行ういくつかの機械学習(ML)モデルを、この新しいサービスに切り替えています。このブログでは、なぜ切り替えるのか、また切り替えを検討する理由について説明します。
これまでの取り組み
私たちがInference Endpointsに切り替えたモデルは、以前は内部で管理され、AWS Elastic Container Service(ECS)上で実行されていました。これにより、コンテナベースのタスクを実行できるサーバーレスクラスターが提供されます。私たちのプロセスは次のようなものでした:
- GPUインスタンスでモデルをトレーニングする(transformersでトレーニングされたCMLで供給)
- Hugging Face Hubにアップロードする
- モデルを提供するためのAPIを構築する(FastAPI)
- APIをコンテナにラップする(Docker)
- コンテナをAWS Elastic Container Repository(ECR)にアップロードする
- モデルをECSクラスターにデプロイする
今では、ECSがMLモデルを提供するための最適なアプローチではなかったと主張することができますが、これまでのところ私たちに役立ち、またMLモデルを他のコンテナベースのサービスと並べて配置することも可能だったので、認知負荷が軽減されました。
今後の取り組み
Inference Endpointsを使用すると、私たちのフローは次のようになります:
- 「Snorkel AI x Hugging Face 企業向けの基盤モデルを解放する」
- 複雑な生成型AIユースケースにおいて、Hugging Faceを活用する
- 「エンジニアがセメントとカーボンブラックを使用したバッテリーの代替手段を開発」
- GPUインスタンスでモデルをトレーニングする(transformersでトレーニングされたCMLで供給)
- Hugging Face Hubにアップロードする
- Hugging Face Inference Endpointsを使用してデプロイする。
したがって、これはかなり簡単です。SageMaker、Seldon、Bento MLなどの他のマネージドサービスも使用できますが、モデルをHugging Face Hubにすでにアップロードしてモデルレジストリとして使用し、Hugging Faceの他のツール(transformersやAutoTrainなど)にもかなり投資しているため、Inference Endpointsを使用することは非常に合理的です。
レイテンシと安定性はどうですか?
Inference Endpointsに切り替える前に、abを使用してさまざまなCPUエンドポイントタイプをテストしました。
ECSについては、あまり詳しくテストしていませんが、同じリージョンのインスタンスからの大きなコンテナのレイテンシは約200msでした。Inference Endpointsのテストでは、次のテストパラメータを持つRoBERTaでファインチューニングされたテキスト分類モデルを使用しました:
- リクエスト元のリージョン:eu-east-1
- リクエスト元のインスタンスサイズ:t3-medium
- Inferenceエンドポイントのリージョン:eu-east-1
- エンドポイントレプリカ:1
- 同時接続数:1
- リクエスト:1000(この特定のアプリケーションでは、単一の接続からの1000リクエストは非常に重い使用を表します)
以下の表は、4つのIntel Ice Lake装備のCPUエンドポイントのレイテンシ(ms±標準偏差)とテストの完了時間(秒)を示しています。
size | vCPU(コア)| メモリ(GB) | ECS(ms) | 🤗(ms)
----------------------------------------------------------------------
small | 1 | 2 | _ | ~ 296
VoAGI | 2 | 4 | _ | 156 ± 51(158秒)
large | 4 | 8 | ~200 | 80 ± 30(80秒)
xlarge | 8 | 16 | _ | 43 ± 31(43秒)
これらの結果からわかるように、非常に励みになります。これらのエンドポイントを使用するアプリケーションはリアルタイムでリクエストを処理するため、できるだけ低いレイテンシが必要です。バニラのHugging Faceコンテナは、ECSで実行される独自のコンテナよりも2倍以上高速であり、最も遅い応答時間は大型のInference Endpointからのもので、わずか108msでした。
費用はどうなっていますか?
では、これにはいくらかかるのでしょうか?以下の表は、以前に行っていたこと(ECS + Fargate)とInference Endpointsを使用した場合の価格比較を示しています。
サイズ | vCPU | メモリー (GB) | ECS | 🤗 | % 差異
----------------------------------------------------------------------
small | 1 | 2 | $ 33.18 | $ 43.80 | 0.24
VoAGI | 2 | 4 | $ 60.38 | $ 87.61 | 0.31
large | 4 | 8 | $ 114.78 | $ 175.22 | 0.34
xlarge | 8 | 16 | $ 223.59 | $ 350.44 | 0.5
これについていくつか言えることがあります。まず第一に、展開のための管理されたソリューションが必要です。専任のMLOPsチームはまだありませんので、展開に費やす時間を最小限に抑えるためのソリューションを探しています。自分たちで展開するよりも少し高くても、展開に関する悩みを抱える時間と認知負荷を節約できるソリューションを求めています。
推論エンドポイントは以前の方法よりも高価ですが、その追加費用は24%から50%程度です。現在のスケールでは、大きなCPUインスタンスの月額差額が約60ドル程度であることは、APIやコンテナの心配をしなくて済むことと比べると、何も問題ではありません。もし何百ものMLマイクロサービスを展開する場合は、再考する必要があるかもしれませんが、それは多くのホスティング手法に当てはまるでしょう。
いくつかの注意点と注意事項:
- 推論エンドポイントの価格はこちらで確認できますが、GUIから新しいエンドポイントを展開すると異なる数値が表示されます。私は後者を使用しており、それはより高い価格です。
- 表で示したECS + Fargateの値は過小評価ですが、ほとんどの場合はそれほど大きな差ではないでしょう。私はそれらをFargateの価格ページから抽出しましたが、インスタンスのホスティングコストのみを含んでいます。データの入出力(おそらくHugging Face Hubからモデルをダウンロードするのが最も大きな負担)やECRに関連するコストは含まれていません。
その他の考慮事項
展開オプション
現在、GUIまたはRESTful APIを使用して推論エンドポイントを展開することができます。また、コマンドラインツールのhugie(将来のブログのテーマになる予定です)を使用して、構成を渡すことで1行のコードで推論エンドポイントを起動することもできます。本当に簡単です:
hugie endpoint create example/development.json
私にとって不足しているのは、カスタムのterraformプロバイダーです。GitHubアクションを使用してhugieで推論エンドポイントを展開することはできますが、素晴らしい状態管理システムであるterraformを使用してこれらを追跡できる方が良いです。おそらく(もしHugging Face以外でなければ)近いうちに誰かが書くでしょうが、もしそうでなければ私たちが書きます。
1つのエンドポイントで複数のモデルをホスティングする
Philipp Schmidさんは、カスタムのエンドポイントハンドラークラスを記述することで、1つのエンドポイントに複数のモデルをホスティングすることができる方法について素晴らしいブログを投稿しました。これにより、かなりの節約が可能です。彼のブログはGPU推論についてでしたが、唯一の制限はGPUメモリに収まるモデルの数です。おそらくCPUインスタンスでも機能すると思われますが、まだ試していません。
まとめ
Hugging Faceの推論エンドポイントは、トランスフォーマー(およびsklearn)モデルをエンドポイントに展開し、アプリケーションから消費できる非常にシンプルで便利な方法だと考えています。以前のECSアプローチよりも多少高いですが、展開について考える時間を節約できるため、私たちにとっては十分に価値があります。私たちは、お客様の問題を解決するためにNLPソリューションを構築するという目標に集中できます。
貴社にHugging Faceの推論エンドポイントに興味がある場合は、こちらにお問い合わせください。私たちのチームが要件についてご連絡させていただきます!
この記事は2023年2月15日にVoAGIで最初に公開されました。
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