概要
現在、ChatGPTが急速に広まりつつあり、仕事の現場でも使われ始めています。
プログラマーとして新しい技術を勉強する際には多くのハードルがありますが、製品仕様を教えてくれたり実際にプログラムの例を作成してくれるなど、便利なツールとして使用することができるようです。
今回は実際に自分が業務として利用している製品「Azure Machine Learning」を例にして、チートシート的に利用した時にどこまでの対話ができるのか・情報は分かりやすいのか・技術情報の中身は正しいのかを出力させてみて検証しました。
背景
現在の日本ではIT人材の供給が追い付いていないと言われています。経済産業省の資料によると現在の不足人員は約17万人、2030年には約79万人まで拡大すると言われています。
ChatGPTは質問をすると自然な文章で回答を返してくれる機能を持ちます。24時間いつでも利用できるアドバイザー、ないしは生産性向上のためのチートシートとして未来のIT人材教育に利用できるのではないかと考えました。
特に今回は私が業務で使っているAzure Machine Learningについて、自分のリファレンスとして使えるのか、今後エンジニアの後進育成にどこまで利用できるのか気になったので実際に使って調べてみました。
注意点
ChatGPTに質問する内容の例としてAzure Machine Learningを使っていますが、本記事を読む際にAzure Machine Learningの前知識は必要ありません。あくまで情報が正しいのか、どのような形でアウトプットされるのかという点だけ注目していただければと思います。
また生成結果について意見を述べていきますが、本記事はあくまで一例であるため参考程度にとどめてください。
Azure Machine Learningについて質問する
とりあえず会話ベースで質問してみる
Azure Machine Learningの概要から質問していると長くなってしまうため、いきなり具体的な使い方から聞いてみます。
生成されたソースコードは以下の通りでした。
- 少し古いバージョン(SDKv1)を使用している
- 頼んだ処理を実現する、実行可能なソースコードになっている
- 対話で特に指定しなかったモデル訓練(学習)の方法については、ライブラリ(PyTorch)専用のEstimatorを選択している
- その他データ処理などの細かい部分は、見やすさ重視のためか割愛されていた
全体的なポイントとしては次の通りです。
- 最初に手順の概要を箇条書きで説明
- その後に必要なソースコードを概要を記載してくれる
- ソースコード内にも要点ごとにコメントを書いてくれる
- 会話であやふやだった部分をよしなに保管している
Estimatorという専門用語が出てきたので、それについて質問してみます。
モデルの訓練を行うこと、自動的にログを取得しモデルのバージョン管理やデプロイの実行ができると書かれています。機械学習をざっくり理解している人が分かる程度の内容に落とし込まれていました。
出力される内容が何となくAzure Machine Learning チートシートに似た雰囲気だなあと思い、実際に調べてみましたが、Estimatorに関連する記事は載っていませんでした。
ChatGPTは、自らの膨大なデータの中から内容をまとめて最適な形に整形しているはずです。その結果として見やすさ・使いやすさを重視したチートシートと同じような出力形式になったと考えるとすごいですね。
最後に、このソースコードを実行する方法について尋ねてみます。
ワークスペースの操作手段はいくつか存在しますが、最も手っ取り早い方法で案内してくれています。
ローカル環境から実行する方法も質問すると「pipからsdkをインストールすればできるよ」と教えてくれました。すごい...
気になった点
今回の検証で気になった点は以下の通りです。
- 途中からモデルのデプロイの話を始めるなど、最初の箇条書き番号と内容の関連性がなくなった
- 文字数制限で一度にレスポンスが受け取れなかったため「続けてください」 と入力して続きを受け取った
- やりとりを続けているうちに過去に自分が箇条書きした内容を忘れてしまったらしい
- 文字数制限でソースコードが途切れて内容が棄損した
- 一部消えてしまったコードは何かしらの方法で補完する必要がある
- 使用しているライブラリが古い
- ソースコードはSDKv1で技術情報が古いものである
- 後述します
ソースコードを実際に適用することができるのか?
Azure Portalからデプロイ&ソースコード適用までの流れは問題なく行えると思います。
ただし現在Azure Machine LearningはSDKv2もしくはCLIv2が最新です。
ChatGPTに質問してみたところ、最新情報のキャッチアップはユーザー自身が行う必要があるという回答でした。
最新情報を適用したソースコードをChatGPTに書かせることはできるか?
Python SDKv2は2022/10/10にGAリリースされた機能です。
最新のライブラリについて学びたいケースを想定して、記事執筆時点(2023/02/21)でSDKv2のソースコードを書くことができるか質問をしてみました。
また余談ですが、事前にGithubで「azure.ai.ml」を検索したところ、Pythonのソースコードは366件、Jupyter Notebookが736件ヒットしました。
SDKv1は「azureml.core」でSDKv2が「azure.ai.ml」をインポートして使用します。Pythonプログラムがどちらをインポートしているかで判断してください。
まずはリセットも兼ねて、もう一度改めて単純なソースコードを書いてもらいます。やはり生成されたソースコードはSDKv1を使用するものでした。
次に、SDKv2を使用するようにお願いしてみます。
いずれのコードも実行可能ですが、インポートしているazureml.coreはSDKv1のワークフレームです。SDKv2であるかのように発言していますが実際にはそうではありません。
今度はより明確にSDKv1の名前空間azureml.coreを使わないようにお願いしてみます。
やはりSDKv1のazuremlワークフレームを使用してしまいます。
より明確に、確実に間違えないようにSDKv2の名前空間まで明示して使うように要求してみましたがダメでした。
まだGAから半年経っていない技術なので難しいのかもしれません。
そんなことを思いつつ要求を調整しながら粘ってみたところ、しばらく後にそれらしいソースコードの生成に成功しました!
...生成は可能のようですが、かなり具体的に指示しなければいけませんでした。
この結果を生成するまでの過程は非常に長く、例えばインスタンス生成に必要な引数の順番がおかしいソースコードを出してきたり、azureml.coreのWorkspace(SDKv1)をインポートしながら「SDKv2です」と発言する場面がかなり多くありました。
やはり元々の情報量が少ないライブラリを利用するのは苦手なようです。
結果
以上より、ChatGPTによってチートシートとしてある程度利用できることがわかりました。
一方で、Web上にそもそも情報が少ないライブラリについては生成は難しいようでした。今回の場合ではSDKv2の情報を尋ねると、SDKv1のコードや、v1とv2を無理やり混ぜた全く使い物にならないコードをSDKv2として提示してきました。
ChatGPTの言う通り、最新情報のキャッチアップなどはユーザー自身が行う必要があるようです。
おわりに
ChatGPTは便利ですが、一般には自分で情報を精査しなければいけないと言われています。
ざっくり概要を理解するために利用することはできそうだと分かった一方、便利だからと言って自分自身で理解せずに内容を鵜吞みにしてしまうと、誤った情報で作業を進めることになりかねないことが分かりました。
今回の結果はあくまで2023年2月時点のOpenAI社の提供するChatGPTのものです。現在のAI進化の速度を考えても、今後のアップデート次第で大きく状況が変化することが想像できます。
しかしこのようなことも起こり得るということを胸にとどめて、特にエンジニアの皆さんは細心の注意を払いながら利用しましょう。