【Databricks】DatabricksにおけるAIと機械学習について整理してみた

# 背景・目的
以前、[MLOps概要](https://qiita.com/zumax/items/d85c11c869a80237746b)では、MLOpsについて整理しましたが、今回は、DatabricksにおけるAIと機械学習について整理します。

# まとめ

下記に特徴をまとめます。

|特徴 | 説明|
|:--|:--|
|概要|Databricksにより、機械学習パイプライン全体でエンドツーエンドのガバナンスを使用して単一のPFに完全な機械学習ライフサイクルを実装できる|
| ディープラーニング|・Databricks Runtime for Machine Learning<BR>　・ディープラーニングライブラリやサポートライブラリの互換性のあるバージョンが組み込まれているクラスタを使用する<BR>　・GPUサポートも含まれる<BR>　・機械学習ワークフローやAIアプリをスケーリングするためのコンピュート処理を並列化するRay等のライブラリをサポート・<BR>・ ドライバーとサポートライブラリによる事前構成されたGPUサポートも含まれる<BR>・モデルサービングにより、追加の構成を行わず、ディープラーニングモデル用のスケーラブルなGPUエンドポイントを作成できる|
|LLMと生成AI|・Databricks Runtime for Machine Learningには、下記のライブラリが含まれている<BR>　・Hugging Face Transformers<BR>　・LangChain<BR>・既存の事前トレーニング済みモデルやその他のOSSのライブラリをワークフローに統合できる<BR>・Databricks MLflow統合により、下記で、MLFlow追跡Databricksワークフローに統合できる<BR>　・トランスフォーマーパイプライン<BR>　・モデル<BR>　・処理コンポーネント|
|Databricks Runtime機械学習|最も一般的なML、DLライブラリを含む事前に構築された機械学習とディープラーニングインフラを使用してクラスターの作成を自動化する|


下記の組み込みツールがある

|ツール | 説明|
|:--|:--|
|Unity Catalog | データ、機能、モデル、および関数のガバナンス、検出、バージョン管理、およびアクセス制御|
|データモニタリング|レイクハウスモニタリング|
|Feature Engineering and Serving||
|自動モデル トレーニング用|Databricks AutoML|
|モデル開発の追跡|MLflow|
|モデル管理|Unity Catalog|
|モデルの予測品質とドリフトを追跡|レイクハウスモニタリング|
|自動化されたワークフローと本番運用対応の ETL パイプライン|Databricks Workflows|
|コード管理と Git 統合|Databricks Git|

# 概要
[DatabricksにおけるAIと機械学習](https://docs.databricks.com/ja/machine-learning/index.html)を元に整理してみます。

> この図は、これらのコンポーネントがどのように連携して、モデルの開発とデプロイのプロセスを実装するかを示しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/f2d6d78e-8dbd-6819-e969-5783f69812cd.png)

## 機械学習とディープラーニングに Databricks を使用する理由
> Databricks を使用すると、機械学習パイプライン全体でエンドツーエンドのガバナンスを使用して、単一のプラットフォームに完全な機械学習ライフサイクルを実装できます。 Databricks には、機械学習ワークフローをサポートするための次の組み込みツールが含まれています。

> - データ、機能、モデル、および関数のガバナンス、検出、バージョン管理、およびアクセス制御のためのUnity Catalog。
> - データモニタリングのためのレイクハウスモニタリング。
> - 特徴エンジニアリングとサービング。
> - モデルライフサイクルのサポート:
>   - 自動モデル トレーニング用の Databricks AutoML。
>   - モデル開発の追跡のための MLflow。
>   - モデル管理Unity Catalog。
>   - Databricks モデルサービング for high-availability, low-latency modelsaービング. これには、以下を使用した LLM の展開が含まれます。
>     - 基盤モデル APIs 、サービスエンドポイントから最先端のオープンモデルにアクセスしてクエリを実行できます。
>     - Databricks の外部でホストされているモデルにアクセスできる外部モデル。
>   - レイクハウスモニタリング、モデルの予測品質とドリフトを追跡します。
> - 自動化されたワークフローと本番運用対応の ETL パイプラインDatabricks Workflows。
> - コード管理と Git 統合のためのDatabricks Git フォルダー。

- Databricksにより、機械学習パイプライン全体でエンドツーエンドのガバナンスを使用して単一のPFに完全な機械学習ライフサイクルを実装できる

## Databricks でのディープラーニング
> Databricks Runtime for Machine Learning は、TensorFlow、PyTorch、Keras などの最も一般的なディープラーニング ライブラリと、Petastorm、Hyperopt、Horovod などのサポート ライブラリの互換性のあるバージョンが組み込まれたクラスターを使用して、これを処理します。 Databricks Runtime 機械学習クラスターには、ドライバーとサポート ライブラリによる事前構成された GPU サポートも含まれています。 また、機械学習ワークフローや AI アプリケーションをスケーリングするためのコンピュート処理を並列化するRayのようなライブラリもサポートしています。

- Databricks Runtime for Machine Learningは、ディープラーニングライブラリやサポートライブラリの互換性のあるバージョンが組み込まれているクラスタを使用する
- GPUサポートも含まれる
- 機械学習ワークフローやAIアプリをスケーリングするためのコンピュート処理を並列化するRay等のライブラリをサポート


> Databricks Runtime 機械学習クラスターには、ドライバーとサポート ライブラリによる事前構成された GPU サポートも含まれています。 Databricks モデルサービングを使用すると、追加の構成を行わずに、ディープラーニング モデル用のスケーラブルな GPU エンドポイントを作成できます。

- ドライバーとサポートライブラリによる事前構成されたGPUサポートも含まれる
- モデルサービングにより、追加の構成を行わず、ディープラーニングモデル用のスケーラブルなGPUエンドポイントを作成できる

## Databricksの大規模言語モデル(LLM)と生成AI
> Databricks Runtime for Machine Learning には、 Hugging Face Transformers や LangChain などのライブラリが含まれており、既存の事前トレーニング済みモデルやその他のオープンソース ライブラリをワークフローに統合できます。 Databricks MLflow 統合により、トランスフォーマー パイプライン、モデル、処理コンポーネントで MLflow 追跡サービスを簡単に使用できます。 さらに、 John Snow Labs などのパートナーの OpenAI モデルやソリューションを Databricks ワークフローに統合できます。

- Databricks Runtime for Machine Learningには、下記のライブラリが含まれている
    - Hugging Face Transformers
    - LangChain
- 既存の事前トレーニング済みモデルやその他のOSSのライブラリをワークフローに統合できる
- Databricks MLflow統合により、下記で、MLFlow追跡Databricksワークフローに統合できる
    - トランスフォーマーパイプライン
    - モデル
    - 処理コンポーネント

> Databricks を使用すると、特定のタスクに合わせてデータの LLM をカスタマイズできます。 Hugging FaceやDeepSpeedなどのオープンソースツールのサポートにより、LLMの基礎を効率的に取得し、独自のデータを使用してトレーニングして、特定のドメインとワークロードの精度を向上させることができます。 その後、生成AI アプリケーションでカスタム LLM を活用できます。

- 特定のタスクに合わせてデータのLLMをカスタマイズできる

> さらに、Databricks には Foundation Model APIs と外部モデルが用意されており、サービスエンドポイントから最先端のオープン モデルにアクセスしてクエリを実行できます。基盤モデル APIsを使用すると、開発者は独自のモデル デプロイを維持することなく、高品質の生成 AI モデルを活用するアプリケーションを迅速かつ簡単に構築できます。

- Foundation Model APIsと外部モデルが用意されている
- サービスエンドポイントから最先端のオープンモデルにアクセスしてクエリを実行できる
- Foundation Model APIsを使用すると、開発者は独自のモデルを維持することなく、高品質の生成AIモデルを活用するアプリケーションを迅速かつ簡単に構築できる

> Databricks は、SQL ユーザー向けに、SQL データアナリストがデータ パイプラインとワークフロー内で OpenAI を含む LLM モデルに直接アクセスするために使用できる AI 関数を提供します。 「DatabricksのAI関数」を参照してください。

- SQLユーザ向けにSQLデータアナリストがデータパイプラインとワークフロー内でOpenAIを含むLLMモデルに直接アクセスするために使用できるAI関数を提供する

## Databricks Runtime機械学習
> Databricks Runtime for Machine Learning (Databricks Runtime ML) は、最も一般的な ML および DL ライブラリを含む、事前に構築された機械学習とディープラーニング インフラストラクチャを使用してクラスターの作成を自動化します。

- 最も一般的なML、DLライブラリを含む事前に構築された機械学習とディープラーニングインフラを使用してクラスターの作成を自動化する


# 考察
今回、DatabricksにおいてのAIと機械学習について整理してみました。Databricksを利用することで単一のプラットフォームに完全な機械学習ライフサイクルを実装できます。今後は、実際にハンズオンで詳細を確認しようと思います。

# 参考
https://qiita.com/zumax/items/d85c11c869a80237746b

https://www.databricks.com/jp/glossary/mlops

https://docs.databricks.com/ja/machine-learning/index.html

https://docs.databricks.com/ja/machine-learning/mlops/mlops-workflow.html

https://docs.databricks.com/ja/mlflow/index.html