Cvičení – začínáme s estimátorem prostředků Azure Quantum

Dokončeno

Pojďme se seznámit s estimátorem prostředků Azure Quantum. V následujícím příkladu odhadnete fyzické prostředky vzorku Shorova algoritmu.

Instalace widgetů qsharp a qsharp

Nejprve nainstalujte nejnovější azure Quantum qsharp a qsharp-widgets balíčky.

python -m pip install --upgrade qsharp qsharp-widgets 

Vytvoření kvantového algoritmu

  1. V editoru Visual Studio Code vyberte paletu Zobrazit > příkaz a vyberte Vytvořit: Nový poznámkový blok Jupyter.

  2. V první buňce poznámkového bloku naimportujte qsharp balíček:

    import qsharp
    from qsharp_widgets import EstimateDetails
    
  3. Přidejte novou buňku a zkopírujte následující kód:

    %%qsharp
    /// # Sample
    /// Random Bit
    ///
    /// # Description
    /// This Q# program generates a random bit by setting a qubit in a superposition
    /// of the computational basis states |0〉 and |1〉, and returning the measurement
    /// result.
    
        operation RandomBit() : Result {
            // Qubits are only accesible for the duration of the scope where they
            // are allocated and are automatically released at the end of the scope.
            use qubit = Qubit();
    
            // Set the qubit in superposition by applying a Hadamard transformation.
            H(qubit);
    
            // Measure the qubit. There is a 50% probability of measuring either 
            // `Zero` or `One`.
            let result = M(qubit);
    
            // Reset the qubit so it can be safely released.
            Reset(qubit);
            return result;
        }
    

Odhad kvantového algoritmu

  1. Nyní pomocí výchozích předpokladů odhadněte fyzické prostředky pro RandomBit operaci. Přidejte novou buňku a zkopírujte následující kód:

    result = qsharp.estimate("RandomBit()")
    result
    

    Funkce qsharp.estimate vytvoří výsledný objekt, který lze použít k zobrazení tabulky s celkovými počty fyzických prostředků. První tabulka ukazuje hlavní odhady fyzických prostředků. Operace RandomBit vyžaduje 300 qubitů a ke spuštění na kvantovém počítači trvá dvě mikrosekundy.

    Odhady fyzických prostředků Hodnota
    Šablona běhového prostředí 2 mikrosekuny
    rQOPS 3.00M
    Fyzické qubity 300
  2. Podrobnosti o nákladech můžete zkontrolovat sbalením skupin, které obsahují další informace. Například sbalením skupiny parametrů logického qubitu zjistíte, že vzdálenost kódu je 5 a počet fyzických qubitů na logický qubit je 50.

    Parametr logického qubitu Hodnota
    Schéma QEC surface_code
    Vzdálenost kódu 5
    Fyzické qubity 50
    Logická doba cyklu 2 mikrosekuny
    Míra chyb logického qubitu 3.00E-5
    Přechod předfaktorem 0.03
    Prahová hodnota opravy chyb 0,01
    Vzorec času logického cyklu (4 * twoQubitGateTime + 2 * oneQubitMeasurementTime) * codeDistance
    Vzorec fyzických qubitů 2 * codeDistance * codeDistance
  3. Pole můžete použít jobParams pro přístup ke všem cílovým parametrům, které se dají předat do provádění úlohy, a zjistit, které výchozí hodnoty se předpokládaly:

    result['jobParams']
    
    {'errorBudget': 0.001,
     'qecScheme': {'crossingPrefactor': 0.03,
      'errorCorrectionThreshold': 0.01,
      'logicalCycleTime': '(4 * twoQubitGateTime + 2 * oneQubitMeasurementTime) * codeDistance',
      'name': 'surface_code',
      'physicalQubitsPerLogicalQubit': '2 * codeDistance * codeDistance'},
     'qubitParams': {'instructionSet': 'GateBased',
      'name': 'qubit_gate_ns_e3',
      'oneQubitGateErrorRate': 0.001,
      'oneQubitGateTime': '50 ns',
      'oneQubitMeasurementErrorRate': 0.001,
      'oneQubitMeasurementTime': '100 ns',
      'tGateErrorRate': 0.001,
      'tGateTime': '50 ns',
      'twoQubitGateErrorRate': 0.001,
      'twoQubitGateTime': '50 ns'}}
    

    Můžete vidět, že estimátor prostředků vezme qubit_gate_ns_e3 qubitový model, surface_code kód opravy chyb a rozpočet chyb 0.001 jako výchozí hodnoty odhadu.

Změna výchozích hodnot a odhad algoritmu

Při odesílání žádosti o odhad prostředků pro váš program můžete zadat některé volitelné parametry. Toto jsou cílové parametry, které můžete přizpůsobit:

  • errorBudget: Celkový povolený rozpočet chyb pro algoritmus
  • qecScheme: Schéma opravy kvantových chyb (QEC)
  • qubitParams: Parametry fyzického qubitu
  • constraints: Omezení na úrovni součásti
  • distillationUnitSpecifications: Specifikace pro algoritmy pro destilační algoritmy t továren
  • estimateType: Jednoduchá nebo hraniční

Změna modelu qubitu

Náklady na stejný algoritmus můžete odhadnout pomocí parametru qubitu založeného na Majorana, qubitParams, qubit_maj_ns_e6.

result_maj = qsharp.estimate("RandomBit()", params={
                "qubitParams": {
                    "name": "qubit_maj_ns_e6"
                }})
EstimateDetails(result_maj)

Změna schématu oprav kvantových chyb

Úlohu odhadu prostředků můžete znovu spustit pro stejný příklad na parametrech qubitu založeného na majoraně se schématem QEC s floquedem. qecScheme

result_maj = qsharp.estimate("RandomBit()", params={
                "qubitParams": {
                    "name": "qubit_maj_ns_e6"
                },
                "qecScheme": {
                    "name": "floquet_code"
                }})
EstimateDetails(result_maj)

Změna rozpočtu chyb

V dalším kroku znovu spusťte stejný kvantový obvod s errorBudget 10 %.

result_maj = qsharp.estimate("RandomBit()", params={
                "qubitParams": {
                    "name": "qubit_maj_ns_e6"
                },
                "qecScheme": {
                    "name": "floquet_code"
                },
                "errorBudget": 0.1})
EstimateDetails(result_maj)