키스킷 0.19 릴리즈 노트
0.19.6
테라 0.14.2
변경 없음
에어 0.5.2
변경 없음
이그니스 0.3.3
업그레이드 주의사항
- 요구 사항 목록에 새로운 요구 사항인 scikit-learn이 추가되었습니다. 이 종속성은 0.3.0 릴리스에 추가되었지만 해당 릴리스에서 종속성으로 제대로 노출되지 않았습니다.
qiskit.ignis.measurement.discriminator.iq_discriminators모듈을 가져온 경우ImportError으로 연결됩니다. 이제 종속성으로 올바르게 나열되어scikit-learn이 qiskit-ignis와 함께 설치됩니다.
버그 수정
cvxpy이 설치되지 않은 상태에서qiskit.ignis.verification.tomography.fitters.process_fitter을 임포트할 때ImportError을 발생시키는 qiskit-ignis 0.3.2 의 문제를 수정했습니다.
아쿠아 0.7.3
변경 없음
IBM Q 제공자 0.7.2
변경 없음
0.19.5
테라 0.14.2
변경 없음
에어 0.5.2
변경 없음
이그니스 0.3.2
버그 수정
qiskit.ignis.verification.TomographyFitter.fit()방법은 기본 피터에 대한 감지 로직이 개선되었습니다. 이전에는 cvxpy를 설치할 때마다cvx피터 메서드가 사용되었습니다. 하지만cvxfitter 메서드에서 작동하는 SDP 솔버 없이도 cvxpy를 설치할 수 있었습니다. 이 로직은cvxpy이 설치되어 있고 사용할 수 있는 SDP 솔버가 있는 경우에만cvxfitter 메서드가 사용되도록 재작업되었습니다. 그렇지 않으면lstsq피터가 사용됩니다.- 보정 회로와 일치하지 않는 유효하지 않거나 잘못된 상태 레이블이 있는 입력에 대한
qiskit.ignis.mitigation.measurement.fitters.MeasurementFitter.apply()의 에지 케이스를 수정합니다. 이전에는 오류가 발생하지 않고 빈 결과만 반환했습니다. 대신 이제 이 경우가 올바르게 감지되고 잘못된 레이블을 사용할 때QiskitError예외가 발생합니다.
아쿠아 0.7.3
업그레이드 주의사항
- Svm 분류기에 필요한 cvxpy 종속성이 요구 사항 목록에서 제거되고 선택적 종속성이 되었습니다. 이는 cvxpy를 설치하는 것이 모든 환경에서 원활하지 않고 실행을 위해 컴파일러를 설치해야 하는 경우가 많기 때문입니다. 이제 svm 분류기를 사용하려면
pip install cvxpy<1.1.0을 실행하여 cvxpy를 설치하거나pip install qiskit-aqua[cvx]을 실행하여 아쿠아를 설치해야 합니다.
버그 수정
CircuitOp의compose방식은QuantumCircuit.combine을 사용했으나QuantumCircuit.compose을 사용하도록 변경되었습니다. 결합을 사용하면 명명된 레지스터를 기반으로CircuitOp로 연산자를 구성하면 연산자가 연쇄적으로 연결되지 않고 스택으로 쌓이는 문제가 발생합니다. E.g.Z ^ 2을 2쿼비트 명명 레지스터 기반 회로로 구성하면 2쿼비트 연산자가 아닌 4쿼비트 연산자가 산출됩니다.- 이전에는
MatrixOp.to_instruction메서드가 인스트럭션이 아닌 연산자를 반환했습니다. 이 메서드는 인스트럭션을 반환하도록 업데이트되었습니다. 연산자 프리미티브가 단일인 경우에만 작동하며, 그렇지 않으면 명령어 구성 시 에러가 발생한다는 점에 유의하세요. PauliOp클래스의__hash__메서드는id()메서드를 사용했는데, 이는 해시 테이블과 동일한 해시가 없는 동일한 객체에 의존하기 때문에 집합 비교가 예상대로 작동하지 않습니다. 이제 구현은Pauli클래스의 구현과 인라인으로 문자열 표현의 해시를 사용합니다.
IBM Q 제공자 0.7.2
변경 없음
0.19.4
테라 0.14.2
업그레이드 주의사항
circuit_to_gate및circuit_to_instruction변환기는 이전에 생성된 게이트 또는 인스트럭션을 활성SessionEquivalenceLibrary에 자동으로 포함시켰습니다. 이러한 변환기는 이제 변환된 인스턴스를 등록할지 여부와 위치를 지정하는equivalence_library키워드 인수를 선택 사항으로 허용합니다. 기본 동작은 변환된 인스턴스를 등록하지 않는 것입니다.
버그 수정
- 다중 제어 X 게이트 구현(
MCXGrayCode,MCXRecursive,MCXVChain)은 구현을 보다 정확하게 설명하기 위해name속성이 변경되었습니다( 각각mcx_gray,mcx_recursive,mcx_vchain) 이전에는 이러한 게이트가mcx` with ``MCXGate라는 이름을 공유했기 때문에 이러한 게이트가 잘못 트랜스파일 및 시뮬레이션되었습니다. ControlledGate를 설정한 인스턴스(ctrl_state)는 비교된 게이트가 동등한 경우에도 동등한 것으로 평가되지 않는 경우가 있었습니다. 이 문제가 해결되었습니다.qiskit.pulse.SetFrequency의 SI 단위 변환을 수정했습니다.SetFrequency인스트럭션은 프론트엔드에서 Hz로 표시되어야 하며SetFrequency을PulseQobjInstruction로 변환할 때 GHz 로 변환해야 합니다.- 개방형 컨트롤은 게이트의 정의를 수정하여 구현했습니다. 그러나 게이트가 이미 베이직에 존재하는 경우 이 정의는 사용되지 않으므로 백엔드로 전송되는 회로가 잘못 생성됩니다. 이렇게 하면 언롤러가 컨트롤이 열려 있는 제어 게이트를 만나면 정의를 출력하도록 수정됩니다.
에어 0.5.2
변경 없음
이그니스 0.3.0
변경 없음
아쿠아 0.7.2
Prelude
이제 Aer qasm_simulator를 사용한 VQE 기대치 계산은 기본적으로 예상 샷 노이즈 동작이 있는 계산을 사용합니다.
업그레이드 주의사항
- 이제 요구사항 목록에 qiskit-aqua의 종속성으로 cvxpy가 추가되었습니다.
qiskit.aqua.algorithms.QSVM의 일부로 사용되는 이차 프로그램 솔버에 사용됩니다. 이전에는cvxopt이 기능을 사용하려면 설치해야 하는 선택적 종속성이었습니다. Cvxpy는 qiskit-aqua와 함께 설치되므로 더 이상 필요하지 않습니다. - QASM 백엔드에서
qiskit.aqua.algorithms.HHL의 일부로 실행되는 상태 단층 촬영의 경우, 이제 단층 촬영 피터 함수qiskit.ignis.verification.StateTomographyFitter.fit()가 항상 최소 제곱 피팅을 사용하도록lstsq로 설정된 메서드와 함께 명시적으로 호출됩니다. 이전에는cvxpy이 설치되어 있으면cvx피터를 사용하려고 시도했습니다. 그러나cvx피터는cvxpy의 일부로 설치된 SDP 솔버를 사용하여 특별히 구성된cvxpy설치에 의존하며,cvxpy이 설치된 환경에는 항상 존재하지 않습니다. - Qiskit-aer의
qiskit.providers.aer.extensions.SnapshotExpectationValue명령어를 사용한 VQE 기대치 계산은 더 이상 기본적으로 활성화되지 않습니다. 이는 훨씬 빠르지만 샷 노이즈가 없는 예상치 못한 이상적인 결과를 가져왔기 때문에 0.7.0 에서 기본값으로 변경되었습니다(자세한 내용은 #1013 참조). 이제 기본값이 사용자의 기대에 맞게 다시 변경되었습니다. 이제qiskit.aqua.algorithms.VQE생성자에서 새로운include_customkwarg를True로 설정하여 더 빠른 기대치 계산을 사용할 수 있습니다.
새 기능
qiskit.aqua.algorithms.VQE및 그 서브클래스(주로qiskit.aqua.algorithms.QAOA)의 생성자에 새로운 kwarginclude_custom가 추가되었습니다. True로 설정하고expectationkwarg를None(기본값)으로 설정하면 Aer의qasm_simulatorqiskit.providers.aer.extensions.SnapshotExpectationValue명령어와 함께 VQE 기대치 계산을 사용할 수 있습니다. 특별한 Aer 스냅샷 기반 계산은 훨씬 빠르지만 상태 벡터 시뮬레이터와 유사한 이상적인 결과물을 제공합니다.
IBM Q 제공자 0.7.2
변경 없음
0.19.3
테라 0.14.1
변경 없음
에어 0.5.2
버그 수정
- 스테이트벡터 및 유니타리 시뮬레이터가 단일 샷만 실행하는 대신 CPU 스레드 수와 동일한 수의 (병렬) 샷을 실행하는 버그가 수정되었습니다.
- 밀도 행렬 Qasm 시뮬레이터 메서드에서 "대각선" qobj 게이트 명령이 잘못 적용되는 것을 수정했습니다.
- 밀도 행렬 시뮬레이션 방법에서 조건부 게이트가 올바르게 적용되지 않던 버그가 수정되었습니다.
- "density_matrix_gpu" 및 "density_matrix_thrust" QasmSimulator 메서드의 CZ 게이트 및 Z 게이트 버그 수정.
- 자동이 아닌 시뮬레이션 방법을 사용할 때 QasmSimulator 에서 시뮬레이션의 메모리 요구 사항이 확인되지 않던 문제를 수정했습니다.
- GPU 시뮬레이터 메서드에 영향을 미치는 메모리 누수를 수정했습니다
이그니스 0.3.0
변경 없음
아쿠아 0.7.1
변경 없음
IBM Q 제공자 0.7.2
버그 수정
qiskit.provider.ibmq.IBMQBackend.jobs()는 이제statuskwarg가'RUNNING'로 설정된 경우 올바른IBMQJob객체 목록을 반환합니다. 수정 #523- 패키지 메타데이터가
qiskit-terra>= 0.14.0 에 대한 종속성을 올바르게 반영하도록 업데이트되었습니다. 이 종속성은 0.7.0 릴리스의 일부로 암시적으로 추가되었지만 패키지 요구 사항에 반영되지 않았기 때문에 이전에는 너무 오래된qiskit-terra버전으로qiskit-ibmq-provider을 설치할 수 있었습니다. 수정 #677
0.19.0
테라 0.14.0
Prelude
0.14.0 릴리스에는 몇 가지 새로운 기능과 버그 수정이 포함되어 있습니다. 이번 릴리스의 가장 큰 변화는 양자 회로 라이브러리를 도입한 것입니다 qiskit.circuit.library에 양자 회로 라이브러리를 도입한 것입니다.
회로 라이브러리를 통해 사용자는 잘 연구된 풍부한 회로 제품군에 액세스할 수 있으며, 이러한 사례는 벤치마크, 더 복잡한 회로 구축의 빌딩 블록 또는 클래식에 비해 양자 계산의 이점을 탐색하는 도구로 사용할 수 있습니다. 이 라이브러리의 콘텐츠는 계속해서 성장하고 발전할 것입니다.
회로 라이브러리의 초기 릴리스에는 다음이 포함되어 있습니다:
standard_gates1, 2, 3 큐비트 게이트로 구성된 원시 빌딩 블록으로 일반적으로 사용되는 고정 폭 게이트입니다. 예를 들어XGate,RZZGate및CSWAPGate.qiskit.extensions.standard아래의 이전 게이트 위치는 더 이상 사용되지 않습니다.generalized_gates이들은 임의로 많은 큐비트로 일반화할 수 있는 패밀리입니다Permutation또는GMS(글로벌 몰머-소렌슨 게이트).boolean_logic와 같은 간단한 부울 논리 함수에 따라 기저 상태를 변환하는 회로ADD또는XOR.arithmetic다음과 같은 고전적인 산술을 수행하기 위한 회로 집합입니다WeightedAdder와IntegerComparator.basis_changes양자 푸리에 변환과 같은 회로,QFT와 같이 기저 변화를 수학적으로 적용하는 회로입니다.n_local패턴을 사용하여 회전 및 얽힘 레이어가 있는 대형 회로를 쉽게 만들 수 있습니다TwoLocal단일 큐비트 회전과 2큐비트 얽힘을 사용하는 패턴입니다.data_preparation고전적인 입력 데이터를 받아 시뮬레이션하기 어려운 양자 상태로 인코딩하는 회로 등입니다.PauliFeatureMap또는ZZFeatureMap.- 다음과 같이 문헌에서 흥미로운 것으로 입증된 다른 회로도 있습니다
QuantumVolume,GraphState또는IQP.
이러한 회로를 빌딩 블록으로 더 쉽게 사용할 수 있도록 다음과 같은 방법을 도입했습니다 compose() 방법 qiskit.circuit.QuantumCircuit 를 사용하여 다른 회로와 함께 회로를 구성하거나(끝을 용접하고 선택적으로 와이어를 순열하여) 다른 간단한 게이트로 회로를 구성할 수 있습니다:
>>> lhs.compose(rhs, qubits=[3, 2], inplace=True) ┌───┐ ┌─────┐ ┌───┐
lqr_1_0: ───┤ H ├─── rqr_0: ──■──┤ Tdg ├ lqr_1_0: ───┤ H ├───────────────
├───┤ ┌─┴─┐└─────┘ ├───┤
lqr_1_1: ───┤ X ├─── rqr_1: ┤ X ├─────── lqr_1_1: ───┤ X ├───────────────
┌──┴───┴──┐ └───┘ ┌──┴───┴──┐┌───┐
lqr_1_2: ┤ U1(0.1) ├ + = lqr_1_2: ┤ U1(0.1) ├┤ X ├───────
└─────────┘ └─────────┘└─┬─┘┌─────┐
lqr_2_0: ─────■───── lqr_2_0: ─────■───────■──┤ Tdg ├
┌─┴─┐ ┌─┴─┐ └─────┘
lqr_2_1: ───┤ X ├─── lqr_2_1: ───┤ X ├───────────────
└───┘ └───┘
lcr_0: 0 ═══════════ lcr_0: 0 ═══════════════════════
lcr_1: 0 ═══════════ lcr_1: 0 ═══════════════════════이로써 키스킷의 회로는 더 이상 암시적인 초기 상태인 를 가정하지 않으며, 이 초기 상태로 그려지지 않습니다. 회로가 실행될 때 백엔드에서는 여전히 초기 상태가 모두 0인 것으로 가정합니다.
새 기능
-
새로운 메서드
has_entry()메서드가 추가되었습니다qiskit.circuit.EquivalenceLibrary클래스에 새로운 메서드인, 이 추가되어 주어진 게이트에 라이브러리에 알려진 분해가 있는지 빠르게 확인할 수 있습니다. -
새로운 클래스
IQP클래스가 회로 라이브러리 모듈에 추가되었습니다qiskit.circuit.library. -
새로운
compose()메서드가 추가되었습니다qiskit.circuit.QuantumCircuit. 이를 통해 하나의 양자 회로를 게이트나 명령어로 전환하지 않고도 두 개의 양자 회로를 구성할 수 있습니다. 또한 구성 지점에서 큐비트/클릭비트의 순열과 선택적 인플레이스 수정을 허용합니다. 대신 사용할 수도 있습니다append()대신 사용할 수도 있는데, 명령어와 연산자를 회로에 구성할 수 있기 때문입니다. -
qiskit.circuit.library.Diagonal회로가 회로 라이브러리에 추가되었습니다. 이 회로는 대각선 양자 연산자(대각선에만 0이 아닌 요소로 구성)를 구현합니다. 고밀도 행렬보다 Aer 시뮬레이터에서 더 효율적으로 시뮬레이션할 수 있습니다. -
추가
from_label()메서드를qiskit.quantum_info.Clifford클래스에 단일 큐비트 I, X, Y, Z, H 또는 S 게이트의 텐서 곱으로 초기화할 수 있는 메서드를 추가합니다. -
스케줄 트랜스포머
qiskit.pulse.reschedule.compress_pulses()는 펄스 스케줄에서 여러 개의 동일한 펄스 인스턴스를 단일 펄스로 대체하여 하드웨어의 파형 메모리 사용량을 줄이기 위한 최적화 패스를 수행합니다. 예를 들어,from qiskit.pulse import reschedule schedules = [] for _ in range(2): schedule = Schedule() drive_channel = DriveChannel(0) schedule += Play(SamplePulse([0.0, 0.1]), drive_channel) schedule += Play(SamplePulse([0.0, 0.1]), drive_channel) schedules.append(schedule) compressed_schedules = reschedule.compress_pulses(schedules) -
의
qiskit.transpiler.Layout에는 새로운 메서드reorder_bits()메서드가 추가되어 레이아웃 객체를 기반으로 가상 큐비트 목록을 재정렬하는 데 사용됩니다. -
채널과 상호작용하기 위한 두 가지 새로운 메서드가
qiskit.providers.models.PulseBackendConfiguration에 두 가지 새로운 메서드가 추가되었습니다.get_channel_qubits()를 호출하여 주어진 채널에서 연산되는 모든 큐비트 목록을 가져오고get_qubit_channel()를 입력하면 주어진 큐비트에서 작동하는 채널 목록을 가져올 수 있습니다.
-
새로운
qiskit.extensions.HamiltonianGate및qiskit.circuit.QuantumCircuit.hamiltonian()메서드가 도입되어 사용자가 지정한 헤르미티안 연산자와 진화 시간에 의한 회로 파함수의 해밀턴 진화를 표현합니다. 에볼루션 시간은Parameter로 설정할 수 있으며,time파라미터가 제공되면UnitaryGate객체로 컴파일되는 파라미터화된 UCCSD 또는 QAOA 스타일 회로를 생성할 수 있습니다. 해밀턴 연산자H와 시간 매개변수t가 있는HamiltonianGate의 단항은 입니다. -
회로 라이브러리 모듈
qiskit.circuit.library은 이제 새로운 부울 논리 AND 회로를 제공합니다,qiskit.circuit.library.AND와 OR 회로qiskit.circuit.library.OR를 제공하여 제공된 다양한 수의 큐비트에 대해 각각의 연산을 구현합니다. -
qiskit.test.mock에 새로운 가짜 백엔드가 추가되었습니다. 여기에는ibmq_armonk,ibmq_essex,ibmq_london,ibmq_valencia,ibmq_cambridge,ibmq_paris,ibmq_rome,ibmq_athens의 모의 버전이 포함됩니다. 다른 가짜 백엔드와 마찬가지로 보정 데이터의 스냅샷(예:backend.defaults())이 포함됩니다 및 오류 데이터(예:backend.properties()) 실제 시스템에서 가져온 것으로 로컬 테스트, 컴파일 및 시뮬레이션에 사용할 수 있습니다. -
에 대한
last_update_date매개변수BackendProperties매개변수는 이제datetime객체로도 전달할 수 있습니다. 이전에는 ISO8601 형식의 문자열만 허용되었습니다. -
추가
qiskit.quantum_info.Statevector.from_int()및qiskit.quantum_info.DensityMatrix.from_int()메서드를 추가하여 지정된 시스템 차원에 대한 계산 기준 상태를 구성할 수 있습니다. -
클래스의 메서드는
qiskit.circuit.QuantumCircuit클래스의 메서드(예h())를 클래스 정의에 런타임에 동적으로 추가하는 메서드는 클래스의 정적으로 정의된 메서드로 리팩터링되었습니다. 즉, 이제 정적 분석기(예: IDE)에서 이러한 메서드를 읽을 수 있습니다.
업그레이드 주의사항
-
이제 새 패키지인 python-dateutil이 필요하며 요구 사항 목록에 추가되었습니다. 외부 공급자로부터 받은 날짜/시간 문자열을 구문 분석하는 데 사용됩니다
BackendProperties객체에서 받은 날짜/시간 문자열을 구문 분석하는 데 사용됩니다. -
의 마시멜로 스키마 클래스는
qiskit.providers.models의 마시멜로 스키마 클래스는 더 이상 BackendObjects 에서 사용되지 않으므로 제거되었습니다. -
의 클래스에 대한
to_dict()메서드의 출력은 더 이상qiskit.providers.models의 클래스 출력은 더 이상 직접 JSON 직렬화를 위한 형식이 아닙니다. 이러한 클래스의 인스턴스에 포함된 콘텐츠에 따라 딕셔너리의 필드에 널빤지 배열 및/또는 복소수가 있을 수 있습니다. To_dict 메서드의 출력을 JSON으로 직렬화하는 경우 JSON 인코더가 정수 배열과 복소수를 처리할 수 있는지 확인해야 합니다. 여기에는 다음과 같은 혜택이 포함됩니다.qiskit.providers.models.BackendConfiguration.to_dict()qiskit.providers.models.BackendProperties.to_dict()qiskit.providers.models.BackendStatus.to_dict()qiskit.providers.models.QasmBackendConfiguration.to_dict()qiskit.providers.models.PulseBackendConfiguration.to_dict()qiskit.providers.models.UchannelLO.to_dict()qiskit.providers.models.GateConfig.to_dict()qiskit.providers.models.PulseDefaults.to_dict()qiskit.providers.models.Command.to_dict()qiskit.providers.models.JobStatus.to_dict()qiskit.providers.models.Nduv.to_dict()qiskit.providers.models.Gate.to_dict()
지원 중단 노트
-
메서드는 이제
qiskit.dagcircuit.DAGCircuit.compose()메서드는 이제 컴포지션할 비트의 위치 순서를 지정하는 큐비트/클릭비트 목록을 받습니다.edge_map인수를 사용하는 사전 기반 매핑 방법은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. -
클래스에 대한
combine_into_edge_map()메서드는qiskit.transpiler.Layout클래스의 메서드는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 대신, 새로운 메서드reorder_bits()를 사용하여 레이아웃 객체에 따라 가상 큐비트 목록을 재정렬해야 합니다. -
channel매개 변수를 통해qiskit.pulse.ControlChannel객체를 전달합니다qiskit.providers.models.PulseBackendConfiguration메서드control()는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 이제ControlChannel개체는 모든 채널과 해당 채널이 작동하는 큐비트에 대한 정보가 있는 백엔드 구성channels속성에서 생성됩니다. 이제 메서드control()는(control_qubit, target_qubit)형식의 매개변수qubits를 받아list또는tuple를 입력하면 제어 채널 목록을 반환합니다. -
AND및OR메서드qiskit.circuit.QuantumCircuit는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 대신 회로 라이브러리 부울 논리 클래스를 사용해야 합니다qiskit.circuit.library.ANDamdqiskit.circuit.library.OR를 생성한 다음 해당 객체를 클래스에 추가해야 합니다. 예를 들어,from qiskit import QuantumCircuit from qiskit.circuit.library import AND qc = QuantumCircuit(2) qc.h(0) qc.cx(0, 1) qc_and = AND(2) qc.compose(qc_and, inplace=True) -
qiskit.extensions.standard모듈은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 해당 모듈의 게이트 클래스는qiskit.circuit.library.standard_gates로 이전되었습니다.
버그 수정
-
메서드의
qiskit.circuit.QuantumCircuit메서드inverse(),mirror()메서드와QuantumCircuit.data설정자는 매개변수화된 회로 인스턴스에서 사용할 경우 잘못된 회로를 생성합니다. 이 문제가 해결되었으며 이제 이러한 메서드는 매개변수화된 회로에서 작동합니다. 수정 #4235 -
이전에는 표준 키스킷 게이트의 제어 버전을 만들 때
ctrl_state을 지정하면 일반ControlledGate객체가 반환되었지만, 이를 지정하지 않으면 표준 키스킷 제어 게이트가 정의된 경우 반환되었습니다. 이 PR을 통해 표준 키스킷 제어 게이트는ctrl_state을 이해할 수 있습니다.또한 이 PR은 이미 제어된 게이트의
ctrl_state을 설정하면 제어 큐비트가 추가되는 대신 지정된 상태가 전체 제어 폭에 적용되는 것으로 간주되는 버그를 수정합니다. 예를 들어circ = QuantumCircuit(2) circ.h(0) circ.x(1) gate = circ.to_gate() cgate = gate.control(1) c3gate = cgate.control(2, ctrl_state=0)는 두 개의 제어 큐비트만 추가하는 것이 아니라 세 개의 제어 큐비트 모두에
ctrl_state를 적용합니다. -
의 버그를 수정했습니다
random_clifford()에서 전체 클리포드 그룹을 샘플링하지 못하게 하는 버그를 수정했습니다. 수정 #4271 -
메서드의
qiskit.circuit.Instruction메서드qiskit.circuit.Instruction.is_parameterized()메서드는 이전에Instruction인스턴스에 대해True을 반환했는데, 이는 배열의 모든 요소에qiskit.circuit.Parameter가 있는params배열의 모든 요소에 대해Parameter을 반환했습니다. 인스트럭션이 완전히 바인딩되면.is_parameterized이False을 반환하도록 수정되었습니다. -
qiskit.circuit.ParameterExpression.subs()는 매개변수를 대체하면 동일한 이름의 표현식에서 두 개의 별개의Parameters객체가 생성되는 경우를 올바르게 감지하지 못했습니다. 이 문제가 수정되어 이러한 경우CircuitError이 표시됩니다. -
의 성능 향상
qiskit.quantum_info.Statevector및qiskit.quantum_info.DensityMatrix클래스의__init__메서드를 최적화하여 저쿼비트 회로 시뮬레이션의 성능을 개선합니다. 수정 #4281 -
함수
qiskit.compiler.transpile()는 이제 매개변수basis_gates가None로 설정된 경우를 올바르게 처리합니다. 이렇게 하면 트랜스필레이션 프로세스에 의해 추가된 게이트를 포함하여 출력 트랜파일된 회로의 모든 게이트가 허용됩니다. 이 매개변수를 사용하면 최적화 중에 의도하지 않은 결과가 발생할 수 있습니다. 일부 트랜스파일러 패스는basis_gates설정에 따라 달라집니다. 예를 들어qiskit.transpiler.passes.Optimize1qGates은 u1, u2, u3 게이트의 체인만 최적화하고basis_gates이 없으면 최적화할 수 있는 게이트를 펼칠 수 없습니다:from qiskit import * q = QuantumRegister(1, name='q') circuit = QuantumCircuit(q) circuit.h(q[0]) circuit.u1(0.1, q[0]) circuit.u2(0.1, 0.2, q[0]) circuit.h(q[0]) circuit.u3(0.1, 0.2, 0.3, q[0]) result = transpile(circuit, basis_gates=None, optimization_level=3) result.draw()┌───┐┌─────────────┐┌───┐┌─────────────────┐ q_0: ┤ H ├┤ U2(0.1,0.3) ├┤ H ├┤ U3(0.1,0.2,0.3) ├ └───┘└─────────────┘└───┘└─────────────────┘수정 #3017
기타 참고사항
-
의 객체는
qiskit.providers.models의 객체는 이전에 마시멜로 라이브러리를 사용하여 구성되었으나 마시멜로에 의존하지 않도록 리팩터링되었습니다. 여기에는 다음과 같은 혜택이 포함됩니다.BackendConfigurationBackendPropertiesBackendStatusQasmBackendConfigurationPulseBackendConfigurationUchannelLOGateConfigPulseDefaultsCommandJobStatusNduvGate
눈에 띄는 변경 없이 드롭인 교체가 가능해야 하지만 마시멜로에서 상속된 특정 기능은 작동하지 않을 수 있습니다. 호환되지 않는 문제가 발견되면 문제를 제기해 주세요.
에어 0.5.1
변경 없음
이그니스 0.3.0
변경 없음
아쿠아 0.7.0
Prelude
키스킷 아쿠아 0.7.0 릴리스에는 다음과 같은 개선된 통합과 함께 많은 새로운 기능이 도입되었습니다 qiskit.circuit.QuantumCircuit 객체와의 향상된 통합을 제공합니다. 핵심적인 기여는 키스킷의 최적화 모듈, 연산자에 대한 완전한 리팩터링, 알고리즘의 기본 입력으로 회로를 사용하고 선언적 JSON API를 제거한 것입니다.
최적화 모듈
이제 qiskit.optimization` 모듈에서 이차방정식 프로그램을 모델링하고 풀 수 있는 기능을 제공합니다. 예를 들어 MinimumEigenOptimizer ( )와 같은 다양한 단기 양자 및 기존 알고리즘을 제공합니다. VQE 또는 QAOA) 또는 CplexOptimizer, 그리고 QuadraticProgramToQubo 와 같이 서로 다른 문제 표현을 변환하는 변환기 집합을 사용할 수 있습니다. 추가된 기능 목록은 변경 로그를 참조하세요.
운영자 흐름
qiskit.aqua.operators` 에서 제공되는 연산자 로직은 완전히 리팩토링되어 이제 물리적으로 직관적인 양자 계산을 구성하기 위한 완전한 도구 세트가 되었습니다. 여기에는 상태 함수, 연산자 및 측정값이 포함되어 있으며 내부적으로 테라의 연산자 객체에 의존합니다. 기대값 및 진화 계산이 크게 간소화되었으며 ExpectationFactory 같은 객체는 연산자 입력 유형에 따라 가장 적합한, 가장 효율적인 기대 알고리즘을 생성합니다. 추가된 기능에 대한 개요는 변경 로그를 참조하세요.
원주민 회로
알고리즘은 일반적으로 매개변수화된 회로를 입력으로 사용합니다(예: VQE, VQC 또는 QSVM). 이전에는 이러한 입력이 회로 객체를 감싸는 VariationalForm 또는 FeatureMap 유형이어야 했습니다. 이제 이러한 알고리즘에서 회로가 기본적으로 지원되므로 개별적으로 구성된 QuantumCircuit 을 이러한 알고리즘에 전달할 수 있습니다. 다양한 회로 제품군을 제공하는 회로 라이브러리의 출시와 함께 이제 알고리즘 입력으로 정교한 회로를 쉽게 구성할 수 있습니다.
선언적 JSON API
사전을 매개변수로 사용하여 알고리즘을 실행하는 기능과 Aqua 인터페이스 GUI를 사용하는 기능이 제거되었습니다.
IBM Q 제공자 0.7.0
새 기능
- 이제 활성 작업 수 제한에 도달하여 작업을 제출할 수 없는 경우 새로운 예외(
qiskit.providers.ibmq.IBMQBackendJobLimitError)가 발생합니다. qiskit.providers.ibmq.job.IBMQJob와qiskit.providers.ibmq.managed.ManagedJobSet에는 각각 두 가지 새로운 메서드update_name와update_tags가 있습니다. 각각 작업 또는 작업 세트의 이름과 태그를 변경하는 데 사용됩니다.qiskit.providers.ibmq.IBMQFactory.save_account()와qiskit.providers.ibmq.IBMQFactory.enable_account()는 이제 각각 디스크에 저장하거나 사용할 기본 공급자를 지정할 수 있는 선택적 매개변수hub,group,project를 허용합니다.
업그레이드 주의사항
qiskit.providers.ibmq.job.IBMQJob메서드creation_date및time_per_step는 이제 날짜 시간 정보를 UTC가 아닌 현지 시간(현지 시간 기준)의datetime객체로 반환합니다. 마찬가지로, 이제qiskit.providers.ibmq.IBMQBackendService.jobs()및qiskit.providers.ibmq.IBMQBackend.jobs()의start_datetime및end_datetime매개변수를 현지 시간으로 지정할 수 있습니다.qiskit.providers.ibmq.job.QueueInfo.format()메서드는 이제 사용자 지정datetime문자열 포맷터를 사용하며, 패키지 화살표는 더 이상 필요하지 않으며 요구 사항 목록에서 제거되었습니다.
지원 중단 노트
qiskit.providers.ibmq.job.IBMQJob의from_dict()및to_dict()메서드는 더 이상 사용되지 않으며 다음 릴리스에서 제거될 예정입니다.
버그 수정
- 스레딩으로 인해 비동기 루프가 없는 경우
nest_asyncio.apply()에서 예외를 발생시킬 수 있는 문제를 수정했습니다.