QDK Python パッケージを使用してジョブをAzure Quantumに送信する

Microsoft Quantum Development Kit (QDK) Python パッケージを使用して、Q#、OpenQASM、Qiskit、Cirq、および PennyLane プログラムを Azure Quantum に送信します。

この記事では、サポートされている各量子言語またはフレームワークのジョブ送信の例を示します。 Pythonコードを必要としない対話型のQ#またはOpenQASMワークフローについては、「VS CodeのQDK拡張機能を使用してジョブを送信する」を参照してください。

前提条件

  • アクティブなサブスクリプションを持つ Azure アカウント。

  • あるAzure Quantumワークスペース。 作成するには、「Azure Quantum ワークスペースを作成する」を参照してください。

  • Python 3.10 以降。

  • Jupyter Notebook を使用する場合は、Jupyter 環境 (VS Code用の Jupyter 拡張機能ipykernel パッケージなど)。

  • quantum 拡張機能を使用してAzure CLIをインストールします。

    az extension add --upgrade --name quantum
    
  • 最新バージョンの qdkPython パッケージを azurejupyter 追加でインストールします。

    pip install --upgrade "qdk[azure,jupyter]"
    

    Qiskit または Cirq プログラムを送信する場合は、cirqqiskit の追加機能をインストールしてください。

    pip install --upgrade "qdk[qiskit,cirq]"
    

Azure Quantum ワークスペースに接続する

ジョブを送信する前に、 Azure Quantum ワークスペースに接続する必要があります。 qdk.azure モジュールは、Azure Quantumワークスペースに接続するWorkspace オブジェクトを提供します。 ワークスペースに接続するには、次の手順に従います。

Azure CLI を使用してサインインする

まだサインインしていない場合は、Jupyter ノートブックを開く前にターミナルからAzureにサインインします。

az login

ターミナルからサインインしない場合は、 Python経由で Quantum ワークスペースに接続するたびに認証する必要があります。 アカウントが複数のサブスクリプションにアクセスできる場合は、 Azure Quantum ワークスペースを含むサブスクリプションを設定します。

az account set --subscription <subscription-id>

セッションの有効期限が切れたとき、または別のAzure アカウントを使用する場合は、az loginをもう一度実行します。

ワークスペースのリソース ID を取得する

  1. Azure portal にサインインする
  2. ジョブを送信する Quantum ワークスペースに移動します。
  3. [ 概要 ] ページで、 リソース ID を見つけてコピーします。

ワークスペースに接続する

  1. Quantum ワークスペースに接続するには、コピーしたリソース ID を持つ Workspace オブジェクトを作成します。

    from qdk.azure import Workspace
    
    workspace = Workspace(resource_id="") # Add your resource ID
    

    Note

    Y

  2. 接続を確認し、ワークスペースで使用可能な targets を表示します。

    for target in workspace.get_targets():
        print(target.name)
    

その他の接続と認証オプションについては、「Azure Quantum ワークスペースに接続する」を参照してください。

Note

次の例では、 シミュレーター targetsにジョブを送信します。 ワークスペースで使用できる targets は、構成されているプロバイダーによって異なります。

プログラムを準備して送信する

量子言語またはフレームワークのタブを選択します。

qdk.qsharp モジュールを使用して、Q#コードを定義または読み込み、エントリ ポイントをQIRにコンパイルし、QIRをAzure Quantumtargetに送信します。

Q# プログラムを定義してコンパイルする

  1. Azure Quantum targetがサポートするQIRtarget プロファイルを使用してQ#を初期化します。

    from qdk import qsharp, TargetProfile
    
    qsharp.init(target_profile=TargetProfile.Base)
    

    QIR target プロファイルの詳細については、QDKのAzure QuantumQIRtargetプロファイルを参照してください。

  2. Q#操作を定義します。 たとえば、次の RandomBit 操作を使用します。

    qsharp.eval("""
        operation RandomBit() : Result {
            use q = Qubit();
            H(q);
            return MResetZ(q);
        }
    """)
    
  3. ローカル シミュレーターで操作をテストします。

    print(qsharp.run("RandomBit()", shots=10))
    
  4. 操作をQIRにコンパイルします。

    from qdk.qsharp import compile
    
    program = compile("RandomBit()")
    

Q# ジョブを送信する

  1. ワークスペースから互換性のある target を選択します。

    target = workspace.get_targets("rigetti.sim.qvm")
    
  2. コンパイル済みプログラムを送信します。

    job = target.submit(program, "qsharp-job", shots=100)
    print("Job ID:", job.id)
    
  3. ジョブが完了するまで待ち、その結果を取得します。

    job.wait_until_completed()
    print("Status:", job.details.status)
    
    results = job.get_results()
    print(results)