量子プログラミングAIアシスタント”Azure Quantum Copilot” を触ってみた


:::note warn
この記事で取り上げる Azure Qunatum Copilot は Preview 中である点、ご了承ください。
:::

## はじめに
2023年は生成 AI 祭りの1年となりました。
初頭から、Azure OpenAI Service、Copilotサービス群が Microsoft からGA、
10月には、Amazon bedrock が AWSからGA、
そして、つい２週間ほど前に、GoogleからGemniが発表され、市場を賑わせています。

3大クラウドが足並みを揃えた状況ですが、中でも Microsoft は OpenAI 社と提携を強め、自身のプロダクトであるMicrosoft 365 や GitHub に Copilot という名で、生成 AI 機能を付帯しました。

この Copilot シリーズは、上述の M365 や GitHub が注目度が高いですが、実は Azure で提供している量子コンピューティグサービスである Azure Quantum でも、”Azure Qunatum Copilot”という名で6月からプレビューで提供を開始しています。

今回はAzure Qunatum Copilotを触ってみての所感について、紹介しようと思います。

## Azure Qunatum Copilot とは
Azure Qunatum Copilot は 量子プログラミングのコード生成、逆にコードに関して自然言語で問合せすることができる AI アシスタントです。
GitHub Copilot を利用された方はご存知かもしれません。
Python、JavaScript、TypeScript、Ruby、Go、C#、C++ における古典コンピュータのプログラミングアシスタントをしてくれるGitHub Copilotに対して、Azure Qunatum Copilot は 量子コンピュータのプログラミングアシストしてくれます。
量子コンピュータについては、現状 Q# のみの回答となりますが、古典コンピュータについては、GPT-4 ベースで作られたプロダクトなので、PythonやC++の問いについても答えてくれます。
また GPT-4 ベースということで、日本語のプロンプトにも回答してくれました。

更に、Azure Quantum では、材料科学や化学の課題解決に注力しており、Azure Qunatum Elementsを同時期に発表して、同分野でのHPC・AI・Quantum のハイブリット利用を促しています。
そのため、Azure Qunatum Copilot では、化学に関する質問・分子や軌道の可視化をする機能もそろえています。

## 機能
大まかには下記のことを備え、コード生成や学習・研究をサポートします。
* 量子コンピューティングに関する質問への回答
* 量子コンピューティングの概念をわかりやすく説明
* 化学や材料科学についての学習を支援
* 学習と探求のための Q# コード サンプルの生成と説明 

GitHub Copilot のように、ローカルの IDE に Copilot をアドインして使うのではなく、ブラウザから各シナリオに沿って利用することができます。

#### Coding
Codingをアシスタントするための機能です。
画面には、アルゴリズムのサンプルの選択(現在は6つ)や、実行環境をローカルかクラウド上のQuantinuum’s H-Series Emulatorに接続かを選択できました。
また、ショット数も1～100と試行できます。

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3591959/e6d7701a-e3cf-8fca-15f2-1f7f73f033c1.png">


#### Katas
Microsoft では、”Qunatum Kata” と言う量子コンピュータの概念とQ#プログラミング言語を学ぶための学習チュートリアルを用意していて、それにCopilotが追加されました。
機能としては、上記と同様です。

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3591959/4ad55f41-1f70-65b9-d54f-1864387e6e84.png">


#### Elements
概要にも述べましたが、化学や材料科学の学習・研究をサポートする機能で、化学に関する質問、分子や軌道の可視化のリクエストすることができます。
3DのViewerを用意しており、例えば、ベータカロチン分子の可視化をリクエストすると、分子軌道・HOMO（最高被占軌道）・LUMO（最低空軌道）をそれぞれ表示します。


<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3591959/58e2db4b-c7ff-13a6-0bb1-c7a779bc9b9c.png">


#### Cryptography
量子コンピューティングが一般的な暗号化アルゴリズムにどのような影響を与えるかを調べることができます。
RSAやAESなどの暗号化アルゴリズムを選択し、そのアルゴリズムを破るために、将来の量子コンピュータ上で Shor のアルゴリズムに必要な物理的な量子ビットの数と実行時間が表示されます。
更に、鍵強度などの入力パラメータを選択して、詳細な推定を行うことが可能です。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3591959/02d21b0a-620b-b4ad-33f5-ada50c009418.png">


## 使ってみる
下記のようにサンプルプログラムでも頻出する隠れシフト問題について実行し、更に実行コードの説明を依頼すると、日本語で解説をしてくれました。

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3591959/a81f5198-3396-4d0f-dccb-3658496c9485.png">

また、プログラムの中にある関数・ライブラリの質問も日本語で回答してくれ、深堀して理解を進めることができます。

ただ、まだ初学者向けのサービスだと実感したのが言語変換やプロンプトの文字数制限 (1byte, 2byte 限らず500字) です。
例えば、Q#ではサンプル公開していない Quantum Singular Value Transformation (QSVT) に関する実装を Python からQ# に言語変換して実装できるか試してみましたが、Q# に関するプロンプトにのみ回答するため、全く的外れな回答が返ってきました...
ブラウザからお手軽に始められる故に、利用コードの一部や関数・コード変換や最適化などの提案は、まだ難しそうです。

あとは、コード生成に限らず、文献の検索などにも有効でした。
例えば、”半導体量子ドットによる単一電子測定の代表的な論文を列挙して” と問うと、グローバルの「本当に」代表的な論文を出してくれました。
その一方、一般 GPT-4 ベースの検索サービス (ここではBing Chat) は、化学分野における半導体量子ドットの論文でしかも日本語でプロンプトを投げたせいか、日本の論文を拾ってきて、参考になりませんでした。
量子の結果が生成されるように、Tuningをしているようです。

#### 因みに


世間話的な、一般的な問合せを、Azure Qunatum Copilot と Bing Chatでそれぞれしてみました。
<br>

高校の化学で触れる化学式に関するトピック

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3591959/36abd750-f5da-c3a7-9a80-0657cd093c66.png">
<br>
<br>
小学生でもわかる天文学に関するトピック

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3591959/506bdc70-d746-49d1-4aa5-62debd86db5c.png">
<br>
<br>
しかし、全く科学に関係しないトピックだと、少し冷たい返答でした(笑)

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3591959/b12825cd-d98c-8b43-18be-aa47dc8f6a32.png">


## 結論
上記ダラダラと感想を述べましたが、利用用途は限定的で、今今は量子プログラミングを始めたい・始めたばかりの学生・一般の方、またはコーディングは普段しない化学・材料科学などの研究者の理解を深めるために補助的に使うサービスとなりそうです。
既に量子プログラミングに精通されている方は、まだまだ本利用するには時間がかかるかもしれません。
今後の発展に期待です。