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 パッケージを azure と jupyter 追加でインストールします。

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

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

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

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

Warning

2027 年 1 月 11 日以降、 Azure Quantum では、Quantum ワークスペース内のユーザーは、Quantum ワークスペース データ閲覧者 ロールまたは Quantum ワークスペース データ共同作成者 ロールを持ってジョブの結果にアクセスする必要があります。 ジョブを送信するには、Quantum Workspace データの共同作成者のロールが必要です。 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)