DatabricksにおけるLLMOpsのベストプラクティス

本日、こちらのイベントに登壇させていただきました。

https://algomatic.connpass.com/event/333748/

スライドはこちらです。

<script defer class="speakerdeck-embed" data-id="189c52b61c0f408b85e2f102882d488e" data-ratio="1.7772511848341233" src="//speakerdeck.com/assets/embed.js"></script>

1. MLOpsとは？
1. LLMOpsとは？
1. LLMOpsのベストプラクティス
1. DatabricksのMosaic AI
1. (時間があれば)デモ

# MLOpsとは？

MLOpsとは機械学習モデルライフサイクル全般を円滑にするために必要な体制・基盤・手法全般を意味します。

MLOps(Machine Learning Operations)とは、データサイエンスチーム、運用チームなど、機械学習モデルの構築・運用に関わるチームが協調し、円滑に機械学習モデルを運用していくための体制・基盤を構築すること、その概念全般を意味します。

MLOps = DataOps + DevOps + ModelOpsです。

# LLMOpsとは？

LLMOpsとはLLMライフサイクル全般を円滑にするために必要な体制・基盤・手法全般を意味します。

LLMOps(Large Language Model Operations)とは、データサイエンスチーム、運用チームなど、LLMの構築・運用に関わるチームが協調し、円滑にLLMを運用していくための体制・基盤を構築すること、その概念全般を意味します。

従来のMLモデルがLLMに置き換わったようにも見えますが、実際にはプロンプトやチェーン、フロントエンドなどもまとめてオペレーションする必要があるので、さらに広い範囲をケアしなければいけません。

# MLOps - LLMで何が変わる？

| LLMの特性 | MLOpsの示唆 |
|:--|:--|
|様々な形態でLLMを利用可能   | インクリメンタルな開発プロセス、APIからスモールスタートして、精度を求める過程でファインチューニングしたカスタムモデルへ  |
| LLMは入力として自然言語のプロンプトを受け入れる  |  LLMに問い合わせを行う**テストテンプレートの設計**が開発プロセスの重要な一部に、パッケージングされるアーティファクトとプロダクションにおけるプロンプトは、**モデルというよりパイプラインに** |
| LLMにはサンプルやコンテキストを伴うプロンプトを指定可能  |  適切なコンテキストの検索に使用される**ベクトルデータベース**のような外部ツールをサービングするインフラストラクチャは必要に |
|  サードパーティのAPIプロバイダー経由でプロプライエタリモデルやOSSモデルを利用可能 |  APIプロバイダーをスイッチできる**選択可能性や柔軟性**を持つために、APIガバナンスのための集中管理されたシステムを持つことが重要に |
| LLMは非常に大きなディープラーニングモデルであり、多くの場合、**数Gバイトから数百Gバイトに**  | サービングのインフラストラクチャ: LLMのサービングには**GPUが必要**。モデルを動的にロードする必要がある場合には、高速なストレージが重要  |
|  LLMにおいては、多くの場合、**単一の「適切な」回答が存在しない**ため、従来のMLメトリクスを通じた評価が困難 | 人間のフィードバック: LLMの評価、テストで必要になることが多い。将来的なファインチューニングのためには、**テスト、モニタリングを含むMLOpsに直接組み込む**ことが重要に  |

これらの新たな要件に適合するために、多くの既存ツール、既存プロセスの修正は軽微です
- 開発、ステージング、プロダクションの分離は変わりません
- パイプラインやモデルをプロダクションに移行する際に、Gitのバージョン管理と[Unity CatalogにおけるMLflowモデルレジストリ](https://docs.databricks.com/ja/mlflow/models-in-uc.html)は依然として主要なパイプラインとなります。
- データ管理に対するレイクハウスアーキテクチャは、効率性のために依然として適切で重要です。
- 既存のCI/CDインフラストラクチャには変更はありません。
- モデルトレーニングのためのパイプライン、モデル推論のためのパイプラインなどを用いた、モジュール化されたMLOpsの構造は同じです。

![Screenshot 2024-11-07 at 20.41.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/cf1414d4-34d4-7382-d89e-6645b19c3da8.png)

# LLMOpsのベストプラクティス

![Screenshot 2024-11-07 at 20.43.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/5014d10f-9d7c-a44f-617e-a603e7a9d106.png)

## 機械学習にデータ中心アプローチを採用

- いかなるMLプロジェクトにおいても、コアとなる構成要素はシンプルに**データパイプライン**と見なすことができます: 特徴量エンジニアリング、トレーニング、モデルのデプロイメント、推論、パイプラインのモニタリングのすべてはデータパイプラインです。
- そのようなMLソリューションの本格運用には、予測結果、モニタリングからのデータ、特徴量テーブルやその他の適切な**データとの結合**が必要となります。
- 基本的に、これを達成する最もシンプルな方法は**プロダクションデータの管理に用いられているのと同じプラットフォーム**でAIを活用したソリューションを開発することです。

Databricksの[Unity Catalog](https://docs.databricks.com/ja/data-governance/unity-catalog/index.html)では、データやモデルは同じ場所で管理されます。

![Screenshot 2024-11-07 at 20.45.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/09789cd5-4dec-f23c-8095-8ed30448f9ea.png)

そして、ペルソナやスキルレベル、シナリオに合わせたAIモデルの構築が可能です。

![Screenshot 2024-11-07 at 20.47.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/15758a7a-dcdb-dc04-092a-902c6bd95a97.png)


## 常にビジネスゴールを念頭に置く

- LLMOpsにおける技術的な取り組みの優先度付けを行う際、**ビジネスインパクトを考慮**しましょう: これは新たなビジネスユースケースを実現するのか？データチームの生産性を改善するのか？オペレーションコストやリスクを削減するのか？
- **最新、あるいは最も複雑なモデル**によって気が逸らされる誘惑に抗いましょう。はじめに、シンプルな経験則を用いてあなたのKPIやベースラインの成功を定義しましょう。

## モジュール化された方法でLLMOpsを実装する

- すべてのソフトウェアアプリケーションと同じように、LLMアプリケーションにおいて**コードの品質は最重要事項**です。
- モジュール化されたコードによって、個々のコンポーネントのテストを可能にし、将来的なコードのリファクタリングの難易度を軽減します。

## プロセスは自動化をガイドすべきである

- 開発プロセスは最も重要なものであり、このプロセスにおけるそれぞれのモジュールは必要に応じて自動化されるべきです。
- 依然として、人間がビジネス上の質問を定義し、いくつかのモジュールは常にデプロイメントの前に人間による確認を必要とします。
- 特定の自動化ツールを検討する際、あなたの人材やプロセスに調和するものを選択しましょう。
- 例えば、エージェントシステムを構築する場合、エージェントの開発から管理、監視までもカバーするMosaic AI Agent Framework & Agent Evaluationを活用することができます。

Databricksでは、開発当初から評価の仕組みを組み込む**評価ドリブン開発ワークフロー**を提唱しています。これを実現するのが、[Agent Framework](https://docs.databricks.com/ja/generative-ai/retrieval-augmented-generation.html#what-is-mosaic-ai-agent-framework)や[Agent Evaluation](https://docs.databricks.com/ja/generative-ai/agent-evaluation/evaluate-agent.html)です。

![Screenshot 2024-11-07 at 20.47.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/62b6e8b3-83dd-e2ac-b038-7960289ecc28.png)

# DatabricksのMosaic AI

[Mosaic AI](https://www.databricks.com/jp/product/machine-learning)は、Databricksにおいて生成AIに関わるすべてのことをサポートするツールスイートです。モデルの事前学習やファインチューニング、RAGを含むエージェントシステムの開発、運用を強力にサポートします。

![Screenshot 2024-11-07 at 20.48.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/bcfb42e6-f61d-55dc-d2d8-84ea5e742185.png)

Databricksのレイクハウスアーキテクチャに完全にインテグレーションされています。

![Screenshot 2024-11-07 at 20.50.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/bf5b7287-6678-2653-c362-f3e2fe0b4992.png)

データの準備から開発、評価、本番環境へのデプロイと監視まで、生成AIアプリのライフサイクルをサポートします。

![Screenshot 2024-11-07 at 20.51.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/de37d968-2488-5351-9e00-0abf45d8e5ed.png)

# デモ

クッキーの販売データを取り扱うチャットbotの開発を想定しています。

最初にデータベースに格納されている売り上げデータや店舗データにアクセスするツールをSQLで開発します。

![Screenshot 2024-11-07 at 20.52.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/b35129cf-f1bd-79dc-cba7-5ef87b6bc977.png)

次に、上記のツールを用いてプロトタイピングを行います。AI Playgroundを用いることで、言語モデルとツールを選択するだけでチャットbotの挙動を確認することができます。

![Screenshot 2024-11-07 at 20.53.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/28a9875c-334f-9fd6-2f87-dd893a463980.png)
![Screenshot 2024-11-07 at 20.54.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/86143e5c-8f47-cc94-0825-f05d6ce38796.png)

ここから、チェーンを含むPython実装のノートブックをエクスポートすることができ、そのままサービングエンドポイントにレビュー用アプリと一緒にデプロイすることができます。

専門家にレビューアプリを用いて評価してもらい、フィードバックを収集することもできます。

![Screenshot 2024-11-07 at 20.55.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/77977ada-d864-e528-0c57-d96cb2c8c9fd.png)

フィードバックを監視するダッシュボードを構築することができるので、必要に応じてモデルや仕組みの見直しが可能です。

![Screenshot 2024-11-07 at 20.56.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/d23278ed-52ce-1686-f745-d357235ea011.png)


### はじめてのDatabricks

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

### Databricks無料トライアル

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