다음을 통해 공유


자습서: 양자 화학 문제의 리소스 예측

이 자습서에서는 Azure Quantum 리소스 추정기를 사용하여 해밀토니안의 에너지를 1mHa의 화학 정확도로 계산하는 데 필요한 물리적 리소스를 예측합니다.

이 자습서에서는 다음을 수행합니다.

  • GitHub에서 샘플 리포지토리를 복제합니다.
  • 화학 모델링 및 시뮬레이션 애플리케이션에 대한 인수 매개 변수로 FCIDUMP 파일을 사용합니다.
  • 이중 팩터링된 화학 샘플인 대규모 문제에 대한 리소스 추정을 실행합니다.

필수 조건

  • Python 및 Pip설치된 Python 환경입니다.

  • Quantum 개발 키트Python 확장이 설치된 최신 버전의 Visual Studio Code입니다.

  • 최신 Azure Quantum qsharp 패키지 및 numpyscipy 패키지.

    python -m pip install --upgrade qsharp numpy scipy 
    

리소스 추정기를 실행하기 위해 Azure 계정이 필요하지 않습니다.

문제 설명

이 자습서에서는 Phys. Rev. Research 3, 033055(2021)에 설명된 큐비트화 알고리즘의 물리적 리소스 추정치를 평가하여 사용자가 제공한 해밀토니안의 에너지를 1mHa의 화학적 정확도로 계산합니다.

해밀토니안의 에너지를 계산하는 양자 알고리즘은 이중 계수 큐비트화를 기반으로 합니다. 해밀토니안은 HTTPS URI를 통해 사용할 수 있는 제공된 FCIDUMP(전체 구성 상호 작용) 파일에서 1-및 2 전자 정수의 관점에서 설명됩니다.

큐비트화 방법은 양자 위상 추정을 기반으로 하지만 해밀토니안 행렬 $H$에서 표준 $U = \exp{(-i H/\alpha)}$를 생성하는 대신, 일반적으로 더 적은 리소스로 구현할 수 있는 $U = \exp{(-i \sin^{-1}(H/\alpha))}$를 사용합니다. 이중 배율화를 사용하여 $H$는 현명한 궤도 선택과 압축의 조합을 통해 압축적으로 표현됩니다.

Visual Studio Code에서 샘플 로드

이 자습서의 코드는 Q# 샘플 리포지토리의 추정/df-화학에서 찾을 수 있습니다. 샘플을 실행하려면 로컬 컴퓨터에서 리포지토리를 복제하는 것이 좋습니다.

리포지토리를 복제하려면 터미널에서 다음 명령을 실행합니다.

git clone https://github.com/microsoft/qsharp.git

FCIDUMP 파일 선택 및 전달

이 예제에서 해밀토니안은 FCIDUMP 형식의 1-및 2 전자 정수에 대해 설명합니다. 다음 표에서 FCIDUMP 파일 중 하나를 선택하거나 공개적으로 액세스할 수 있는 HTTPS URI를 통해 컴퓨터 또는 온라인에서 사용할 수 있는 고유한 FCIDUMP 파일을 선택할 수 있습니다.

URI 인스턴스 이름 설명
https://aka.ms/fcidump/XVIII-cas4-fb-64e-56o XVIII-cas4-fb-64e56o 64개의 전자와 56개의 궤도로 구성된 활성 공간은 루테늄 촉매 탄소 고정 주기에서 안정적인 중간체 중 하나입니다.
https://aka.ms/fcidump/nitrogenase-54e-54o nitrogenase_54orbital 54개의 전자와 활성 코어의 54개의 궤도 활성 공간을 가진 질소화 효소.
https://aka.ms/fcidump/fe2s2-10e-40o fe2s2-10e-40o 10개의 전자와 40개의 궤도로 구성된 [2Fe, 2S] 클러스터의 활성 공간.
https://aka.ms/fcidump/polyyne-24e-24o polyyne-24e-24o 폴리인 분자의 24 전자, 24 궤도 활성 공간.
https://aka.ms/fcidump/n2-10e-8o n2-10e-8o 10개의 전자와 8개의 궤도를 가진 활성 공간으로, 3 앙스트롬 거리에서 분리된 질소.

FCIDUMP 파일을 전달하려면 chemistry.py 파일을 실행하고 FCIDUMP 파일 이름 또는 URI를 인수 -f 로 전달해야 합니다 --fcidumpfile.

usage: chemistry.py [-h] [-f FCIDUMPFILE]

options:
  -h, --help           
  -f FCIDUMPFILE, --fcidumpfile FCIDUMPFILE                      

화학 샘플 실행

  1. Visual Studio Code 에서 Q# 샘플 리포지토리를 복제한 폴더를 엽니다 .

  2. 새 터미널 터미널 >을 열고 양자 화학 샘플이 있는 디렉터리로 이동합니다. 예를 들어 로컬 머신에서 Q# 샘플 리포지토리를 복제하는 경우 경로는 다음과 같습니다 qsharp/samples/estimation/df-chemistry.

  3. chemistry.py 파일을 실행하고 FCIDUMP 파일을 전달합니다. 예를 들어 다음 명령은 FCIDUMP 파일 n2-10e-8o 를 작업 폴더에 다운로드하고 리소스 추정을 실행합니다.

    python chemistry.py -f https://aka.ms/fcidump/n2-10e-8o
    

    그런 다음 다운로드한 파일의 경로를 대신 스크립트에 전달할 수 있습니다.

    python chemistry.py -f n2-10e-8o
    
  4. 리소스 예측 결과가 터미널에 표시됩니다. 예를 들어 다음 출력은 n2-10e-8o FCIDUMP 파일에 대한 리소스 추정을 보여줍니다.

    Algorithm runtime: 19 mins
    Number of physical qubits required: 207.60k
    For more detailed resource counts, see file resource_estimate.json
    

참고

chemistry.py 파일을 실행한 후 작업 폴더에 resource_estimation.json 파일이 만들어집니다. resource_estimation.json 파일에는 리소스 추정기의 자세한 출력이 포함됩니다. 작업 매개 변수, 물리적 개수, T 팩터리 속성, 논리 개수 및 논리 큐비트 속성입니다.

매개 변수 변경 target

  1. chemistry.py 파일을 엽니다.

  2. 리소스 예측의 매개 변수는 target chemistry.py 파일 호출 qsharp.estimate 에서 찾을 수 있습니다. 다음 코드 조각은 이 자습서에서 사용되는 매개 변수를 보여 있습니다.

    # Get resource estimates
    res = qsharp.estimate(qsharp_string,
                          params={"errorBudget": 0.01,
                                  "qubitParams": {"name": "qubit_maj_ns_e6"},
                                  "qecScheme": {"name": "floquet_code"}})
    
  3. 매개 변수를 변경 target 하려면 이전 코드 조각을 수정하여 수행할 수 있습니다. 예를 들어 다음 코드 조각은 오류 예산을 0.333으로 변경하는 방법을 보여줍니다. 자세한 내용은 리소스 추정기의 매개 변수 사용자 지정 target 을 참조하세요.

    # Get resource estimates
    res = qsharp.estimate(qsharp_string,
                          params={"errorBudget": 0.333,
                                  "qubitParams": {"name": "qubit_maj_ns_e6"},
                                  "qecScheme": {"name": "floquet_code"}})
    

양자 컴퓨팅의 화학 애플리케이션이 중요한 이유는 무엇인가요?

이 자습서는 양자 솔루션의 리소스 추정을 전자 구조 문제에 통합하는 첫 번째 단계를 나타냅니다. 스케일링된 양자 컴퓨터의 가장 중요한 애플리케이션 중 하나는 양자 화학 문제를 해결하는 것입니다. 복잡한 양자 기계 시스템의 시뮬레이션은 탄소 포획, 식량 불안, 더 나은 연료 및 재료 설계와 같은 분야에서 돌파구를 마련할 수 있는 잠재력을 가지고 있습니다.

예를 들어 이 샘플 에 제공된 FCIDUMP 파일 중 하나인 nitrogenase_54orbital 질소 효소를 설명합니다. 이 효소가 양자 수준에서 작동하는 방식을 정확하게 시뮬레이션할 수 있다면 대규모로 생산하는 방법을 이해하는 데 도움이 될 수 있습니다. 당신은 지구를 공급하기에 충분한 비료를 생산하는 데 사용되는 매우 에너지 집약적 인 과정을 대체 할 수 있습니다. 이는 전 세계 탄소 발자국을 줄이고 증가하는 인구의 식량 불안에 대한 우려를 해결하는 데 도움이 될 가능성이 있습니다.

지식을 심화하려는 경우 다음과 같은 몇 가지 실험을 시도해 볼 수 있습니다.

  • 일부 사용자 정의 FCIDUMP 파일을 추정합니다.
  • 사용자 지정 큐비트 매개 변수를 target 제공하여 양자 컴퓨터의 가정을 수정합니다.
  • Azure Quantum 샘플 갤러리에서 다른 리소스 추정 샘플 노트를 확인해보세요.
  • Grover의 검색 알고리즘 구현 자습서 에서는 Grover의 검색 알고리즘 을 사용하여 그래프 색 지정 문제를 해결하는 Q# 프로그램을 작성하는 방법을 보여 줍니다.
  • Q#의 큐비트 수준 프로그램 작성 및 시뮬레이션 자습서에서는 특정 큐비트를 직접 해결하는 Q# 프로그램을 작성하는 방법을 살펴봅니다.
  • Q#을 사용한 양자 얽힘 탐색 자습서 에서는 Q# 을 사용하여 큐비트에서 작동하여 상태를 변경하는 방법을 보여 줍니다. 중첩 및 얽힘의 효과를 보여 줍니다.
  • Quantum Katas동시에 양자 컴퓨팅 및 Q# 프로그래밍의 요소를 교육하기 위한 Jupyter Notebook 기반의 자체 진행 자습서 및 프로그래밍 연습입니다.