Skip to main content
IBM Quantum Platform

키스킷 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에 대한 지원이 추가되었습니다.

  • 키스킷 라이브러리 추가 SXdgGateCUGate 를 Aer 시뮬레이터 백엔드에 지원되는 베이시스 게이트에 추가하세요. 참고 CUGate 게이트는 statevectorunitary 메서드에서만 기본적으로 지원됩니다. 다른 시뮬레이션 방법의 경우 해당 방법에 대해 지원되는 기준 게이트로 트랜스파일해야 합니다.

  • AerSimulatorQasmSimulator 의 모든 시뮬레이션 메서드에 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)

알려진 문제점

  • 특정 폴리 연산자 구성 요소에 대해 잘못된 값을 반환하는 문제로 인해 QasmSimulatorAerSimulator 의 확장_안정화 메서드에 대해 SaveExpectationValueSaveExpectationValueVariance 이 비활성화되었습니다. 자세한 내용과 예시는 #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_options kwarg를 제거했다. 이제 모든 실행 옵션은 별도의 kwarg로 전달해야 합니다.
  • PulseSimulatorrun 메서드에 대한 위치 인수로 system_model 를 전달하는 것을 제거했습니다.

지원 중단 노트

  • 에어 시뮬레이터 백엔드의 run() 메서드에 직접 조립된 qobj를 전달하는 것은 더 이상 사용되지 않으며, 트랜스파일된 회로를 backend.run(circuits, **run_options) 로 직접 전달하는 것이 좋습니다.
  • qiskit.providers.aer.extensions 의 모든 스냅샷 지침은 더 이상 사용되지 않습니다. 교체하려면 qiskit.providers.aer.library 모듈의 저장 지침을 참조하세요.
  • NoiseModel 에 비로컬 양자 오류를 추가하는 것은 이 노이즈가 최적화된 회로에 적용되는 방식에 일관성이 없기 때문에 더 이상 사용되지 않습니다. 비로컬 노이즈는 시뮬레이터에서 실행하기 전에 커스텀 트랜스파일러 패스를 사용하여 키스킷의 예약된 회로에 수동으로 추가해야 합니다.
  • StatevectorSimulatorUnitarySimulatormethod 옵션을 사용하여 GPU 시뮬레이션을 실행하는 것은 더 이상 사용되지 않습니다. 호환되는 시스템에서 GPU 시뮬레이션을 실행하려면 device='GPU' 옵션을 대신 사용하세요.

버그 수정

  • basis_gates 구성 속성의 설정 방식과 관련된 성능 문제를 수정했습니다. 이전에는 백엔드 클래스에 의도하지 않은 부작용이 발생하여 시뮬레이션 런타임이 점점 더 늘어날 수 있었습니다. 자세한 내용과 예시는 #1229 <https://github.com/Qiskit/qiskit-aer/issues/1229> 를 참조하세요.
  • MPS::apply_kraus의 버그가 수정되었습니다. 관련 큐비트에 크라우스 행렬을 적용한 후에는 인접 큐비트에 변경 사항을 전파해야 합니다.
  • 멀티플렉서 게이트의 큐비트가 먼저 타깃이 되고 그 다음이 게이트의 제어라고 가정하는 버그가 수정되었지만, 키스킷-테라에서는 반대 순서를 가정하는 버그가 수정되었습니다.
  • 0.8.0 에 도입된 버그를 수정하여 GPU 시뮬레이션이 GPU 메모리 외에 불필요한 호스트 메모리를 할당하던 문제를 해결했습니다.
  • 초기화 명령이 첫 번째 회로 명령이거나 모든 큐비트에 적용되어 결정론적일 때에도 상태 벡터 및 행렬 곱 상태 시뮬레이션 방법에 대한 측정 샘플링 최적화를 비활성화하던 버그가 수정되었습니다.
  • 문제 #1196을 수정하여 계산 기준 상태와 내부 곱을 사용하여 규범 추정 알고리즘이 아닌 규범을 계산합니다.
  • QasmSimulatorAerSimulatorstabilizer 시뮬레이터 메서드에서 save_expectation_valuesnapshot_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 옵션에 대한 AerSimulatorQasmSimulator 옵션의 오타를 수정했습니다.
  • 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

변경 없음

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.