qBraid LabでQiskitを使う場合の手順です。旧IBM Quantum LabのようにWebブラウザー上からインストールなしでQiskitを使うことができます。(IBM Quantumの実デバイスでの実行時にjobエラーが出ていましたが、現在は解消されました!)
ご注意:公式には、ご自身のパソコンにQiskitをインストールして使うことをおすすめしています。インストールの手順はこちら(macOS版、Windows版)をご覧ください。
1. qBraid環境へのログイン
ブラウザーを開き、 https://www.qbraid.com/ のサイトに入り、右上の「START NOW」をクリックします。
GoogleのID(gmail)かまたは、Emailアドレスでログインできます。Emailアドレスの場合は、下の方の「Create An Account」でアカウントを作ってログインします。
Googleでログインする場合を紹介します。アカウントを選択します。
2. qBraid Labでの最初の操作手順
上側中央の紫色の「Launch Lab>」をクリックします。
右側一番上のFreeのタブの「Start」をクリックします。
以下のようにLab環境に入れます。Qiskitはすでにインストールされています。真ん中の紫の「Start Tour」をクリックします。
使い方のツアーを見たい方は「Next」を押していきます。見なくてもいい人は右上の「x」をクリックします。
Qiskitを使って、IBM Quantumの実機の量子コンピューターを使うのであれば、課金は必要ないので、左の「Not Now」をクリックします。
(2024/08/25 追記・修正)
右側の「ENVIRONMENTS」枠から「+ADD」をクリックして、
たくさんの環境が出てきますので、「Qiskit」と名前のつく環境を探します。
検索バーで「qiskit」を検索した結果、以下のように様々なバージョンのQiskitカーネル環境が出てきますので、この中から最新のものを選びましょう。2024年8月現在、最新は「IBM Quantum Global Summer School 2024」なので、今回はこちらを選びます。
「Install」をクリックするとインストールが始まり、インストール終了までしばらく時間がかかります。
インストールが終了すると真ん中の「Launcher」タブに、Qiskit印の「Python 3[QGSS-24]」のアイコンが増えているので、こちらをクリックすると、
新しいjupyter ノートブックが開きます。この環境には、Qiskitがインストールされているため、そのままコーディングをすることができます。
(2024/08/25 追記・修正ここまで)
3. Qiskitで回路を作成し、IBM Quantumの実機で実行
続けて、ベル状態(2量子ビットのエンタングルメント)の回路を作成して、IBM Quantumの実機で実行してみましょう。
以下のコードをノートブックの最初のセルに貼り付け、「Shift」+「Enter」で実行します。
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.visualization import plot_histogram
qc = QuantumCircuit(2,2)
qc.h(0)
qc.cx(0,1)
qc.measure(0, 0)
qc.measure(1, 1)
qc.draw(output="mpl")
実機でこの回路を実行してみます。
qBraid環境で初めて実行するためIBM Quantum のAPIトークンを読み込む必要があります。Openアカウント(無償)の場合のコードを以下に記載します。<IBM Quantum API key>
の部分に、IBM QuantumプラットフォームからコピーしてきたAPI Tokenを貼り付けてください。
# Real backend
from qiskit_ibm_runtime import QiskitRuntimeService
QiskitRuntimeService.save_account(channel='ibm_quantum', instance='ibm-q/open/main', token='<IBM Quantum API key>', overwrite=True)
service = QiskitRuntimeService()
IBM Quantumプラットフォームの右上あたりの「API Token」から四角が二重になったアイコンをクリックするとコピーできます。
続けて以下のコマンドでデバイスを指定します。
# 以下でデバイスを指定できます。
backend = service.backend('ibm_brisbane') # 例)ibm_brisbaneを使う場合
#一番空いているバックエンドを自動的に選択することもできます
backend = service.least_busy(operational=True)
print("最も空いているバックエンドは: ", backend)
最も空いているバックエンドは: <IBMBackend('ibm_nazca')>
と出てきましたので、そのままibm_nazca
を使って実行します。
# 実機のバックエンドでの実行に最適な回路に変換します
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_circuit = pm.run(qc)
# Samplerで実行します
sampler = Sampler(backend)
job = sampler.run([isa_circuit])
print("job id:", job.job_id()) # 実行に時間がかかるのでjob_idを表示します
job idが以下のように表示されるはずです。
job id: ctqm8gjsj17g00xxxxxxなどの英数字
以下のコマンドでjobのstatus(実行状況)を確認します。
job = service.job(job.job_id())
job.status() # ジョブの実行状態を確認します
'DONE'
が表示されたら、実機での実行が終わっているので、以下のセルを実行して結果を確認します。
### 'DONE'になってから実行します ###
result = job.result()
print(result[0].data.c.get_counts())
plot_histogram(result[0].data.c.get_counts())
お疲れ様でした!