키스킷 0.30 릴리즈 노트
0.30.1
테라 0.18.3
Prelude
이 버그 수정 릴리스는 0.18 에서 몇 가지 사소한 문제를 수정합니다 assemble 의 성능 회귀를 포함하여 QuantumCircuit 객체를 처리할 때의 성능 저하를 포함합니다.
버그 수정
- 펄스 백엔드에서 실행할 때
AttributeError오류가 발생하던 #7004 수정ScheduleBlock를 실행할 때 발생하는 문제를 수정했습니다. 이러한 블록은 이제 다음과 같이 펄스 작업으로 올바르게 처리됩니다Schedule. - 복잡한 매개변수 값을 연산자 계수에 바인딩할 때 오류가 발생하는 문제를 수정했습니다. 에서
float로의 캐스트PrimitiveOp는 필요한 경우complex로 캐스팅하는 것으로 일반화되었지만, 가상의 구성 요소가 없는 경우float으로 유지됩니다. 6976 수정. - 의 1-큐비트 게이트 오류를 업데이트하여
plot_error_map의 1-큐비트 게이트 오류를 업데이트하여 u2 게이트 대신 sx 게이트를 사용하도록 합니다.
에어 0.9.0
변경 없음
이그니스 0.6.0
변경 없음
아쿠아 0.9.5
변경 없음
IBM Q 제공자 0.16.0
변경 없음
0.30.0
테라 0.18.2
변경 없음
에어 0.9.0
Prelude
0.9 릴리스에는 다른 일반적인 성능 개선 및 버그 수정과 함께 Dask 배포를 사용하여 HPC 클러스터에서 많은 수의 회로를 병렬로 실행하기 위한 새로운 백엔드 옵션이 포함되어 있습니다.
새 기능
-
Set_matrix_product_state에 대한 지원이 추가되었습니다.
-
키스킷 라이브러리 추가
SXdgGate와CUGate를 Aer 시뮬레이터 백엔드에 지원되는 베이시스 게이트에 추가하세요. 참고CUGate게이트는statevector및unitary메서드에서만 기본적으로 지원됩니다. 다른 시뮬레이션 방법의 경우 해당 방법에 대해 지원되는 기준 게이트로 트랜스파일해야 합니다. -
AerSimulator및QasmSimulator의 모든 시뮬레이션 메서드에 N-qubit 폴리 게이트(qiskit.circuit.library.generalized_gates.PauliGate)에 대한 지원을 추가합니다. -
사용자 지정 실행기를 설정하고 HPC 클러스터에서 여러 회로를 병렬로 실행하기 위한 작업 분할을 구성하는 기능을 추가합니다. 사용자 지정 실행기는
executor옵션을 사용하여 설정할 수 있으며, 작업 분할은max_job_size옵션을 사용하여 구성할 수 있습니다.예를 들어 백엔드를 구성하고 다음을 사용하여 실행하는 경우
backend = AerSimulator(max_job_size=1, executor=custom_executor) job = backend.run(circuits)는 실행을 각각 단일 회로를 포함하는 여러 작업으로 분할합니다. 작업 분할이 활성화된 경우
run메서드는 모든 개별AerJob클래스가 포함된AerJobSet객체를 반환합니다. 모든 개별 작업 실행이 완료되면 작업 결과는job.result()에서 반환하는 단일 결과 개체로 자동 결합됩니다.지원되는 실행기에는 Python
concurrent.futures모듈의 실행기(예:ThreadPoolExecutor,ProcessPoolExecutor)와 선택 사항인 dask 라이브러리가 설치된 경우 Dask 분산 클라이언트 실행기가 포함됩니다. Dask 실행기를 사용하면 HPC 클러스터에서 여러 회로를 병렬로 실행하도록 구성할 수 있습니다. -
백엔드 옵션
mps_log_data=True을 설정하여 실험 결과 메타데이터에matrix_product_state시뮬레이션 방법에 대한 로깅 데이터를 기록하는 기능을 추가합니다. 저장된 데이터에는 모든 관련 회로 명령어 후에 결합 치수와 버려진 값(근사치로 버려진 슈미트 계수의 제곱의 합계)이 포함됩니다. -
AerSimulator,QasmSimulator,StatevectorSimulator,UnitarySimulator에 대한run()메서드에는 인바운드 회로의 언바운드 파라미터에 사용할 값 목록을 제공하는 데 사용되는 새로운 kwarg,parameter_binds이 있습니다. 예를 들어,from qiskit.circuit import QuantumCircuit, Parameter from qiskit.providers.aer import AerSimulator shots = 1000 backend = AerSimulator() circuit = QuantumCircuit(2) theta = Parameter('theta') circuit.rx(theta, 0) circuit.cx(0, 1) circuit.measure_all() parameter_binds = [{theta: [0, 3.14, 6.28]}] backend.run(circuit, shots=shots, parameter_binds=parameter_binds).result()는 세타에 대해 0, 3.14, 6.28 값을 사용하여 입력 회로를 3번 실행합니다. 여러 매개변수로 실행할 때는 값 목록의 길이가 모두 같아야 합니다. 여러 회로로 실행하는 경우
parameter_binds의 길이는 입력 회로의 수와 일치해야 합니다(회로에 바인딩이 없는 경우 빈 딕셔너리인{}을 사용할 수 있습니다). -
이제
PulseSimulator에서QuantumCircuit객체를run(). 이전에는Schedule객체를run()에 대한 입력으로만 사용할 수 있었습니다. 회로 또는 회로 목록이 시뮬레이터에 전달되면 시뮬레이터는 회로를 실행하기 전에 다음을 호출합니다schedule()를 호출하여 회로를 실행하기 전에 회로를 스케줄로 변환합니다. 예를 들어,from qiskit.circuit import QuantumCircuit from qiskit.compiler import transpile from qiskit.test.mock import FakeVigo from qiskit.providers.aer.backends import PulseSimulator backend = PulseSimulator.from_backend(FakeVigo()) circuit = QuantumCircuit(2) circuit.h(0) circuit.cx(0, 1) circuit.measure_all() transpiled_circuit = transpile(circuit, backend) backend.run(circuit)
알려진 문제점
- 특정 폴리 연산자 구성 요소에 대해 잘못된 값을 반환하는 문제로 인해
QasmSimulator및AerSimulator의 확장_안정화 메서드에 대해SaveExpectationValue및SaveExpectationValueVariance이 비활성화되었습니다. 자세한 내용과 예시는 #1227 <https://github.com/Qiskit/qiskit-aer/issues/1227> 을 참조하세요.
업그레이드 주의사항
NoiseModel클래스의 기본 베이스가 qiskit-terra의u3서킷 메서드 사용 중단과 qiskit-ibmq-provider 백엔드 베이스 게이트의 변경으로 인해["id", "u3", "cx"]에서["id", "rz", "sx", "cx"]로 변경되었습니다. 이전 기준 게이트를 사용하려면 사용자 지정 기준 게이트로 노이즈 모델을NoiseModel(basis_gates=["id", "u3", "cx"])으로 초기화하면 됩니다.- Qiskit-aer 0.7 에서 더 이상 사용되지 않는
run메서드의 에어 백엔드에서backend_optionskwarg를 제거했다. 이제 모든 실행 옵션은 별도의 kwarg로 전달해야 합니다. PulseSimulator의run메서드에 대한 위치 인수로system_model를 전달하는 것을 제거했습니다.
지원 중단 노트
- 에어 시뮬레이터 백엔드의
run()메서드에 직접 조립된 qobj를 전달하는 것은 더 이상 사용되지 않으며, 트랜스파일된 회로를backend.run(circuits, **run_options)로 직접 전달하는 것이 좋습니다. qiskit.providers.aer.extensions의 모든 스냅샷 지침은 더 이상 사용되지 않습니다. 교체하려면qiskit.providers.aer.library모듈의 저장 지침을 참조하세요.NoiseModel에 비로컬 양자 오류를 추가하는 것은 이 노이즈가 최적화된 회로에 적용되는 방식에 일관성이 없기 때문에 더 이상 사용되지 않습니다. 비로컬 노이즈는 시뮬레이터에서 실행하기 전에 커스텀 트랜스파일러 패스를 사용하여 키스킷의 예약된 회로에 수동으로 추가해야 합니다.StatevectorSimulator및UnitarySimulator의method옵션을 사용하여 GPU 시뮬레이션을 실행하는 것은 더 이상 사용되지 않습니다. 호환되는 시스템에서 GPU 시뮬레이션을 실행하려면device='GPU'옵션을 대신 사용하세요.
버그 수정
basis_gates구성 속성의 설정 방식과 관련된 성능 문제를 수정했습니다. 이전에는 백엔드 클래스에 의도하지 않은 부작용이 발생하여 시뮬레이션 런타임이 점점 더 늘어날 수 있었습니다. 자세한 내용과 예시는 #1229 <https://github.com/Qiskit/qiskit-aer/issues/1229> 를 참조하세요.- MPS::apply_kraus의 버그가 수정되었습니다. 관련 큐비트에 크라우스 행렬을 적용한 후에는 인접 큐비트에 변경 사항을 전파해야 합니다.
- 멀티플렉서 게이트의 큐비트가 먼저 타깃이 되고 그 다음이 게이트의 제어라고 가정하는 버그가 수정되었지만, 키스킷-테라에서는 반대 순서를 가정하는 버그가 수정되었습니다.
- 0.8.0 에 도입된 버그를 수정하여 GPU 시뮬레이션이 GPU 메모리 외에 불필요한 호스트 메모리를 할당하던 문제를 해결했습니다.
- 초기화 명령이 첫 번째 회로 명령이거나 모든 큐비트에 적용되어 결정론적일 때에도 상태 벡터 및 행렬 곱 상태 시뮬레이션 방법에 대한 측정 샘플링 최적화를 비활성화하던 버그가 수정되었습니다.
- 문제 #1196을 수정하여 계산 기준 상태와 내부 곱을 사용하여 규범 추정 알고리즘이 아닌 규범을 계산합니다.
QasmSimulator및AerSimulator의stabilizer시뮬레이터 메서드에서save_expectation_value및snapshot_expectation_value의 기대값이 특정Y폴리에 대해 잘못된 부호를 가질 수 있는 버그를 수정합니다.- 필요한 메모리가 시스템 메모리보다 작은 경우 다중 청크 시뮬레이션 방법이 활성화되어도 시뮬레이션이 계속 시작되던 버그가 수정되었습니다. 이제 이 경우 메모리 부족 예외가 발생합니다.
set_options(shots=k)으로 백엔드에shots옵션을 설정하면 항상 지정된 값이 아닌 기본 샷 수(1024)가 실행되던 문제를 수정했습니다.AerSimulator에서max_parallel_experiments=1의 옵션 값을 처리하는 방법의 버그를 수정했습니다. 이전에는max_parallel_experiments=0와 동일하게 취급되었습니다.- 켈레이 게이트 및 멀티 큐비트 폴리 명령어를 지원되지 않는 것으로 잘못 처리하던
extended_stabilizer시뮬레이션 방법의 버그를 수정했습니다. extended_stabilizer_norm_estimation_repetitions옵션에 대한AerSimulator및QasmSimulator옵션의 오타를 수정했습니다.matrix_product_state시뮬레이션 방법을 사용하여unitary게이트를 적용할 때 게이트가 적용되는 큐비트 순서에서 순열을 제대로 지원하지 않던 버그가 수정되었습니다.- 게이트 융합이 지원되지 않는데도
matrix_product_state시뮬레이션 방법에 대해 여전히 활성화될 수 있는 문제를 수정했습니다. 이제 이 방법에서는 퓨전이 항상 비활성화됩니다. - SVD 수행 후 슈미트 계수를 잘라낸 후 정규화를 계산할 때
matrix_product_state시뮬레이션 방법의 버그가 수정되었습니다.
기타 참고사항
matrix_product_state시뮬레이션 방법의 측정 샘플링 알고리즘 성능을 개선합니다. 새로운 기본 동작은 항상 개선된mps_apply_measure방법을 사용하여 샘플링하는 것입니다.mps_probabilities샘플링 방법은 사용자 지정 옵션 값mps_sample_measure_algorithm="mps_probabilities"을 설정하여 계속 사용할 수 있습니다.
이그니스 0.6.0
변경 없음
아쿠아 0.9.5
변경 없음
IBM Q 제공자 0.16.0
변경 없음