Ćwiczenie — rozpoczynanie pracy z narzędziem do szacowania zasobów usługi Azure Quantum
W poprzedniej lekcji przedstawiono, że narzędzie do szacowania zasobów usługi Azure Quantum przyjmuje trzy główne parametry wejściowe: fizyczne parametry kubitu, schemat korekty błędu kwantowego (QEC) i budżet błędów.
Teraz przećwiczmy narzędzie do szacowania zasobów. W tej lekcji użyjesz narzędzia do szacowania zasobów w celu oszacowania wymagań dotyczących zasobów fizycznych dla prostego programu kwantowego.
Instalowanie wymaganych pakietów
Aby użyć narzędzia do szacowania zasobów, zainstaluj najnowsze qsharp pakiety i qsharp-widgets pakiety języka Python z zestawu Azure Quantum Development Kit (QDK).
python -m pip install --upgrade qsharp qsharp-widgets
Jeśli rozszerzenie QDK dla programu Visual Studio Code (VS Code) nie zostało jeszcze zainstalowane, zobacz Instalowanie rozszerzenia QDK.
Tworzenie algorytmu kwantowego w notesie Jupyter
Napiszmy algorytm kwantowy w notesie Jupyter. Aby utworzyć notes Jupyter za pomocą zestawu QDK w programie VS Code, wykonaj następujące kroki:
Otwórz program VS Code.
Otwórz menu Widok , a następnie wybierz pozycję Paleta poleceń. Zostanie wyświetlone pole wejściowe.
W polu wejściowym wprowadź i wybierz opcję Utwórz: nowy Jupyter Notebook.
W pierwszej komórce tego notesu zaimportuj pakiet
qsharporaz funkcjęEstimateDetails.import qsharp from qsharp_widgets import EstimateDetailsWybierz przycisk + Kod , aby dodać nową komórkę.
Skopiuj następujący
RandomBitkod do nowej komórki:%%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 accessible 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 zasobów dla algorytmu kwantowego
Uruchom narzędzie do szacowania zasobów, aby oszacować zasoby fizyczne potrzebne do uruchomienia RandomBit operacji. Jeśli nie określisz żadnych parametrów, narzędzie do szacowania zasobów używa następujących domyślnych wartości parametrów:
-
qubit_gate_ns_e3dla modelu kubitu -
surface_codekod poprawki błędu - 0.001 dla budżetu błędów
Aby uruchomić narzędzie do szacowania zasobów, wykonaj następujące kroki:
Dodaj nową komórkę i skopiuj następujący kod do tej komórki:
result = qsharp.estimate("RandomBit()") EstimateDetails(result)Funkcja
qsharp.estimatetworzy obiekt wynikowy zawierający informacje z narzędzia do szacowania zasobów. Przekazujemyresultdo funkcjiEstimateDetails, która wyświetla zestaw tabel w listach rozwijanych zawierających dane wyjściowe z narzędzia do szacowania zasobów.Rozwiń pierwszą tabelę o nazwie Szacowanie zasobów fizycznych. W tej tabeli przedstawiono środowisko uruchomieniowe, niezawodne operacje kwantowe na sekundę oraz liczbę kubitów wymaganych do uruchomienia algorytmu.
Szacowanie zasobów fizycznych Wartość Środowisko uruchomieniowe 2 mikrosekony rQOPS 3,00 mln Kubity fizyczne 300 Operacja
RandomBitwymaga 300 kubitów fizycznych i trwa dwie mikrosekundy.Wybierz ponownie listę rozwijaną Szacowanie zasobów fizycznych, aby zwinąć tabelę.
Aby sprawdzić inne tabele, wybierz listę rozwijaną, aby rozwinąć odpowiednią tabelę. Na przykład wybierz z listy rozwijanej Parametry kubitu logicznego. W tej tabeli pokazano, że odległość kodu wynosi 5 oraz że na każdy kubit logiczny przypada 50 kubitów fizycznych.
Parametr kubitu logicznego Wartość Schemat QEC surface_codeOdległość kodu 5 Kubity fizyczne 50 Czas cyklu logicznego 2 mikrosekony Wskaźnik błędów kubitu logicznego 3.00e-5 Współczynnik przeprawy 0.03 Próg korekty błędu 0,01 Formuła czasu cyklu logicznego (4 * twoQubitGateTime+ 2 *oneQubitMeasurementTime) *codeDistanceFormuła kubitów fizycznych 2 * codeDistance*codeDistancejobParamsUżyj pola, aby uzyskać dostęp do wszystkich parametrów docelowych, które można przekazać do zadania, i zbadać wartości domyślne parametrów, które nie są określone. Utwórz nową komórkę i skopiuj następujący kod do tej komórki:result['jobParams']Uruchom nową komórkę i sprawdź dane wyjściowe:
{'qecScheme': {'name': 'surface_code', 'errorCorrectionThreshold': 0.01, 'crossingPrefactor': 0.03, 'distanceCoefficientPower': 0, 'logicalCycleTime': '(4 * twoQubitGateTime + 2 * oneQubitMeasurementTime) * codeDistance', 'physicalQubitsPerLogicalQubit': '2 * codeDistance * codeDistance', 'maxCodeDistance': 50}, 'errorBudget': 0.001, 'qubitParams': {'instructionSet': 'GateBased', 'name': 'qubit_gate_ns_e3', 'oneQubitMeasurementTime': '100 ns', 'oneQubitGateTime': '50 ns', 'twoQubitGateTime': '50 ns', 'tGateTime': '50 ns', 'oneQubitMeasurementErrorRate': 0.001, 'oneQubitGateErrorRate': 0.001, 'twoQubitGateErrorRate': 0.001, 'tGateErrorRate': 0.001, 'idleErrorRate': 0.001}, 'constraints': {'maxDistillationRounds': 3}, 'estimateType': 'singlePoint'}
W przypadku tego algorytmu Estimator zasobów używa modelu kubitu qubit_gate_ns_e3, kodu korekty błędu surface_code oraz wartości 0,001 na budżet błędu. Są to wartości domyślne tych parametrów, ponieważ nie określono ich wartości podczas wywoływanego narzędzia do szacowania zasobów.
Zmień wartości domyślne i ponownie szacuj zasoby
Aby uruchomić narzędzie do szacowania z wartościami parametrów innych niż wartości domyślne, określ inne wartości parametrów podczas wywoływania narzędzia do szacowania zasobów. Zmieńmy model kubitu, schemat QEC i budżet błędów.
Zmień model kubitu
Szacowanie kosztów uruchamiania tego samego algorytmu na maszynie Majorana. W tym celu przekaż parametr qubitParams z polem name ustawionym jako qubit_maj_ns_e6 podczas wywoływania narzędzia do szacowania zasobów.
W nowej komórce skopiuj i uruchom następujący kod:
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
}})
EstimateDetails(result_maj)
Rozwiń listy rozwijane w danych wyjściowych, aby dowiedzieć się, jak koszty zasobów różnią się dla maszyny Majorana w porównaniu z maszyną bramkową.
Zmienianie schematu QEC
Następnie szacuj koszt dla tego samego algorytmu na maszynie Majorana ze schematem QEC Floquet. W tym celu przekaż parametr qecScheme z polem name ustawionym jako floquet_code podczas wywoływania narzędzia do szacowania zasobów.
W nowej komórce skopiuj i uruchom następujący kod:
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
},
"qecScheme": {
"name": "floquet_code"
}})
EstimateDetails(result_maj)
Rozwiń listy rozwijane w danych wyjściowych, aby dowiedzieć się, jak koszty zasobów różnią się w schemacie QEC Floquet w porównaniu ze schematem kodu powierzchni.
Zmień budżet błędów
Na koniec szacuj koszt tych samych parametrów co poprzednie oszacowanie, ale zwiększ budżet błędów do 10%. W tym celu przekaż errorBudget parametr z wartością ustawioną na 0.1 podczas wywoływania narzędzia do szacowania zasobów.
W nowej komórce skopiuj i uruchom następujący kod:
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
},
"qecScheme": {
"name": "floquet_code"
},
"errorBudget": 0.1})
EstimateDetails(result_maj)
Gratulacje! Narzędzie do szacowania zasobów zostało pomyślnie użyte do oszacowania zasobów fizycznych wymaganych do uruchomienia prostego algorytmu kwantowego. Parametry zostały również dostosowane, aby zobaczyć, jak wpływają one na oszacowania zasobów.
W następnej lekcji oszacujesz zasoby potrzebne do znacznie bardziej złożonego programu kwantowego: algorytm Shora.