デバッグツール入門
量子プログラムは、シミュレートされたデバイス上で実行し、現実的なデバイスノイズモデルのもとでのパフォーマンスを検証することでテストできます。これにより、量子処理ユニット(QPU)に送信する前にデバッグが可能です。
量子シミュレーターは、プログラムを微調整して量子ハードウェアに送信する前の開発・テストに活用できます。ローカルシミュレーターは優れたパフォーマンスと効率でこれを実現します。
量子回路を古典的にシミュ レートするコストは量子ビット数に対して指数関数的に増加するため、一般的に50量子ビット程度を超える回路はシミュレーターで実行できません。そのような回路に対しては、以下の方法があります。
- 古典的にシミュレート可能な、より小規模なバージョンの回路でテストする。
- 精度は下がるものの、古典的にシミュレート可能になるよう回路を変更する。
スタビライザー回路(Clifford回路とも呼ばれます)は、後者の目標を達成するための有用なツールです。これらは古典的に効率よくシミュレートできる、制限されたクラスの量子回路です。専用シミュレーターは、数千量子ビットのスタビライザー回路を容易にシミュレートできます。詳細は Qiskit Aerプリミティブによるスタビライザー回路の効率的なシミュレーション を参照してください。
一般的な量子回路に対しては、量子プログラムのテストとデバッグに以下のツールが利用可能です。
- Qiskit Runtimeを使用した回路のシミュレーションには、ローカルテストモードを使用してください。
- 小規模な量子回路の厳密なシミュレーションには、Qiskitに含まれているリファレンスプリミティブが使用できます。詳細は Qiskitプリミティブによる厳密なシミュレーション を参照してください。
- より大規模な回路を扱える高性能なシミュレーションや、シミュレーションにノイズモデルを組み込む場合は、Qiskit Ecosystem の一部である Qiskit Aer を使用してください。詳細は Qiskit Aerプリミティブによる厳密およびノイズありシミュレーション を参照してください。
- カスタムノイズモデルを構築するには、Qiskit Aerの
noiseモジュールを使用してください。詳細は ノイズモデルの構築 を参照してください。 - Qiskit Runtime Estimatorジョブには、Qiskit Runtimeの
Neatクラスを使用してジョブのデバッグと分析を行えます。詳細は Qiskit Runtimeジョブのデバッグ を参照してください。
ハードウェアに関する考慮事項
量子シミュレーションに必要なメモリ量にはさまざまな要因が影響するため、シミュレーションに対する厳密なハードウェア要件はありませんが、参考となるガイドラインがあります。
- Qiskitを実行するための唯一の要件は、動作するPython環境です。詳細は オペレーティングシステムのサポート のセクションを参照してください。
- 量子回路のシミュレーションに必要なリソースは量子ビット数に対して指数関数的に増加するため、利用可能なハードウェアがシミュレート可能な量子ビット数を制限します。たとえば、4GB RAMのシステムでは約27量子ビットをシミュレートできます。
- 利用可能なメモリの多少は、結果の精度には影響しません(結果が返ってくる場合)が、メモリが多いほど結果が速く返ってくるか、より多くの量子ビットをシミュレートできる可能性があります。
- ハードウェアを最大限に活用するには、可能な限りローカルスタビライザー(Clifford)回路シミュレーションを使用してください。例については Qiskit Runtimeローカルテストモードでのクリフォードシミュレーション または Qiskit Aerプリミティブによるスタビライザー回路の効率的なシミュレーション を参照してください。
- 複数のGPU、ノード、またはその両方での実行 に関するこれらの手順に従うことで、コンピューティングパワーを増強できます。