Databricksアシスタントのオートコンプリートの正式提供

[Announcing the General Availability of Databricks Assistant Autocomplete \| Databricks Blog](https://www.databricks.com/blog/announcing-general-availability-databricks-assistant-autocomplete)の翻訳です。

:::note warn
本書は著者が手動で翻訳したものであり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

本日、[Databricksアシスタントのオートコンプリート](https://docs.databricks.com/ja/notebooks/use-databricks-assistant.html#use-databricks-assistant-in-a-notebook-cell)のすべてのクラウドでの**正式提供**を発表できることを嬉しく思っています。アシスタントのオートコンプリートは、PythonやSQLをタイプしている際に、AIを活用したパーソナライズされたコードの提案を行います。

![](https://www.databricks.com/sites/default/files/inline-images/image1_7.gif?v=1728575172)

# アシスタントのオートコンプリート

ノートブック、SQLエディタ、AI/BIダッシュボードに直接インテグレーションされているアシスタントのオートコンプリートの提案はあなたの開発フローにシームレスに組み込まれ、現在のタスクにフォーカスし続けることができます。

![](https://www.databricks.com/sites/default/files/inline-images/image4_5.gif?v=1728575172)

> 「多くの場合、私が生成AIに懐疑的だった際、Databricksアシスタントのオートコンプリートツールが、テクノロジーにおける数少ない実際に優れたユースケースであることに気づきました。多くの場合、十分意味があるほどに多くのキータイプを削減するのに十分に高速で正確なものとなっており、タイピングではなく理由づけのタスクに完全にフォーカスできるようになりました。さらに、(プロットのアノテーションなどの)API構文のような定型作業のためにインターネットに巡礼する作業をほぼ完全に置き換えました。」 - Jonas Powell, Staff Data Scientist, Rivian

すべての方にこれらの生産性の改善を提供できることに興奮しています。向こう数週間においては、利用できるワークスペースにおいてDatabricksアシスタントを有効化していきます。

# ある種の複合AIシステム

複合AIシステムは、複雑なタスクに取り組むために単一のモノリシックモデルではなく、複数の連携するコンポーネントを組み合わせるAIシステムを指しています。これらのシステムは、従来の単一モデルのアプローチよりも柔軟で、高性能、適応可能な全体的なワークフローを構成するために、さまざまなAIモデル、ツール、処理ステップをインテグレーションします。

アシスタントのオートコンプリートは、あなたがタイプしている際に正確で文脈に基づく提案を生成するために、類似のテーブル、Unity Catalogのメタデータ、データフレーム変数を用いて、関連するコードのセル、適切なクエリーやノートブックからの文脈をインテリジェントに活用する[複合AIシステム](https://qiita.com/taka_yayoi/items/da5e019190bed65e9e87)です。

我々の応用AIチームは、正確なドメイン固有の提案をターゲットにして、モデルをファインチューン、評価、サービングするために、DatabricksとMosaic AIフレームワークを活用しました。

## テーブルのメタデータと最近のクエリーを活用

以下のカラムを持つシンプルなメトリクステーブルを作成したようなシナリオを考えてみましょう:

- date (STRING)
- click_count (INT)
- show_count (INT)

アシスタントオートコンプリートによって、手動でテーブルの構造を思い出すことなしに、クリックスルー率(CTR)の計算が容易になります。システムでは、カラムの定義や最近のクエリーパターンのように、あなたがテーブルを操作する際に必要な文脈情報を提供するために、**retrieval-augmented generation (RAG)** を活用しています。

例えば、テーブルのメタデータを用いて以下のようなシンプルなクエリーが提案されることでしょう:

![](https://www.databricks.com/sites/default/files/inline-images/image5_12.png?v=1728575172)

以前にパーセンテージを用いてクリックレートを計算していたとしたら、モデルは以下のようなものを提案するかもしれません:

![](https://www.databricks.com/sites/default/files/inline-images/image2_30.png?v=1728575172)

文脈を追加するためにRAGを活用することで、レスポンスが正しいものであり、モデルの幻覚を防ぐ助けになります。

## ランタイムのデータフレーム変数を活用

SQLではなく**PySpark**を用いて、同じテーブルを分析してみましょう。ランタイム変数を活用することで、データフレームのスキーマを検知し、どのカラムを使用できるのかを認識することができます。

例えば、日次の平均クリック数を計算したいものとします:

![](https://www.databricks.com/sites/default/files/inline-images/image3_31.png?v=1728575172)

この場合、システムはデータフレームに合わせた提案をするために、実行時のスキーマを活用します。

## ドメイン固有のファインチューニング

多くのコードコンプリーションLLMは一般的なコーディングタスクに秀でていますが、我々は特にモデルをDatabricksエコシステム向けにファインチューニングしました。これには、データエンジニアリング、分析、AIワークフローにおける一般的なパターンにフォーカスするように、公開されているノートブック/SQLコードを用いたモデルの継続事前トレーニングが含まれます。これにより、分散環境におけるビッグデータの作業のニュアンスを理解するモデルを作成しました。

## ベンチマークベースのモデル評価

我々の提案の品質と適切性を担保するために、[HumanEval](https://github.com/openai/human-eval)、[DS\-1000](https://ds1000-code-gen.github.io/)、[Spider](https://yale-lily.github.io/spider)のように一般的に使用されているコーディングベンチマークでモデルを評価しました。しかし、これらのベンチマークは一般的なコーディング能力や幾つかのドメイン知識の評価では有用ですが、それらはDatabricksの機能や構文のすべてのカバーしていません。これに対応するために、我々はDatabricksにおいてよく使用されるパッケージや言語のいくつかをカバーする数百のテストケースを持つカスタムのベンチマークを開発しました。この評価フレームワークは、Databricks固有のタスクや製品を使用している際に遭遇したその他の品質問題におけるパフォーマンスを評価するために、一般的なコーディングメトリクスの先を行っています。

どのようにこのモデルを評価したのかに関して興味があるのであれば、特殊なコーディングタスクに対するLLMの評価に関する[最近の記事](https://www.databricks.com/blog/generating-coding-tests-llms-focus-spark-sql)をご覧ください。

## いつ生成すべき(いつ生成すべきでないか)を理解するために

文脈が十分でコードの提案が不要なケースはよくあります。我々の以前のコーディングモデルからの以下の例にあるように、クエリーがすでに完成している場合、モデルによって生成される追加のコンプリーションの全ては助けにならず、邪魔となってしまいます。

![Screenshot 2024-10-11 at 14.36.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/7f2c524b-f83d-43e6-07ad-06e30c395b53.png)

上の例の全てにおいて、理想のレスポンスは空の文字列となります。モデルは時に空の文字列を生成しますが、上のようなケースはイライラさせるには十分なものでした。ここでの問題は、モデルはいつ我慢すべきかを知ること、すなわち、出力を生成せず、空のコンプリーションを返すことです。

これを達成するために、コードのランダムな位置において中くらいの長さの空の文字列を構成するように、5-10%のケースで強制するファインチューニングのトリックを導入しました。この考え方は、これによってモデルにいつコードが完成し、提案が不要であることを教えることになるだろうというものでした。このアプローチは、非常に有効であることが立証されました。SQLでのからのレスポンスのテストケースにおいて、他のコーディングベンチマークのパフォーマンスに影響を与えることなしに、通過率が60%から最大97%に増加しました。さらに重要なこととして、モデルをプロダクションにデプロイしたら、コード提案を承認する割合に明確な増加が認められたというのがあります。このファインチューニングの強化によって、ユーザーにとって特筆すべき品質の改善に直接つながったと言えます。

## 高速かつコスト効率の高いモデルサービング

コードコンプリーションのリアルタイムの特性のため、効率的なモデルサービングが重要となります。GPU利用コストをコントロールしつつも、低レーテンシーの推論を達成するために、[Databricksの最適化GPU高速化モデルサービングエンドポイント](https://www.databricks.com/jp/product/model-serving)を活用しています。このセットアップによって、クイックな提案の提供を可能にし、スムーズでレスポンシブなコーディング体験を確実なものにしています。

# アシスタントオートコンプリートは皆様のニーズのために構築されました

データ&AI企業は、世界で最も困難な問題を解決するために、企業の顧客が自身のデータから価値を抽出できるようにすることにフォーカスしているため、我々はテクノロジーを開発している企業とテクノロジーを活用している企業や組織は、AIがどのようにデプロイされているのかに責任を持って行動するということを固く信じています。

我々は、最初から企業のワークロードの要件を満たすように、アシスタントのオートコンプリートを設計しています。アシスタントのオートコンプリートは、Unity Catalogのガバナンスに準拠しており、特に規制の厳しい業界におけるコンプライアンス標準を満たしています。アシスタントのオートコンプリートは[地理的制限](https://docs.databricks.com/ja/resources/databricks-geos.html)に準拠しており、Protected Health Information (PHI)データの処理を行うワークスペースでも使用することができます。あなたのデータは、顧客間で決して共有さレッズ、モデルのトレーニングに使われることはありません。

詳細に関しては、[Databricks Trust and Safety](https://docs.databricks.com/ja/databricksiq/databricksiq-trust.html)をご覧ください。

# Databricksアシスタントのオートコンプリートを使い始める

Databricksアシスタントのオートコンプリートは、追加コストなしにすべてのクラウドで利用でき、向こう数週間でワークスペースで有効化されます。ユーザーは開発者設定でこの機能の有効化、無効化が可能です:

1. **設定**に移動します。
1. **開発者**の下で、**自動アシスタントによるオートコンプリート**を切り替えます。
1. タイプする過程で提案が自動的に表示されます。提案を受け入れるには**Tab**を押します。手動で提案をトリガーするには、Option + Shift + Space (macOS) or Control + Shift + Space (Windows)を押します。自動提案が無効化されていたとしても、手動で提案をトリガーすることができます。

使い始める際の詳細や、ユースケースの一覧に関しては、[ドキュメント](https://docs.databricks.com/ja/notebooks/use-databricks-assistant.html#use-databricks-assistant-in-a-notebook-cell)や[パブリックプレビューの記事](https://www.databricks.com/jp/blog/introducing-databricks-assistant-autocomplete)をご覧ください。

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)