pythonの仮想環境により任意のqiskitのバージョンを実行する。
qiskitについての資格試験をIBMが提供しています。
この資格を取得することでqiskitや量子プログラミングに関する知識を証明することが可能です。 こちらの資格取得を目指される方のため、Udemyというサイト上にて日本語版、英語版で問題集を作りました!解説もなるべくわかりやすく作成いたしましたので、是非是非ご活用ください。
英語版問題集
日本語版問題集
Amazon Braket学習コース
AWSでの量子コンピューティングサービスであるAmazon braketについての学習コースを作成しました。
量子コンピュータやAWSの知識が無い方でも学び始められ、最終的には量子機械学習についても学べます。 こちらも利用し、量子技術のスキルを身につけましょう!
任意のqiskitのバージョンの実行
IBMが提供している量子コンピュータに関する資格「IBM Certified Associate Developer - Quantum Computation using Qiskit v0.2X」についてサンプル問題が公開されています。このサンプル問題集には以下のコードが記載されています。
from qiskit import QuantumCircuit, execute, BasicAer
backend = BasicAer.get_backend('qasm_simulator')
qc = QuantumCircuit(3)
execute(qc, backend, shots=1024, coupling_map=[[0,1], [1,2]])
これを実行すると次のようなエラーが出ます。
ImportError: cannot import name 'execute' from 'qiskit'
もしくは
ImportError: cannot import name 'BasicAer' from 'qiskit'
他のサンプルコードを実行した際も以下のようなエラーが出ます。
from qiskit import QuantumCircuit, Aer, execute
from math import sqrt
qc = QuantumCircuit(2)
v = [1/sqrt(2), 0, 0, 1/sqrt(2)]
qc.initialize(v,[0,1])
simulator = Aer.get_backend('statevector_simulator')
result = execute(qc, simulator).result()
statevector = result.get_statevector()
print(statevector)
ImportError: cannot import name 'Aer' from 'qiskit'
このエラーは、qiskitのバージョン1.xや、2.xでは対象のモジュールがimportできないため生じています。
ではサンプルコードを実際に試すには、どうしたら良いでしょうか?
qiskitはバージョン依存のエラーが生じることが良くあるため、venvで仮想環境を作るのがオススメです。 古すぎるとインストールできないので、aerが存在する0.46をインストールして実行する例を紹介します。
この例ではWindows 10のコマンドプロンプト上からの実行を試みます。pythonは3.9.9がインストールされています。
>python --version
Python 3.9.9
まずは仮想環境を作ります。今回はqis046という名前で環境を作成しています。
>python -m venv qis046
>
これにより、qis046\Scripts\activate.bat
が作成されます。続いてこの環境をアクティベートします
>qis046\Scripts\activate.bat
(qis046) >
この環境でpip listを実行すると必要最低限なパッケージしかインストールされていないことがわかります。
(qis046) >pip list
Package Version
---------- -------
pip 21.2.4
setuptools 58.1.0
では以下のコマンドでqiskit 0.46.2や、その他必要なパッケージをインストールしましょう。これらは仮想環境上にのみインストールされます。
(qis046) >pip install qiskit==0.46.2 matplotlib notebook qiskit-aer pylatexenc
インストールが完了したら、jupyter notebookを起動し、同様のコードを実行してゆきましょう。 警告が表示されるものの、エラー無しで実行できています。
(qis046) >jupyter notebook
from qiskit import QuantumCircuit, execute, BasicAer
backend = BasicAer.get_backend('qasm_simulator')
qc = QuantumCircuit(3)
qc.measure_all()
r = execute(qc, backend, shots=1024, coupling_map=[[0,1], [1,2]])
print(r.result().get_counts())
# Output
{'000': 1024}
C:\Users\AppData\Local\Temp\ipykernel_15000\3520102656.py:1: DeprecationWarning: BasicAer is deprecated since Qiskit 0.46 and will be removed in Qiskit 1.0. The BasicAer (qiskit.providers.basicaer) module has been superseded by qiskit.providers.basic_provider, and all its classes have been renamed to follow a new naming convention. More information and migration guidelines can be found in the 0.46 API docs for BasicAer.
from qiskit import QuantumCircuit, execute, BasicAer
C:\Users\AppData\Local\Temp\ipykernel_15000\3520102656.py:5: DeprecationWarning: The function ``qiskit.execute_function.execute()`` is deprecated as of qiskit 0.46.0. It will be removed in the Qiskit 1.0 release. This function combines ``transpile`` and ``backend.run``, which is covered by ``Sampler`` :mod:`~qiskit.primitives`. Alternatively, you can also run :func:`.transpile` followed by ``backend.run()``.
r = execute(qc, backend, shots=1024, coupling_map=[[0,1], [1,2]])
別のコード実行例は以下です。
from qiskit import QuantumCircuit, Aer, execute
from math import sqrt
qc = QuantumCircuit(2)
v = [1/sqrt(2), 0, 0, 1/sqrt(2)]
qc.initialize(v,[0,1])
simulator = Aer.get_backend('statevector_simulator')
result = execute(qc, simulator).result()
statevector = result.get_statevector()
print(statevector)
# Output
Statevector([0.70710678+0.j, 0. +0.j, 0. +0.j,
0.70710678+0.j],
dims=(2, 2))
C:\Users\AppData\Local\Temp\ipykernel_10980\1691041731.py:6: DeprecationWarning: The 'qiskit.Aer' entry point is deprecated and will be removed in Qiskit 1.0. You should use 'qiskit_aer.Aer' directly instead.
simulator = Aer.get_backend('statevector_simulator')
C:\Users\AppData\Local\Temp\ipykernel_10980\1691041731.py:7: DeprecationWarning: The function ``qiskit.execute_function.execute()`` is deprecated as of qiskit 0.46.0. It will be removed in the Qiskit 1.0 release. This function combines ``transpile`` and ``backend.run``, which is covered by ``Sampler`` :mod:`~qiskit.primitives`. Alternatively, you can also run :func:`.transpile` followed by ``backend.run()``.
result = execute(qc, simulator).result()
以上の通り、試験に出題されているプログラムを実行できました! この例の通り、Qiskitでバージョンに関する問題が生じた場合は、pythonの仮想環境をうまく活用しましょう。
仮想環境から離れる場合はdeactivateを実行します。
(qis046) >deactivate
>
qiskitについての資格試験取得を目指される方のため、Udemyというサイト上にて日本語版、英語版で問題集を作りました!解説もなるべくわかりやすく作成いたしましたので、是非是非ご活用ください。
英語版問題集
日本語版問題集
Amazon Braket学習コース
AWSでの量子コンピューティングサービスであるAmazon braketについての学習コースを作成しました。
量子コンピュータやAWSの知識が無い方でも学び始められ、最終的には量子機械学習についても学べます。 こちらも利用し、量子技術のスキルを身につけましょう!