Unity Catalogによる従来の機械学習開発の強化

[Enhancing Traditional Machine Learning Development\.\.\. \- Databricks Community \- 119349](https://community.databricks.com/t5/technical-blog/enhancing-traditional-machine-learning-development-with-unity/ba-p/119349)の翻訳です。

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

機械学習開発ライフサイクル(MLDLC)には、データの収集からモデルのデプロイメントや監視に至るいくつかのフェーズが関係します。Unity Catalog(UC)は、このプロセスにおけるそれぞれのステップを円滑にし、監視する助けとなり、ライフサイクルを通じて、データが適切に整理され、アクセス可能であり、追跡可能になります。この記事では、MLDLCのそれぞれのフェーズでどのようにUnity Catalogを活用するのか、設計に関する検討事項、ベストプラクティス、リネージ追跡や資産の検索、ユーザーのコラボレーション、セキュリティの監査のような追加の機能を説明します。

# 機械学習開発ライフサイクル(MLDLC)とは？

MLDLCには、初期のデータ収集からモデルのデプロイメントとモニタリングに至る、機械学習のすべてのステージが含まれます。重要なフェーズには以下が含まれます:

1. データの取り込みと準備
1. 特徴量エンジニアリング
1. モデルのトレーニングとチューニング
1. モデルのデプロイメントとモニタリング

正確でスケーラブルな機械学習モデルの開発においては、それぞれのフェーズが重要となります。Unity Catalogは、MLDLCのすべてのフェーズにおいて、データの管理、一貫性の保証、チームのコラボレーションの改善でアシストすることができます。

# Unity Catalog(UC)とは？

Unity Catalog([リンク](https://docs.databricks.com/aws/ja/data-governance/unity-catalog/))は、データアクセスの管理、様々なDatabricksワークスペースにおける一貫性の保証の助けとなる、集中管理されたメタデータサービスです。複数環境におけるデータ資産の管理、ハッkね、追跡を行うための単一のコントロールプレーンを提供し、組織は自身のデータとモデルパイプラインが効率的で、セキュアでコンプライアンス準拠を確実にすることができます。

Unity Catalogを用いることで、組織は構造化され、スケーラブルな方法でデータとAIの資産を管理することができます。このようなデータとAI資産の整理によって、リソースをクイックに特定、アクセスする助けとなり、データ保護規制や内部ポリシーに準拠するために必要なガバナンスを提供します。Unity Catalogにおける効率的なアクセスやスケーラビリティによって、データサイエンティスト、エンジニア、ビジネスステークホルダーは、データの検索ではなく、ユースケース開発にフォーカスでき、最終的には時間を節約し、生産性を改善できます。

以下は、ML開発ライフサイクルのそれぞれのフェーズに対するハイレベルのUnity Catalogの機能のマッピングです。

![](https://community.databricks.com/t5/image/serverpage/image-id/16872iBB287354DF88F55E/image-size/large?v=v2&px=999)
*図1: ML開発ライフサイクルにおけるUnity Catalog*

# MLDLCの各フェーズでUnity Catalogがどのように助けになるのか？

## 設計における検討事項

あなたのML開発パイプラインでUnity Catalogを実装する前に、あなたがデータとAI資産をどのように整理するのかに影響を与えるより広範な設計原則を理解することが重要となります。Unity Catalogの3レベルの名前空間([リンク](https://docs.databricks.com/aws/ja/data-governance/unity-catalog/#unity-catalog-%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88-%E3%83%A2%E3%83%87%E3%83%AB)) - **カタログ > スキーマ > テーブル/ボリューム/モデル**は、様々なユースケース、チーム、セキュリティ要件をサポートするための柔軟性を提供します。以下に、設計のガイドの助けとなるいくつかの普遍的な検討事項を示します:

## 汎用的なガイドライン

- **チームサイズ**
    - 大規模なチームにおいては、ビジネスユニットやプロジェクトごとのスキーマのようなきめ細かい整理が必要かもしれませんが、小規模なチームでは、ブロンズ、シルバー、ゴールドのようにスキーマを共有するかもしれません。
- **プロジェクトの複雑性**
    - 大量のモデルを用いたプロジェクトや、高度なML要件においては、プロジェクトごとの専用スキーマや、単一の抽象化のもとでの複数のモデルを管理するためのラッパーのようなアプローチを使用します。
- **アクセスレベルと権限**
    - すべてのユーザーがすべてにアクセスするわけではありません。Unity Catalogによって、セキュアな利用を確実にするために、カタログ、スキーマ、資産レベルでアクセスコントロールを定義することができます。
- **モデル、関数、特徴量**
    - Unity Catalogにおける一級市民としてモデルを取り扱います - 関数や特徴量と共に格納します。バージョンを上書きすることなしにデプロイメントを制御するために、「Champion」、「Challenger」のようなエイリアスを使用します。
- **発見可能性**
    - チームが適切な資産を特定できるように、タグや一貫性のある命名規則を用います。これは、機能横断チームや大規模な環境で特に有用なものとなります。

## ガイドラインの適用: 不正検知の設計の例

上述の原則を明確にするために、不正検知のMLユースケスにこれらをどのように適用するのかの例を示します:

1. **カタログレベル**
    - **環境の分離:** 実験、テスト、プロダクションデータ間での明確な分離を維持するために、**dev、staging、prod**に対して個別のカタログを使います。
1. **スキーマレベル**
    - **メダリオンアーキテクチャ:** それぞれのカタログにおいて、データ変換処理が構造化されたパイプラインに従うように、**Bronze**(生データ)、**Silver**(クレンジングされたデータ)、**Gold**(補強データ/特徴量)スキーマを定義します。*fraud_detection*のような**ユースケース**固有のスキーマは、不正検知に適したすべての機械学習資産を格納でき、モジュール性と再利用可能性を提供します。
1. **特徴量テーブル**
    - **集中管理と再利用可能性:** Goldスキーマのもとで*user_features*や*product_features*のように共通して使用される特徴量テーブルを格納し、複数のMLモデルで再利用できるようにします。
1. **モデル**
    - **バージョン管理とガバナンス:** 不正検知スキーマにMLモデル(不正分類のための*fraud_clf*など)を登録し、バージョン管理と制御されたデプロイメントを可能にします。
1. **ボリューム**
    - **非テーブルデータへの対応:** 適切なスキーマの下にボリュームに非構造化データ(画像、テキストログなど)を格納し、特徴量エンジニアリングでアクセスできるようにします。
1. **関数**
    - **オンデマンドの特徴量計算:** 不正検知スキーマの下に*compute_distance*のような関数を定義し、モデルがリアルタイムに距離に基づく特徴量を計算できるようにします。

![](https://community.databricks.com/t5/image/serverpage/image-id/16873iD06B23B2ED441ECF/image-size/large?v=v2&px=999)
*図2: サンプルのカタログ構成*

## データの取り込みと準備

生のデータ資産を容易に特定できるようにし、適切に整理され、適切なアクセスコントロールで保護することで、データ取り込みにおいてUnity Catalogは重要な役割を担います。UCによって、データサイエンティストやデータエンジニアは、処理に必要なデータをクイックに特定、アクセスできるようになります。

**データとAI資産の整理:** Unity Catalogの構造は、データテーブルやAIモデルが様々なカタログやスキーマで論理的にグルーピングされ流ことを確実にし、チームが必要とする特定のデータセットをモデルの発見が容易となります。異なる環境を格納し、開発とプロダクションにおけるデータセット間での競合を回避するために、business_unit_dev、staging、prodカタログを定義できます。

**表形式、非表形式データの管理:** UCにおいては、テーブルとボリューム([リンク](https://docs.databricks.com/aws/en/sql/language-manual/sql-ref-volumes))が表形式、非表形式データセット(画像やテキストなど)を管理しつつも、スキーマで関連するオブジェクト(テーブル、ボリューム、モデルすらも)を共にグルーピングします。

**アクセスコントロールと権限管理:** UCはカタログ、スキーマ、テーブルレベルできめ細かいアクセスコントロール([リンク](https://docs.databricks.com/aws/ja/data-governance/unity-catalog/manage-privileges/))を提供し、許可されたユーザーのみが機微なデータセットにアクセスできることを確実にします。また、組織は容易に様々なデータセットやML資産に対するアクセスポリシーを設定できるので、データプライバシーやセキュリティ規制に対する準拠をサポートします。

## 特徴量エンジニアリング

特徴量エンジニアリング([リンク](https://docs.databricks.com/aws/ja/machine-learning/feature-store))フェーズに進んでも、Unity Catalogは重要なメリットを提供し続けます。UCにおける特徴量テーブルは、モデルトレーニングの基盤として動作するように設計されています。特徴量テーブルは、明示的にモデルトレーニングのために作成されたデータセットであり、MLモデルのパフォーマンスの改善の助けとなる適切な特徴量を格納しています。

**特徴量テーブルの構造:** UCによって、チームはMLパイプラインの異なるステージに対するバージョン管理された特徴量テーブルを作成することができます。例えば、(上の図にある)不正検知んユースケースでは、user_features、product_features、fraud_detection_featuresのような複数の特徴量テーブルが必要となるかもしれません。これらの特徴量テーブルは洗練され、モデルトレーニングに利用可能であることを強調するために、ゴールドスキーマに格納することができます。

**関数の機能:** UCによって、オンデマンドで特徴量を計算するためにPython UDFを使用することができます。例えば、推論時に位置に基づく特徴量を計算するために、不正検知モデルでcompute_distance関数を作成することができます。このように、Unity Catalogにおける関数は、動的な特徴量エンジニアリングで重要なリアルタイムやバッチ計算処理を提供します。

## モデルのトレーニングとチューニング

データの変換処理と特徴量エンジニアリングを完了したら、次のフェーズには適切なアルゴリズムの選択、モデルのトレーニング、ハイパーパラメータのチューニングが関わってきます。このプロセスには、モデルの管理やデプロイメントが重要な検討事項となる、モデルパフォーマンスを最適化するための繰り返しの実験が必要となります。

### モデルの管理

Unity Catalogは、モデルの登録、バージョン管理、モデルエイリアスを通じた柔軟なデプロイメントをサポートするホスティングされたMLflowモデルレジストリを提供することで、機械学習モデル管理に対する統合ソリューションを提供し、環境横断でのモデルの参照やプロモーションが容易になります([リンク](https://docs.databricks.com/aws/ja/machine-learning/manage-model-lifecycle/#unity-catalog-%E4%BA%92%E6%8F%9B%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E3%83%88%E3%83%AC%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%97%E3%81%A6%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8B))。

メタストアレベルで集中管理されたアクセスコントロールやガバナンスによって、様々な環境で許可されたユーザーのみが登録されたモデルにアクセス、変更できるようにし、すべてのワークスペースで一貫性のある権限が適用されることを確実にします([リンク](https://docs.databricks.com/aws/ja/machine-learning/manage-model-lifecycle/#%E3%83%A2%E3%83%87%E3%83%AB%E3%81%B8%E3%81%AE%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%AE%E5%88%B6%E5%BE%A1))。

3レベルの名前空間を用いて、Unity Catalogによって組織は異なる環境ごとに個別の登録モデルを作成したり、開発、ステージング、プロダクションにおいて単一のモデルをシームレスにプロモーション([リンク](https://docs.databricks.com/aws/ja/machine-learning/manage-model-lifecycle/#%E7%92%B0%E5%A2%83%E9%96%93%E3%81%A7%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E6%98%87%E6%A0%BC%E3%81%95%E3%81%9B%E3%82%8B))しつつも堅牢なガバナンスを維持することができます([リンク](https://docs.databricks.com/aws/ja/data-governance/unity-catalog/#unity-catalog-%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88-%E3%83%A2%E3%83%87%E3%83%AB))。

DatabricksのFeature Storeとのネイティブなインテグレーションによって、モデルトレーニングで使用された特徴量を追跡し、推論で利用できるようにすることで、さらにこのプロセスを円滑にし、モデルのデプロイメントと更新をシンプルにします。

## モデルのデプロイメントとモニタリング

パフォーマンスがベストなモデルを特定したら、プロダクションにデプロイし、いかなるモデルドリフトを検知できるように継続的に関しすべきです。このプロアクティブなモニタリングによって、モデルドリフトが生じた際にタイムリーに再トレーニングを行うことができます。Unity Catalogがどのようにモデルのデプロイメントと継続的なモデル監視を促進するのかをみてみましょう。

### モデルのデプロイメント

Unity Catalogを有効化することで、従来のMLモデル、生成AIモデル、AIエージェントをデプロイするためのDatabricksモデルサービング([リンク](https://docs.databricks.com/aws/ja/machine-learning/model-serving/))を活用することができます。API/SDK/Databricks UIを用いてこれらのモデルをデプロイすることができます。

モデルのエイリアス([リンク](https://docs.databricks.com/aws/ja/machine-learning/manage-model-lifecycle/#%E3%83%A2%E3%83%87%E3%83%AB-%E3%82%A8%E3%82%A4%E3%83%AA%E3%82%A2%E3%82%B9%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B))を用いることでモデルのデプロイが容易となり、モデルの特定バージョンに名前をつけることができます。これによって、どのバージョンが現在プロダクションで使用されているのかを追跡する助けとなります。例えば、現行のプロダクションモデルを「Champion」としてラベル付けすることができます。プロダクションモデルを更新したい際には、新規バージョンに「Champion」ラベルを割り当てるだけで済みます。このように、「Champion」モデルを使用しているすべてのワークロードは自動的に新規バージョンに切り替わります。

### モデルのモニタリング

MLモデルをデプロイしたら、モデルの品質がビジネス要件に応え続けるように、継続的なモニタリング機構をセットアップする必要があります。Unity Catalogの推論テーブル([リンク](https://docs.databricks.com/aws/ja/machine-learning/model-serving/inference-tables))は、モデルサービングエンドポイントにおける入力リクエストと出力のレスポンスを自動で捕捉し、Unity CatalogのDeltaテーブルに記録するので、モデルの監視とデバッグのための容易な手段を提供します。MLモデルの監視、デバッグ、改善にこのテーブルを使用することができます。

![](https://community.databricks.com/t5/image/serverpage/image-id/16877iE6EC1A832987ACFC/image-size/large?v=v2&px=999)
*図3: 推論テーブルの典型的なワークフロー*

## その他の検討事項

機械学習ライフサイクルを通じて、リネージ、発見可能性、コラボレーション、監査は適用可能なので、Unity Catalogを活用して、これをどのように達成できるのかを知ることが重要です。

### リネージ

Unity Catalogでモデルをトレーニングすると、トレーニング、評価した上流のデータセットに対するモデルのリネージを追跡することができ、Unity Catalogはモデルの起源や変更を含むモデルのリネージの記録を維持し、透明性と再現可能性を促進します。

![](https://community.databricks.com/t5/image/serverpage/image-id/16875iC782C8B47BAE31BB/image-size/large?v=v2&px=999)
*図4: サンプルのモデルとデータのリネージ*

### 発見可能性

Unity Catalogによって、カタログエクスプローラとMLflow API([リンク](https://docs.databricks.com/aws/ja/machine-learning/manage-model-lifecycle/#%E3%83%AA%E3%82%B9%E3%83%88%E3%81%A8%E6%A4%9C%E7%B4%A2%E3%83%A2%E3%83%87%E3%83%AB))の両方でMLモデルを検索することができます。カタログエクスプローラを用いることで、モデルのスキーマ詳細、サンプルデータのプレビュー、モデルのタイプ、モデルの場所、モデルの履歴、頻繁に実行されるクエリーやユーザー、そのほかの詳細を参照することができます。カタログエクスプローラや検索バー([リンク](https://docs.databricks.com/aws/ja/search/#%E3%83%8A%E3%83%93%E3%82%B2%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E6%A4%9C%E7%B4%A2))でシンプルなキーワードを使用すると、以下のようにキーワードにマッチするモデルの一覧が返却されます。

**カタログエクスプローラ**

![](https://community.databricks.com/t5/image/serverpage/image-id/16876iD4C12DBDB960078E/image-size/large?v=v2&px=999)

**検索バー(Databricksワークスペースのトップバーに配置)**

![](https://community.databricks.com/t5/image/serverpage/image-id/16878i91AF7A8692696134/image-size/large?v=v2&px=999)
*図5: UCによる発見可能性*

オブジェクトを整理、分類するために、Unity Catalogでタグ([リンク](https://docs.databricks.com/aws/ja/database-objects/tags))を使用することができ、検索や発見をより容易にします。タグはグローバルに複製可能なので、セキュリティを維持するために、タグの名前や値にセンシティブな情報を含めないようにしましょう。

### コラボレーション

Unity CatalogはデータとAI資産を集中管理するので、メタストアに接続されるすべてのワークスペースからモデルにアクセスできるようにし([リンク](https://docs.databricks.com/aws/ja/machine-learning/manage-model-lifecycle/#%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E9%96%93%E3%81%A7%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E5%85%B1%E6%9C%89%E3%81%99%E3%82%8B))、指定されたユーザーが必要な権限を持つことで、チーム間でのシームレスなコラボレーションを可能にします。この環境によって、開発ワークスペースからプロダクションモデルにアクセスするなど、異なる環境横断でプロダクションのベースラインと新規モデルの比較が容易になります。コラボレーションを促進するために、モデルのオーナーシップはすべてのコラボレーターを含むグループに委任することができます。

![](https://community.databricks.com/t5/image/serverpage/image-id/16895iD1CFDF49F1D95140/image-size/large?v=v2&px=999)
*図6: データセット、特徴量テーブル、関数、ボリューム、MLモデルの整理*

上の図では、プロジェクト固有のスキーマ(この場合はchurn)でデータセット、特徴量テーブル、関数、ボリューム、MLモデルをUnity Catalogがどのように整理できるのかを示しています。

### 監査

Unity Catalogは、Databricks環境における機械学習開発を通じて実行されたすべてのアクションを詳細な監査ログに自動でキャプチャします。これらのログには、特徴量テーブル([リンク](https://docs.databricks.com/aws/ja/admin/account-settings/audit-logs#%E7%89%B9%E5%BE%B4%E9%87%8F%E3%82%B9%E3%83%88%E3%82%A2%E3%81%AE%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88))、エクスペリメント([リンク](https://docs.databricks.com/aws/ja/admin/account-settings/audit-logs#mlflow-%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%AA%E3%83%A1%E3%83%B3%E3%83%88%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88))、モデル([リンク](https://docs.databricks.com/aws/ja/admin/account-settings/audit-logs#mlflow-%E3%83%A2%E3%83%87%E3%83%AB%E3%83%AC%E3%82%B8%E3%82%B9%E3%83%88%E3%83%AA-%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88))のようなデータとAI資産に対するアクセスや変更に関する情報が含まれます。これらは、誰が特定のデータセットにアクセスしたのか、どのようなアクションがなされたのかに関するきめ細かい可視性を提供し、透明性と説明責任を確実なものにします。

# まとめ

Unity Catalogは単なるガバナンスツールではありません - あなたのML開発ライフサイクルにおける戦略的なイネーブラです。熟考した設計と一貫性のある構造によって、組織が業界の厳格なコンプライアンス標準や監査の要件に応えることができ、強化されたチームのコラボレーションを醸成し、円滑化されたリネージ追跡や資産の検索を可能にします。

# アクションの呼びかけ

**スタートしたばかりなら、** メダリオンアーキテクチャ([リンク](https://docs.databricks.com/aws/ja/lakehouse/medallion))を用い、ユースケース固有のスキーマを特定して、あなたのカタログとスキーマをマッピングしましょう。

**すでにUnity Catalogを使っていますか？** 上で共有した設計原則を用いて、あなたのアクセスポリシー、タグ付けの標準、MLモデルの登録などの次のステップに進みましょう。

**さらに詳細を知りたい、あるいはあなたのUnity Catalogの構成の設計で助けが必要ですか？** Databricksアカウントチームに連絡するか、DatabricksのUnity Catalogドキュメントを探索しましょう。

### はじめてのDatabricks

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

### Databricks無料トライアル

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