Exafunction は AWS Inferentia をサポートし、機械学習推論の PlatoBlockchain Data Intelligence で最高のコストパフォーマンスを実現します。垂直検索。あい。

Exafunction は AWS Inferentia をサポートし、機械学習推論の最高の価格パフォーマンスを実現します

すべての業界で、機械学習 (ML) モデルはより深くなり、ワークフローはより複雑になり、ワークロードはより大規模に動作しています。 これらのモデルをより正確にするために多大な努力とリソースが投入されています。これは、この投資がより優れた製品とエクスペリエンスに直接つながるためです。 一方、これらのモデルを本番環境で効率的に実行することは、パフォーマンスと予算の目標を達成するための鍵であるにもかかわらず、見過ごされがちな重要な作業です。 この投稿では、Exafunction と AWSインフェレンティア 連携して、本番環境での ML モデルの簡単で費用対効果の高い展開を実現します。

エクサファンクション は、企業が可能な限り効率的に大規模な ML を実行できるようにすることに重点を置いた新興企業です。 彼らの製品の一つは エクサデプロイは、大規模な ML ワークロードに対応する使いやすい SaaS ソリューションです。 ExaDeploy は、混合リソース (CPU およびハードウェア アクセラレータ) 全体で ML ワークロードを効率的に調整し、リソースの使用率を最大化します。 また、Auto Scaling、コンピューティング コロケーション、ネットワークの問題、フォールト トレランスなどを処理して、効率的で信頼性の高い展開を確保します。 AWS Inferentia ベース Amazon EC2 Inf1インスタンス クラウドで最も低い推論あたりのコストを提供するために構築されています。 ExaDeploy は Inf1 インスタンスをサポートするようになりました。これにより、ユーザーはハードウェアベースのアクセラレータの節約と、最適化されたリソースの仮想化と大規模なオーケストレーションのソフトウェアベースの節約の両方を得ることができます。

ソリューションの概要

ExaDeploy が展開効率をどのように解決するか

コンピューティング リソースを効率的に使用するには、適切なリソース割り当て、自動スケーリング、コンピューティング コロケーション、ネットワーク コストとレイテンシの管理、フォールト トレランス、バージョン管理と再現性などを考慮する必要があります。 大規模な場合、非効率性はコストとレイテンシに大きく影響します。多くの大企業は、社内チームと専門知識を構築することでこれらの非効率性に対処しています。 ただし、ほとんどの企業にとって、企業が求めているコア コンピテンシーではない一般化可能なソフトウェアを構築するためのこの財務的および組織的なオーバーヘッドを想定することは現実的ではありません。

ExaDeploy は、自動運転車や自然言語処理 (NLP) アプリケーションなどの最も複雑なワークロードで見られる問題を含め、これらのデプロイ効率の問題点を解決するように設計されています。 一部の大規模なバッチ ML ワークロードでは、ExaDeploy は、レイテンシーや精度を犠牲にすることなく、85 エンジニア日という短い統合時間でコストを XNUMX% 以上削減しました。 ExaDeploy は、システムを劣化させることなく、何千ものハードウェア アクセラレータ リソース インスタンスを同時に自動スケーリングおよび管理できることが証明されています。

ExaDeploy の主な機能は次のとおりです。

  • クラウドで実行: モデル、入力、または出力のいずれも、プライベート ネットワークから離れることはありません。 クラウド プロバイダーの割引を引き続きご利用ください。
  • 共有アクセラレータ リソース: ExaDeploy は、複数のモデルまたはワークロードがアクセラレーター リソースを共有できるようにすることで、使用されるアクセラレーターを最適化します。 また、複数のワークロードが同じモデルをデプロイしているかどうかを識別し、それらのワークロード間でモデルを共有して、使用されるアクセラレータを最適化することもできます。 その自動リバランス機能とノード ドレイン機能により、使用率が最大化され、コストが最小化されます。

Exafunction は AWS Inferentia をサポートし、機械学習推論の PlatoBlockchain Data Intelligence で最高のコストパフォーマンスを実現します。垂直検索。あい。

  • スケーラブルなサーバーレス デプロイ モデル: ExaDeploy は、アクセラレータ リソースの飽和状態に基づいて自動スケーリングします。 0 または数千のリソースまで動的にスケールダウンします。
  • さまざまな計算タイプのサポート: すべての主要な ML フレームワークだけでなく、任意の C++ コード、CUDA カーネル、カスタム ops、および Python 関数からディープ ラーニング モデルをオフロードできます。
  • 動的モデルの登録とバージョン管理: システムを再構築または再展開することなく、新しいモデルまたはモデル バージョンを登録して実行できます。
  • ポイントツーポイント実行: クライアントはリモート アクセラレータ リソースに直接接続します。これにより、低遅延と高スループットが可能になります。 状態をリモートで保存することもできます。
  • 非同期実行: ExaDeploy は、モデルの非同期実行をサポートします。これにより、クライアントはローカル計算とリモート アクセラレータ リソース作業を並列処理できます。
  • フォールト トレラントなリモート パイプライン: ExaDeploy を使用すると、クライアントはリモート計算 (モデル、前処理など) をパイプラインに動的に構成し、フォールト トレランスを保証できます。 ExaDeploy システムは、ポッドまたはノードの障害を自動リカバリおよびリプレイで処理するため、開発者はフォールト トレランスの確保について考える必要がありません。
  • すぐに使えるモニタリング: ExaDeploy は、Prometheus メトリックと Grafana ダッシュボードを提供して、アクセラレーター リソースの使用状況やその他のシステム メトリックを視覚化します。

ExaDeploy は AWS Inferentia をサポートしています

AWS Inferentia ベースの Amazon EC2 Inf1 インスタンスは、ディープ ラーニング固有の推論ワークロード向けに設計されています。 これらのインスタンスは、現行世代の GPU 推論インスタンスと比較して、最大 2.3 倍のスループットと最大 70% のコスト削減を提供します。

ExaDeploy は AWS Inferentia をサポートするようになりました。これらを組み合わせることで、専用のハードウェア アクセラレーションと最適化されたリソース オーケストレーションを大規模に実現することで、パフォーマンスの向上とコスト削減を実現できます。 非常に一般的な最新の ML ワークロードであるバッチ処理された混合コンピューティング ワークロードを考慮して、ExaDeploy と AWS Inferentia を組み合わせた利点を見てみましょう。

仮説的なワークロードの特性:

  • 15 ミリ秒の CPU のみの前処理/後処理
  • モデル推論 (GPU で 15 ミリ秒、AWS Inferentia で 5 ミリ秒)
  • 10 クライアント、各クライアントが 20 ミリ秒ごとにリクエストを作成
  • CPU:Inferentia:GPU の概算相対コストは 1:2:4 です (c2.xlarge、inf5.xlarge、および g1dn.xlarge の Amazon EC4 オンデマンド料金に基づく)

以下の表は、各オプションがどのように形成されるかを示しています。

必要なリソース 費用 レイテンシ
ExaDeploy を使用しない GPU クライアントあたり 2 CPU、2 GPU (合計 20 CPU、20 GPU) 100 30ミリ秒
GPU と ExaDeploy 8 個のクライアントで共有される 10 個の GPU、クライアントごとに 1 個の CPU 42 30ミリ秒
ExaDeploy を使用しない AWS Inferentia クライアントごとに 1 CPU、1 AWS Inferentia (合計 10 CPU、10 Inferentia) 30 20ミリ秒
ExaDeploy を使用した AWS Inferentia 3 クライアントで共有される 10 つの AWS Inferentia、クライアントごとに 1 つの CPU 16 20ミリ秒

ExaDeploy on AWS Inferentia の例

このセクションでは、BERT PyTorch モデルで inf1 ノードを使用した例を通じて、ExaDeploy を構成する手順について説明します。 bert-base モデルの平均スループットは 1140 サンプル/秒でした。これは、この単一モデル、単一ワークロードのシナリオで、ExaDeploy によってオーバーヘッドがほとんどまたはまったく導入されなかったことを示しています。

ステップ 1: セットアップ Amazon Elastic Kubernetesサービス (Amazon EKS) クラスター

Amazon EKS クラスターは、当社の Terraform AWS モジュール. この例では、 inf1.xlarge AWS Inferentia 用。

ステップ 2: ExaDepoyを設定する

1 番目のステップは、ExaDeploy をセットアップすることです。 一般に、inf4 インスタンスへの ExaDeploy のデプロイは簡単です。 セットアップは、グラフィックス プロセッシング ユニット (GPU) インスタンスの場合とほぼ同じ手順に従います。 主な違いは、モデル タグを GPU から AWS Inferentia に変更し、モデルを再コンパイルすることです。 たとえば、ExaDeploy のアプリケーション プログラミング インターフェイス (API) を使用して g1dn から inf10 インスタンスに移行する場合、変更する必要があるコードは約 XNUMX 行だけでした。

  • 簡単な方法の XNUMX つは、Exafunction の Terraform AWS Kubernetes モジュール or ヘルムチャート. これらは、コア ExaDeploy コンポーネントをデプロイして、Amazon EKS クラスターで実行します。
  • モデルをシリアル化された形式 (例: TorchScript、TF 保存モデル、ONNX など) にコンパイルします。AWS Inferentia については、以下に従いました。 このチュートリアル.
  • コンパイル済みのモデルを ExaDeploy のモジュール リポジトリに登録します。
    with exa.ModuleRepository(MODULE_REPOSITORY_ADDRESS) as repo:
       repo.register_py_module(
           "BertInferentia",
           module_class="TorchModule",
           context_data=BERT_NEURON_TORCHSCRIPT_AS_BYTES,
           config={
               "_torchscript_input_names": ",".join(BERT_INPUT_NAMES).encode(),
               "_torchscript_output_names": BERT_OUTPUT_NAME.encode(),
               "execution_type": "inferentia".encode(),
           },
       )

  • モデルのデータを準備します (つまり、 ExaDeploy-specific).
    tokenizer = transformers.AutoTokenizer.from_pretrained(
       "bert-base-cased-finetuned-mrpc"
    )
    
    batch_encoding = tokenizer.encode_plus(
       "The company Exafunction is based in the Bay Area",
       "Exafunction’s headquarters are situated in Mountain View",
       max_length=MAX_LENGTH,
       padding="max_length",
       truncation=True,
       return_tensors="pt",
    )

  • モデルをクライアントからリモートで実行します。
    with exa.Session(
       scheduler_address=SCHEDULER_ADDRESS,
       module_tag="BertInferentia",
       constraint_config={
           "KUBERNETES_NODE_SELECTORS": "role=runner-inferentia",
           "KUBERNETES_ENV_VARS": "AWS_NEURON_VISIBLE_DEVICES=ALL",
       },
    ) as sess:
       bert = sess.new_module("BertInferentia")
       classification_logits = bert.run(
           **{
               key: value.numpy()
               for key, value in batch_encoding.items()
           }
       )[BERT_OUTPUT_NAME].numpy()
    
       # Assert that the model classifies the two statements as paraphrase.
       assert classification_logits[0].argmax() == 1

ExaDeploy と AWS Inferentia: 一緒により良い

AWS Inferentia は、モデル推論のスループットの境界を押し広げ、クラウドで最も低い推論あたりのコストを実現しています。 そうは言っても、企業は Inf1 の価格性能比のメリットを大規模に享受するには、適切なオーケストレーションが必要です。 ML サービスは複雑な問題であり、社内で対処する場合、会社の目標から切り離された専門知識が必要になり、製品のタイムラインが遅れることがよくあります。 Exafunction の ML 展開ソフトウェア ソリューションである ExaDeploy は、業界のリーダーとして浮上しています。 最も複雑な ML ワークロードにも対応しながら、スムーズな統合エクスペリエンスと世界クラスのチームからのサポートを提供します。 ExaDeploy と AWS Inferentia を組み合わせることで、大規模な推論ワークロードのパフォーマンスを向上させ、コストを削減できます。

まとめ

この投稿では、Exafunction がパフォーマンス ML のために AWS Inferentia をどのようにサポートしているかを示しました。 Exafunction を使用したアプリケーションの構築の詳細については、次の Web サイトをご覧ください。 エクサファンクション. Inf1 でディープ ラーニング ワークロードを構築するためのベスト プラクティスについては、次のサイトをご覧ください。 Amazon EC2 Inf1 インスタンス。


著者について

Nicholas Jiang、ソフトウェア エンジニア、Exafunction

Jonathan Ma 氏、ソフトウェア エンジニア、Exafunction

Prem Nair、ソフトウェア エンジニア、Exafunction

Anshul Ramachandran、ソフトウェア エンジニア、Exafunction

Shruti Koparkar、シニア製品マーケティングマネージャー、AWS

タイムスタンプ:

より多くの AWS機械学習