演習 - Copilot を使用して量子プログラムを実行する
このユニットでは、Azure Quantum で Copilot を使用して、量子コンピューティングと量子プログラミングを調べる方法について説明します。 Copilot は AI を利用したツールで、プロンプトから Q# コードを生成し、量子コンピューティングに関して話し合うことができます。 また、コードを実行し、Copilot に量子コンピューティングの概念を説明するように依頼することもできます。
Azure Quantum 内での Copilot の確認やコーディングを開始するには、[Quantum サンプル] ドロップダウンのサンプルのいずれかを使用します。
量子プログラムを実行する
Azure Quantum でのコードに関するページに移動します。
[Quantum サンプル] を選択した後、[乱数ジェネレーター] を選択します。 次のコードがコード ウィンドウにコピーされます。
/// # Sample /// Quantum Random Number Generator /// /// # Description /// This program implements a quantum ranndom number generator by setting qubits /// in superposition and then using the measurement results as random bits. import Microsoft.Quantum.Measurement; import Microsoft.Quantum.Intrinsic; operation Main() : Result[] { // Generate 5-bit random number. let nBits = 5; return GenerateNRandomBits(nBits); } /// # Summary /// Generates N random bits. operation GenerateNRandomBits(nBits : Int) : Result[] { // Allocate N qubits. use register = Qubit[nBits]; // Set the qubits into superposition of 0 and 1 using the Hadamard // operation `H`. for qubit in register { H(qubit); } // At this point each has 50% chance of being measured in the |0〉 state // and 50% chance of being measured in the |1〉 state. // Measure each qubit and reset them all so they can be safely // deallocated. let results = MeasureEachZ(register); ResetAll(register); return results; }
[In-Memory Simulator] (メモリ内シミュレーター) を選びます。
[実行] を選択します。
- 結果が [Results] (結果) フィールドに表示され、結果のヒストグラムがコード ウィンドウの下に表示されます。
- [Select number of shots] (ショットの数を選択する) スライダーを動かして、プログラムの実行回数を指定できます。
- [Shots] (ショット) フィールドに、各ショットの結果が表示されます。
別のシミュレーターを使ってプログラムをもう一度実行するには:
[In-Memory Simulator] (メモリ内シミュレーター) ドロップダウンを選んで、Quantinuum H-Series Emulator を選びます。
ショットの数を選んで (現在は 20 回に制限されています)、[Run] (実行) を選びます。
- ジョブの状態が、コード ウィンドウの上部に表示されます。
- 結果のヒストグラムが、コード ウィンドウの下に表示されます。 現在、Quantinuum H-Series Emulator では、ショットごとの結果は使用できません。
Copilot に質問する
Azure Quantum の Copilot には、量子に関するほとんどすべての情報を求めることができます。 たとえば、Copilot に以下の質問をして何が起こるかを確認してください。
- "Explain the MResetZ operation" (MResetZ 演算について説明してください)
- "Write Q# code that entangles two qubits" (2 量子ビットをもつれさせる Q# コードを記述してください)
- "Explain quantum interference" (量子干渉について説明してください)
- "What is the difference between a qubit and a classical bit?" (量子ビットと古典ビットの違いは何ですか?)