量子コンピューティングとクラシック アプリの統合

Azure Quantum
Azure Key Vault
Microsoft Entra ID

従来のコンピューティングでは、最も強力なスーパーコンピュータの規模をもってしても、今日の極めて複雑なコンピューティングの問題に対応するのがますます困難になっています。 量子コンピューターは、コンピューティング機能を大幅に拡張する可能性を秘めています。 量子物理学の特性を利用して計算を実行することで、特定の種類の問題で指数関数的な高速化を実現します。 たとえば、量子コンピューターは、最適化、シミュレーション、機械学習のシナリオでよく見られる多数の可能な組み合わせを計算する必要がある問題で抜群の能力を発揮します。

ただし、量子コンピューティング コンポーネントの運用の各モデルは、従来のソフトウェアのものとは異なります。 通常、量子コンポーネントの実行をオーケストレーションする 1 つ以上の従来のコンピューティング コンポーネントがあります。 このオーケストレーションには、次のアクティビティが含まれます。

  • 入力データの準備
  • ターゲット量子環境への量子コンピューティング ジョブの送信
  • ジョブの実行の監視
  • ジョブ結果の後処理

このオーケストレーションを、次の 2 つの方法のいずれかで、従来のアプリケーションと統合できます。

  • 密結合による統合。 量子リソースのオーケストレーションのためのロジックは、単一または複数の従来のコンポーネントに統合されます。
  • 疎結合による統合。 量子リソースのオーケストレーションのロジックは、さまざまな従来のソフトウェア コンポーネントから呼び出すことができる API として公開されます。

この記事では、これらの各設計で量子アプリケーションを実装する方法について説明します。 各実装では、量子コンピューティング エンジンとして Azure Quantum が利用されますが、以下で詳しく説明するように、その他の側面は若干異なります。

密結合アプローチ

考えられるユース ケース

密結合アプローチは、次のような場合に推奨されます。

  • 1 つのチームが量子コードと従来のコードの両方を所有しており、そのコードは統合されています。
  • 量子コンポーネントは、従来のコンポーネントと同じライフサイクルを共有します。
  • 量子コンポーネントの使用は、1 つのアプリケーションまたは少数の関連アプリケーションに制限されます。
  • 量子ジョブは、ある特殊な従来のアプリケーションのみが使う特殊なソリューション (たとえば分子シミュレーション) を表します。
  • 実装されるアルゴリズムは、本質的に従来のハイブリッド量子です。たとえば、変分量子固有値ソルバー (VQE) や量子近似最適化アルゴリズム (QAOA) などです。

アーキテクチャ

密結合量子コンピューティング ジョブを含むハイブリッド アプリを示すアーキテクチャ図。

このアーキテクチャの PowerPoint ファイルをダウンロードします。

データフロー

  1. サインインしているユーザーが、従来のクライアント アプリケーションから量子ジョブの実行をトリガーします。
  2. クライアント アプリケーションは、入力データを Azure Storage に配置します。
  3. クライアント アプリケーションは、ジョブを Azure Quantum ワークスペースに送信して、1 つまたは複数の実行ターゲットを指定します。 クライアントは Key Vault に格納されているデータを使ってワークスペースを識別し、マネージド ID を使ってワークスペースに対して認証を行います。
  4. 量子プロバイダーが、対象の環境でジョブを実行します。
  5. クライアント アプリケーションは、ジョブの状態をポーリングすることにより、ジョブの実行を監視します。
  6. 量子ジョブが完了すると、クライアント アプリケーションはストレージから計算結果を取得します。

このワークフローでは、非同期要求-応答パターンと、Azure Quantum ジョブのライフサイクルに定義されている手順が実装されています。

コンポーネント

  • Azure Quantum では、さまざまなターゲットで量子ジョブの実行に関連付けられている資産用に、Azure portal からアクセスできるワークスペースが提供されます。 ジョブは、選択したプロバイダーに応じて、量子シミュレーターまたは量子ハードウェアで実行されます。
  • Microsoft Entra ID は、ユーザー認証を調整し、Azure Quantum ワークスペースへのアクセスの保護に役立ちます。
  • Key Vault は、キーとその他のシークレット (Azure Quantum ワークスペース名など) の保護と管理を行います。
  • Azure Storage は、入力データと、量子プロバイダーからの結果のためのストレージを提供します。

可用性

量子コンピューティング機能の可用性は、量子コンピューティング プロバイダーの可用性とインストール ベースに大きく依存します。 コンピューティング ターゲットによっては、従来のクライアント アプリケーションでターゲットの遅延が長くなったり、ターゲットを利用できなくなったりすることがあります。

Azure サービスについては、通常の可用性に関する考慮事項が適用されます。

  • Key Vault の冗長オプションを使用します。
  • 必要な場合は、Storage のレプリケーション オプションの使用を検討してください。

セキュリティ

疎結合方式のアーキテクチャとは異なり、ここで示すアーキテクチャは、1 つのクライアントのみが Azure Quantum ワークスペースにアクセスするという前提に基づいています。 このシナリオでは、次の構成になります。

  • クライアントは既知であるため、アプリケーションに関連付けられたマネージド ID を介して認証を実装できます。
  • 要求の調整と結果のキャッシュをクライアント自体に実装できます。

一般に、必要に応じて、セキュリティの標準的な設計パターンを適用することを検討してください。

疎結合アプローチ

考えられるユース ケース

疎結合アプローチは、次のような場合に推奨されます。

  • 他のチームに量子機能を一元的に提供する量子スペシャリストの専用チームがあり、量子コンポーネントが従来のクライアント コンポーネントから独立して開発される。
  • 量子ジョブが、複数の従来のアプリケーションで再利用できる汎用ソリューション (ジョブ スケジュールなど) を表す。

アーキテクチャ

疎結合量子コンピューティング ジョブを含むハイブリッド アプリを示すアーキテクチャ図。

このアーキテクチャの PowerPoint ファイルをダウンロードします。

データフロー

  1. サインインしているユーザーが、従来のアプリケーションから量子ジョブの実行をトリガーします。
  2. 従来のアプリケーションが、カスタム ジョブ API を呼び出してジョブを送信します。
  3. API ゲートウェイが、ジョブ送信 Azure 関数をトリガーします。これによってジョブ入力データが渡されます。
  4. 関数が、入力データを Azure Storage に格納します。
  5. 関数が、ジョブを Azure Quantum ワークスペースに送信して、1 つまたは複数の実行ターゲットを指定します。 関数が Azure Key Vault に格納されているデータを使ってワークスペースを識別し、マネージド ID を使ってワークスペースに対して認証を行います。
  6. 量子プロバイダーが、対象の環境でジョブを実行します。
  7. クライアント アプリケーションが、API 呼び出しを通じてジョブの状態をポーリングすることにより、ジョブの実行を監視します。
  8. API ゲートウェイが、量子プロバイダーからジョブの状態をポーリングすることによって、ジョブの実行を監視します。
  9. ジョブが完了すると、計算結果が Azure Storage に格納されます。 クライアント アプリケーションが、Azure 関数で実装された API を使って結果を取得します。

このワークフローでは、非同期要求-応答パターンと、Azure Quantum ジョブのライフサイクルに定義されている手順が実装されています。

コンポーネント

  • Azure Quantum では、さまざまなターゲットで量子ジョブの実行に関連付けられている資産用に、Azure portal からアクセスできるワークスペースが提供されます。 ジョブは、選択したプロバイダーに応じて、量子シミュレーターまたは量子ハードウェアで実行されます。
  • Microsoft Entra ID は、ユーザー認証を調整し、Azure Quantum ワークスペースへのアクセスの保護に役立ちます。
  • API Management は、量子ジョブ管理用の API エンドポイントを一元的に公開する API ゲートウェイです。
  • Azure Functions は、クライアント要求を適切な量子リソースに転送するために使われます。
  • Azure Key Vault は、キーとその他のシークレット (Azure Quantum ワークスペース名など) の保護と管理を行います。
  • Azure Storage は、入力データと、量子プロバイダーからの結果のためのストレージを提供します。

可用性

量子コンピューティング機能の可用性は、量子コンピューティング プロバイダーの可用性とインストール ベースに大きく依存しています。 コンピューティング ターゲットによっては、従来のクライアント アプリケーションでターゲットの遅延が長くなったり、ターゲットを利用できなくなったりすることがあります。

Azure サービスについては、通常の可用性に関する考慮事項が適用されます。

  • 高可用性のためには、複数のゾーンまたはリージョンに API Management をデプロイできます。
  • geo レプリケーションを使う場合は、複数のリージョンに Azure Functions をプロビジョニングできます。
  • Key Vault の冗長オプションを使用します。
  • 必要な場合は、Storage のレプリケーション オプションの使用を検討してください。

パフォーマンスと拡張性

アプリケーションのパフォーマンスは、基になる量子コンピューティング ターゲットの可用性とパフォーマンスに依存します。 従来のコンポーネントのパフォーマンスとスケーラビリティについては、スケーラビリティのための一般的な設計パターンに関する記事と「 パフォーマンス効率チェックリスト」をご覧ください。

セキュリティ

密結合方式のアーキテクチャとは異なり、ここで示すアーキテクチャは、複数のクライアントが API を介して Azure Quantum ワークスペースにアクセスするという前提に基づいています。 このシナリオでは、次の構成になります。

  • クライアントは、API に対して認証を行う必要があります。 認証ポリシーを使って、この認証を実装できます。
  • 関数に関連付けられているマネージド ID を使って、Azure 関数の認証を実装できます。 これらの ID を使って、Azure Quantum ワークスペースに対する認証を行うことができます。
  • 複数のクライアントが API にアクセスします。 API Management の要求調整を使って要求の調整を実装して、量子バックエンドを保護し、量子リソースの使用を制限することができます。
  • 要求のパターンによっては、API Management キャッシュ ポリシーを使って、量子コンピューティングの結果のキャッシュを実装できる場合があります。

一般に、必要に応じて、セキュリティの標準的な設計パターンを適用することを検討してください。

共通機能

次の特性は、密結合と疎結合の両方の実装モデルに共通です

代替

ここで示すアーキテクチャは、コンピューティング タスクのために量子コンピューティング リソースを必要とするビジネス上の問題を対象としています。 コンピューティングの課題によっては、ハイ パフォーマンス コンピューティングを実行したり、AI 機能を提供したりするために構築された既存のサービスが、代替手段となる場合があります。

考慮事項

一部の Azure 量子ターゲット (特に量子ハードウェア) は、近い将来のための制限されたリソースです。 これらのリソースへのアクセスは、キュー メカニズムを通じて実装されます。 量子ジョブを Azure Quantum に送信すると、そのジョブはジョブ キューに追加されます。 ターゲットが以前のキュー エントリの処理を完了すると、ジョブが実行されます。 使用可能なターゲットを一覧表示することで、予想される待機時間を取得できます。 完全な応答時間を計算するには、使用可能なリソースの待機に費やされた時間をジョブの実行時間に追加する必要があります。

パフォーマンスと拡張性

アプリケーションのパフォーマンスは、基になる量子コンピューティング ターゲットの可用性とパフォーマンスに依存します。 従来のコンポーネントのパフォーマンスとスケーラビリティについては、スケーラビリティのための一般的な設計パターンに関する記事と「 パフォーマンス効率チェックリスト」をご覧ください。

回復性

通常、Azure Quantum のような量子ターゲット環境ではエラー修正が制限されるため (Azure Quantum の場合は量子プロセッサに制限されます)、量子マシンのタイムアウトなどの他のエラーが引き続き発生する可能性があります。そのため、ジョブの状態をユーザーに通知できるように、ジョブの実行を監視することをお勧めします。 一時的なエラーのためにジョブの実行が失敗するときは、再試行パターンを実装します。 呼び出し元のクライアントが不要にブロックされないように、非同期呼び出しを使ってジョブを送信し、結果をポーリングします。

量子コンピューティング リソースは通常制限されるため、回復性の予想ではこの要因を考慮する必要があります。 そのため、この記事で提供される提案では、追加の回復性の手段を提供する場合があります。

DevOps

従来の CI/CD パイプラインに量子ジョブを組み込むには、Azure DevOps を使用し、一般的な設計に若干の変更を加えます。 次の設計では、密結合と疎結合のアーキテクチャに適用できる DevOps パイプライン ワークフローを示しています。

Architecture

Azure Quantum が組み込まれた従来の CI/CD パイプラインを示すアーキテクチャ図。

このアーキテクチャの PowerPoint ファイルをダウンロードします。

データフロー

  1. 開発者は、アプリケーション コンポーネントのソース コードを変更します。
  2. 変更は、ソース コード リポジトリにコミットされます。
  3. 量子コードを変更すると、量子ビルド パイプラインがトリガーされます。 ビルド パイプラインは、コードをチェックアウトしてコンパイルし、必要なリソースを見積もり、シミュレーターでアルゴリズムを実行します。
  4. コンパイルされた量子アルゴリズムは、テストのために量子環境に送信されます。
  5. 変更により、従来のコンポーネントのビルド パイプラインがトリガーされます。 パイプラインは、コードをチェックアウトしてコンパイルし、単体テストと統合テストを実行します。
  6. コンパイルとテストが成功すると、リリース パイプラインがトリガーされます。 このパイプラインでは、まず、リポジトリ (コードとしてのインフラストラクチャ) に格納されている Azure Resource Manager テンプレートをデプロイして、Azure 環境をプロビジョニングします。
  7. コンパイルされた従来のアプリケーション成果物は Azure にデプロイされます。 量子ジョブは、実行時に量子ワークスペースに送信されます。
  8. Application Insights は、実行時の動作、正常性、パフォーマンス、および使用状況の情報を監視します。
  9. バックログ項目は、監視結果に応じて、必要に応じて更新されます。
  10. 開発者は、アプリケーションのフィードバックと最適化に Application Insights を使用します。

Components

このソリューションでは、次の DevOps ツールを使用します。

  • Azure Repos は、クラウドでホストされた、容量無制限のプライベートな Git リポジトリを提供します。 ここでは、量子および従来のコードと、環境のプロビジョニングに使用される Azure Resource Manager テンプレートを格納するために使用します。
  • Azure Pipelines を使用すると、ビルド、テスト、クラウドへのデプロイを継続的に行うことができます。 ここでは、コードのデプロイ前の環境のプロビジョニングなど、CI/CD を実装するために使用します。

代わりに、GitHub リポジトリと GitHub Actions を使用して、CI/CD プロセスを実装することもできます。

このソリューションでは、以下のその他のコンポーネントが使用されます。

  • クライアント アプリケーションは、量子ジョブを調整します。 密結合または疎結合アプローチを使用して、統合を実装できます。
  • Azure Quantum は、実行中の量子コンピューティング アプリケーションに関連付けられている資産のワークスペースを提供します。 ジョブは、ユーザーが選択するプロバイダーに応じて、量子シミュレーターまたは量子ハードウェアで実行されます。
  • Microsoft Entra ID は、ユーザー認証を調整し、Azure Quantum ワークスペースへのアクセスを保護します。
  • Azure Key Vault は、キーとその他のシークレット (量子ワークスペース名など) の保護と管理を行います。
  • Azure Storage には、量子ジョブの入出力データが保持されます。
  • Application Insights は、アプリケーションを監視し、パフォーマンスの低下や障害などのアプリケーションの異常を検出し、テレメトリを Azure portal に送信します。

コスト最適化

このソリューションの全体的なコストは、量子ジョブを実行するために選んだ量子コンピューティング ターゲットによって異なります。 従来のコンポーネントの推定コストの計算は簡単です。 Azure 料金計算ツールを使用できます。

Azure Quantum サービスの場合、量子コンピューティング プロバイダーは Azure Marketplace オファリングを介して利用できる点を考慮してください。 価格は、リソースの種類 (シミュレーターまたはハードウェア)、SKU、使用状況によって異なります。 詳細については、シナリオに必要な量子コンピューティング プロバイダーのリファレンス ページを参照してください。 これらのリファレンス ページは、「Azure Quantum の量子コンピューティング プロバイダー」に記載されています。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は次のとおりです。

プリンシパル作成者:

  • Holger Sirtl | Microsoft Technology Center のシニア テクニカル アーキテクト

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次のステップ