연습 - Azure Quantum Resource Estimator 시작
Azure Quantum 리소스 추정기를 연습해 보겠습니다. 다음 예제에서는 Shor 알고리즘 샘플의 실제 리소스를 추정합니다.
qsharp 및 qsharp 위젯 설치
먼저 최신 Azure Quantum qsharp
및 qsharp-widgets
패키지를 설치합니다.
python -m pip install --upgrade qsharp qsharp-widgets
양자 알고리즘 만들기
VS Code에서 명령 팔레트 보기를 > 선택하고 만들기: 새 Jupyter Notebook을 선택합니다.
Notebook의 첫 번째 셀에서 패키지를 가져옵니다
qsharp
.import qsharp from qsharp_widgets import EstimateDetails
새 셀을 추가하고 다음 코드를 복사합니다.
%%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; }
양자 알고리즘 예측
이제 기본 가정을 사용하여 작업에 대한
RandomBit
실제 리소스를 예측합니다. 새 셀을 추가하고 다음 코드를 복사합니다.result = qsharp.estimate("RandomBit()") result
이 함수는
qsharp.estimate
전체 물리적 리소스 수가 있는 테이블을 표시하는 데 사용할 수 있는 결과 개체를 만듭니다. 첫 번째 표에서는 실제 리소스 예상 기본 보여 줍니다. 이 작업에는RandomBit
300큐비트가 필요하며 양자 컴퓨터에서 실행하는 데 2마이크로초가 걸립니다.실제 자원 추정치 값 런타임 2 마이크로초 rQOPS 3.00M 물리적 큐비트 300 더 많은 정보가 있는 그룹을 축소해 비용 세부 정보를 검사할 수 있습니다. 예를 들어 논리 큐비트 매개 변수 그룹을 축소하여 코드 거리가 5이고 논리 큐비트당 실제 큐비트 수가 50인지 확인합니다.
논리 큐비트 매개 변수 값 QEC 체계 surface_code 코드 거리 5 물리적 큐비트 50 논리 주기 시간 2 마이크로초 논리적 큐비트 오류 비율 3.00E-5 교차 프리팩터 0.03 오류 수정 임계값 0.01 논리 주기 시간 수식 (4 * twoQubitGateTime
+ 2 *oneQubitMeasurementTime
) *codeDistance
실제 큐비트 수식 2 * codeDistance
*codeDistance
필드를
jobParams
사용하여 작업 실행에 전달할 수 있는 모든 대상 매개 변수에 액세스하고 어떤 기본값이 가정되었는지 확인할 수 있습니다.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'}}
리소스 추정기에서 큐비트 모델,
surface_code
오류 수정 코드 및 0.001 오류 예산을 예측의 기본값으로 사용하는qubit_gate_ns_e3
것을 볼 수 있습니다.
기본값 변경 및 알고리즘 예측
프로그램에 대한 리소스 예상 요청을 제출할 때 몇 가지 선택적 매개 변수를 지정할 수 있습니다. 사용자 지정할 수 있는 대상 매개 변수는 다음과 같습니다.
errorBudget
- 알고리즘에 대해 허용되는 전체 오류 예산qecScheme
- QEC(양자 오류 수정) 체계qubitParams
- 물리적 큐비트 매개 변수constraints
- 구성 요소 수준의 제약 조건distillationUnitSpecifications
- T 팩터리 증류 알고리즘에 대한 사양estimateType
- 단일 또는 프론티어
큐비트 모델 변경
Majorana 기반 큐비트 매개 변수 qubitParams
인 "qubit_maj_ns_e6"을 사용하여 동일한 알고리즘에 대한 비용을 예측할 수 있습니다.
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
}})
EstimateDetails(result_maj)
양자 오류 수정 체계 변경
Floqued QEC 스키마 qecScheme
를 사용하여 Majorana 기반 큐비트 매개 변수에서 동일한 예제에 대한 리소스 예측 작업을 다시 실행할 수 있습니다.
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
},
"qecScheme": {
"name": "floquet_code"
}})
EstimateDetails(result_maj)
오류 예산 변경
다음으로, 10%의 동일한 양자 회로를 errorBudget
다시 실행합니다.
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
},
"qecScheme": {
"name": "floquet_code"
},
"errorBudget": 0.1})
EstimateDetails(result_maj)