Qiskit 구조 이해하기

Qiskit에 직접 기여하기 전 간단하게 Qiskit 구조를 먼저 알아봅시다.

가장 최신 Qiskit을 pip install qiskit으로 설치하고 난 다음 qiskit.__qiskit_version__을 입력하면 아래와 같은 문자열이 출력되는 것을 확인할 수 있습니다.

{'qiskit-terra': '0.19.1', 'qiskit-aer': '0.10.2', 'qiskit-ignis': '0.7.0', 'qiskit-ibmq-provider': '0.18.3', 'qiskit-aqua': None, 'qiskit': None, 'qiskit-nature': None, 'qiskit-finance': None, 'qiskit-optimization': None, 'qiskit-machine-learning': None}

상당히 긴 문자열이 나와 당황하셨을지도 모르겠습니다. 이번 글을 통해 Qiskit 속에 포함된 각각의 요소가 어떤 것인지, Qiskit의 과거와 현재를 통해 알아보도록 하겠습니다.

Once upon a time…

태초의 Qiskit에는 총 4개의 구성 요소가 있었습니다.

  • Terra: 땅, 가장 기본이 되는 요소로 아래 3개의 구조들의 기반을 형성합니다.
  • Aer: 공기, 양자 회로를 위한 시뮬레이터를 제공합니다.
  • Ignis: 불, 에러를 특정 짓거나 노이즈를 계산하여 더 나은 양자 게이트를 만들 수 있도록 돕습니다.
  • Aqua: 물, 양자 컴퓨터를 위한 알고리즘이 만들어지는 곳입니다.

아래의 사진으로 모든 구성 요소를 한 눈에 확인할 수 있습니다.

qiskit element

하지만 Qiskit 최신 버전을 통해 확인했듯이 모든 구성 요소가 살아있지는 않습니다.

Qiskit의 현재

Qiskit의 Release Notes를 확인해보면 가장 최신 버전이 다음과 같음을 알 수 있습니다.

Qiskit Metapackage Version qiskit-terra qiskit-aer qiskit-ignis qiskit-ibmq-provider qiskit-aqua Release Date
0.34.1 0.19.1 0.10.2 0.7.0 0.18.3   2022-01-05

총 4개의 구성 요소 중 qiskit-aqua가 사라졌습니다. Aqua는 완전히 없어진 걸까요?

정답부터 말하자면, 그렇지 않습니다. 가장 처음에 출력했던 qiskit.__qiskit_version__을 다시 한 번 살펴봅시다.

{
  'qiskit-terra': '0.19.1',
  'qiskit-aer': '0.10.2',
  'qiskit-ignis': '0.7.0',
  'qiskit-ibmq-provider': '0.18.3',
  'qiskit-aqua': None,
  'qiskit': None,
  'qiskit-nature': None,
  'qiskit-finance': None,
  'qiskit-optimization': None,
  'qiskit-machine-learning': None
}

보기 좋게 출력된 결과를 정렬해보았습니다. 이를 살펴보면 Release Notes와 달리 몇 개의 요소들이 더 있는 것을 알 수 있습니다.

혹시 새롭게 추가된 요소들의 공통점을 알아내셨나요? qiskit-nature부터 qiskit-machine-learning까지, 총 4개의 요소들은 모두 양자 컴퓨터에 사용되는 알고리즘과 관련되어 있습니다. 즉, Aqua에 있던 포함되어 있었던 패키지들이 각각 나누어진 것입니다.

qiskit-aqua는 2021년 4월부터 지원이 중단되었습니다. Aqua 공식 레파지토리의 Migration Guide를 참고하면 나눠진 패키지의 레파지토리를 따라갈 수 있습니다.

Aqua를 대신하여 추가된 4개의 패키지까지 한 번에 같이 설치하기 위해서는 pip install qiskit이 아닌, pip install 'qiskit[all]'을 통해 설치를 해주어야 합니다. 이번에는 pip install 'qiskit[all]'을 통해 설치 후 다시 버전을 확인해보겠습니다.

{'qiskit-terra': '0.19.1', 'qiskit-aer': '0.10.2', 'qiskit-ignis': '0.7.0', 'qiskit-ibmq-provider': '0.18.3', 'qiskit-aqua': None, 'qiskit': None, 'qiskit-nature': '0.3.0', 'qiskit-finance': '0.3.0', 'qiskit-optimization': '0.3.0', 'qiskit-machine-learning': '0.3.0'}

4개의 패키지가 각각 0.3.0 버전으로 잘 설치된 것을 확인할 수 있습니다.

qiskit-aqua 외의 다른 요소들도 변화가 있을 예정이라고 합니다. 간략히 아래에 정리해보면:

  • (예정) Terra 이름 변경 → Qiskit (또는 Qiskit core)
  • (예정) Aer 이름 변경 → Qiskit simulators
  • (예정) Ignis 지원 중단 후 Qiskit experiments으로 대체
  • Aqua 지원 중단 후 4개의 패키지(iskit application modules)로 대체 완료

새롭게 추가된 4개의 패키지를 직접 사용해보고 싶다면 qiskit-community/qiskit-application-modules-demo-sessions의 세션을 추천드립니다. 이 중 qiskit-optimizationqiskit-machine-learning에 대해서는 제가 정리한 한글로 정리한 포스팅이 있으니 참고하셔도 좋을 거 같습니다: Qiskit 최적화와 머신 러닝 맛보기.

References


💬 Any comments and suggestions will be appreciated.

Leave a comment