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

基礎から学ぶGPUとcuQuantum / cuStateVec講座

Yuichiro Minato

2023/09/13 04:33

3

こんにちは。今日はウェビナー向けの勉強会として、GPUの利用の仕方、そしてGPUを利用した量子コンピューティングの方法について学びたいと思います。最近非常に問い合わせが増えている内容ですので、質問があった内容を中心にまとめてみたいと思います。

まず、量子コンピューティングを行いたい際には、SDKと呼ばれるソフトウェア開発キットを手元のコンピューターにインストールする必要があります。そしてそれを使って外部の量子コンピューターに接続するか、コンピューター内部のシュミレーターと呼ばれる仕組みにアクセスするかを選ぶことができます。

基本的に、現在の量子コンピュータは、まだまだ性能が低いということがわかってきていますので、CPU GPUと呼ばれる既存のコンピューターをシミュレーションで使う方が高速かつ正確になっています。そしてそうしたシュミレーターも非常に高度化していますので、今回はその中でもGPUと呼ばれるプロセッサを使った量子コンピューティングシミュレーションの方法を学びたいと思います。

GPUとは?

「GPUは、Graphics Processing Unitの略で、画像処理装置を意味します。その名の通り、画像を描写するために必要な計算を処理するものです。近年では、画像や映像を利用する機会も増えており、より速く、よりきれいに画像・映像を映すには、GPUが欠かせません。また画像を処理するということは膨大なデータを瞬時に計算する必要があるため、ビッグデータを処理するのにも適しています。」

https://www.ntt.com/business/sdpf/knowledge/archive_05.html

もともとはゲーム向けなどのグラフィックスプロセッシングユニットを使った科学計算というのが近年非常に高まっています。GPUはもともとグラフィックを処理するためのものですが、最近ではAI向けに活用することが増えています。そうしたAI向けのGPUの性能が非常に高まっているがため、こうした量子コンピュータの処理もGPUに任せることにより高速化できるのではないかという機運が高まり、2021年にGPUを代表する米国企業であるNVIDIAから量子コンピュータ向けの高速GPUシミュレーションの正式な製品が公開されました。 NVIDIAに採用されているシミュレーションは2種類あり、今回はその中でも一般的なcuStateVec(クーステイトベック)と呼ばれるものをご紹介します。

GPUの使い方?

SDKを見る前にGPUの利用方法を確認します。こちらも大変問い合わせが多いものです。GPUは既存のCPUが搭載されたコンピューターに付属して搭載をします。そのため一般的な処理はCPUで処理しながら、GPUはその必要になったときに使うと言う風な使い方をします。

店舗で売られているPCにはPCIスロットと呼ばれる拡張用のスロットがあり、そこにGPUを指すようにして使います。ゲーミングPCなど大きめの筐体には大きい性能のGPUが刺さるようになっており、近年GPUは非常に巨大化しており、お弁当箱位のサイズがあります。そのため一般的なノートPCに搭載されているようなものは小型化されたものがもともと搭載されている形が多いです。ご自身が利用しているPCにGPUが搭載されているかそれともどのようなGPUかを確認するというのが最初のステップになります。GPUが利用できないPCも多々あり、 問えばMacには、エヌビディアのGPUは一切搭載されていないため、直接利用することはできません。その場合にはクラウドシステムなどを利用してGPUを利用するというのが一般的となっています。

プロ向けGPU

また、プロフェッショナル向けでは、GPUは数百万円から数千万円の単位で売られており、こうした巨大なシステムの中には4GPU、8GPUと呼ばれるGPUをたくさん搭載し、高速なネットワークで接続した科学計算用のセットアップのものも多々あります。一般的にはエヌビディアのGPUを利用した量子コンピューティングは、こうしたプロフェッショナル向けを想定して作られていますが、一般に私たちが持っているゲーミング用のGPUでも動作することができます。

プロフェッショナル向けのGPUの販売については弊社の販売パートナーをご利用ください。

https://www.kingtech.co.jp/

https://www.v-t.co.jp/

さて、こうしたGPUが搭載されたマシンであったり、クラウド上でGPUを利用する場合、量子コンピューターのシミュレーションをすることができます。現在量子コンピューティングのシミュレーションはGPUは非常に高速となっており、実際の量子コンピューターを利用するよりもはるかに高度な計算をすることができるようになってしまいました。 そのため、最近の生成AIのブームとの相性もよく gPUを利用した量子コンピューティングの計算や教育、そして研究と言うのは非常に多くの採用が進んでおり、国の研究所や大学海外からも多くの問い合わせいただき、全世界でGPUを利用した量子コンピューティングが利用されています。大手ではGoogle社、IBM社、Amazon社、Microsoft社など全てがこのNVIDIA GPUを利用した量子コンピューティングシミュレーションcuQuantumを採用しています。

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

スパコン向けGPU

経産省が運用するスパコンであるABCIに関しては、一般企業も利用することができ、その中に公式にcuQuantumの利用が盛り込まれました。ABCIを利用する際には、非常に簡単にcuQuantumを高性能に利用することができます。

https://docs.abci.ai/en/apps/cuquantum/

インストール

実際のインストールに関しては、少しコツがあります。利用するマシンの種類や使いたいソフトウェアとの組み合わせによって少しインストールが変わります。分類してみたいと思います。 今回はcuStateVecの説明ですので。cuTensorNetと呼ばれるcuQuantumに搭載される。別の方式のものに関しては少し事情が異なることがあります。

1、複数GPUで利用したい。主にHPCやスパコン向け

2、手元のGPUでQiskitと一緒に利用したい人向け

まず複数のGPUを接続して使いたい場合に関しては、特定のソフトウェアをインストールする必要があります。これは通常版のcuQuantumとはちょっと異なるものになっており、多くのスパコンや大学研究室で複数GPUを利用して大規模科学計算を行いたい場合には、実はこちらの特殊なソフトやをインストールする必要があります。

cuQuantum Appliance

https://catalog.ngc.nvidia.com/orgs/nvidia/containers/cuquantum-appliance

複数GPU、複数ノードと呼ばれるGPUやコンピュータ本体がたくさんある場合、それらをつなげて使うことにより大きな計算をすることができます。このような大規模計算を実行したい場合には、cuQuantum Applianceと呼ばれる、NVIDIA社が提供する複数ノード、複数GPU向けのアプリケーションを利用する必要があります。こちらは通常版のcuQuantumとは異なり、こうしたスパコンやhigh-performanceコンピューティング専用の実装となっていて、金額は無料ですが、こちらを必ず使う必要があります。 こちらのインストールに関しては、ドキュメントを確認いただくか、業者さんに依頼するのが無難かと思います。

複数GPU複数ノードと呼ばれる複数のマシンを接続して実行する場合、ソフトウェアのパフォーマンスはGPUの接続方法やノードの接続方法に大きく依存します。例えば1台のコンピューターの中にGPUが4枚搭載されているのか8枚搭載されているかによって、GPUの間の通信速度によって大きくシミュレーションの速度が変わります。また複数マシンを接続する場合には、例えばインフィニバンドなどの高速の通信を利用したとしても、1台のマシン内で利用されるNVLinkと呼ばれる通信規格よりは速度が遅くなりますので、こうした接続のGPUの枚数や接続方法によるベンチマークを注意深く取る必要があります。

現在多くのベンチマークは産総研ABCIによって公開されている高速処理において非常に有用な結果が出ています。実際今この後説明しますが、手元のPCやこうした大規模PCによってどれくらいのサイズのシミュレーションがステートベックシュミレーターによってできるかと言うのを説明します。

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

手元GPUへのインストール

単体のGPUを利用する際に関してのcuStateVecでこの実装方法を説明します。この場合少しコツが必要です。実際にcuQuantumをインストールする場合には非常に簡単で単体でのインストールは特に問題がありません。ただ実際にはこのSDKを単体で使うと言うのは稀です。実際にはこのNVIDIA社の提供しているSDKは、IBM社やGoogle社が提供しているSDKと組み合わせて使います。

NVIDIAの提供しているSDKは、あくまでシミュレーション分野が中心となっていて、量子回路と呼ばれるアプリケーションを含むところはあまり充実していません。そのため、よほどの超上級者でなければcuQuantumを直接使うのは難しいでしょう。そのため一般的にはよりアプリケーションよりのIBM社のQiskit(キスキット)やGoogle社のCirq(サーク)と一緒にインストールする必要があります。上記スパコン向けのcuQuantum ApplianceであればQiskitやCirqが連動してインストールがされますが、cuQuantum単体でのインストールには、これらのツールは含まれていません。

一台のGPUにインストールする際、これらのSDKを連動させてインストールする場合、単体のインストールよりも少し面倒臭いことが起きます。 これはcuQuantum / cuStateVecの利用は、こうしたQiskitやCirqの中から呼び出す必要があり、その際に2つのツール(QiskitとcuStateVecなど)が連動する必要があります。単体それぞれインストールするのであればこの問題は起きないのですが、この場合には相互依存しているため、バージョンなどを細かく設定し、トラブルがないようにインストールするのが結構難しいです。しかもこうしたバージョンはそれぞれ開発が別個で進んでいるため、常に更新が行われため、最新の情報に注意する必要があります。これについては多くの記事が巷に出回り始めていますため、詳しい人に聞いてみるのが良いでしょう。特に最近は日本量子コンピューティング協会主催のコミュニティにおいて、cuQuantum関連の技術者に関して、多くのこうしたNVIDIA cuQuantumのツールに詳しい人が増えています。ぜひコミュニティーに参加して直接聞いてみて下さい。

https://www.jqca.org/

記述方法

さて、インストール が完了したとして利用の仕方は簡単です。通常に利用するIBMのSDKからcuQuantumを呼び出すだけで利用することができます。これは一般的な量子回路と呼ばれるプログラミング方法を行った際に、最後にcuQuantumを利用して計算をすると言うことを選べば大丈夫なので、利用は非常に簡単です。かつ今まで作ったソフトウェアがあまり無駄にならないと言う利点があります。

experiment(device='GPU', cuStateVec_enable=True)

上の例では、デバイスにGPUを指定した上、通常のIBMが開発したGPUのシミュレーションの外、cuStateVecを利用すると言うことを明示することによって簡単に計算をすることができます。これだけです。

GPUを利用する利点

さて、こちらも非常に問い合わせが多いのですが、GPUを利用する利点について考えたいと思います。通常CPUは一つ一つの処理を順番に行います。そのため、非常に高性能なCPUを利用しても、大規模な計算を高速に行う事は非常に難しいと考えられます。GPUでは同じ計算を並列でたくさんすることができ、これにより量子コンピューティングを簡単に高速化することが可能になっています。

CPUやGPUを利用する際には、cuStateVecでは特に量子ビットと呼ばれる量子コンピュータに搭載される素子の数がどれくらいまで計算できるかというのが課題になります。一般的に量子コンピュータの計算は、量子ビット数の対して2のN乗で計算量が増えていきます。そのため、 量子ビットを1 増やすと計算量が倍になります。簡単に言うとマシンが性能が倍必要です。 この際、GPUでネックになるのは、速度以外にVRAMと呼ばれるGPUに搭載されている一時的な記憶容量が問題になります。 最大の量子ビットの計算はこのVRAMの容量によって決まります。一般的にはVRAMが多いほど大きな量子ビットの計算ができます。そのため、high-performanceコンピューティングではたくさんのGPUを利用して、この量子ビットの計算を行います。ただ一般的には30量子ビット以上には極めて高価で高性能なGPUマシンが必要となるため、15量子ビットから30量子ビット程度までのサイズに関してGPUを利用するのが良いと思います。

コンシューマ向けのGPUのVRAMは、一般的には高性能なものでも2023年段階で最大で24GB(RTX4090)となっています。これはゲーミング用のGPUの最高性能となっていて、業務用の場合には単体でのGPUに搭載されるVRAMは80GB(A100-80GやH100)が最大となっています。 ですので、大体VRAMが4倍でも2量子ビット程度の差となります。原理的には現在非常に大きなスパコンであっても、50量子ビットには届かない範囲のサイズの計算が限界となっていると思います。

私たちが手元のGPUを利用して計算をする場合、一般的には15量子ビットから30量子ビットまでの範囲内に関してGPUを利用することにより、非常に高速に量子コンピューターの計算や教育、そして研究をすることができると言う恩恵を受けることができます。実際に国内では名古屋大学や慶応大学などこうしたNVIDIAのGPUを利用した研究開発に関して論文等が発表されていて、非常に世界的に高度でかつ最先端研究においてもGPUを利用した量子コンピューティングの研究開発が非常に進んでいるということがわかります。

https://iopscience.iop.org/article/10.1088/2516-1075/acf909

CPUよりもGPUが速くなる範囲というのがあり、GPUにも計算の前処理があるため、何でもかんでも速くなるわけではありません。問題を並列に準備するために、多少の準備時間が必要になり、CPU15量子ビット前後がGPUが高速となることが多いようです。

これはCPUとGPUを特定の問題で計算した計算時間の比較です。縦軸は下の方が高速です。15量子ビットを超えるともはやCPUは指数で速度が遅くなります。

こちらはGPU単体での速度の比較です。こちらは25量子ビット前後から速度が指数で大きく上昇しているのが確認できます。ベンチマークはVRAM16GBのマシンで取りました。こちらのGPUでも十分に30量子ビット前後が計算できているため、多くのGPUで28-29量子ビットくらいまでは比較的高速に計算ができるでしょう。

こちらの記事も参考にしてください。

https://blueqat.com/yuichiro_minato2/6a94c837-4c66-49dd-90ca-8f5b0847d625

いかがでしたでしょうかGPUを利用することにより、最近では量子コンピューターの教育や研究開発を非常に高速かつ効率的に進めることができます。科学計算用の高性能なGPUは非常に高価なものとなっているため、簡単に使うことができませんが、私たちの身の回りにあるGPUを利用しても、そこそこのサイズのものを実装することができることがわかっています。そのため、多くの量子コンピューティングの教育はこのGPU1枚あれば完結すると思います。また15量子ビット未満の問題サイズであれば、CPUで充分実装ができますので、GPUを整える環境がない場合には15量子ビット未満での実装をお勧めいたします。 Google Colab等のGPUを利用することができるクラウドサービスを利用することもお勧めします。ただクラウドで利用するGPUは非常に高価なものとなっていますので、安価にGPUで高速化をして実装したい場合には販売されているGPUを利用することをお勧めします。一般的にはエヌビディアはこうした販売されているGPUをクラウド経由で提供することを規約で許していないため、クラウド経由でこうした安価なGPUを獲得することは難しいと考えています。

現在、このGPUを利用した量子コンピューティングは、NISQと呼ばれるエラーありやFTQCと呼ばれるエラーなしなど広範囲の量子コンピューティングのアルゴリズムに利用することができます。そのため、GPUを利用すれば、機械学習としてのAIの学習もできますし、量子コンピューティングの学習ができますし、非常にコストパフォーマンス良く、高度な教育を行うことができるためお勧めしています。以上です。

© 2025, blueqat Inc. All rights reserved