GitHub Copilotの自動コーダーに問題発生。漏洩した秘密から質の悪いコードまで。しかし、気に入っている人もいる。

Table of Contents

GitHub Copilotの自動コーダーに問題発生。漏洩した秘密から質の悪いコードまで。しかし、気に入っている人もいる。

GitHub Copilotは先週、「AIペアプログラマー」を謳い、限定的な「テクニカルプレビュー」としてリリースされました。これは、2019年にマイクロソフトと提携し、10億ドルの投資を受けたOpenAIのCodexと呼ばれるシステムを搭載しています。

仕組み:公開コードをAI支援開発のモデルとして利用する

仕組み:公開コードをAI支援開発のモデルとして利用する

Copilotのウェブサイトによると、Codexモデルは「インターネット上の公開コードとテキスト」によって学習され、「プログラミング言語と人間の言語の両方を理解する」とのことです。Visual Studio Codeの拡張機能であるCopilotは、「コメントとコードをGitHub Copilotサービスに送信し、OpenAI Codexを使用して個々の行や関数全体を合成・提案します」。

何が問題になるのでしょうか?

ある開発者が実験を試みました。Sendgridサービス経由でメールを送信するコードを作成し、「apiKey :=」と入力してCopilotに指示を出しました。スクリーンショットとバグレポートによると、Copilotは少なくとも4つのキーを提案しました。彼はこれを「AIが秘密を漏らしている」というバグとして報告しました。

しかし、その鍵は有効だったのだろうか?GitHubのCEO、ナット・フリードマン氏はこのバグ報告に対し、「これらの秘密はほぼ完全に架空のもので、トレーニングデータから合成されたものだ」と回答した。

Copilotのメンテナーは、「トレーニングデータから秘密情報がコピーされる可能性は極めて低い。さらに、トレーニングデータはすべて公開コードであり(秘密コードは一切含まれていない)、万が一秘密情報がコピーされたとしても、すでに漏洩している」と付け加えた。

安心材料ではあるものの、Copilotが他のユーザーの秘密をプログラマーに教えている可能性は、たとえわずかでも懸念材料となる。これは重要な問題に関わってくる。CopilotのAIは本当にコードを書いているのだろうか、それともトレーニングソースから断片的にコピー&ペーストしているのだろうか?

GitHubは、自社サイトのFAQでこれらの問題の一部に対処しようと試みました。「GitHub Copilotはコード合成ツールであり、検索エンジンではありません」とGitHubは述べています。「提案されるコードの大部分は独自に生成されたもので、これまでに見たことのないものです。」しかし、GitHub独自の調査によると、「約0.1%の確率で、提案にはトレーニングセットからそのまま引用されたコードスニペットが含まれる可能性があります」とのことです。

この0.1%(初期ユーザーの中にはもっと高いと考えている人もいる)は厄介だ。GitHubがこの論文で提案している解決策は、AIがコードを合成するのではなく引用する際に、出典を明示するというものだ。「こうすることで、コードの背景情報を調べ、必要な場合には出典を明示できるようになります」と、GitHubの機械学習エンジニア、アルバート・ジーグラー氏は述べている。

コピーレフトであるGPLコードの場合、コードの組み込みは新規作品のライセンスに影響を与える可能性があります。CopilotのFAQには「GitHub Copilotが生成する提案、およびそれを利用して作成したコードはあなたに帰属し、あなたはそれに対して責任を負う」と記載されているため、混乱を招きます。しかし、帰属表示付きのコードブロックは例外となります。

GitHubはまた、「公開データを用いた機械学習モデルのトレーニングは、機械学習コミュニティ全体でフェアユースとみなされている」と述べ、AIが他者のコードを借用することへの懸念を先取りしました。興味深いことに、FAQのこの文は元々「公開データを用いた機械学習モデルのトレーニングは、現在では機械学習コミュニティ全体で一般的な慣行となっている」と書かれていましたが、この「一般的な慣行」から「フェアユース」への変更に一部の人が気づきました。

左:6月29日のテキスト。
右:7月1日に編集されたテキスト。

FAQセクションをご覧ください https://t.co/dl64UriikM pic.twitter.com/gN1nC0HePq

— アレックス・J・シャンパンダール(@alexjc)2021年7月1日

つまり、いくらか不確実性があり、それはおそらく、GitHub が Copilot をトレーニングするために取り込んだすべての公開コードの細則を無視したためだと考えられます。

GitHubのCEOはTwitterで「今後数年間、知的財産とAIは世界中で興味深い政策議論になると予想しており、当社も参加したいと思っています」と述べた。

開発者の Eevee 氏は、「GitHub Copilot は、自ら認めているように、大量の GPL コードでトレーニングされているため、オープンソース コードを商業作品にロンダリングする行為ではないという点が不明です」と述べています。

「CopilotはGPLを回避しているように感じて、後味が悪いです」と彼女はThe Registerに語った。「GPLを使うことの本質は、自分の成果からプロプライエタリソフトウェアが利益を得ることを望まないという意思表示です。モデルを(少なくとも部分的に)GPLコードで学習させ、それをプロプライエタリソフトウェアの開発に役立てるというのは、少なくともGPLの精神に反するように思えます。」

何も言いたくないけど、それは正しい免許証じゃないよ、副操縦士さん。pic.twitter.com/hs8JRVQ7xJ

— アーミン・ロナッチャー(@mitsuhiko)2021年7月2日

唯一の道は倫理だ

ウルフ氏は、GitHub Copilot は、ゲームを作成するプログラムであれ、複雑な暗号化アルゴリズムであれ、人々のコードを再利用し、本来の目的とは異なる用途に使用したため、おそらく変革をもたらすものと言えるだろうと述べた。

「GitHubは、ソフトウェアライセンスの対象となるような方法でコードを使用していません」と彼は述べた。「GitHubの目的は、彼らが使用しているアプリケーションとは異なる可能性が高いと思います。GitHubは独自の目的を持っています。」

著者組合対Google訴訟を思い出します。この10年に及ぶ法廷闘争は、ニューヨーク巡回控訴裁判所が、GoogleがGoogleブックスを作成するために入手したすべての書籍の全ページをスキャンすることはフェアユースであるとする2013年の地方裁判所の判決を支持したことで、2015年に終結しました。最高裁判所は、この訴訟の審理を却下しました。

「おかしな話ですが、あの件でGoogleを支持していたであろう人たちの多くが、今では(GitHub Copilotに対して)怒っています。これは『誰もが私のためのフェアユースは歓迎するが、あなたのためのフェアユースは歓迎しない』という格言に由来しています」とウルフ氏は述べた。

それは機能しますか?

もう一つの問題は、コードが正しく動作するかどうかだ。開発者のコ​​リン・エバーハート氏はプレビュー版を試用し、「その機能に驚嘆しています。ここ数時間で何度も『わあ!』と声に出して叫んでしまいました」と述べている。

しかし、読み進めてみると、彼の結果はまちまちのようです。Copilotの一般的な使い方の一つは、コメントを入力することです。その後、AIがコードブロックを提案することがあります。Eberhardt氏は次のように入力しました。

//指定されたウィンドウサイズの配列の移動平均を計算します

Copilotは正しい関数を生成しました。しかし、彼が試してみたところ、

// 合計が 2020 になる 2 つのエントリを見つけて、その 2 つの数値を掛け合わせます

... 生成されたコードはもっともらしく見えましたが、間違っていました。

コードを注意深く調べ、強力な単体テスト カバレッジを組み合わせることで、この種の問題を防ぐことができます。しかし、特に世界で最も人気のあるコード エディターである Visual Studio Code の公式アドオンとして GitHub から提供されているため、不注意な人にとっては罠となるように見えます。

StackOverflowのようなサイトからコードをコピー&ペーストするのとは対照的です。StackOverflowでは、他の貢献者がコーディングエラーを頻繁に発見し、コミュニティによる品質管理が行われています。一方、Copilotでは、開発者は独力で開発を進めることになります。

「Copilot をデフォルトでオンにしておきたいと思うようになるまでには、まだ少し時間がかかると思います」と Eberhardt 氏は結論付けました。その理由は、「Copilot の提案を確認することに伴う認知的負荷」です。

  • GitHub CopilotはAIペアプログラミングですが、人間であるあなたがほとんどの作業を行う必要があります。
  • 朗報:GoogleはパブリッシャーにAMPフォーマットの使用を義務付けなくなった。悪いニュース:AMPに代わるものはもっとひどいものになるかもしれない
  • サービスメッシュの何がすごいのか?レイヤー7のSDNと考えてみてください
  • Facebookが米国の従業員に「10月からオフィスに戻る準備はできています」と伝える

また、提案の表示が遅い場合があるとエバーハート氏は指摘したが、これは何らかのビジーインジケーターで対処できるかもしれない。それでもエバーハート氏は、多くの企業がCopilotの「驚きの要素」ゆえに導入するだろうと確信していると述べた。現状の欠点を考えると、これは少し気がかりな結論だが、まだプレビュー段階であることを念頭に置いておく必要がある。

プログラミングの多くは単調な作業であり、特定のプロジェクトに固有の問題はほとんどないため、原理的にはAIをこのタスクに適用することでうまくいく可能性があります。機械学習を用いてコード補完を向上させるMicrosoftのIntelliCodeは有効であり、エラーのリスクを増やすことなく生産性を向上させることができます。

AI によって生成されたコード チャンクは別の問題であり、これまでのところ、多くの可能性がある一方で、多くの問題もあるということです。®

Discover More