Qiskit Fermions
qiskit-fermions는 페르미온 시스템을 다루는 도구로 Qiskit SDK를 확장합니다. 범위 내에서 다음을 제공합니다.
-
다양한 형태의 페르미온 연산자를 표현하고 다루기 위한 효율적인 데이터 구조
-
연산자 변환 방법(페르미온-큐비트 인코딩 포함)을 구현하기 위한 프레임워크
-
일반적인 변환 방법의 효율적인 구현을 담은 라이브러리
-
페르미온 회로를 표현하기 위한 게이트 프레임워크와 라이브러리
-
페르미온 회로를 큐비트 기반 회로로 합성하기 위해 Qiskit 트랜스파일러 과정과 통합된 트랜스파일 파이프라인
또한 qiskit-fermions는 다음과 같은 생태계의 다른 도구와 통합됩니다.
- ffsim: 고수준 ansatz 연산자와 페르미온 회로의 효율적인 시뮬레이션을 위한 패키지입니다(ffsim과의 관계 참조)
시작하기
위 이미지의 개략도는 이 패키지가 제공하는 기능의 폭과 일반적인 워크플로를 보여 줍니다. 연산자 표현과 회로 표현 모두로 페르미온 영역에서 작업한 다음, Qiskit의 다중 표현 transpiler 파이프라인에 연결되는 페르미온-큐비트 인코딩을 정의할 수 있습니다.
이러한 모든 기능은 시작하는 데 도움이 되는 여러 가이드에서 설명합니다. 위에 나온 파이프라인을 그대로 따라가는 개요가 필요하다면 1D Fermi-Hubbard 가이드부터 시작하세요.
사용 사례 예시
이 패키지의 구성 요소는 다음 논문과 관련된 연구에 사용되었습니다.
기술 논의
설계 의도
이 패키지는 Qiskit과 조화를 이루도록 의도적으로 설계되었습니다. Rust로 구현된 코어를 기반으로 하며 Python과 C에 대한 공식 언어 바인딩을 제공합니다. API는 Qiskit과 비슷하게 설계되어, Qiskit 프로그래밍 경험이 있는 사용자의 워크플로에 매끄럽게 통합됩니다.
qiskit-fermions 설계의 핵심 원칙은 페르미온 회로 표현과 큐비트화된 형태를 분리하는 것이었습니다. 좀 더 정확히 말하면, 페르미온 회로는 그 자체로 의미가 있으며 해석하기 위해 큐비트 공간으로의 매핑이 필요하지 않습니다. 또한 페르미온 회로 표현은 나중에 적용될 페르미온-큐비트 인코딩에 대해 어떤 가정도 할 수 없습니다. 따라서 Jordan-Wigner가 여전히 지배적인 위치와 역할을 유지하지만, _기본_ 페르미온-큐비트 인코딩으로 가정되지는 않습니다.
ffsim과의 관계
ffsim과 qiskit-fermions는 겹치기보다는 역할을 나눕니다. ffsim은 고수준 ansatz 연산자와 그 빠른 시뮬레이션을 담당합니다. coupled-cluster 진폭이나 파라미터 벡터로 UCJ 또는 UCCSD 연산자를 구성하고, 고정 입자 수의 간결한 공간에서 페르미온 상태를 시뮬레이션합니다. qiskit-fermions는 회로 쪽을 담당합니다. 그 연산자를 페르미온 모드 위의 FermionicCircuit으로 표현하고, 어떤 페르미온-큐비트 인코딩으로든 큐비트 회로로 트랜스파일합니다.
이 마지막 점이 ffsim 연산자를 여기로 가져오는 이유입니다. ffsim 자체의 Qiskit gate는 Jordan-Wigner 변환에 특화되어 있으므로, 다른 인코딩(예를 들어 큐비트 수를 더 얕은 회로와 맞바꾸는 로컬 인코딩)으로 ansatz를 낮추는 것이 이 패키지가 더하는 기능입니다. 반대로 이 패키지는 ansatz 수학을 다시 구현하지 않으므로, UCJ와 UCC는 ffsim 연산자를 입력으로 직접 받습니다.
시뮬레이션 측면에서는 ffsim이 Backend입니다. 이 패키지의 gate와 연산자는 ffsim의 시뮬레이션 함수가 사용하는 프로토콜 메서드(_apply_unitary_, _linear_operator_, _trace_; qiskit_fermions.protocols 참조)를 구현하므로, ffsim의 도구가 변환 단계 없이 그대로 동작합니다. 연산자를 만들고, 매핑하고, 결과 회로를 트랜스파일하는 데는 ffsim이 전혀 필요하지 않습니다.
전체 그림은 ffsim 관계 가이드를 읽어 보세요.
알려진 문제
Qiskit C API가 Python API와 기능 동등성에 아직 도달하지 못하는 동안에는, 이 패키지의 일부 구성 요소도 Python API에서만 사용할 수 있습니다. 여기에는 전체 회로 라이브러리(qiskit_fermions.circuit)와 transpiler 패스(qiskit_fermions.transpiler)가 포함됩니다.
향후 작업
-
회로 라이브러리와 transpiler 패스를 Rust 코어로 이전(그리고 이들과 상호작용하기 위한 C API 제공)
-
효율적인 연산자 변환 구현 라이브러리 확장
-
효율적인 연산자 데이터 구조 라이브러리 확장
기여하기
소스 코드는 GitHub에서 볼 수 있습니다.
개발자 가이드는 이 프로젝트 저장소의 루트에 있는 CONTRIBUTING.md에 있습니다. 참여하시는 분은 Qiskit의 행동 강령을 지켜야 합니다.
이 패키지 인용하기
연구에 이 패키지를 사용한다면, 이 프로젝트 저장소의 CITATION.bib 파일을 사용하여 적절한 참고 문헌을 인용하세요.
라이선스
지원 중단 정책
이 패키지는 유의적 버전 관리를 따릅니다. 호환성을 깨는 변경은 사용자 경험을 개선하기 위해 가끔씩만 이루어집니다. 가능한 경우 기존 인터페이스는 새 인터페이스와 공존할 수 있는 동안 유지되며 지원 중단 예정으로 표시됩니다. 모든 주요 개선, 호환성을 깨는 변경 또는 지원 중단은 릴리스 노트에 문서화됩니다.
참고 문헌
[1]
Samuele Piccinelli, et al., Quantum chemistry with provable convergence via randomized sample-based Krylov quantum diagonalization, arXiv:2508.02578 [quant-ph].
[2]
Anthony Gandon, et al., Stabilizer-based quantum simulation of fermion dynamics with local qubit encodings, arXiv:2512.11418 [quant-ph].