Ćwiczenie — rozpoczynanie pracy z narzędziem do szacowania zasobów usługi Azure Quantum

Ukończone

Wypróbujmy narzędzie do szacowania zasobów usługi Azure Quantum. W poniższym przykładzie oszacowasz zasoby fizyczne próbki algorytmu Shora.

Instalowanie zestawów qsharp i qsharp-widget

Najpierw zainstaluj najnowszą wersję usługi Azure Quantum qsharp i qsharp-widgets pakietów.

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

Tworzenie algorytmu kwantowego

  1. W programie Visual Studio Code wybierz pozycję Wyświetl paletę poleceń i wybierz pozycję Utwórz: nowy notes Jupyter.>

  2. W pierwszej komórce notesu zaimportuj qsharp pakiet:

    import qsharp
    from qsharp_widgets import EstimateDetails
    
  3. Dodaj nową komórkę i skopiuj następujący kod:

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

Szacowanie algorytmu kwantowego

  1. Teraz szacuj zasoby fizyczne dla RandomBit operacji przy użyciu domyślnych założeń. Dodaj nową komórkę i skopiuj następujący kod:

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

    Funkcja qsharp.estimate tworzy obiekt wynikowy, który może służyć do wyświetlania tabeli z ogólną liczbą zasobów fizycznych. Pierwsza tabela przedstawia główne oszacowania zasobów fizycznych. Operacja RandomBit wymaga 300 kubitów i przyjmuje dwie mikrosekundy do uruchomienia na komputerze kwantowym.

    Szacowanie zasobów fizycznych Wartość
    Środowisko uruchomieniowe 2 mikrosekony
    rQOPS 3,00 mln
    Kubity fizyczne 300
  2. Szczegóły kosztów można sprawdzić, zwijając grupy, które zawierają więcej informacji. Na przykład zwiń grupę Parametrów kubitu logicznego, aby zobaczyć, że odległość kodu wynosi 5, a liczba kubitów fizycznych na kubit logiczny wynosi 50.

    Parametr kubitu logicznego Wartość
    Schemat QEC surface_code
    Odległość kodu 5
    Kubity fizyczne 50
    Czas cyklu logicznego 2 mikrosekony
    Szybkość błędów kubitu logicznego 3.00E-5
    Wstępna przeprawa 0.03
    Próg korekty błędu 0,01
    Formuła czasu cyklu logicznego (4 * twoQubitGateTime + 2 * oneQubitMeasurementTime) * codeDistance
    Formuła kubitów fizycznych 2 * codeDistance * codeDistance
  3. Za pomocą jobParams pola można uzyskać dostęp do wszystkich parametrów docelowych, które można przekazać do wykonania zadania i sprawdzić, które wartości domyślne zostały przyjęte:

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

    Widać, że narzędzie do szacowania zasobów przyjmuje model kubitu qubit_gate_ns_e3 , surface_code kod korekty błędu i budżet błędu 0,001 jako wartości domyślne szacowania.

Zmienianie wartości domyślnych i szacowanie algorytmu

Podczas przesyłania żądania szacowania zasobów dla programu można określić niektóre parametry opcjonalne. Są to parametry docelowe, które można dostosować:

  • errorBudget: Ogólny dozwolony budżet błędów dla algorytmu
  • qecScheme: schemat poprawki błędów kwantowych (QEC)
  • qubitParams: parametry kubitu fizycznego
  • constraints: Ograniczenia na poziomie składnika
  • distillationUnitSpecifications: specyfikacje algorytmów destylowania fabryk T
  • estimateType: Pojedyncza lub granica

Zmienianie modelu kubitu

Koszt dla tego samego algorytmu można oszacować przy użyciu parametru kubitu opartego na majoranie, qubitParams, qubit_maj_ns_e6.

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

Zmienianie schematu korekty błędów kwantowych

Możesz ponownie uruchomić zadanie szacowania zasobów dla tego samego przykładu na podstawie parametrów kubitu opartego na Majorana ze schematem qecSchemeQEC floqued.

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

Zmiana budżetu błędu

Następnie ponownie uruchom ten sam obwód kwantowy z wartością errorBudget 10%.

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