Gyakorlat – Az Azure Quantum Resource Estimator használatának első lépései

Befejeződött

Lássunk néhány gyakorlást az Azure Quantum Resource Estimator használatával. Az alábbi példában egy Shor algoritmusmintájának fizikai erőforrásait becsüli meg.

Qsharp és qsharp-widgetek telepítése

Először telepítse a legújabb Azure Quantumot qsharp és qsharp-widgets csomagokat.

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

A kvantum-algoritmus létrehozása

  1. A VS Code-ban válassza a Parancspaletta megtekintése > lehetőséget, majd a Létrehozás: Új Jupyter-jegyzetfüzet lehetőséget.

  2. Importálja qsharp a csomagot a jegyzetfüzet első cellájába.

    import qsharp
    from qsharp_widgets import EstimateDetails
    
  3. Adjon hozzá egy új cellát, és másolja a következő kódot.

    %%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;
        }
    

A kvantum-algoritmus becslése

  1. Most az alapértelmezett feltételezések alapján megbecsülheti a RandomBit művelet fizikai erőforrásait. Adjon hozzá egy új cellát, és másolja a következő kódot.

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

    A qsharp.estimate függvény létrehoz egy eredményobjektumot, amely a teljes fizikai erőforrásszámmal rendelkező táblázat megjelenítésére használható. Az első táblázat a fizikai erőforrások fő becsléseit mutatja. A RandomBit művelethez 300 qubit szükséges, és 2 mikroszekundumot igényel a kvantumszámítógépen való futtatáshoz.

    Fizikai erőforrások becslése Value
    Futtatókörnyezet 2 mikrosec
    rQOPS 3,00 M
    Fizikai qubitek 300
  2. A költségadatokat a csoportok összecsukásával vizsgálhatja meg, amelyek további információkkal rendelkeznek. Összecsukhatja például a Logikai qubit paraméterek csoportját, így láthatja, hogy a kód távolsága 5, a logikai qubitenkénti fizikai qubitek száma pedig 50.

    Logikai qubitparaméter Value
    QEC-séma surface_code
    Kód távolsága 5
    Fizikai qubitek 50
    Logikai ciklus ideje 2 mikrosec
    Logikai qubit hibaaránya 3.00E-5
    Keresztezés előtagja 0.03
    Hibajavítási küszöbérték 0,01
    Logikai ciklusidő képlete (4 * twoQubitGateTime + 2 * oneQubitMeasurementTime) * codeDistance
    Fizikai qubitek képlete 2 * codeDistance * codeDistance
  3. A mezővel jobParams elérheti a feladat végrehajtásának átadható összes célparamétert, és megtekintheti, hogy mely alapértelmezett értékeket feltételezték:

    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'}}
    

    Láthatja, hogy az erőforrás-becslés a qubit_gate_ns_e3 qubitmodellt, a hibajavítási kódot és a surface_code 0,001 hibakeretet veszi a becslés alapértelmezett értékeiként.

Az alapértelmezett értékek módosítása és az algoritmus becslése

Amikor erőforrás-becslési kérelmet küld a programnak, megadhat néhány választható paramétert. Ezek a testre szabható célparaméterek:

  • errorBudget - az algoritmus általánosan engedélyezett hibakerete
  • qecScheme - a kvantumhiba-korrekciós (QEC) séma
  • qubitParams - a fizikai qubit paraméterei
  • constraints - az összetevő szintjén megkötések
  • distillationUnitSpecifications - a T-gyárak desztillációs algoritmusainak specifikációi
  • estimateType - egy- vagy határ

Qubitmodell módosítása

Ugyanannak az algoritmusnak a költségét a Majorana-alapú qubitparaméter , qubitParams,qubit_maj_ns_e6" használatával becsülheti meg.

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

Kvantumhiba-korrekciós séma módosítása

Az erőforrás-becslési feladatot újrafuttathatja ugyanahhoz a példához a Majorana-alapú qubitparamétereken egy floqued QEC-sémával. qecScheme

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

Hibakeret módosítása

Ezután futtassa újra ugyanazt a kvantumköröket errorBudget 10%-os egységgel.

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