NVIDIA GPU上のTorchServeによるAI音声生成推論について
NVIDIA GPU上のTorchServeを使用して、Oracle Cloud Infrastructure Kubernetes Engineで実行するテキスト・ツー・スピーチ・サービスを設計できます。この手法は、画像分類、オブジェクト検出、自然言語処理、推奨システムなどの他の推論ワークロードにも適用できます。
推論サーバーは、トレーニングを受けた機械学習モデルをホストし、APIを使用して予測(推論)を提供する特殊なシステムです。スケーリング、バッチ処理および監視という重要な本番上の課題に対処します。静的モデルを信頼性の高い高パフォーマンスのWebサービスに変換します。
TorchServeは、PyTorchの正式なモデル・サービス・フレームワークです。
このジョブは、トレーニング済.mar
ファイル(パッケージ・モデル・ファイル)を取得し、RESTful APIまたはgRPCエンドポイントから使用できるようにすることです。カスタムWebサーバーおよびロジックを記述するかわりに、モデルをパッケージ化し、TorchServeに渡します。すぐに次のものが提供されます。
- スケーラビリティ:ワーカーを自動的に管理し、大量のトラフィックを処理します。
- 低レイテンシ・パフォーマンス:マルチモデル・バッチ処理などの高度な機能を使用して、効率的な処理のためにリクエストをグループ化します。
- モデル管理:ダウンタイムなしでモデルを登録、バージョニングおよびロールバックできます。
- 組込みモニタリング:推論レイテンシや1秒当たりのリクエストなどのメトリックをすぐに追跡します。
基本的に、TorchServeは、PyTorch実験と本番デプロイメントのギャップを埋めて、最小限の労力で強力なモデルを堅牢な予測サービスに変換します。これは、研究室から現実の世界にPyTorchを取るために不可欠なツールです。
ノート:
TorchServeは現在、制限付きメンテナンス・モードです。使用は無料であり、特定のユースケースやテストの利便性のために既存のお客様も使用していますが、本番デプロイメントの長期的な適合性を評価することをお薦めします。現在の状況と考慮事項については、PyTorch TorchServeの公式ドキュメント(https://docs.pytorch.org/serve/)を参照してください。これらは市場の推論サーバーの一部です:
サーバー | 開発者 | 主な機能 | 最適な状況 | フレームワークのサポート |
---|---|---|---|---|
NVIDIAトリトン | NVIDIA |
|
高パフォーマンスのマルチモデル・デプロイメント | PyTorch、TF、ONNX、TensorRT |
TorchServe | PyTorch (以前のMeta) |
|
PyTorchに重点を置いたデプロイメント | PyTorchのみ |
TensorFlowサービング |
|
TensorFlowエコシステム | TensorFlow |
アーキテクチャ
このアーキテクチャは、AI音声生成推論デプロイメントの例を示しています。
transperfect-oke-arch oracle.zip
ベースHugging Faceモデルから微調整されたトレーニングおよびカスタマイズされた音声モデルは、推論のためにTorchServeにデプロイされます。TorchServeは、サービング・レイヤーとして機能し、モデルをホストし、受信ユーザー・リクエストを効率的に管理します。
ユーザーがテキスト入力を送信すると、TorchServeはリクエストを処理し、モデルを起動して、出力を高品質の合成音声としてレンダリングします。
テキスト読み上げセグメントの場合、各ドキュメントに複数のブロックを含めることができ、各ブロックはセグメントで構成されます。たとえば:
Document (chapter)
└── Block (paragraph)
└── Segment (sentence)
このアーキテクチャでは、次のコンポーネントがサポートされています。
- OCIのリージョン
OCIリージョンとは、可用性ドメインをホストする1つ以上のデータ・センターを含む、ローカライズされた地理的領域のことです。リージョンは他のリージョンから独立しており、長距離の場合は複数の国または大陸にまたがる領域を分離できます。
- OCI仮想クラウド・ネットワークおよびサブネット
仮想クラウド・ネットワーク(VCN)は、ソフトウェアで定義されたカスタマイズ可能なネットワークであり、OCIリージョン内に設定します。従来のデータ・センター・ネットワークと同様に、VCNsではネットワーク環境を制御できます。VCNには、VCNの作成後に変更できる重複しない複数のクラスレス・ドメイン間ルーティング(CIDR)ブロックを複数含むことができます。VCNをサブネットにセグメント化して、そのスコープをリージョンまたは可用性ドメインに設定できます。各サブネットは、VCN内の他のサブネットと重複しない連続した範囲のアドレスで構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックにもプライベートにもできます。
- OCIレジストリ
Oracle Cloud Infrastructure Registryは、開発から本番へのワークフローを簡略化できる、Oracle管理のサービスです。レジストリを使用すると、Dockerイメージなどの開発アーティファクトを簡単に格納、共有および管理できます。
- OCIオブジェクト・ストレージ
OCIオブジェクト・ストレージでは、データベースのバックアップ、分析データ、イメージおよびビデオなどのリッチ・コンテンツなど、あらゆるコンテンツ・タイプの構造化データおよび非構造化データの大量へのアクセスを提供します。アプリケーションから直接、またはクラウド・プラットフォーム内から、安全かつ安全にデータを格納できます。パフォーマンスやサービスの信頼性を低下させることなく、ストレージを拡張することができます。
迅速、即時、頻繁にアクセスする必要のあるホット・ストレージに標準ストレージを使用します。長期間保存し、ほとんどまたはめったにアクセスしないコールド・ストレージにアーカイブ・ストレージを使用します。
- OCI File Storage
Oracle Cloud Infrastructure File Storageでは、永続的かつスケーラブルな、セキュアなエンタープライズ規模のネットワーク・ファイル・システムを提供します。VCN内の任意のベア・メタル、仮想マシンまたはコンテナ・インスタンスからOCI File Storageに接続できます。Oracle Cloud Infrastructure FastConnectおよびIPSec VPNを使用して、VCNの外部からOCI File Storageにアクセスすることもできます。
- OCI Block Volumes
Oracle Cloud Infrastructure Block Volumesを使用すると、ストレージ、パフォーマンスおよびアプリケーションの要件を満たすように、ストレージ・ボリュームを作成、アタッチ、接続および移動したり、ボリュームのパフォーマンスを変更できます。ボリュームをインスタンスにアタッチおよび接続した後は、そのボリュームを通常のハード・ドライブのように使用できます。また、データを失わずにボリュームの切断と別のインスタンスにアタッチを行うこともできます。
- ロード・バランサー
Oracle Cloud Infrastructure Load Balancingは、単一のエントリ・ポイントから複数のサーバーへの自動トラフィック分散を提供します。
- OCI Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine(OCI Kubernetes EngineまたはOKE)は、コンテナ化されたアプリケーションをクラウドに導入するために使用できるフルマネージドのスケーラブルな高可用性サービスです。アプリケーションに必要なコンピュート・リソースを指定し、OKEによって既存のテナンシのOCIにプロビジョニングされます。OKEは、Kubernetesを使用して、ホスト・クラスタ間のコンテナ化されたアプリケーションのデプロイメント、スケーリングおよび管理を自動化します。
- サービス・ゲートウェイ
サービス・ゲートウェイは、VCNからOracle Cloud Infrastructure Object Storageなどの他のサービスへのアクセスを提供します。The traffic from the VCN to the Oracle service travels over the Oracle network fabric and does not traverse the internet.
- インターネット・ゲートウェイ
インターネット・ゲートウェイでは、VCNのパブリック・サブネットとパブリック・インターネット間のトラフィックが許可されます。
- OCIロギングOracle Cloud Infrastructure Loggingは、クラウド内のリソースから次のタイプのログへのアクセスを提供する、高度にスケーラブルで完全管理型のサービスです:
- 監査ログ: OCI監査によって生成されたイベントに関連するログ。
- サービス・ログ: OCI APIゲートウェイ、OCIイベント、OCIファンクション、OCIロード・バランシング、OCIオブジェクト・ストレージおよびVCNフロー・ログなどの個々のサービスによってパブリッシュされたログ。
- カスタム・ログ: カスタム・アプリケーション、他のクラウド・プロバイダまたはオンプレミス環境からの診断情報を含むロギング。
- OCIモニタリング
Oracle Cloud Infrastructure Monitoringは、クラウド・リソースをアクティブおよびパッシブに監視し、メトリックが指定されたトリガーを満たしたときにアラームを使用して通知します。
- ポリシー
Oracle Cloud Infrastructure Identity and Access Managementポリシーでは、誰がどのリソースにどのようにアクセスできるかを指定します。アクセス権はグループ・レベルおよびコンパートメント・レベルで付与されます。つまり、特定のコンパートメント内またはテナンシへの特定のタイプのアクセスをグループに許可するポリシーを記述できます。
- OCI Vault
Oracle Cloud Infrastructure Vaultでは、データを保護する暗号化キーと、クラウド内のリソースへのアクセスを保護するために使用するシークレット資格証明を作成し、一元管理できます。デフォルトのキー管理は、Oracle管理キーです。OCI Vaultを使用する顧客管理キーを使用することもできます。OCI Vaultは、ボールトおよびキーを管理するための豊富なREST APIセットを提供します。
- Hugging Face
Hugging Faceは、事前トレーニング済のAIモデル、開発ツール、AIアプリケーションのホスティング・インフラストラクチャを提供する機械学習のためのコラボレーション・プラットフォームおよびハブであり、高度な機械学習を世界中の開発者が利用できるようにします。
ソリューション設計ワークフローについて
この音声生成ソリューションは、次の設計ワークフローを実装します。
- ユーザーはプロジェクト変換を開始します。
- アプリケーションは、プロジェクト内の各変換タスクのRabbitMQキューにメッセージを追加します。
- 各ワーカーは、キューからメッセージを取得します。
- ワーカーはメッセージを処理し、TorchServeにリクエストを送信します。
- TorchServeは推論を実行し、結果をワーカーに返します。
- ワーカーは結果を処理し、メッセージをキューに戻します。
- アプリケーションは、キューから結果メッセージを取得し、データベースに保存します。
- UIの結果がユーザーに通知されます。
ノート:
軽量モデルの場合、ワーカーは推論リクエストをCPUノードに送信します。