common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


Desktop RAG

Overview
Terms of service

Privacy policy

Contact
Research

Sign in
Sign up
common.title

量子コンピュータシミュレータ導入ガイド(基本編)

Yuichiro Minato

2023/08/31 15:29

お世話になります。最近ではNVIDIAのGPUを利用して量子コンピューティングを行いたいと言う方が非常に増えています。NVIDIA社では量子コンピューティング業界に参入しており、最近では超高性能なGPU量子コンピューターシュミレーターを提供しています。 ここでは、どのようにGPUを利用したり、CPUとGPUのパフォーマンスの違いなど基礎的なところを確認したいと思います。私たちは普段クラウドサービスを提供しており、こうした量子コンピューティングに関しては、本物の量子コンピューターをクラウド経由で利用したり、GPUを標準搭載してシミュレーションをしたり、その両方をハイブリットで利用したりと様々な利用方法を模索しております。

最近ではNVIDIA社公式のツールが非常に充実していまして、弊社でも非常にパフォーマンスとコストパフォーマンスを重視し、開発環境がプリインストールされたクラウド環境を提供しています。量子コンピューティングを学び、そして企業として活用したいと言う方はこの量子コンピューティングの導入ガイドを確認していただければ、充分満足できる開発環境が手に入ると思います。そして一旦ここで基礎的な教育が出来ましたらより大きなシステムへ変更したい拡張したいと言うときには、そうした要望が出た際には応用編としてより高性能なGPUの活用方法を提供したいと思います。

量子コンピュータのシミュレータとSDK

量子コンピューターのアプリケーションの開発や研究開発をしたい場合、いきなり量子コンピューターを利用すると言うのは稀です。現在の量子コンピューターは非常にエラーが多いため、自分の行った計算が合っているかどうかを確認するのは非常に困難です。そのため、通常は量子コンピューターのシュミレーターとSDKと呼ばれるものを利用します。ここでは状態ベクトルシュミレーターと呼ばれる伝統的な量子コンピューターのシュミレーターについてお話をしたいと思います。 現在のコンピューターであっても、量子ビットのサイズが50量子ビット程度までであれば模擬的に計算をすることができます。50量子ビットはスパコン程度の性能が必要ですが、現在の私たちの手元のコンピューターでは20量子ビット程度、業務用で利用するような性能の高いコンピューターで30量子ビット程度までの計算が可能です。 まず、量子コンピューターのシュミレーターを手元のコンピューターやクラウドのコンピューターで利用するのが一般的です。そうしたシュミレーターを操作するためには、SDKと呼ばれるソフトウェア開発キットを利用します。こうしたものは全て無料で手に入ります。私たちが考えなくてはいけないのは、どのハードウェアを使うかと言うことになります。

私たちが現在お勧めしているのはNVIDIA社のcuQuantum(クークオンタム)と呼ばれる量子コンピューターシュミレーターとなります。こちらはNVDIA社のGPUを利用して、高速に量子コンピュータのシミュレーションを計算できると言う無料のソフトウェア開発キット、兼シミュレータとなっています。NVIDIA社のGPUを保有していればこのcuQuantumを入れることにより、無料で量子コンピューターのシュミレーターとして利用することができます。また単体でこのNVIDIAのGPUシュミレーターを操作するのはなかなか大変ですので、それに加えてIBM社のQiskit(キスキット)やGoogle社のCirq(サーク)と呼ばれるようなさらに、ユーザよりのソフトウェア開発キットを組み合わせて利用することが一般的です。 有名なのは、IBM社のツールですので、これを利用しておけば問題はないでしょう。ウェブ上にもたくさんのチュートリアルが掲載されており、NVIDIA社のcuQuantumはこうしたIBM社のツールと非常に親和性が高いように作られています。

https://developer.nvidia.com/cuquantum-sdk

なぜNVIDIA社のツールを提供お勧めしているかというと、それは速度面でこうした量子ビット数が増えると、非常に計算が重たくなるところをGPUで効率的に高速化できると言う点にあります。 以前までは、量子コンピューターのシュミレーターはCPUを利用するのが一般的でした。しかし最近ではディープラーニングを中心にGPUの性能が非常に上がっています。こうしたことからGPUを利用することで、自分たちの利用したい計算リソースを柔軟に拡張することができるようになり、GPUを利用して量子コンピューティングを行うことが非常に効率的になりました。ここで1つベンチマークを見ていましょう。私たちのクラウドシステムで提供されているNVIDIA T4と呼ばれるGPUとインテルの高性能CPUでの量子コンピューターの回路のベンチマークです。これは全く同じ量子回路を計算していますが、速度面において15量子ビット以上になると、明確にCPUとGPUに速度差が出てきます。

ある量子回路におけるCPUとGPUの実行時間の比較。横軸は量子ビット数。縦軸は秒。

計算している内容は同じなのに、速度が速い方が効率的になります。その速度さは非常に大きくCPUを利用して、何分も待たなくてはいけないところGPUでは一瞬で終わります。こうしたことから量子コンピューターのシュミレータを選択する場合、15量子ビット以上ではGPUを利用して計算をしたほうがよろしいかと思います。ついでにGPUを利用して20量子ビットから30量子ビットまでの速度向上の推移をプロットしていました。こうしたものをCPUで行うと、何時間もかかってしまうでしょう。

雑に言ってしまうと、量子ビット数が1増えると計算に必要となるリソースは2倍になります。そのため量子ビットが少しずつ増えていってるように見えても計算に利用するリソース上は2倍ずつ増えていくため指数で増加します。計算時間を節約するのがいかに大事かが分かります。

こちらがGPUを利用する大きな理由となります。お手持ちのGPUがよほど古くない限りはcuQuantumが対応しています。単体のGPUのGPUメモリの容量によって計算できる量子ビット数の最大が決まります。このベンチマークでは16GBの容量を持つGPUで30量子ビットまでのベンチマークをとっています。大きなスパコンなどを利用する場合には、40量子ビット越えの計算をすることもできますが、一般的には30量子ビット前後までの量子ビット数で計算することが多いでしょう。

選択するGPUの種類ですが、最近では非常に性能が高くなっているため、ゲーミングPCのようなものやワークステーションのようなものでも充分量子ビットの多い計算をすることができると思います。今回は16GBと言う容量を持ってこの速度で計算できていますが、30量子ビットまでであれば比較的GPUの選択肢も広がると思います。金額的には十万円前後から数十万円程度のものを選べば良いでしょう。

私たちはより高性能なクラウドサービスを提供していますので、こうしたビデオメモリの大きな計算と言うのも提供しています。こうなると使う計算機能マシンの値段は数十万円では収まらず数百万円から、数千万円単位となってきますので、クラウドで時間を限って利用したり、経産省の提供しているABCIと呼ばれるクラウドサービスを使うことがリーズナブルであると考えられます。

https://abci.ai/ja/

SDKのインストールも1つの山です。通常、こうした単体のGPUとCPUを備えたシステムは、cuQuantum単体のインストールするのは非常に簡単です。ただ重要なのは、IBM社のQiskitと連携してQiskitからcuQuantumを呼び出して利用する場合には、少しインストールにコツが必要となります。GPUを動かすためのCUDAと呼ばれるライブラリやIBM Qiskitのバージョンなど、そしてcuQuantumのバージョンなど、様々なソフトウェアのバージョンを揃えてインストールする必要があるため、少しそういうこともあるかもしれません。 そうしたソフトウェアのインストール方法は、持っているGPUや利用しているクラウドサービスの環境に依存しますので、様々な資料をウェブ上でチェックし、わからないところは、専門家やサポートに相談するのが良いかと思います。

Qiskitを利用したcuQuantumのプログラミング例

基本的には計算をする際には、IBM社のSDK経由で実行時にCPUかcuQuantumを指定するだけで簡単に計算をすることができます。そのため、これまでIBM社のツールを使ってアプリケーションを開発してきた企業様や個人様は簡単にNVIDIA社のGPUを利用して高速化することができます。

from qiskit import QuantumCircuit, transpile
from qiskit import Aer
import random
import time

def create_ghz_circuit(n_qubits):
 circuit = QuantumCircuit(n_qubits)
 loop = 10
 for _ in range(loop):
  for qubit in range(n_qubits):
   circuit.rx(random.random(),qubit)
  for qubit in range(n_qubits - 1):
   circuit.cx(qubit, qubit + 1)
 return circuit

arr_gpu = []
arr_cpu = []
for n_qubits in range(0,24):
  backend = Aer.get_backend('aer_simulator_statevector')
  circuit = create_ghz_circuit(n_qubits=n_qubits)
  circuit.measure_all()
  circuit = transpile(circuit, backend)
  backend = Aer.get_backend('aer_simulator')
  backend.set_options(device='GPU', cuStateVec_enable=True)
  start = time.time()
  result = backend.run(circuit).result()
  arr_gpu.append(time.time()-start)
   
  backend = Aer.get_backend('aer_simulator_statevector')
  start = time.time()
  result = backend.run(circuit).result()
  arr_cpu.append(time.time()-start)e45FGH

下記のような指定が基本となります。とても簡単です。

backend.set_options(device='GPU', cuStateVec_enable=True)

IBM社のQiskitを使っていない場合には、世の中の量子コンピューターソフトウェア開発キットの多くはQiskitへの変換ツールがついています。そのため一度使っているツールをQiskitに変換し、それをcuQuantumで実行することにより簡単に利用することができます。

まとめ

量子コンピューターのシュミレーターを利用したい場合には、SDKとしては一番のオススメはIBM社のSDKを利用することです。それは現在世界のスタンダードとなっているため、非常に多くの例題やチュートリアルが乗っかっているからです。またNVIDIA社のcuQuantumを利用する場合、こちらもQiskitとの連携が非常にしやすくなっています。現在、NVIDIAのcuQuantumはシュミレーターとしてデファクトスタンダードとなっています。そのため多くのサービスで利用されています。現在私たちは多くの仕事でcuQuantumの利用を指定されることが増えてきました。プロフェッショナル向けのhigh-performanceコンピューティングから、街中で売っているようなコンシューマGPUまで多くのマシンに対応しているため、非常に使いやすいかつ無料でインストールできるというのが特徴です。

ソフトウェアを使って、こちらのNVIDIAのGPU量子コンピューティングシュミレーターを活用したい場合、最初は20量子ビットから30量子ビット程度までの計算を行うことをお勧めしております。そしてそれ以上のサイズの計算がしたくなりましたら、GPUを増やしていくと言うようなことができます。実はNVIDIA社のcuQuantumは、マルチGPUマルチノードと呼ばれるGPUを増やしたり、GPUの搭載しているコンピューターそのものをたくさん増やすことにより非常に大きな計算を実行することができます。 こうしたマルチGPUマルチノードに対応するためには特殊なセットアップが必要となるため、cuQuantum Applianceと呼ばれる別の名前のライブラリを専用で搭載する必要があります。

現在、経産省の一般利用できるスパコンであるABCIにはこのcuQuantum Applianceを簡単に導入できるようなツールも提供されているため、ABCIを利用してらっしゃるお客様はVノードを利用してこのインストールと性能評価を簡単にすることができます。またABCIグランドチャレンジにおいては、こうした非常に大規模な量子コンピューターのシミュレーションの計算結果が既に公表されているため、自分たちが行いたい計算の種類に合わせてベンチマークを参考にしてマシンの選択や規模の選択をすることができますので、ぜひ参考にしてみてください。

https://developer.nvidia.com/ja-jp/blog/best-in-class-quantum-circuit-simulation-at-scale-with-nvidia-cuquantum-appliance/

© 2025, blueqat Inc. All rights reserved