一生懸命働くのではなく、賢く働くことについて話しましょう。コンピュータサイエンスを学ぶ学生が、ディープラーニングソフトウェアを使ってソースコードを完成させる、興味深いコード補完ツールを開発しました。
確かに、ソースコードを使った自動補完ツールは既に数多く存在しますが、「Deep TabNine」と呼ばれるこのツールは、OpenAIの優れたテキスト生成エンジン「GPT-2」をベースにしていると言われており、私たちにとって興味深い点です。GPT-2は、ニュース記事や小説の冒頭文、コード行などの文章入力を促す訓練済みのニューラルネットワークを備えており、次に何が続くかを予測します。この予測ができるのは、人間がトピック、アイデア、単語をどのように結びつけるかを理解するために、何百万ものウェブページを学習しているからです。
Deep TabNine は、カナダのウォータールー大学でコンピューターサイエンスを専攻する 4 年生の Jacob Jackson 氏によって開発されました。同氏は以前に、AI を使用しないコード補完プラグイン TabNine を制作しました。
Deep TabNineは、コードエディタにインストールされると、人間が入力したソースの各行を分析し、各文の補完方法を提案します。まるでペアプログラミングのパートナーのようなものです。コーダーは、候補リストから選択することで、未完成の行を補完することができ、すべてを入力する必要がありません。これは、Googleのスマートコンポーズ機能を使ってメールを作成したり、AI以外のオートコンプリートツールを使ったりするのと似ています。もちろん、Deep TabNineが意味不明な提案をした場合、開発者はそれを無視することができます。
「自動補完はこの種の技術の優れたユースケースです」とジャクソン氏はThe Register紙に語った。「プログラマーは皆、AIを使えばおそらく高速化できるコードを書くのに多くの時間を費やしています。言語生成と比較すると、コードにおける自動補完は技術的に容易な問題です。」
Deep TabNineはGPT-2のアーキテクチャに基づいていますが、若干の改良が加えられているとのことです。ジャクソン氏は、このプロジェクトを商業化しようとしているため、詳細を明かすことを控えていました。Deep TabNineの開発に使用したGPT-2のバージョンについては明らかにしませんでしたが、パラメータが多いモデルを使用することが必ずしも有益であるとは限らないと述べました。
「パラメータを多く使うことが必ずしも良いとは限りません」と彼は説明した。「提案はより賢くなりますが、入力時の反応が鈍くなり、動作も遅くなります。」
見逃さないでください: 今年の MCubed カンファレンスでは、数十名の一流講演者、セッション、ワークショップから必須の AI スキルを学びます
続きを読む
Deep TabNineはソースコードのコンテキストを認識するため、一般的なコード補完ツールキットよりも賢く動作します。例えば、数学的な処理に特化した関数内でコードを記述している場合、文字列を扱うメソッドではなく、数学的な演算を提案することがあります。Deep TabNineが様々なプログラミング言語で動作するデモは、こちらでご覧いただけます。
現時点では、ジャクソン氏のツールは計算負荷が非常に高く、入力時に候補を提示するために毎秒最大100億回の浮動小数点演算を高速化するGPUを必要とします。そのため、ノートパソコンの性能がニューラルネットワークを効率的に実行するのに十分でない可能性があります。ベータ版のクラウドサービス経由でDeepTab Nineを利用することもできます。このサービスはすべての予測をバックエンドで行い、インターネット経由でコードエディターに候補を送信します。
ジャクソン氏は、企業にライセンス供与できるバージョンを作成し、企業が自社のサーバー上でソフトウェアを実行してコードの機密性を保ち、分析や提案のためにリモートサービスとの間でやり取りすることがないようにしたいと考えている。
DeepTab Nine は Rust で書かれており、Python、JavaScript、Java、C++、C、PHP、Go、C#、Ruby、Objective-C、Rust、Swift、TypeScript、Haskell、OCaml、Scala、Kotlin、Perl、SQL、HTML、CSS、Bash をサポートしています。
Deep TabNine の使用に興味のあるコーダーは、こちらからベータ版リリースにサインアップできます。®