Pobieranie danych wyjściowych narzędzia do szacowania zasobów
Dowiedz się, jak interpretować i pobierać parametry wyjściowe oraz diagramy narzędzia do szacowania zasobów. W tym artykule wyjaśniono, jak programowo uzyskać dostęp do wyników narzędzia do szacowania zasobów w notesach Jupyter w programie Visual Studio Code.
Wymagania wstępne
Środowisko Pythona z zainstalowanymi Pythonem i Pipem.
Najnowsza wersja programu Visual Studio Code lub otwórz program VS Code w sieci Web.
Program VS Code z zainstalowanymi rozszerzeniami Azure Quantum Development Kit, Python i Jupyter .
Najnowsze pakiety Azure Quantum
qsharp
iqsharp-widgets
.python -m pip install --upgrade qsharp qsharp-widgets
Uwaga
Jeśli uruchomisz narzędzie do szacowania zasobów w programie Visual Studio Code z palety poleceń, następujące polecenia nie będą stosowane. Aby uzyskać więcej informacji, zobacz Różne sposoby uruchamiania narzędzia do szacowania zasobów.
Parametry wyjściowe
Dane wyjściowe narzędzia do szacowania zasobów to raport, który jest drukowany w konsoli programu i można uzyskać do nich dostęp programowo. Na przykład poniższy fragment kodu pokazuje, jak uzyskać dostęp do parametrów szacowania zasobów.
result['jobParams']
Następujące dane wyjściowe stanowią możliwe wpisy, do których można uzyskać dostęp programowo.
Parametr wyjściowy najwyższego poziomu | Typ danych | opis |
---|---|---|
status |
sznurek | Stan zadania to zawsze Succeeded . |
jobParams |
słownik | Parametry target zadania, które są przekazywane jako wejście. |
physicalCounts |
słownik | Szacowany zasób fizyczny. Aby uzyskać więcej informacji, zobacz Fizyczne liczenie. |
physicalCountsFormatted |
słownik | Szacowane zasoby fizyczne sformatowane do wyświetlania w danych raportu. Aby uzyskać więcej informacji, zobacz Liczba fizyczne sformatowane. |
logicalQubit |
słownik | Właściwości kubitu logicznego. Aby uzyskać więcej informacji, zobacz Logiczny kubit. |
tfactory |
słownik | Właściwości fabryki T. |
logicalCounts |
słownik | Wstępne szacunki zasobów logicznych przed rozmieszczeniem. Aby uzyskać więcej informacji, zobacz Liczby logiczne. |
reportData |
słownik | Dane generowania raportu szacowania zasobów. |
Inwentaryzacja fizyczna
Słownik physicalCounts
zawiera następujące wpisy:
Parametr wyjściowy | Typ danych | opis |
---|---|---|
physicalQubits |
Liczba | Całkowita liczba kubitów fizycznych. |
runtime |
Liczba | Całkowity czas wykonania algorytmu w nanosekundach. |
rqops |
Liczba | Liczba niezawodnych operacji kwantowych na sekundę (QOPS). |
breakdown |
słownik | Podział oszacowań. Aby uzyskać więcej informacji, zobacz szczegóły inwentaryzacji fizycznej. |
Podział fizycznych ilości
Słownik breakdown
dla physicalCounts
zawiera następujące wpisy:
Parametr wyjściowy | Typ danych | opis |
---|---|---|
algorithmicLogicalQubits |
Liczba | Kubity logiczne wymagane do uruchomienia algorytmu i nie obejmują zasobów dla fabryk T. |
algorithmicLogicalDepth |
Liczba | Cykle logiczne wymagane do uruchomienia algorytmu i nie obejmują zasobów dla fabryk T. |
logicalDepth |
Liczba | Ewentualnie skorygowana liczba cykli obliczanych za każdym razem, gdy czas wykonywania fabryki T jest szybszy niż wykonywanie algorytmu. |
numTstates |
Liczba | Liczba stanów T używanych przez algorytm. |
clockFrequency |
Liczba | Liczba cykli logicznych na sekundę. |
numTfactories |
Liczba | Liczba fabryk T (przy założeniu jednolitego projektu fabryki T). |
numTfactoryRuns |
Liczba | Liczba częstotliwości uruchamiania wszystkich równoległych fabryk T. |
physicalQubitsForTfactories |
Liczba | Liczba kubitów fizycznych dla wszystkich fabryk typu T. |
physicalQubitsForAlgorithm |
Liczba | Liczba kubitów fizycznych dla układu algorytmu. |
requiredLogicalQubitErrorRate |
Liczba | Wymagana liczba błędów logicznych. |
requiredLogicalTstateErrorRate |
Liczba | Wymagana liczba błędów stanu logicznego T. |
numTsPerRotation |
Liczba | Liczba bram T na obrót. |
cliffordErrorRate |
Liczba | Współczynnik błędów Cliffordu oparty na parametrach kubitu. |
Liczba fizyczna sformatowana
Słownik physicalCountsFormatted
zawiera następujące wpisy:
Parametr wyjściowy | Typ danych | opis |
---|---|---|
runtime |
string | Całkowity czas wykonywania w formacie przyjaznym dla użytkownika. |
rqops |
string | Liczba niezawodnych operacji kwantowych na sekundę (QOPS) ujętych z przedrostkiem metrycznym. |
physicalQubits |
ciąg znaków | Całkowita liczba kubitów fizycznych z sufiksem metryki. |
algorithmicLogicalQubits |
struna | Algorytmiczne kubity logiczne z sufiksem metrycznym. |
algorithmicLogicalDepth |
string | Algorytmiczna głębokość logiczna z sufiksem metrycznym. |
logicalDepth |
string | Możliwie skorygowana algorytmiczna głębokość logiczna z sufiksem metrycznym. |
numTstates |
string | Liczba stanów T z sufiksem metryki. |
numTfactories |
string | Liczba fabrycznych kopii T z sufiksem metrycznym. |
numTfactoryRuns |
string | Liczba uruchomień fabryki T z sufiksem jednostki miary. |
physicalQubitsForAlgorithm |
string | Liczba fizycznych kubitów algorytmu z sufiksem metryki. |
physicalQubitsForTfactories |
string | Liczba kubitów fizycznych dla fabryk T z metrycznym sufiksem. |
physicalQubitsForTfactoriesPercentage |
ciąg znaków | Liczba kubitów fizycznych dla wszystkich fabryk T w procentach do sumy. |
requiredLogicalQubitErrorRate |
string | Skrócony wymagany logiczny współczynnik błędów kubitu. |
requiredLogicalTstateErrorRate |
string | Skrócony wymagany współczynnik błędów stanu T. |
physicalQubitsPerLogicalQubit |
string | Liczba kubitów fizycznych na kubit logiczny z metrycznym sufiksem. |
logicalCycleTime |
ciąg/sznurek/struna | Logiczny czas cyklu logicznego kubitu jako przyjazny dla człowieka ciąg. |
clockFrequency |
string | Liczba cykli logicznych na sekundę jako ciąg znaków przyjazny dla użytkownika. |
logicalErrorRate |
string | Skrócony logiczny współczynnik błędów. |
tfactoryPhysicalQubits |
string | Liczba kubitów fizycznych w fabryce T z sufiksem metrycznym (lub komunikatem, że nie ma fabryki T). |
tfactoryRuntime |
string | Czas działania pojedynczej fabryki T jako ciąg znaków czytelny dla użytkownika (lub wiadomość, że nie ma fabryki T). |
numInputTstates |
string | Liczba stanów wejściowych T lub informacja, że nie ma fabryki T. |
numUnitsPerRound |
string | Liczba jednostek na rundę destylacji rozdzielona przecinkami w ciągu (lub komunikat, że nie ma fabryki T). |
unitNamePerRound |
string | Nazwy jednostek każdej rundy destylacji, rozdzielone przecinkami w ciągu (lub informacja, że nie ma fabryki T). |
codeDistancePerRound |
string | Odległość kodu na rundę destylacji, przecinek oddzielony ciągiem (lub komunikatem, że nie ma fabryki T). |
physicalQubitsPerRound |
string | Liczba kubitów fizycznych na rundę destylacji, rozdzielona przecinkami w formie ciągu znaków (lub wiadomość, że nie ma fabryki T). |
tfactoryRuntimePerRound |
string | Czas trwania każdej rundy destylacji, wyświetlany jako ciągi przyjazne dla człowieka rozdzielone przecinkami (lub komunikat, że nie ma fabryki T). |
tstateLogicalErrorRate |
string | Skrócony współczynnik błędów stanu logicznego T (lub komunikat, że nie ma fabryki T). |
logicalCountsNumQubits |
string | Liczba kubitów (układ wstępny) z metrycznym sufiksem. |
logicalCountsTCount |
ciąg znaków | Liczba bram T (przed rozmieszczeniem) z sufiksem jednostki miary. |
logicalCountsRotationCount |
string | Liczba bram rotacji (układ wstępny) z sufiksem metryki. |
logicalCountsRotationDepth |
string | Głębokość obrotu (układ wstępny) z sufiksem metryki. |
logicalCountsCczCount |
string | Liczba bram CCZ (w układzie wstępnym) z dołączonym oznaczeniem metryki. |
logicalCountsCcixCount |
string | Liczba bram CCiX (przed rozmieszczeniem) z przedrostkiem metrycznym. |
logicalCountsMeasurementCount |
string | Liczba pomiarów pojedynczego kubitu (układ wstępny) z sufiksem metryki. |
errorBudget |
string | Skrócony całkowity budżet błędów. |
errorBudgetLogical |
string | Skrócony budżet błędów dla błędu logicznego. |
errorBudgetTstates |
string | Obcięty budżet błędów dla wadliwej destylacji stanu T. |
errorBudgetRotations |
string | Obcięty budżet błędów dla wadliwej syntezy rotacji. |
numTsPerRotation |
string | Sformatowana liczba Ts na obrót (może być wartością pustą). |
Kubit logiczny
Słownik logicalQubit
zawiera następujące wpisy:
Parametr wyjściowy | Typ danych | opis |
---|---|---|
codeDistance |
Liczba | Obliczona odległość kodu dla kubitu logicznego. |
physicalQubits |
Liczba | Liczba kubitów fizycznych dla każdego kubitu logicznego. |
logicalCycleTime |
Liczba | Czas wykonywania jednej operacji logicznej. |
logicalErrorRate |
Liczba | Logiczna szybkość błędów kubitu logicznego. |
Liczby logiczne
Słownik logicalCounts
zawiera następujące wpisy:
Parametr wyjściowy | Typ danych | opis |
---|---|---|
numQubits |
Liczba | Liczba kubitów przed rozmieszczeniem. |
tCount |
Liczba | Liczba bram T przed rozmieszczeniem. |
rotationCount |
Liczba | Wstępna liczba bram obrotu. |
rotationDepth |
Liczba | Głębokość rotacji przed rozmieszczeniem. |
cczCount |
Liczba | Wstępna liczba bram CCZ. |
ccixCount |
Liczba | Wstępna liczba bram CCiX. |
measurementCount |
Liczba | Wstępnie układ liczby pomiarów pojedynczego kubitu. |
Napiwek
Jeśli chcesz użyć wstępnie obliczonego zestawu liczb logicznych dla zadania szacowania zasobów, możesz użyć LogicalCounts
operacji Python, aby przekazać znane oszacowania do Resource Estimator. Aby uzyskać więcej informacji, zobacz How to use known estimates with the Resource Estimator (Jak używać znanych oszacowań za pomocą narzędzia do szacowania zasobów).
Diagram przestrzeni
Ogólne szacowanie zasobów fizycznych składa się z całkowitej liczby kubitów fizycznych używanych zarówno dla algorytmu, jak i kopii fabrycznych T. Rozkład między nimi można sprawdzić przy użyciu diagramu przestrzeni.
Diagram przestrzeni pokazuje proporcję fizycznych kubitów używanych dla algorytmu i fabryk T. Należy pamiętać, że liczba kopii fabrycznych T przyczynia się do liczby fizycznych kubitów dla fabryk T.
W notesie Jupyter możesz uzyskać dostęp do diagramu przestrzeni przy użyciu widżetu SpaceChart
z pakietu qsharp-widgets
.
import qsharp
from qsharp_widgets import SpaceChart
SpaceChart(result)
Diagram kołowy przedstawiający rozkład całkowitych kubitów fizycznych między kubitami algorytmu a kubitami instancji T. Istnieje tabela z podziałem liczby kopii instancji T i liczby kubitów fizycznych na instancję T.
Podczas uruchamiania wielu konfiguracji parametrów z szacowaniem granicy Pareto, można wykreślić diagram przestrzeni dla określonego rozwiązania. Na przykład poniższy kod pokazuje, jak wykreślić diagram przestrzeni dla pierwszej konfiguracji parametrów i trzeciego najkrótszego czasu wykonania.
SpaceChart(result[0], 2) # First (estimate index=0) run and third (point index=2) shortest runtime
Diagram czasu kosmicznego
W obliczeniach kwantowych istnieje kompromis między liczbą fizycznych kubitów a środowiskiem uruchomieniowym algorytmu. Możesz rozważyć alokację jak największej liczby kubitów fizycznych, aby zmniejszyć środowisko uruchomieniowe algorytmu. Jednak liczba kubitów fizycznych jest ograniczona przez liczbę kubitów fizycznych dostępnych na sprzęcie kwantowym. Zrozumienie kompromisu między środowiskiem uruchomieniowym a skalowaniem systemu jest jednym z ważniejszych aspektów szacowania zasobów.
Podczas szacowania zasobów algorytmu można użyć diagramu czasowego do wizualizacji kompromisów między liczbą kubitów fizycznych a środowiskiem uruchomieniowym algorytmu.
Uwaga
Aby wyświetlić wiele optymalnych kombinacji na diagramie czasoprzestrzennym, należy ustawić typ szacowania na szacowanie frontu Pareto. Jeśli uruchomisz narzędzie do szacowania zasobów w programie Visual Studio Code, korzystając z opcji Q#: Oblicz szacunki zasobów, estymacja granicy Pareto jest domyślnie włączona.
Diagram czasu kosmicznego umożliwia znalezienie optymalnej kombinacji {liczby kubitów, środowiska uruchomieniowego} par, które spełniają ograniczenia sprzętu kwantowego. Diagram przedstawia liczbę kubitów fizycznych i czas wykonania algorytmu dla każdej pary {liczba kubitów, czas wykonania}.
Aby uruchomić diagram czasoprzestrzenny w notesie Jupyter Notebook, możesz użyć EstimatesOverview
widżetu z pakietu qsharp-widgets
.
import qsharp
from qsharp_widgets import EstimatesOverview
EstimatesOverview(result, colors=["#1f77b4", "#ff7f0e"], runNames=["e4 Surface Code", "e6 Floquet Code"])
Zrzut ekranu przedstawiający diagram czasu kubitu w Estymatorze zasobów.
Napiwek
Aby wyświetlić szczegóły szacowania, możesz umieścić wskaźnik myszy na każdym punkcie na diagramie.
Diagram czasoprzestrzenny jest szczególnie przydatny podczas porównywania wielu konfiguracji parametrów target dla tego samego algorytmu.
Zrzut ekranu przedstawiający diagram czasoprzestrzenny i tabelę wyników podczas uruchamiania wielu konfiguracji parametrów w narzędziu do szacowania zasobów.
Uwaga
Jeśli wystąpi jakikolwiek problem podczas pracy z narzędziem do szacowania zasobów, zapoznaj się ze stroną Rozwiązywanie problemów lub skontaktuj się zAzureQuantumInfo@microsoft.com.