メインコンテンツへジャンプ
Platform blog

AI Functions のご紹介: 大規模な言語モデルをDatabricks SQLで統合する

AI Functions brings the power of LLMs and more into DB SQL
Share this post

Introducing AI Functions: Integrating Large Language Models with Databricks SQL

翻訳: junichi.maruyama 

大規模言語モデルの分野で素晴らしい進歩が見られる中、お客様から、SQLアナリストが日々のワークフローでこの強力なテクノロジーを活用できるようにするにはどうしたらよいかという問い合わせがありました。

本日、私たちはAI Functions のパブリックプレビューを発表できることを嬉しく思います。AI Functionsは、DBに組み込まれたSQL関数で、SQLから直接Large Language Models(LLM)にアクセスできるようになります。

今回の発表により、使い慣れたSQLのインターフェイスから、自社のデータに対してLLMの実験を素早く行うことができるようになりました。正しいLLMプロンプトを開発したら、Delta Live Tablesやスケジュールされたジョブなど、既存のDatabricksツールを使用して、それを本番用パイプラインに素早く変換することができます。これにより、LLMの開発および生産化のワークフローが大幅に簡素化されます。

AI Functionsは、LLMの呼び出しに関する技術的な複雑さを抽象化し、アナリストやデータ科学者が基礎となるインフラを心配することなく、これらのモデルの使用を開始できるようにします。

AI Functionsの利用

AI機能がどのように機能するかを説明するために、あなたがアナリストで、何千もの通話記録の履歴リストを与えられ、すべての通話を4つのカテゴリー(不満、満足、中立、満足)のいずれかに分類するレポートを作成するタスクを与えられたとします。通常、このような場合、データサイエンス・チームに分類モデルの作成を依頼することになります。しかし、AI Functions を使えば、OpenAIのChatGPTモデルのような大規模言語モデルを、SQLから直接呼び出すことができます。LLMプロンプトの例は、次のようになります:

Prompt: Classify the following text into one of four categories 
[Frustrated, Happy, Neutral, Satisfied]: 

Thanks so much for helping me today, you have resolved my issue with the extra bill.

Response: Satisfied

AI Functionsを使用すると、このプロンプトをカスタムSQL関数にすることができます。これにより、複雑な複数ステップのパイプラインではなく、以下のようなことが可能になります:

SELECT 
transcript_line, 
CLASSIFY_TRANSCRIPT(transcript_line) as classification
FROM
your_dataset

この例を使って、そのために必要なステップを説明していきましょう。ここでは、大規模言語モデルとしてAzure OpenAIサービスを使用しますが、OpenAIを使用することも可能です。今後のリリースでは、DollyのようなオープンソースのLLMを含む、他の大規模言語モデルを有効にする予定です。

以前、Azure OpenAI APIキーをDatabricks Secretとして保存し、SECRET関数で参照できるようにしました。このように保存した上で、新しいAI_GENERATE_TEXT関数を見て、私たちの特定の目的のためにどのように機能させるか見てみましょう:

AI_GENERATE_TEXT(
  prompt,
 'azure_openai/gpt-35-turbo',
 'apiKey', SECRET('tokens', 'azure-openai'),
 "deploymentName", "00000",
 "apiVersion", "2023-03-15-preview", 
 "resourceName", "lakehouserules",
 “temperature”, 0.0
);

AI_GENERATE_TEXT関数を別の関数で囲むことをお勧めします。これにより、トランスクリプトのような入力データを渡すことが容易になり、また、意図する目的をより明確にするために関数に名前を付けることができます:

CREATE OR REPLACE FUNCTION CLASSIFY_TRANSCRIPT(transcript STRING)
RETURNS STRING
RETURN AI_GENERATE_TEXT(
 CONCAT(‘Classify the following text into one of four categories [Frustrated, Happy, Neutral,  
  Satisfied]’, 
  transcript),
 'azure_openai/gpt-35-turbo',
 'apiKey', SECRET('tokens', 'azure-openai'),
 "deploymentId", "llmbricks",
 "apiVersion", "2023-03-15-preview", 
 "resourceName", "llmbricks",
“temperature”, 0.0
);

それだけで、最初に掲げた機能を実現することができ、クエリが以下のようにシンプルになることにつながる:

SELECT 
transcript_line, 
CLASSIFY_TRANSCRIPT(transcript_line) as classification
FROM
your_dataset

Introducing OpenAI Functions in DBSQL

複雑なパイプラインも、データエンジニアが新しいプロセスを作成するためのチケットも、データサイエンティストが新しいモデルを作成するためのチケットも必要ありません。必要なのは、プロンプトを開発するためのちょっとした創造性と、LLMの驚くべきパワーをお客様のデータにもたらすための簡単なSQLだけです。

AI Functionsを使えば、ある言語から別の言語への翻訳、テキストの要約、サポートチームへの次のステップの提案、さらには複数の関数呼び出しによるマルチショットプロンプトなど、大規模言語モデルのパワーを活用することができます。

AI Functionsは、ユーザーがLLMをビジネスに合わせて簡単にカスタマイズし、LLMをデータで使用できるようにするための私たちの旅の始まりにすぎません。皆様がどのようなものを作るのか、今から楽しみです!

AI Functions パブリックプレビューのお申し込みはこちら 。そしてドリーのようなLLMを構築する方法についてのウェビナーはこちらでご確認ください!

Databricks 無料トライアル

関連記事

Engineering blog

Hugging FaceとDeepSpeedによる大規模言語モデルのファインチューニング

March 20, 2023 Sean Owen による投稿 in エンジニアリングのブログ
Original Blog : Fine-Tuning Large Language Models with Hugging Face and DeepSpeed 翻訳: junichi.maruyama ChatGPTのセンセーショナルなリリースを受け、大規模言語モデル(LLM)が現在脚光を浴びています。多くの人が、このようなモデルを自分のアプリケーションでどのように活用できるかを考えています。しかし、これは変換器ベースのモデルのいくつかの進歩の一つに過ぎず、他の多くのモデルは、チャットだけでなく、翻訳、分類、要約などのタスクでオープンかつ容易に利用できます。 以前のブログ では、人気のある Hugging Face トランスフォーマーライブラリを通じて、Databricks上でこれらのモデルにアクセスするための基本的な方法を説明しました。 T5 や BERT...
プラットフォームブログ一覧へ