{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 3-2. QiskitとIBM Q Experienceの使い方\n", "IBM Q Experienceは2016年5月24日にIBM社が世界で初めてクラウド上に公開した量子コンピュータである[[1]](https://quantumexperience.ng.bluemix.net/qx/experience)。この節では、IBM Q Experienceの使い方及びIBM社が開発している量子計算用フレームワーク[Qiskit](https://qiskit.org)の使い方を学ぶ。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### IBM Q Experienceの実行環境を用意する\n", "#### アカウント登録\n", "1. まず、IBM Q ExperienceのWebページ[[1]](https://quantumexperience.ng.bluemix.net/qx/experience) の右上のSign Inボタンをクリックしてアカウントを作る。\n", "2. メールアドレスとパスワードもしくは外部サービスのアカウントが要求されるが、Sign Inボタン下のSign Upをクリックする。\n", "3. 必要事項を記入し、Sign Upボタンをクリックする。\n", "4. 登録したメールアドレスにメールが送られるので、そのメール内のリンクをクリックする。すると別ウィンドウで登録完了の画面が出るので、次からはログイン可能になる。\n", "\n", "#### APIの取得\n", " これでIBM Q Experienceに登録できたので、次はIBM Q Experienceの実機(本物の量子コンピュータ)のアクセスに必要なIBM Q Experience APIの取得の仕方を学ぶ。\n", "\n", "1. ログイン後にWelcome to Experience!のポップアップが出るので右上の×印をクリックして閉じる。\n", "2. 画面右上のアイコン → “My Account”をクリックし、登録したアカウント情報を見る。\n", "3. 画面右上に“Account”, “Community”, “Advanced”のうち“Advanced”をクリックする。\n", "4. “API Token”の欄が“undefined”になっているので、“Regenerate”ボタンをクリックしてAPIを生成する。隣の“Copy this token”ボタンを押すとAPIをクリップボードに貼り付けられる。\n", "\n", "ちなみに、IBM Q ExperienceのWebページ[[1]](https://quantumexperience.ng.bluemix.net/qx/experience)上のGUIでドラッグ&ドロップで回路を生成して実行することや、Jupyter Notebook (Qiskit Notebooksと呼ばれている)をWebページ上で作成して実行することも可能である。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Qiskitの実行環境を用意する\n", "Qiskitはpipを経由してインストールすることができる。PC内のコマンドライン(Windowsのコマンドプロンプト、Macのターミナル)を使う場合はコマンドラインに`pip install qiskit`と入力して実行する。Jupyter NotebookまたはGoogle Colaboratoryをお使いの方は、以下のセルの`!pip install qiskit`を実行すると使えるようになる。" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!pip install qiskit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Qiskitを使ってみる\n", "QiskitはPythonフレームワークなので書く時の文法はPythonと同じである。その前に実機の使用に必要な情報をローカル環境に保存しておこう(このステップは各自の環境ごとに一回実行すれば良い)。" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "## \"MY_API_TOKEN\" に、上で取得したtokenを入れる\n", "from qiskit import IBMQ\n", "IBMQ.save_account('MY_API_TOKEN')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ここでは、$|\\Psi^{+}\\rangle=\\frac{|00\\rangle + |11\\rangle}{\\sqrt{2}}$というBell状態ペアの生成のプログラムを例に学んでいく。" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "#必要なモジュールのインポート\n", "from qiskit import IBMQ, QuantumCircuit, ClassicalRegister, QuantumRegister\n", "from qiskit import execute, Aer\n", "from qiskit.qasm import pi\n", "from qiskit.tools.visualization import plot_histogram, circuit_drawer\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 自分のアカウント情報をloadする。(あらかじめ IBMQ.save_account を実行しておく必要がある. 複数のアカウントを使い分ける時はここで行う)\n", "provider = IBMQ.load_account()\n", "\n", "# 自分のアカウントで使用できるバックエンドを見る\n", "provider.backends()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "色々と出てきたが、`'ibmq_qasm_simulator'` (32量子ビットのシミュレータ)以外は5量子ビット・14量子ビットの実機の量子コンピュータである(IBM Q Experienceのログイン後の画面に詳細が載っている)。以下のコマンドを打つと1番空いていてジョブが投げやすい実機が分かる。" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Least busy backend: ibmqx2\n" ] } ], "source": [ "from qiskit.providers.ibmq import least_busy\n", "backend_lb = least_busy(provider.backends(simulator=False, operational=True))\n", "print(\"Least busy backend: \", backend_lb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`ibmqx2` が1番忙しくないことが分かったので、今回はそれを実機として使う。まずはシミュレータで量子回路を実行してみよう。" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'00': 2089, '11': 2007}\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#量子レジスタqを生成する。\n", "q = QuantumRegister(2)\n", "\n", "#古典レジスタcを生成する\n", "c = ClassicalRegister(2)\n", "\n", "#量子レジスタqと古典レジスタc間で量子回路を生成する。\n", "qc = QuantumCircuit(q, c)\n", "\n", "#1番目の量子ビットにHゲートをかける。\n", "qc.h(q[0])\n", "\n", "#1-2番目の量子ビットにCNOTゲートをかける。(1番目の量子ビットが制御量子ビット、2番目の量子ビットがコントロール量子ビット)\n", "qc.cx(q[0],q[1])\n", "\n", "#1番目の量子ビットの測定値を1番目の古典ビットに、2番目の量子ビットの測定値を2番目の古典ビットに渡す。\n", "qc.measure(q[0], c[0])\n", "qc.measure(q[1], c[1])\n", "\n", "#localのシミュレータとleast busyなbackend\n", "backend_sim = Aer.get_backend(\"qasm_simulator\")\n", "\n", "#量子回路qcを指定したバックエンド(backend_sim)で4096回実行する。\n", "result = execute(qc, backend_sim, shots=4096).result()\n", "\n", "#結果を出力する。\n", "print(result.get_counts(qc))\n", "\n", "#結果のヒストグラムを描画する。\n", "plot_histogram(result.get_counts(qc))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "生成した状態は$\\frac{|00\\rangle + |11\\rangle}{\\sqrt{2}}$だから、式の通り$|00\\rangle$、$|11\\rangle$が得られる確率は共に50%に近いことが分かる。次に実機の結果を見てみよう。但し、実機での実験は結果を得るのに非常に時間がかかるので注意が必要だ。" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'00': 1844, '11': 2041, '01': 107, '10': 104}\n" ] }, { "data": { "image/png": "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qcz/EvAr4NlKmyspQrPDK3IlSdpTPRqamXlfRAwHrqO4n/Jp4ILMXFFp0tH9movafb4QWAGMrnw+FPg2cDiwsdJ+amY+3rXVS5L6up7e0yQzbwdu38m8MzqYFrtZ32eAz3RJcZIk7YJjz0qSVJKhKUlSSYamJEklGZqSJJVkaEqSVJKhKUlSSYamJEklGZqSJJVkaEqSVJKhKUlSSYamJEklGZqSJJVkaEqSVJKhKUlSSYamJEklGZqSJJVkaEqSVJKhKUlSSYamJEklGZqSJJVkaEqSVJKhKUlSSYamJEklGZqSJJVkaEqSVJKhKUlSSYamJEklGZqSJJVkaEqSVJKhKUlSSYamJEklGZqSJJVkaEqSVJKhKUlSSYamJEklGZqSJJVkaEqSVJKhKUlSSYamJEklGZqSJJVkaEoV8+bNY/LkyUycOJFbb711h/lbtmzhYx/7GBMnTuTss89m5cqVADz00EOceeaZTJkyhTPPPJMFCxZsX6alpYWrr76aU045hXe+853MmTOnx7Znf9Ed/XLhhRcyefJkpk6dytSpU1m7dm2PbY/2bf17uwCpGrS2tnLttdcye/Zs6urqOOusszjvvPM4/vjjt7e55557OPTQQ1m4cCH3338/N9xwA9/97ncZPnw4P/jBD6itrWXJkiV88IMf5JlnngHglltuYcSIETzxxBO88cYbbNiwobc2cZ/UXf0CcMcdd9DQ0NAbm6V9mHuaErBw4ULGjBnD6NGjGThwINOmTWPu3LlvafPAAw9w0UUXAfD+97+fBQsWkJm8/e1vp7a2FoD6+npee+01tmzZAsC9997L1VdfDcABBxzA8OHDe3Cr9n3d1S/SnjI0JaC5uZkjjjhi++e6ujqam5t32qZ///4MHTqUl19++S1t5syZw4QJExg0aBAbN24EYObMmZxxxhlceumlvPTSS928JfuX7uiXN33qU59i6tSp3HzzzWRmN26F9ieGptRFli5dyo033sjXv/51ALZt28aaNWuYPHky//RP/8Qpp5zC9ddf38tV9j3t+wWKQ7OPPPIIP//5z3nssce47777erFC7UsMTQmora1l9erV2z+vWbNm+6G9jtps27aNV155hZqaGgBWr17NJZdcwu23386YMWMAqKmpYfDgwVx44YVAceiwsbGxJzZnv9Ed/QLFHivAkCFDmD59Ok8++WR3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\n", "text/plain": [ "
" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#least busyだったbackendを選ぶ\n", "backend_sim = backend_lb\n", "\n", "#量子回路qcを指定したバックエンド(backend_sim)で4096回実行する。\n", "result = execute(qc, backend_sim, shots=4096).result()\n", "\n", "#結果を出力する。\n", "print(result.get_counts(qc))\n", "\n", "#結果のヒストグラムを描画する。\n", "plot_histogram(result.get_counts(qc))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "実機による結果を見てみると、理論上は得られない$|01\\rangle$と$|10\\rangle$が得られていることが分かる。これは演算過程で生じたエラーによるものである。この結果は、今の量子コンピュータがNISQデバイス(中規模でノイズの発生を許す量子コンピュータ)と呼ばれることを分かりやすく示している。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 参考文献 \n", "\n", "[1] https://quantumexperience.ng.bluemix.net/qx/experience [online] (参照日時 2019-02-13)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.5" }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }