ChatGPT に AWS 試験サンプル問題へチャレンジしてもらい ChatGPT の AWS スキルを確認してみた

2023.03.29

アノテーション 、テクニカルサポートチームの村上です。

みなさん、ChatGPT 使ってますか?
私は、テクニカルサポートとしてどのような使い方ができるかいろいろと試行錯誤しているところです。今までで一番多く試してみたことは、テクニカルサポートによくあるような問い合わせに対して、ChatGPTがどの程度の精度で回答できるかです(もちろん、仮想のシナリオでの質問です)。 ただし、回答の精度は質問の仕方によって異なる場合があり、2021 年 9 月以降にアップデートされた AWS の機能については回答に盛り込めないという問題もあります。
そこで、まずは ChatGPT のデータセットに AWS サービスについてのデータがどれだけ入っているのか、簡単にですが探ってみることにしました。
ChatGPT の AWS 知識を確認するにあたり、2021 年 9 月までに公開された AWS 試験サンプル問題にチャレンジしてもらうことにします。

用意したサンプル問題

AWS-Certified-Data-Analytics-Specialty_Sample-Questions
AWS-Certified-Database-Specialty_Sample-Questions
AWS-Certified-Machine-Learning-Specialty_Sample-Questions
AWS-Certified-Security-Speciality_Sample-Questions
AWS_Certified_Advanced_Networking_Specialty_SampleExam(旧試験・英語)

スペシャリティ試験 5 分野のサンプル問題に対して、各分野ごとに 2 問ずつ ChatGPT に出題します。
Advanced_Networking_Specialty(旧試験)のサンプル問題に関しては、英語で出題してみます。

なお、今回利用した全てのサンプル問題は 2021 年 9 月以前に公開されているので、ChatGPT が参照しているデータが 2021 年 9 月時点までのものであっても回答精度には影響がありません。

事前に ChatGPT に AWS の知識を確認してみた

サンプル問題にチャレンジしてもらう前に、ChatGPT に対して、どれぐらい AWS の知識があるかを聞いてみます。

AWS 認定ソリューションアーキテクトアソシエイトと同等の知識を持っているということでしょうか?
とりあえず、幅広い知識を持っていることがうかがえるお答えをいただきました。

ChatGPT に AWS 試験サンプル問題へチャレンジしてもらった

質問1(Data-Analytics-Specialty 問題1)

正解

C — Relationalize PySpark 変換クラスを使用することにより、ネスト型データを平坦化して構造化形式にすることができます。Amazon Redshift Spectrum を使用することにより、外部テーブルを結合し、変換済みクリックストリームデータを照会することができます。大規模なデータセットに合わせてクラスターをスケーリングする必要はありません。

さすが ChatGPT さんといった感じのしっかりした回答をいただきました。費用対効果と自動化ソリューションというキーワードに基づいた正解です。

質問2(Data-Analytics-Specialty 問題3)

正解

B — Amazon DynamoDB の項目サイズの上限値に収まらない大きい属性値を格納するには、Amazon S3 を使用します。各ファイルを Amazon S3 にオブジェクトとして格納し、オブジェクトパスを DynamoDB 項目に格納します。

この問題もしっかりした回答になっているかと思います。私は用語に関してけっこう適当に覚えているので、AWS ドキュメント記載のオブジェクト識別子が、ChatGPT さんが言うとこのオブジェクトキーという理解です。

大きな属性値を Amazon S3 に保存する

質問3(Database-Specialty 問題4)

不正解

C — 暗号化されていない既存のデータベースインスタンスに対して格納データの暗号化を有効にするには、データベースインスタンスのスナップショットを作成し、そのスナップショットの暗号化されたコピーを作成します。次に、暗号化されたスナップショットからデータベースインスタンスを復元します。これで元のデータベースインスタンスの暗号化されたコピーが作成されます。

初の不正解がこの問題になるとは、少し意外な感じでした。質問自体は非常にオーソドックスな内容で、AWS ドキュメントにも手順が明記されています。
Amazon RDS の暗号化された DB インスタンスの制限事項

質問4(Database-Specialty 問題8)

正解

D — Amazon DynamoDB グローバルテーブルを使用した場合、指定した複数の AWS リージョン内に複数のマスターデータベースを配置できます。DynamoDB では、これらのリージョン内に同一のテーブル を作成し、また、あるテーブル内のデータが変更されたときにその変更内容を他のすべてのテーブルにすぐに反映させるために必要なタスクがすべて実行されます。また、DynamoDB の自動スケーリング機能により、プロビジョニングされているスループットが、費用対効果の高い方法で、実際のトラフィックパターンに合わせて調整されます。

この問題に対しても「データを全てのリージョンで共有」「大量のデータを低レイテンシーで読み書き」というキーワードからしっかりした正解を選んでいます。解説もしっかりしています。
仮に面接で「DynamoDB グローバルテーブルを説明してください」と質問してみて、この回答が即座に出たら驚くと思います。

質問5(Security-Speciality 問題1 正解を 2 つ選択)

正解

A、C — IAM ポリシーに次の条件ステートメントを追加することにより、VPC エンドポイント経由でない AWS KMS へのアクセスを拒否できます。
"Condition":{
"StringNotEquals":{
"aws:sourceVpce":"vpce-0295a3caf8414c94a"
}
}
[Enable Private DNS Name] オプションを選択した場合、標準の AWS KMS DNS ホスト名(https://kms..amazonaws.com) が VPC エンドポイントに変換されます。

セキュリティに関しても、しっかりと問題文記載の要件を満たす選択肢を選んでくれました。正解が複数ある問題においても、ChatGPT さんの回答には揺るぎない自信を感じます。

質問6(Security-Speciality 問題3 正解を 3 つ選択)


不正解(選んだ選択肢 3 つのうち 2 つは正解)  

A、C、E — n 層アーキテクチャにおける各層のセキュリティグループは、そのセキュリティグループにトラフィックを送信するはずのセキュリティグループからのトラフィックだけを許可します。プレゼンテーション層は、インターネットからの HTTP トラフィックおよび HTTPS トラフィックを受け付けます。セキュリティグループはステートフルなので、受信ルールを設定するだけでかまいません。

この問題は人間の方が間違えにくい問題なのかもしれません。
3 層アーキテクチャと、セキュリティグループの接続元の指定にセキュリティグループを指定できるということを知っていれば、あとは自ずと正解にたどり着ける問題です。
ChatGPT が誤って選んだ選択肢 B が F だったら、「惜しい!」と言えた回答でした。
それでも、2 つ正解だったのは凄い!

質問7(Machine-Learning-Specialty 問題3)

正解

B - AWS Glue が正解です。サーバーレスなので、セットアップ作業とメンテナンス作業の量が最小になるからです。また、インフラストラクチャを管理する必要もありません。補足情報については、このリンク先を参照してください。A、C、および D でも、この問題を解決することはできますが、構成作業のステップ数が多くなります。また、実行作業とメンテナンス作業の運用コストが高くなります。

ChatGPT の回答に「AWS Glue を使用すると、データ変換とスケジュールの管理を自動化できます。」とあるので、Glue に関してもサービスの基本をしっかり分かっているようです。質問文にある「セットアップ作業とメンテナンス作業の量を最小化すること」の要件を踏まえて回答しているとこもさすがです。

質問8(Machine-Learning-Specialty 問題6)

正解

B - クラス確率閾値を減らすと、モデルの感度が向上するので、陽性クラス (この場合は不正ケース) としてマークされるケースの数が増えます。これにより、不正を検知できる可能性が高まります。その代わり、精度が低下します。詳細については、このリンク先の文書の「DISCUSSION」セクションを参照してください。

ご解説ありがとうございます。Machine-Learning-Specialty を取得して以来、機械学習に触れていなかったのでとても勉強になりました。

質問9(Advanced_Networking_Specialty 問題2)


正解

B - The traffic leaves the instance destined for the Git repository; at this point, the security group must allow it through. The route then directs that traffic (based on the IP) to the NAT gateway. A is wrong because it removes the private aspect of the subnet and would have no effect on the blocked traffic anyway. C is wrong because the problem is that outgoing traffic is not getting to the NAT gateway. D is wrong because to allow outgoing traffic to the Git repository requires an outgoing security group rule.

質問文にある「The NAT gateway can reach the Git repository, but instances in the private subnet cannot.」 の状況から、しっかりと正解を選んでいます。ChatGPT に適切な条件を与えることにより、ネットワークのトラブルシューティングにも応用可能であるという点で、良いサンプルとなりました。

質問10(Advanced_Networking_Specialty 問題4)

不正解

B - Three connections are required to provide fault tolerance. All of the other options would be unable to handle the peak loads over 1 Gbps without exceeding the available bandwidth.

質問文にある条件「sustained traffic between 1 Gbps and 2 Gbps during peaks」への考慮がなかった為に不正解となりました。社外のブログで「簡単な計算を間違えることがある」と見かけたことがあるので、もしかしたら条件の中で計算が必要な場合は回答精度が落ちるのかもしれません。

試験結果を振り返ってみた

Data-Analytics-Specialty 2/2
Database-Specialty 1/2
Security-Speciality 1/2
Machine-Learning-Specialty 2/2
Advanced_Networking_Specialty 1/2

正解率 70.0%(7/10)

実を言うと、本記事に掲載した問題よりも多くの問題を ChatGPT に出題してみたのですが、正解率としてはもっと低い感じとなりました。英語で質問をすれば正解率が上がるかと思い Advanced_Networking_Specialty については 6 問出題してみたのですが 結果は 2/6 です。
この結果に関しては、AWS_Certified_Advanced_Networking_Specialty_SampleExam の作成年度が他試験より古い 2017 年であることと関係するかもしれません。
いずれにしても、選択肢の中に明確な正解がある場合は十分に活躍してくれる印象を持ちました。
また、ChatGPT-4 を利用した場合はより高い正解率を期待できると思います。

まとめ

ChatGPT の出現により、テクニカルサポートの仕事も大きく変わる可能性があると感じています。
私自身が将棋ファンであり、将棋専用の AI が徐々に力をつけ、最終的には名人を圧倒するまで成長する過程をリアルタイムで見てきました。現在、将棋界では AI は対峙する存在ではなく、新しい戦型の研究パートナーや練習相手として欠かせない存在となっています。私もいちエンジニアとして、AI を良きパートナーにできればと思います。

この記事がどなたかのお役に立てば幸いです。

参考資料