paint-brush
量子コンピューティングにはより多くのソフトウェアエンジニアが必要@ddri
453 測定値
453 測定値

量子コンピューティングにはより多くのソフトウェアエンジニアが必要

David Ryan11m2024/05/26
Read on Terminal Reader

長すぎる; 読むには

高水準プログラミング言語からハードウェア システムに至るまで、量子コンピューティングのソフトウェア スタックを探索します (そして...量子のキャリアをスタートします)。
featured image - 量子コンピューティングにはより多くのソフトウェアエンジニアが必要
David Ryan HackerNoon profile picture
0-item

この記事は、量子コンピューティングにおけるソフトウェア エンジニアの必要性に触発されて書かれたものです。他の開発者、UX デザイナー、QA テスター、製品マネージャー、そして実際の製品を実際の顧客に出荷することを可能にするその他のすべての才能についても言うまでもありません。特に量子コンピューティングのようなディープ テックやフロンティア テックの製品です。


これらの製品と、それを作成しようとしているチームは、「科学から技術、エンジニアリング、そして製品へ」という長く困難な道のりを歩むことになります。これは、技術の準備による単なる直線的な進歩ではなく、組織 (およびコミュニティ) の進化に関する一連のフェーズ シフトです。


この進化は、ただ起こるものではありません。これらのチームで働く私たちは、学術的なものから技術的なもの、そしてより広く市場に関わるものへと組織を変革するという課題に直面しています。つまり、成長する才能ある人材のコミュニティを発掘し、協力するとともに、私たち自身のスキルを継続的に進化させ、成長させる必要があるのです。



これは、2022年にLinux Foundationのオープンソースサミットで行った講演「オープンソースで量子コンピューティングのキャリアを築く」で触れたことだった。そして、それから1年ほどでさらに成長し、業界では「量子ユーティリティ」( 理論上の優位性ではなく現実世界の有用性に焦点を当てるために使用する用語)への顕著なシフトが見られ、いくつかの大規模なプロジェクトが開始された。たとえば、オーストラリア政府はPsiQuantumに10億ドル近くを投資し、私の故郷であるブリスベンに商用量子コンピューターを設置した(シアトルに住んでいて少しホームシックになりながら言った)。


そうです、多くのことが起こっています。そのため、これらの量子システムが実際に何で構成されているか、そしてあなたの才能と好奇心がどこに当てはまるかを理解するのに最適な時期です。参加方法については、最後にいくつかの推奨事項を記載しました。また、実際には「量子コンピューター」パラダイムは 1 つではないという免責事項を簡単に付け加えておきます。教育的価値のために、私たちが取り組んでいるさまざまなシステムの最も一般的な要素を抽象化しましたが、このモデルが時間の経過とともに進化するにつれて、どのような異議や反論も歓迎します。

量子スタックの概要

多くの点で、量子コンピューティング スタックは、現代のハイパフォーマンス コンピューティング (HPC) スタックのパターンと一致します。また、クラウド コンピューティング分野で働く人にとっては、ある程度は馴染みのあるものです。私たちは、高レベルのユーザー エクスペリエンスから、ワークロードを取得してハードウェア上で実行できるものに変換する何らかの形式のプラットフォームへと進んでいきます。理解できるほど単純です。


ニュアンスはもっと複雑です。たとえば、量子コンピュータの性能は、使用されている量子アルゴリズムの性能に左右されることを理解する必要があります。 重ね合わせエンタングルメントについて聞いたことのあるすべての高度なことは、ハードウェア レベルで位相と干渉を使用して「計算」を実行し、正しい答えの確率を吐き出す、いくつかの有用なアルゴリズムを確実に実行する方法に帰着します。これを頻繁に行うことで、正しい答えの可能性が高まります。これを実行するには、有用なアルゴリズムと信頼性の高いシステム実装が必要です。


シミュレーションも重要な役割を果たします。これは「高価なハードウェアの購入を節約する」ことに関係していると話題になっているかもしれませんが、実際にはそうではありません (そして、多くの場合、誰かが AI を使って量子クリックベイトを書いているという手がかりになります)。シミュレーションは、新しい興味深いアルゴリズムの開発に役立つだけでなく、ワークロードを設定するさまざまな方法を探るためにも役立ちます。シミュレーションは、私たちの多くが構築しようとしているワークフローの中核部分でもあります。真のハイブリッド システムでは、従来のコンピューティング リソースを使用してワークロードとスケジュールを処理し、GPU (またはTPULPUなどの新しいチップ) による加速とともに、特定のワークロードを量子処理ユニット (QPU) に効果的にプッシュします。量子アルゴリズムは、手元のタスクに役立つ可能性があります。私のように、量子コンピューティングを既存のインフラストラクチャに統合することに焦点を当てている人もいますが、最も強力なスタンドアロンの量子システムの構築に専念している人もいます。そのため、業界では幅広い調査が行われています。


このことから、量子コンピュータは、既存のコンピューティング スタックに加えて QPU を含み、特殊な量子アルゴリズムを実行する特殊なシステムであるということが理解できれば、それは勝利です。猫やスリット、不気味な手振りは必要ありません。



量子スタックの詳細

次のセクションでは、最上位のユーザー レイヤーからプラットフォームを経て、最終的にハードウェア レイヤーへと進みます。これらのレイヤー間の境界は実際には曖昧になることがあります。ここでは、わかりやすくするために (そして健全にするために)、一般的なワークロードまたはワークフローに基づくモデルに従います。

1. 量子プログラミング言語と開発ツール

量子システムの最高レベルは、キーボードを叩く人間です。量子プログラミング言語は、量子アルゴリズムの調査と管理可能な形式でのプログラムの作成に必要な高度な抽象化を提供します。これらの言語での作業経験は、量子ソフトウェアの開発に必要なライブラリとツールを提供するソフトウェア開発キット (SDK) によって拡張されます。


SDK とフレームワーク、および統合開発環境 (IDE) の区別は、あいまいになっています。これは、量子ベンダーの多様なアプローチと、特定のエンドユーザーに合わせたプラットフォームと製品分野の統合によって形成されます。完全なローカル アクセスとパルス レベルの制御を求める研究者は、ハイブリッド ワークロードを開発するエンタープライズ チームとは異なり、クラウドベースの量子プラットフォーム上に構築するフィンテック スタートアップとは異なります。このパターンは、エンタープライズまたはクラウドベースのプロジェクトではよく知られていますが、量子システムの商業的価値がより明らかになり、製品設計に影響を与えるにつれて、微妙な違いを伴って進化します。一方、最も一般的な SDK とそれに関連するプログラミング言語は次のとおりです。


2. 量子アルゴリズムと応用

スタックを下っていくと、必要な量子ワークロードの中心となるアルゴリズムにたどり着きます。量子コンピューターを作成するためのさまざまな競合アプローチが向上するにつれて、現実世界のアプリケーションの機会も増えます。さまざまなソフトウェア ライブラリとパッケージが、特定の機能領域の使用に向けて構築されています (量子機械学習用のIBM の Qiskit Machine Learningや量子化学用のGoogle の OpenFermionなど)。また、既知の量子アルゴリズムの既存のライブラリは、研究者や商用ベンダーによって拡張および最適化されています ( Stephen Jordan の Quantum Algorithm ZooClassiq のライブラリなど)。


量子アルゴリズムの中には、有名人に近い地位を獲得しているものもあります。他のアルゴリズムは、古典的なアルゴリズムを量子的に適応させたものや、より大きなワークロードの構成要素として機能します。現実世界では機能的に役に立たない量子アルゴリズムもいくつかありますが (勇気があれば、ここで物理学者に関するジョークを挿入してください)、量子の優位性の重要な例です。さらに詳しく知りたい場合は、量子アルゴリズムに関する私の特集を参照してください。ここでは、注目すべき例をいくつか紹介します。


3. 量子シミュレータとエミュレータ

量子シミュレーターは、従来のコンピューター上で量子システムの動作を再現するために使用されるソフトウェア ツールです。これらは、アルゴリズムの開発と潜在的なワークロードの最適化 (特に、特定のハードウェアの同じゲート セットまたはその他の要素を備えたシミュレーターの場合) のワークフローの重要な部分を形成します。シミュレーターの役割は、業界自体が純粋な学術研究から潜在的な商業的実用性へと進化するにつれて進化してきました。特定の量子ハードウェアのシミュレーションの精度は、システム固有のノイズとエラーをモデル化できるレベルまで向上しています。次の例は、業界が成熟するにつれてベンダー ( Qiskit 1.0 を参照) が製品範囲を反復または合理化するにつれて、変更または廃止される可能性があることに注意してください。


4. 量子クラウドプラットフォーム

スタックのさらに下に進む前に、量子クラウド プラットフォームについて少し補足しておく必要があります。現在、少数の大手ベンダーが数台のハードウェア システムを運用しています。各ベンダーは、ハードウェア ユニットを直接販売するか、自社のキャンパスでホストするか、インターネット経由でアクセスを販売するか、またはこれらを組み合わせるかという同じ問題に直面しています。さらに、プライベート相互接続、パブリック クラウド ベンダー、独自の機能、研究ラボも加わります。クラウド プラットフォーム モデルが量子コンピューティングの決定的な経済モデルになることは確実ではありませんが、これまでのクラウド コンピューティングのパターンを考えると、この分野以外では最も注目を集めています。


そうは言っても、クラウド プラットフォーム アクセス用にシステムをプロビジョニングしないことを選択した企業にも注目してください。Quantum Brillianceでは、小型フォーム ファクターと室温 QPU を可能にするダイヤモンド NV センター アプローチを使用した、高度に並列化されたエッジ コンピューティング クラスターに注目しました (最初の行われました)。他の量子スタートアップ企業と話をしたところ、あらゆる形式の固定またはモバイル導入のユース ケースが当てはまるようで、Web 以外でも興味深い (多くの場合非公開の) 作業が数多く行われています。オンラインでアクセス可能なものの中で、注目すべきものをいくつか紹介します。


5. 量子コンパイラと回路最適化

量子コンパイラの役割は、高レベルの量子プログラムを量子ハードウェアで実行される低レベルの命令に変換することです。詳細はこの記事の範囲外ですが、このプロセスには、ゲート分解 (抽象ゲートを物理量子ビットに一致させる)、マッピングとスケジューリング (アルゴリズムの論理量子ビットを物理量子ビットに一致させる)、ベンダーとその特定のシステムに固有の詳細 (忠実度、エラー率、接続性など) が含まれます。


このサンプル スタックを簡素化するために、基礎となる関数を変更せずに量子ゲートの数、深さ、またはその他のリソース要素を最小限に抑える手法を適用するさまざまな形式の量子回路最適化をこのレベルに組み込みます。これは、コンパイル前、コンパイル プロセス中の一部として、または後でハードウェア プロセスの微調整の一部として実行できます。わかりやすくするために、ここではワークフロー内にグループ化しましょう。注意すべき例をいくつか示します。


6. 量子誤り訂正ソフトウェア

現在の「ノイズの多い」量子システムの時代において、量子エラー訂正の役割は特に重要です。このスタック層を専門とする企業があるほどです。これらの企業と広範なエラー訂正の取り組みが必要なのは、量子システムの脆弱な性質のためです。超伝導量子コンピュータが一般の人々の想像力を支配していますが、エラー訂正はすべての方法 (トラップイオン、フォトニック、NV センターなど) で不可欠です。


量子ビット生成方法に関係なく、準備、ワークロードの実行、および測定で課題が生じます。 デコヒーレンスは、ゲート エラー、測定エラー、および個々の量子ビットの品質とともに、すべての方法に影響します。量子エラー訂正は当然複雑ですが、システム冗長性 (量子情報を複数の量子ビットに分散する)、シンドローム管理 (補助量子ビットを使用して、エンコードされた情報を乱すことなくエラーを検出する)、および個々の量子ビットまたはクラスター化された量子ビットのパフォーマンスを経時的にプロファイリングするなどの手法を組み込むことができます。これらは、真にフォールト トレラントな量子コンピューティングの時代が実現可能であれば依然として重要ですが、私たちが現在直面しているノイズの多い中規模量子 (NISQ) の時代においては、刺激的な研究テーマです。主要なベンダーと例は次のとおりです。


7. 量子制御システム

量子制御システムは、量子ハードウェアの動作の管理と制御を担当します。キャリブレーション、パルス整形、量子ビット制御などのハードウェア レベルのタスクを処理します。開発中のさまざまな形式の量子コンピューティングと、モノリシックまたはネットワーク化された量子システムの実装範囲を考慮すると、「量子制御システム」という用語は特定のものではなく包括的なものと考えることができます。同様に、「量子オペレーティング システム」にも厳密な定義はありません。


これは、開発段階が「科学から技術へ」から「エンジニアリングから製品へ」へと移行するにつれて、時間の経過とともに変化する可能性があります。特に、既存の製品パターンやユーザーおよび/または市場の用語とのより緊密な整合が望ましい場合に当てはまります。ほとんどの場合、制御システムは内部リソース (OS とファームウェアの中間) になりますが、次のベンダーと製品が注目に値します。


8. 量子ハードウェア

スタックの最後のレイヤーは、量子ハードウェアそのものです。量子ビットを生成して操作する方法は 1 つだけではなく、正しい方法も存在しないことを覚えておくと役に立ちます。また、市場をリードする明確なアプローチもありません。それぞれの方法やアプローチには独自の課題があり、特定のシナリオにメリットをもたらす複数のアプローチが存在する可能性があります。


ハードウェア層は、多くの人が「量子コンピューティング」という言葉を聞いて思い浮かべるものであり、初期の真空管コンピューティング デバイスが機械的な相互作用の力だけで用語と言語を定義したのとよく似ています。スイッチとパンチ カードは時間の経過とともに命令とプログラムに取って代わられ、メモリとストレージによって拡張され、ネットワークとサーバーによって接続されました。


これらのパターンは量子デバイスの研究開発に存在し、上記からわかるように、量子スタックの例のレイヤーは、各レイヤーの既存の専門知識が新しい興味深いアイデアを提供する機会を提供します。スタック内の各基盤テクノロジーとレイヤーが提供するニュアンスを考えると、これまで考えもしなかった新しい方法で実現されることを期待します。

TL;DR?

量子物理学者、電気・電子工学者、製造業者、そしてあらゆる種類の原子操作者によって行われている作業は、ビットや(ゼタ)バイトを扱う我々によってサポートされているだけでなく、実現されています。参加するには絶好の機会です。


新規学習者にとって良いスタートは、 Q-CTRL の Black Opalデルフト大学の edX の高レベル MOOC 、そしてIBM の Qiskit への必然的な道です。C# 側から来た人のために、この Microsoft の紹介では、Q# でのアプローチとそれが Azure エコシステムにどのように組み込まれているかを簡単に見ることができます。また、 Classiq アルゴリズム ライブラリはブックマークする価値があります。


近々、ソフトウェア エンジニア向けの量子学習に関する特集記事を書く予定です。これは、私が Open Source Summit で講演して以来(そしてそれ以降に起こったエンジニアの人材の次々な解雇)、ほぼ毎週メールが届く話題だからです。業界の変化は、経済の冷え込みの影響を受ける人々や家族にとって厳しいものですが、逆に、そうでなければ閉じ込められていたであろう人材 (およびキャリア パス) を解き放つ機会にもなり得ます。ですから、さらなる探求を検討しているのであれば、ぜひそうしてください。また、私に何かお手伝いできることがあれば、私に連絡してください。そして、ディープ テックとフロンティア テクノロジの領域で実際の製品を出荷するための戦略と技術を掘り下げるProduct In Deepニュースレターに必ずサインアップしてください。