GitHub Copilot: 画期的な製品を作るのに必要なのはわずか 6 人

仕上げ | 朱星娟核コーラ

出典 | AIフロントラインID | ai-front

現在、Copilot は国内の開発者にとって一般的に使用される補助ツールとなっています。ある開発者は、次のようにコメントしました。「コーディング中は、気を散らすものは最小限に抑えたいのです。この点で、Copilot は私にとって非常に役に立ちました。Web でソリューションを検索するのに費やす時間を短縮し、自分の作業に取り組んでくれます。お気に入りの IDE をすぐに利用できます。」Copilot は多くの利便性をもたらします。

人工知能と自動化は長い間開発者のワークフローの一部でしたが、GitHub と OpenAI によって開発されたクラウドベースの人工知能ツールである Copilot により、誰もが「インテリジェンス」の力を真に感じることができました。Stack Overflow の最新の開発者レポートによると、Copilot は現在最も人気のある開発者検索ツールです。では、このような「画期的な」ツールはどのようにして生み出されるのでしょうか?

6人の黙々と研究開発

「私たちは一種のスカンクワークス(具体的には秘密研究プログラム)で、誰も私たちのことを知りませんでした」と、起業家精神に基づいた小さなチームによって運営されていた GitHub Copilot の作成者の 1 人である Alex Graveley 氏は思い出します。 1 年足らずで「非常に機能不全に陥った GitHub/MSFT 組織」に。このチームには、主にランディング ページとアイコンを担当する PM と VP を加えた開発者が 6 人しかいません。

Alex 氏はそれがいつ始まったのか正確には知りませんが、当時 OpenAI と Microsoft は大規模なトレーニング クラスターを構築するためのスーパーコンピューティング施設について合意に達していました。彼らはまた、Office と Bing に AI 関連の条件をもたらす可能性のある別のパートナーシップ契約にも取り組んでいます。GitHub ももちろん例外ではなく、開発において AI がどのような役割を果たせるかを知りたいと考えています。

OpenAI は、小規模なモデルでのプログラミングをより適切に支援できるかどうかを確認するために、モデルを微調整する予定です。「小型」モデルとは何ですか? 当時、チームの誰もスケールを制御する方法を知りませんでしたが、確かだったのは、パラメーターが多すぎたり、ボリュームが膨大になることは決してないということです。アレックスは、この「小さな」モデルはダヴィンチほど大きくなかったと回想しています。

OpenAI の基本モデルはトレーニング アーティファクトのようなものです。彼らはコードを取り込んで、基本モデルがどのように反応するかを確認したいと考えています。「これは思考の連鎖にプラスの影響を与えていると思います。結局のところ、コード推論には明確な直線性があり、AI モデルは、1 つのことを行ってから前のことを行うこの種のアプリケーション シナリオにより適しているはずです」そのことが次のことに影響を与えるのです」とアレックスは言いました。

しかし、当初の効果は理想的なものではなく、かなり悪いものであるとさえ言えます。結局のところ、これは単なる低レベルの成果物であり、GitHub 上でデータの小さなサンプルに遭遇しました。Alex ともう 1 人の機械学習エンジニア、Albert Ziegler だけがモデルをいじっていました。彼は、ほとんどの場合は機能しませんが、AI モデルが力を増してきているように感じています。

当初、彼らは Python コードのみをデータに供給し、そこから有用な出力を生成したいと考えていました。「私たちは何も知らなかったので、簡単なことから始めて、飛び込んでみました。これが機能するかどうか、あれが機能するかどうかを確認してください。率直に言って、私たちは何をしているのかまったく分かりません。したがって、最初のタスクは、さらにテストを行うことです」それを使って何ができるか見てみましょう。」

Alex と彼らは、トレーニング セットには絶対に含まれない Python の質問を社内でクラウドソーシングしました。次に、リポジトリの選択と、モデルによって生成された関数がテストに合格できるかどうかを確認するためのテストの設計を開始しました。基本的なプロセスは、モデルに対応する関数を生成するように要求し、テストを実行して指定された関数が成功するかどうかを確認することです。

当初の合格率は10%程度と非常に低かったです。その後、チームはモデルにさらに試行を加え、ゆっくりと解決策を見つけ出させようとしました。他の独立したテストでも、アレックスはテスト関数を作成し、それを関数本体に埋め込もうとします。合格できれば、本当に効果があることが証明されます。実際には、リポジトリをダウンロードしてすべてのテストを実行し、どのテストが合格したか、どの関数が呼び出されたか、関数本体が正しく生成されたかどうかを確認し、テストを再実行して合格したかどうかを確認します。最後に、結果を記録し、パーセンテージを計算します。

ご想像のとおり、事前テストの合格率は非常に低いです。そこでチームは、GitHub からすべてのコードをモデルに供給し始め、当初は思いつかなかった他のいくつかの新しいトリックを導入しました。最終的には、実際の合格率は 10% 未満から 60% 以上になりました。言い換えれば、任意の 2 つのコード生成テストを実行すると、そのうちのほぼ 1 つに合格するということです。「これは段階的なプロセスで、10%から20%、35%、45%と、その後ゆっくりと増加していきます。」

調査プロセス中に、チームはプロンプトワードのデザイン品質を向上させ、特定のリンクに誘導することも試みました。このモデルは、最新バージョンだけでなく、コードのすべてのバージョンに公開されており、差分を使用することで、モデルは異なるバージョン間の小さな違いを理解できます。

「とにかく、最終的にはより良く、より強力になりました。しかし、少なくとも最初は、すべてがゼロから始めなければならず、私たちは無知な子供のようでした。唯一考えていたのは、いつかこれがスタックに置き換わるかもしれないということだけでした オーバーフローやその他の開発ワークフローツールです」とアレックスは言います。

さらに一歩進んでください

Copilot の最初のイテレーションは、人々が簡単なテストを作成できるようにするための内部ツールとしてのみ考えることができます。その後、チームは共通の UI を生成する試みを開始しました。「結局のところ、生成されたコードの合格率は当初わずか 10% でした。UI デザインは実際には比較的未解決の問題であり、AI が能力がないという事実を避けることができるかもしれません。これが成功すれば素晴らしいですね。」

そこで次に、チームはモデルの微調整とテストを開始しました。さらに、コードのオートコンプリートなど、VS Code の拡張機能も実装してほしいとのこと。当時、Alex はこれは問題ないと感じており、自動補完の探求は大きな進歩でもありました。「最終的な目標は依然として Stack Overflow を置き換えることですが、初期段階ではこれをすべて達成する方法がわかりません。最初に VS にいくつかの機能を実装するのは事実です。」

「私たちにとって小さな一歩として、オートコンプリートが機能し、楽しくて便利です。他のオートコンプリート機能と同じようにプロンプ​​ト ボックスが表示され、その中の文字列を選択できます。便利で使いやすく、非常に快適です。また、開発者がすぐに生成できる空の関数に小さなボタンを追加したり、開発者がコントロール キーをクリックしてポップアップ表示される大きなリストから選択したりするなど、他の関数配信方法もいくつか試しました。考えられるほぼすべての VS Code UI を試しました」と Alex 氏は言います。

すべてがまだ初期段階にありますが、提供される推奨リストは「日を追うごとに変化している」と言えます。結局のところ、このモデルは現時点では少数のサンプルしか公開されていないため、技術愛好家やテスト設計者のためのおもちゃとしてしか使用できません。チームは、Gmail のテキスト オートコンプリートと同等の機能を実現したいと考えています。

「その製品は本当に気に入っています。これは、大規模な言語モデルの最初の導入結果です。非常に高速で、効果は非常に優れています。Google はまた、具体的な技術的詳細と詳細な調整を共有するために特別に論文を公開しました。私たちは懸命に取り組んでいます」 「この方向に向かっています。ちょうど今、完成は最初はかなり悪かったですが、良い方向に進んでいるように感じました。試行錯誤を繰り返した後、最終的に小さなデモビデオを思いつきました」とアレックスは言います。

アレックスは、チームが障害を乗り越え、ベストプラクティスを無視して毎日 12 時間働いたことを思い出します。当時、この件を信じていたのは CEO、副社長、チームだけで、他の人はもっと懐疑的でした。

マイクロソフトの世界的な推進

一般バージョンのリリースに先立って、Copilot はパブリック ベータ版として公開されており、誰でも無料で使用でき、さまざまなグループ向けに多くの最適化が行われています。たとえば、経験豊富なプログラマーはどのように使用するのか、初心者の開発者はどのように使用するのか、さまざまな国や地域のユーザーはどのような習慣や傾向を持っているのかなどです。

Copilot チームは大量の統計を収集し、どのグループにおいても速度が最も重要な指標であることに気付きました。「レイテンシが 10 ミリ秒増加するごとに、ユーザーの 1% がその機能を放棄することがわかりました。また、インドは新機能の公開開始から最初の数か月間での使用完了率が最も低く、その理由はわかりませんが、完了率は確かにヨーロッパよりもかなり低いです。」

その後、チームは、OpenAI のデータ センターが 1 つしかなく、それが米国テキサス州にあったことが原因であることを発見しました。ご想像のとおり、データがインドからヨーロッパと大西洋を越えて最終的にテキサスに到達する必要がある場合、往復の遅延は非常に大きなものになるはずです。そうなると、プロンプトのリズムと入力のリズムが乖離してしまい、必然的に機能の完了率に影響が出てしまいます。

核心部分を見つけたチームメンバーは安堵した。また、テキサス近郊のユーザーからも好評で、例えば「プログラミングの仕方は分からないが、仕事の関係で100行のスクリプトの書き方を知りたい」といったコメントが寄せられています。結局のところ、AI モデルはこの開発パターンに特に優れており、一度パターンを見つければ、設計した UI が役に立ちます。

次に、チームの「ハイライトの瞬間」がやって来ました。結果をリリースし、市場から賞賛を得て、できるだけ早く更新して反復します。

「一部の顧客は、Azure が今後 6 か月以内に OpenAI に完全に取り組むつもりだと聞いたと述べていますが、待ちきれません。来月オープンするのが最善です。」と Alex 氏は述べ、チームはこれらの要件を満たそうとしていると述べました。西海岸、テキサス、さらにはヨーロッパのすべてのユーザーに AI モデルを近づけるためのインフラストラクチャを提供します。Microsoft はこれに多大な労力を費やしており、この機能が稼働しているため、Copilot は今後も存続することになります。

「OpenAI の天才たちと、信念を持った VSCode 編集者なしでは、Copilot は不可能でした」と Alex 氏は言います。

参考リンク:

https://sarahguo.com/blog/alexgraveley

https://twitter.com/alexgraveley/status/1607897474965839872

おすすめ

転載: blog.csdn.net/lqfarmer/article/details/131308715