Q# 프로그램 시작 및 Visual Studio Code
이 문서에서는 VC 코드를 사용하여 VS Code를 사용하여 Q#, Jupyter Notebook 또는 Python 양자 컴퓨팅 작업을 만들고 Azure Quantum에 제출하는 단계를 찾습니다.
Azure Quantum에 Q# 작업 제출
VS Code를 사용하여 Q# 프로그램을 실행, 디버그 및 Azure Quantum에 제출하는 방법을 알아봅니다.
사전 요구 사항
설치 세부 정보는 VS Code에 최신 QDK 설치를 참조하세요.
- Azure 구독의 Azure Quantum 작업 영역. 작업 영역을 만들려면 Azure Quantum 작업 영역 만들기를 참조하세요.
- 최신 버전의 Visual Studio Code또는 웹에서 VS Code를 엽니다.
- Azure Quantum Development Kit 확장의 최신 버전입니다.
Q# 샘플 프로그램 로드
VS Code에서 파일 > 새 텍스트 파일을 선택하고 파일을 RandomNum.qs로 저장합니다.
RandomNum.qs를 열고 를 입력
sample
한 다음, 옵션 목록에서 임의 비트 샘플을 선택하고 파일을 저장합니다.
Q# 프로그램 실행
기본 제공 시뮬레이터에서 로컬로 프로그램 실행을 테스트하려면 아래
@EntryPoint()
명령 목록에서 실행을 클릭하거나 Ctrl+F5를 누릅니다. 출력이 디버그 콘솔에 표시됩니다.Azure Quantum에 제출하기 전에 프로그램을 디버그하려면 아래
@EntryPoint()
명령 목록에서 디버그를 클릭하거나 F5 키를 누릅니다. 맨 위에 있는 디버깅 컨트롤을 사용하여 코드를 한 단계씩 실행, 전환 및 해제합니다. Q# 프로그램 디버깅에 대한 자세한 내용은 테스트 및 디버깅을 참조하세요.
빈도 히스토그램 그리기
빈도 히스토그램은 양자 프로그램을 여러 번 실행하여 얻은 결과 분포 또는 "샷"을 나타냅니다. 히스토그램의 각 막대는 가능한 결과에 해당하며, 그 높이는 결과가 관찰되는 횟수를 나타냅니다. 빈도 히스토그램은 이러한 결과의 확률 분포를 시각화하는 데 도움이 됩니다.
보기 -> 명령 팔레트를 선택하고 Q#: 실행 파일을 표시하고 히스토그램 옵션을 표시해야 하는 "히스토그램"을 입력합니다. 아래
@EntryPoint()
명령 목록에서 히스토그램을 클릭할 수도 있습니다. Q# 히스토그램 창을 열려면 이 옵션을 선택합니다.프로그램을 실행할 수 있는 여러 샷 (예: 100발)을 입력하고 Enter 키를 누릅니 다. 히스토그램은 Q# 히스토그램 창에 표시됩니다.
왼쪽 위 설정 아이콘 을 클릭하여 옵션을 표시합니다.
막대를 클릭하여 해당 결과의 백분율 을 표시합니다. 이 경우 0과 1의 두 가지 가능한 결과가 있으며 각 결과의 백분율은 50%에 가깝습니다.
팁
마우스 스크롤 휠 또는 트랙 패드 제스처를 사용하여 히스토그램을 확대/축소할 수 있습니다. 확대하면 스크롤하는 동안 'Alt'를 눌러 차트를 이동하면 됩니다.
Azure Quantum에 연결하고 작업 제출
VS Code에서 직접 연결하고 작업을 제출할 수 있습니다. 이 예제에서는 Rigetti 시뮬레이터에 작업을 제출합니다.
보기 -> 명령 팔레트를 선택하고 Q#: Azure Quantum 작업 영역에 연결을 입력합니다. Enter 키를 누릅니다.
Azure 계정을 선택하고 프롬프트에 따라 기본 디렉터리, 구독 및 작업 영역에 연결합니다.
참고
연결 문자열 있는 경우 연결 문자열을 선택하고 Azure Quantum 작업 영역에 해당하는 연결 문자열 붙여넣을 수 있습니다. 자세한 내용은 연결 문자열 사용하여 Quantum 작업 영역에 연결을 참조하세요.
연결되면 Explorer 창에서 Quantum 작업 영역을 확장합니다.
작업 영역을 확장하고 Rigetti 공급자를 확장합니다.
참고
Azure Quantum에 연결하는 데 문제가 있는 경우 작업 영역 이름 옆에 경고 아이콘이 표시됩니다. 작업 영역 이름을 마우스로 가리키면 오류 정보가 표시됩니다.
로 rigetti.sim.qvm을 target선택합니다.
이름 오른쪽에 있는 재생 아이콘을 target 선택하여 현재 Q# 프로그램 제출을 시작합니다. 팝업이 표시되면 QIR target 프로필 변경을 선택하고 계속합니다.
작업을 식별하는 이름을 추가합니다.
샷 수 또는 프로그램 실행 횟수를 추가합니다.
Enter 키를 눌러 작업을 제출합니다. 작업 상태 화면 아래쪽에 표시됩니다.
작업을 확장하고 작업 위로 마우스를 가져가면 작업의 시간과 상태 표시됩니다.
결과를 보려면 작업 이름 옆에 있는 클라우드 아이콘을 선택하여 작업 영역 스토리지에서 결과를 다운로드하고 VS Code에 표시합니다.
Azure Quantum에 Jupyter Notebooks 작업 제출
VS Code를 사용하여 Q# Jupyter Notebook 실행, 디버그 및 Azure Quantum에 제출하는 방법을 알아봅니다. 이 문서의 단계는 Azure Quantum 포털의 로컬 Jupyter 서버 또는 Notebook에 있는 Jupyter Notebook에도 적용됩니다.
사전 요구 사항
설치 세부 정보는 VS Code에 최신 QDK 설치를 참조하세요.
- Azure 구독의 Azure Quantum 작업 영역. 작업 영역을 만들려면 Azure Quantum 작업 영역 만들기를 참조하세요.
- Python 및 Pip가 설치된 Python 환경.
- Azure Quantum Development Kit, Python 및 Jupyter 확장이 설치된 VS Code.
- Azure Quantum
qsharp
및azure-quantum
패키지 및ipykernel
패키지.
로컬 시뮬레이터에서 프로그램 실행 및 테스트
VS Code에서 명령 팔레트 보기를 > 선택하고 만들기: 새 Jupyter Notebook 선택합니다.
오른쪽 위에서 VS Code는 Python 버전과 Notebook에 대해 선택된 가상 Python 환경을 검색하고 표시합니다. 여러 Python 환경이 있는 경우 오른쪽 위에 있는 커널 선택기를 사용하여 커널을 선택해야 할 수 있습니다. 환경이 검색되지 않은 경우 VS Code의 Jupyter Notebooks에서 설정 정보를 참조하세요.
Notebook의 첫 번째 셀에서 를 실행합니다.
import qsharp import azure.quantum
- 모듈은
qsharp
셀에%%qsharp
직접 Q# 코드를 입력할 수 있는 매직 명령을 활성화합니다. - 이 모듈은
azure-quantum
Azure Quantum 작업 영역에 대한 연결을 제공합니다.
참고
Jupyter Python 커널
ipykernel
이 검색되지 않으면 VS Code에서 설치하라는 메시지를 표시합니다.- 모듈은
다른 셀을 추가하고 사용자가 지정한 임의 비트 수를 반환하는 이 Q# 코드를 입력합니다.
%%qsharp operation Random() : Result { use q = Qubit(); H(q); let result = M(q); Reset(q); return result } operation RandomNBits(N: Int): Result[] { mutable results = []; for i in 0 .. N - 1 { let r = Random(); set results += [r]; } return results }
작업을 테스트하려면 Notebook에
eval
이전에 정의된 Q# 작업을 호출할 수 있는 메서드를 사용할 수 있습니다.qsharp.eval("RandomNBits(4)")
[Zero, One, One, Zero]
로컬 시뮬레이터로 프로그램을 실행하려면 메서드를
run
사용합니다.shots
프로그램을 실행할 횟수 또는 를 지정하고 시뮬레이터는 결과를 Python 목록으로 반환합니다.qsharp.run("RandomNBits(4)", shots=10)
[[One, One, One, One], [Zero, Zero, One, Zero], [One, Zero, Zero, One], [Zero, One, Zero, Zero], [One, Zero, One, One], [One, Zero, One, Zero], [One, One, One, Zero], [One, One, One, One], [Zero, Zero, Zero, One], [One, Zero, Zero, One]]
기본 프로필을 사용하여 작업 컴파일
로컬 양자 시뮬레이터에서 프로그램을 실행하는 경우 모든 유형의 Q# 프로그램을 제출할 수 있습니다. 그러나 Azure Quantum 하드웨어 targets 는 아직 모든 Q# 프로그램을 실행하는 데 필요한 전체 기능을 지원하지 않습니다. Q# 프로그램을 컴파일하고 Azure Quantum에 제출하려면 프로필을 설정 target 하여 하드웨어에서 지원하는 기능을 target Q#에 알려야 합니다. 현재 기본 프로필입니다. 자세한 내용은 Azure Quantum의 프로필 형식을 참조하세요.
Q# 인터프리터를 다시 초기화하고 기본 프로필로 프로그램을 컴파일하려면 다음을 수행합니다.
메서드를
init
사용하여 프로필을 설정합니다.qsharp.init(target_profile=qsharp.TargetProfile.Base)
인터프리터를 다시 초기화했기 때문에 새 프로필을 사용하여 코드를 다시 실행해야 합니다.
%%qsharp operation Random() : Result { use q = Qubit(); H(q); let result = M(q); Reset(q); return result } operation RandomNBits(N: Int): Result[] { mutable results = []; for i in 0 .. N - 1 { let r = Random(); set results += [r]; } return results }
다음으로 메서드를
compile
사용하여 프로그램의 진입점인 작업 또는 함수를 지정합니다. 이렇게 하면 코드를 QIR 형식으로 컴파일한 다음, 양자 하드웨어에 제출할 수 있습니다.MyProgram = qsharp.compile("RandomNBits(4)")
Azure Quantum에 연결하고 작업 제출
이제 프로그램을 올바른 형식으로 컴파일했으므로 Azure Quantum에 연결할 개체를 만듭니 azure.quantum.Workspace
다. 연결하려면 Azure Quantum 작업 영역의 리소스 ID를 사용합니다. 리소스 ID 및 위치는 Azure Portal 작업 영역 개요 페이지에서 복사할 수 있습니다.
새 셀에서 Azure Quantum 작업 영역에서 리소스 ID 및 위치를 입력합니다.
MyWorkspace = azure.quantum.Workspace( resource_id = "MyResourceID", location = "MyLocation" )
메서드를
get_targets
사용하여 작업 영역에서 사용 가능한 하드웨어 targets 를 확인합니다.MyTargets = MyWorkspace.get_targets() print("This workspace's targets:") MyTargets
를 선택합니다.
rigetti.sim.qvm
targetMyTarget = MyWorkspace.get_targets("rigetti.sim.qvm")
마지막으로 메서드를
submit
사용하여 매개 변수를 사용하여 프로그램을 제출하고 결과를 표시합니다.job = MyTarget.submit(MyProgram, "MyQuantumJob", shots=100) job.get_results()
{'Histogram': ['[0, 0, 0, 0]', 0.3, '[1, 0, 0, 0]', 0.1, '[1, 1, 1, 1]', 0.3, '[0, 1, 1, 1]', 0.3]}
작업의 모든 속성은 에서
job.details
액세스할 수 있습니다. 예를 들면 다음과 같습니다.print(job.details) print("\nJob name:", job.details.name) print("Job status:", job.details.status) print("Job ID:", job.details.id)
{'additional_properties': {'isCancelling': False}, 'id': '0150202e-9638-11ee-be2f-b16153380354', 'name': 'MyQuantumJob', 'provider_id': 'rigetti'...} Job name: MyQuantumJob Job status: Succeeded Job ID: 0150202e-9638-11ee-be2f-b16153380354
Q# 작업을 사용하여 Python을 Azure Quantum에 제출
VS Code를 사용하여 Q# 작업을 호출하는 Python 프로그램을 작성하고, Python 명령 또는 Azure CLI를 사용하여 Azure에 연결하고, 작업을 제출하는 방법을 알아봅니다.
사전 요구 사항
설치 세부 정보는 VS Code에 최신 QDK 설치를 참조하세요.
- Azure 구독의 Azure Quantum 작업 영역. 작업 영역을 만들려면 Azure Quantum 작업 영역 만들기를 참조하세요.
- Python 및 Pip가 설치된 Python 환경.
- Azure Quantum 개발 키트 및 Python 확장이 설치된 VS Code.
- Azure Quantum
qsharp
및azure-quantum
패키지. - 최신 Azure Quantum 확장이 설치된 Azure CLI.
Q# 작업 만들기 및 가져오기
qsharp
패키지를 사용하면 함수와 작업을 Q# 파일에 저장하고 Python 코드에서 함수 및 작업을 호출할 수 있는 Q# 프로젝트를 만들 수 있습니다. 이는 입력 매개 변수를 사용하는 프로그램을 시작해야 하는 경우에 특히 유용합니다.
단계에 따라 Q# 프로젝트를 만듭니다.
새 텍스트 파일을 열고 사용자가 지정한 난수의 비트를 반환하는 다음 Q# 코드를 추가하고 파일을 프로젝트에 로
source.qs
저장합니다.참고
이 Q# 코드에는
@EntryPoint
Q# 프로그램과 같은 함수가 없지만(Azure Quantum에 Q# 작업 제출 참조) Jupyter Notebook 달리 네임스페이스가 필요합니다(Azure Quantum에 Jupyter Notebook 작업 제출 참조).namespace Sample { operation Random() : Result { use q = Qubit(); H(q); let result = M(q); Reset(q); return result } operation RandomNBits(N: Int): Result[] { mutable results = []; for i in 0 .. N - 1 { let r = Random(); set results += [r]; } return results } }
동일한 폴더에서 다른 파일을 열고 로
randomNum.py
저장합니다.다음 코드를 추가하여 및
azure.quantum
모듈을qsharp
가져옵니다.import qsharp import azure.quantum
다음으로, 코드를 추가하여 Q# 프로젝트 루트 폴더를 정의하고 로컬 시뮬레이터에서 target 작업을 테스트합니다. 작업은 네임스페이스에 의해< 호출됩니다>.<operation_name( )>이고, 이 경우 반환할 임의 비트 수를 전달합니다.
qsharp.init(project_root = '/MyProjectRootFolder') print(qsharp.eval("Sample.RandomNBits(4)"))
[Zero, One, One, Zero]
추가
shots
매개 변수를 전달하고 Python 목록에서 결과를 반환하는 메서드를 사용하여 작업을run
테스트할 수도 있습니다. 에서randomNum.py
이전 print 문을 다음으로 바꿉니다.result = qsharp.run("Sample.RandomNBits(4)", shots=10) for x in result: print(x)
[[One, One, One, One], [Zero, Zero, One, Zero], [One, Zero, Zero, One], [Zero, One, Zero, Zero], [One, Zero, One, One], [One, Zero, One, Zero], [One, One, One, Zero], [One, One, One, One], [Zero, Zero, Zero, One], [One, Zero, Zero, One]]
기본 프로필을 사용하여 작업 컴파일
로컬 양자 시뮬레이터에서 프로그램을 실행하는 경우 모든 유형의 Q# 프로그램을 제출할 수 있습니다. 그러나 Azure Quantum 하드웨어 targets 는 아직 모든 Q# 프로그램을 실행하는 데 필요한 전체 기능을 지원하지 않습니다. Q# 프로그램을 컴파일하고 Azure Quantum에 제출하려면 프로필을 설정 target 하여 하드웨어에서 target 지원하는 기능을 Q#에 알려야 합니다. 현재 기본 프로필입니다. 자세한 내용은 Azure Quantum의 프로필 형식을 참조하세요.
참고
VS Code의 Q# 전용 프로그램의 경우 VS Code는 기본 프로필을 자동으로 설정합니다.
메서드를
init
사용하여 프로필을 설정합니다.qsharp.init(target_profile=qsharp.TargetProfile.Base)
그런 다음 메서드를
compile
사용하여 프로그램의 진입점인 작업 또는 함수를 지정합니다. 그런 다음 컴파일된 프로그램을 양자 하드웨어에 제출할 수 있습니다.MyProgram = qsharp.compile("Sample.RandomNBits(4)")
Azure Quantum에 연결하고 작업 제출
Azure Quantum에 연결하고 Python에서 만든 Workspace
개체를 사용하여 작업을 제출하거나 Azure CLI를 사용하여 작업을 연결하고 제출할 수 있습니다. Azure CLI를 사용하려면 컴파일된 프로그램을 텍스트 파일로 저장하고 CLI 명령을 사용하여 해당 파일을 제출해야 합니다.
이제 프로그램을 올바른 형식으로 컴파일했으므로 Azure Quantum에 연결할 개체를 만듭니 azure.quantum.Workspace
다. 연결하려면 Azure Quantum 작업 영역의 리소스 ID를 사용합니다. 리소스 ID 및 위치는 Azure Portal 작업 영역 개요 페이지에서 복사할 수 있습니다.
Azure Quantum 작업 영역에서 리소스 ID 및 위치를 채우는 에 다음 코드를
randomNum.py
추가합니다.workspace = azure.quantum.Workspace( resource_id = "MyResourceID", location = "MyLocation" )
메서드를
get_targets
사용하여 작업 영역에서 사용 가능한 하드웨어 targets 를 표시합니다.MyTargets = workspace.get_targets() print("This workspace's targets:") for x in MyTargets: print(x)
를 선택합니다.
rigetti.sim.qvm
targetMyTarget = workspace.get_targets("rigetti.sim.qvm")
마지막으로 메서드를
submit
사용하여 매개 변수를 사용하여 프로그램을 제출합니다. 작업 결과는 Python 사전으로 반환됩니다.job = MyTarget.submit(MyProgram, "MyPythonJob", shots=100) results = job.get_results() print("\nResults: ", results)
값만 추출하고 표시하려면 다음을 수행합니다.
resultList = results.get("Histogram") for x in resultList: print(x)
[0, 0, 0, 0] 0.3 [1, 0, 0, 0] 0.1 [1, 1, 1, 1] 0.3 [0, 1, 1, 1] 0.3
작업의 모든 속성은 에서
job.details
액세스할 수 있습니다. 예를 들면 다음과 같습니다.print(job.details) print("\nJob name:", job.details.name) print("Job status:", job.details.status) print("Job ID:", job.details.id)
{'additional_properties': {'isCancelling': False}, 'id': '0fc396d2-97dd-11ee-9958-6ca1004ff31f', 'name': 'MyPythonJob', 'provider_id': 'rigetti'...} Job name: MyPythonJob Job status: Succeeded Job ID: fc396d2-97dd-11ee-9958-6ca1004ff31f
다음 단계
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기