ホームページ > 記事 > テクノロジー周辺機器 > Google、独自の「AI+ソフトウェアエンジニアリング」フレームワークDIDACTを公開:数千人の開発者が社内でテストし、使用後は全員が生産性が高いと評価
大規模なソフトウェアは、最初から完全に構想されているわけではなく、開発者によって改良、編集、単体テスト、修復が行われ、コード レビューによって解決され、満足してオンラインになるまで何度も何度も解決されます。コードは、要件が満たされた後にのみウェアハウスにマージできます。
プロセス全体を制御する知識は、ソフトウェア エンジニアリングと呼ばれます。
ソフトウェア エンジニアリングは独立したプロセスではなく、開発者、コード レビュー担当者、バグ報告者、ソフトウェア アーキテクト、およびさまざまな開発ツール (コンパイラー、単体テスト、コネクタ、静的アナライザーなど) で構成されます。 。
最近、Google は、AI テクノロジーを使用してソフトウェア エンジニアリングを強化し、ソフトウェア開発を統合する独自の DIDACT (Dynamic Integrated Developer ACTivity、動的統合開発者アクティビティ) フレームワークを発表しました。中間状態は、開発者がコードを作成および変更するのを支援し、ソフトウェア開発のダイナミクスをリアルタイムで理解するためのトレーニング データとして使用されます。
#DIDACT は、編集、デバッグ、修正、コード レビューなどの開発アクティビティについてトレーニングされたマルチタスク モデルです
研究者らは、注釈解析、ビルド修復、チップ予測という 3 つの DIDACT ツールを社内で構築して導入し、それぞれが開発ワークフローのさまざまな段階で統合されました。
ソフトウェア エンジニアリング = インタラクション ログ何十年にもわたって、Google のソフトウェア エンジニアリング ツール チェーンは、コードに関連するすべての操作をツールとして保存し、人々の間のインタラクションの開発ログを保存しました。
原則として、ユーザーはこれらの記録を使用して、ソフトウェア開発プロセスにおける主要な変更プロセス、つまり、あらゆるコード編集、コンパイルなど、Google のコード ベースがどのように形成されたかを詳細に再生できます。 、アノテーション、変数の名前変更など。
Google の開発チームは、コードをモノリポジトリ (モノ リポジトリ) に保存します。モノリポジトリは、すべてのツールとシステムが含まれるコード リポジトリです。
ソフトウェア開発者は通常、Clients in the Cloud (CitC) システムによって管理されるローカルのコピーオンライト ワークスペースでコードの変更を行います。
開発者が特定のタスク (バグ修正など) を達成するために一連のコード変更をパッケージ化する準備ができたら、Critique でコード変更を作成する必要があります。 Google のコード レビュー システム、変更リスト (CL)。
一般的なコード レビュー システムと同様に、開発者は機能やスタイルについてピアレビュー担当者とコミュニケーションをとり、CL を編集してレビュー コメント中に提起された問題に対処します。
最終的に、レビュー担当者はコード「LGTM!」を宣言し、CL をコード ベースにマージしました。
もちろん、コードレビュー担当者との会話に加えて、開発者は、コンパイラ、テストフレームワーク、リンカー、静的コードなど、他のソフトウェアエンジニアリングツールとの多数の「対話」を維持する必要もあります。アナライザー、ファズテストツールなど。
ソフトウェア開発に関わるアクティビティの複雑なネットワークの図: 開発者のアクティビティ、コードレビュー担当者とのやり取り、および次のようなツールの使用コンパイラが転送するとき。
ソフトウェア エンジニアリングにおけるマルチタスク モデルDIDACT は、エンジニアとツール間の対話を活用して、エンジニアリング中の開発者のソフトウェア アクションの実行を提案または最適化することで機械学習モデルを強化します。 Google 開発者がソフトウェア エンジニアリング プロセスに参加できるように支援するタスク。
この目的を達成するために、研究者たちは、壊れたビルドの修正、コード レビュー コメントの予測、コード レビュー コメントの処理、変数名の変更、ファイルの編集など、個々の開発者のアクティビティに関する多くのタスクを定義しました。 。
次に、各アクティビティの共通フォームを定義します。特定の状態 (コード ファイル)、インテント (コード レビュー アノテーションやコンパイル プロセッサ エラーなど、アクティビティに固有のアノテーション) を取得します。 Action (タスクを処理するための操作) を生成します。
Action は、編集、コメントの追加、変数名の変更、コード エラーのマークなどをカバーする、新しく追加されたアクティビティに拡張できるミニ プログラミング言語のようなものです。これは、これと呼ぶこともできます。最初の言語は DevScript です。
DIDACT モデルの入力プロンプトはタスク、コード スニペット、およびタスクに関連するコメントであり、出力は編集やコメントなどの開発アクションです。
##ステータス - インテント-アクション (状態-インテント-アクション) の定義形式 は、共通の方法でさまざまなタスクをキャプチャできます。さらに重要なことに、DevScript は、アクション後の状態全体を出力する必要なく、複雑なアクションを簡潔に表現できます。が発生し (元のコード)、モデルがより効率的で解釈しやすくなります。
たとえば、名前変更によりコード ファイル内の複数の場所が変更される可能性がありますが、モデルが予測する必要があるのは 1 つの名前変更操作だけです。
DIDACT は、個人的な補助タスクで非常にうまく動作します。たとえば、次の例は、関数の後の DIDACT のコードを示しています。クリーンアップ作業では、最初にコードレビュー担当者の最終コメント (図では人間とマークされています) を入力し、次にコメントで提起された問題を解決するために必要な操作を予測します (diff で示されています)。
最初のコード スニペットと、コード レビュー担当者がスニペットに添付したコメントが与えられると、DIDACT の送信前クリーンアップ タスクによって編集操作 (挿入) が生成されます。 (テキストの削除)
#DIDACT のマルチモーダルな性質により、スケールに応じて現れるまったく新しい動作もいくつか生じます。その 1 つは履歴拡張 (履歴拡張) です。開発者が最近何をしたかを知ることで、モデルは開発者が次に何をすべきかをより正確に予測できるようになります。
過去の強化されたコード補完のデモ ##履歴拡張コード補完タスクは、この機能を実証できます。上の例では、開発者は新しい関数パラメータ (1) を追加し、カーソルをドキュメント内に移動しました (2)。開発者の編集履歴とカーソル位置に基づいて、モデルは新しいパラメータの docstring エントリを正確に予測し、3 番目のステップを完了できます。
履歴拡張編集予測というより困難なタスクでは、モデルは履歴的に一貫した方法で次の編集の場所を選択できます。
#複数の連鎖反復にわたる編集予測のデモンストレーション
# # 開発者の場合関数パラメータ (1) を削除すると、モデルは、履歴に基づいてパラメータを削除する docstring (2) の更新を (人間の開発者が手動でカーソルを置く必要がなく)、構文内で正しく予測できます (おそらく、意味的に) 関数 (3) のステートメントを更新します。
履歴があれば、モデルは「コード編集プロセス」を正しく続行する方法を明確に決定できますが、履歴がなければ、モデルは欠落している関数パラメーターがどのように変更されたかを知る方法がありません。意図的 (開発者がパラメータを削除するためにより長い編集操作を行ったため)、または予期せぬ状況でしたか (問題を解決するにはモデルがパラメータを再追加する必要があります)。
さらに、モデルは、空のファイルから開始して、完全なコードが記述されるまで次の編集操作を継続的に予測することをモデルに要求するなど、さらに多くのタスクを実行することもできます。
#最も重要なのは、このモデルは、開発者にとって自然な段階的な方法でコードを作成するのに役立ちます。
まず作成してください。インポート、フラグ、および基本的な main 関数を備えた完全な作業フレームワークであり、その後、ファイルからの結果の読み取りと書き込み、ユーザー指定の正規表現関数に基づく特定の行のフィルタリングの追加などの新しい機能が徐々に追加されます。
結論
DIDACT は、Google のソフトウェア開発プロセスを機械学習開発者アシスタント向けのトレーニング デモに変換し、これらのデモ データを使用して段階的にモデルをトレーニングします。コードを作成し、ツールやコードレビュー担当者と対話します。DIDACT アプローチは、Google などの大規模言語モデルの優れた成果を補完して、作業負荷を軽減し、生産性を向上させ、ソフトウェア エンジニアの仕事の品質を向上させます。
以上がGoogle、独自の「AI+ソフトウェアエンジニアリング」フレームワークDIDACTを公開:数千人の開発者が社内でテストし、使用後は全員が生産性が高いと評価の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。