Skip to main content
IBM Quantum Platform

포트 코드를 Qiskit Serverless 로 변경하십시오

Tip

Qiskit Serverless 업그레이드를 진행 중이며, 기능이 빠르게 변화하고 있습니다. 이 개발 단계 동안, 릴리스 노트와 최신 문서는 Qiskit ServerlessGitHub 페이지에서 확인하실 수 있습니다.

다음 예시는 키스킷 서버리스를 활용하기 위해 기존 코드를 포팅하는 방법을 보여줍니다.

Note

다음 코드는 자격 증명을 저장했다고 가정합니다. 아직 인증하지 않았다면 IBM Cloud 계정 설정의 안내에 따라 API 키로 인증하세요.


실험을 업데이트하십시오

Note

서버리스 버전에서는 (에서 qiskit_serverless) get_runtime_service() 를 사용하여 런타임 서비스를 생성해야 하며 QiskitRuntimeService(), (를 사용하는 대신) 이렇게 하면 IBM Quantum® Compute Service가 시작하는 작업과 세션이 상위 Qiskit Serverless 작업에 대해 추적됩니다. 자세한 내용은 ‘첫 번째 Qiskit Serverless 프로그램 작성하기 ’를 참조하십시오.

from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit.circuit.random import random_circuit

qc_random = [(random_circuit(20, 20, measure=True)) for _ in range(30)]
optimization_level = 3

service = QiskitRuntimeService(channel="ibm_quantum_platform")
backend = service.get_backend(backend_name)

pass_manager = generate_preset_pass_manager(
    optimization_level=optimization_level, backend=backend
)

# @distribute_task(target={"cpu": 1})
def transpile_parallel(circuit, pass_manager):
    """Distributed transpilation for an abstract circuit into an ISA circuit for a given backend."""

    isa_circuit = pass_manager.run(circuit)

    return isa_circuit

transpiled_circuits = [
    transpile_parallel(circuit, pass_manager)
    for circuit in circuits
]

print(transpiled_circuits)

Qiskit Serverless 에 업로드

키스킷 함수 소개 페이지의 안내에 따라 API 키로 인증하세요.

from qiskit_ibm_catalog import QiskitServerless, QiskitFunction

# Authenticate to the remote cluster and submit the pattern for remote execution.
serverless = QiskitServerless()

transpile_remote_demo = QiskitFunction(
    title="transpile_remote_serverless",
    entrypoint="transpile_remote.py",
    working_dir="./source_files/",
)

serverless.upload(transpile_remote_demo)

출력

'transpile_remote_serverless'

Qiskit Serverless 에서 원격으로 실행

from qiskit.circuit.random import random_circuit
from qiskit_ibm_runtime import QiskitRuntimeService

# Setup inputs
qc_random = [(random_circuit(20, 20, measure=True)) for _ in range(30)]
backend = "ibm_brisbane"
optimization_level = 3

# Running program
transpile_remote_serverless = serverless.load('transpile_remote_serverless')
job = transpile_remote_serverless.run(
    circuits=qc_random,
    backend=backend,
    optimization_level=optimization_level
)

job.job_id

출력

'727e921d-512d-4b7d-af97-fe29e93ce7ea'

다음 단계

권장사항
  • 연구자들이 양자 화학을 탐구하기 위해 키스킷 서버리스 및 양자 중심 슈퍼컴퓨팅을 사용한 논문을 읽어보세요.
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.