最新のアプリケーション開発-機械学習および人工知能
最新の機械学習ツールキットは、オープン・ソースで、Pythonで記述されています。そのため、機械学習プラットフォームは、オープン・ソース・フレームワークとPythonをネイティブにサポートする必要があります。また、ユーザーは独自のライブラリをインストールするか、すでにインストールされているライブラリをアップグレードすることで、機械学習環境をカスタマイズすることもできます。このプラットフォームにより、データ・サイエンティストは、構造化データ、非構造化データ、半構造化データについてモデルをトレーニングするとともに、抽出、変換およびロード(ETL)やトレーニング手順を複数のコンピュート・リソースにわたって垂直または水平にスケーリングできるようになります。
最後に、機械学習プラットフォームは、最小限の摩擦(通常は単純なRESTコールを介して)でモデルをリアルタイムに消費するために簡単にデプロイできることを保証する必要があります。同時に、デプロイ済のモデルの系統を保持して、監査や再現が可能であることを確認してください。
このドキュメントでは、機械学習プラットフォームの作成および最適な実装パスに関連する設計原則を示します。このパターンを使用して、データ・サイエンティスト・ユーザーのニーズを満たす機械学習プラットフォームを作成します。
設計方針
このアーキテクチャは、次の方法で最新のアプリケーション開発原則を実装します。
- 原則:軽量オープンソース・フレームワークと成熟プログラミング言語を使用
Python仮想環境またはDockerイメージではなく、複雑な環境を使用してください。特定のユース・ケースに対処するために選択したPythonライブラリのコレクションを含むキュレーション・データ・サイエンス・コンマ環境を提供しています。通常、Conda環境はPythonで適切なレベルの分離を提供し、複数の環境を同じノートブック環境またはバッチ・ジョブで実行できるようにすることで、柔軟性を実現し、Dockerイメージより簡単に構築できます。コンダ環境は、単純なアーカイブ(gzipおよびzip)であるため、エクスポートとインポートも簡単です。
すぐに使えるコンマ環境のセットから始めましょう。これらの環境は、それらに含まれるパッケージに、使用可能な最新バージョンが反映されるように定期的にアップグレードされます。各環境には、ドキュメントとコード例が含まれています。この環境は、Python 3.6以上での機械学習モデルの構築、トレーニングおよびデプロイに使用できます。これらの環境を採用して、様々なアーキテクチャ・コンポーネント間の互換性を確保します。
- 原則: APIを介して通信するサービスとしてアプリケーションを構築します。
Data Scienceのモデル・デプロイメント機能を採用し、他のアプリケーションが消費できるスケーラブルHTTPエンドポイントとしてモデル・カタログからモデルをデプロイします。モデル・トレーニング環境には、デプロイメント環境と同じサード・パーティ依存関係が含まれていることが課題になる場合があります。データ・サイエンス・モデル・デプロイメントでは、HTTPエンドポイントの背後にあるモデルを実行するために、適切なカンマ環境をプルすることで、その課題に対処します。モデル・デプロイメントでは、Oracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)の認証および認可も提供されるため、ユーザー自身とアクセス管理プロトコルを構築および構成する必要はありません。
Oracle Functionsを介して機械学習モデルをデプロイする方法で、APIゲートウェイのバックエンドとして使用できます。このオプションは、特にAPIを定義する場合や、OAuthや基本認証などの異なる認可プロトコルを使用する場合の柔軟性を提供します。ただし、必要な作業は増えるほど自動化されず、ユーザー・エラーが発生しやすくなっています。Oracle Functionsでは、独自のDockerイメージを構築し、必要なすべての依存関係およびPythonランタイム・バージョンがトレーニング環境と一致している必要があります。ほとんどのデータ・サイエンス・チームは、このオプションを回避する必要があります。
- 原則:ビルド、テストおよびデプロイメントの自動化
DevOpsは、MLOpsが機械学習に対するソフトウェア開発です。本番でのモデルの構築、テスト、評価、デプロイおよび監視を中心とした一連のプロセスおよび自動化です。Data Scienceでのジョブおよびモデル・デプロイメントを通じて、繰り返し可能で監査可能で再現可能なパターンの使用を推奨します。テストの構築、実行および自動化がより困難なノートブック・セッションから直接、モデルのトレーニングおよびデプロイメントを回避します。データの準備、モデルのトレーニングおよびテストの定義を行うすべてのコードがバージョン管理されていることを確認します。OCI DevOpsサービスを介して、またはData Scienceのジョブから直接、ビルドおよびデプロイメント・パイプラインを実行します。モデル・カタログ・アーティファクト・ボイラープレート・コードに含まれる一連のモデル・イントロスペクション・テストを実行します。これらのテストが正常に実行されると、モデルは本番環境にデプロイされたときに発生するエラーの数が最小化されます。
- 原則:完全なマネージド・サービスを使用して、アプリケーション開発、ランタイム、データ管理全体の複雑さを排除
データ・サイエンティストがOCIデータ・カタログを通じてデータ・アセットを記録する場合でも、OCIデータ・フローで大規模なデータ処理ジョブを実行する場合でも、データ・サイエンスを通じて機械学習モデルを構築、トレーニングおよびデプロイする場合でも、これらすべてのソリューションが完全に管理されます。これらの環境のプロビジョニング、パッチ適用、保護についてご注意ください。完全管理型ソリューションにより、インフラストラクチャを管理するのではなく、モデルをトレーニングして展開することを目標とするデータ・サイエンティストのチームにおける運営の負担を大幅に軽減します。優れた機械学習プラットフォームは、追加の構成を必要とせずに、様々なインフラストラクチャ製品(CPU、GPU、柔軟なシェイプ)を提供します。
- 原則:証書のエンドツーエンドの監視およびトレース
すべてのワークロードには、OCIモニタリング・サービスによって発行される基本的なヘルス・メトリックが必要です。ユーザーは、アラートのカスタム・メトリックしきい値を定義し、特定のしきい値に達したときに通知または対処できます。これにより、ジョブ、ノートブック・セッションまたはモデル・デプロイメントの動作状態を監視できます。
ユーザーがジョブおよびモデル・デプロイメントからOCIロギング・サービスにカスタム・ログを送信できるようにします。ほとんどの場合、データ・サイエンティストは、ジョブで実行されているプロセス(トレーニング反復やオフライン検証スコアなど)をモニターしたり、モデル・デプロイメントから機能ベクトルまたはモデル予測を取得することもできます。これは一般的なパターンです。OCI Logging Serviceにアクセスし、OCI Logging Analyticsサービスを使用して単純な探索分析を実行できることを確認します。
- 原則:アプリケーションとデータを保護するための多層防御アプローチの実装
適切な機械学習プラットフォームによって、データ・サイエンティストのアクセスが、業務を行うために必要なリソースのみに制限されます。データ・サイエンティストのグループに対する最小限の権限の原則に従います。また、ユーザー主体よりもリソース主体を使用して、ほかのリソースに対して認証または承認を行います。この演習では、ユーザーがノートブック・セッションまたはジョブにユーザー・プリンシパル資格証明を挿入できなくなります。
すべてのユーザーがOCI Vaultにアクセスでき、サード・パーティのデータ・ソースにアクセスするための資格証明がボールトに格納および暗号化されていることを確認します。特にノートブック・セッションにアクセスできるのは、そのセッションを作成したユーザーのみです。これらのリソースの作成者にのみノートブック・セッションおよびジョブへのアクセス権を付与するようにアクセス・ポリシーを構成します。この演習では、複数のユーザーが同じノートブック環境にアクセスしたり、秘密キーを共有したり、同じコードを上書きすることが防止されます。パブリック・インターネットに対するエグレス・アクセスを、適切なタイミングで制限します。ノートブック・セッションおよびジョブを起動するためのセカンダリVNIC(仮想クラウド・ネットワークおよびサブネットの選択)を構成および選択し、ユーザーが保護されていないサイトからデータセットまたはライブラリをダウンロードすることを防止します。
アーキテクチャ
設計原則を実装するには、この考えられたアーキテクチャに基づくデプロイメントを使用します。
図maf_ai_ml_design_pattern.pngの説明
このアーキテクチャには次のコンポーネントがあります。
- データ統合サービス
Oracle Cloud Infrastructure Data Integrationは、完全に管理されたマルチテナントのサーバーレス・ネイティブ・クラウド・サービスです。様々なソースからのデータの取込み、そのデータのクレンジング、変換、リハッシング、OCI上のターゲット・データ・ソースへの効率的ロードなどの一般的なETLタスクに役立ちます。
様々なソース(Amazon Redshift、Azure SQL Database、Amazon S3など)からオブジェクト・ストレージへのデータの取り込み、Autonomous Data Warehouseはこのプロセスの最初のステップです。
- オブジェクト・ストレージとAutonomous Database
Object StorageとAutonomous Data Warehouseは、機械学習モデルのトレーニングに使用される履歴データのストレージ・レイヤーを提供します。オブジェクト・ストレージは、ソース・データ・ストレージ・レイヤーとターゲット・データ・ストレージ・レイヤーの両方として使用でき、データ・フローを使用してカスタム・データ処理およびETLジョブを実行できます。
- OCIデータ・カタログ
Autonomous Data Warehouseの複数表、オブジェクト・ストレージのバケット、数千ものデータ・アセットで構成されるデータ・レイクは、急速に広がります。データ・サイエンティストにとって、問題は発見可能性の1つです。DBAではありませんが、特定のビジネス問題を解決するために関連するデータ・アセットを迅速に識別する必要があります。Oracle Cloud Infrastructureデータ・カタログを使用すると、データ・サイエンティストは、トレーニング用の機械学習モデルの候補者データ資産を迅速に識別できます。
データ・カタログは、エンタープライズ・データの完全管理のセルフサービス・データ検出およびガバナンス・ソリューションです。技術メタデータ、ビジネス・メタデータ、運用メタデータを管理するための単一のコラボレーション環境を提供します。このメタデータを収集、整理、検索、アクセス、理解、拡張およびアクティブ化できます。
- OCIデータ・フロー・サービス
データを機械学習にトレーニングする準備が整う前に、Object StorageまたはAutonomous Data WarehouseのどちらかのRAWデータに対して、複数のデータ「ラングリング」操作を大規模に適用する必要があります。データ・サイエンティストは、モデル・トレーニング(通常はデータ・フレーム)に適した形式で、データをクリーン、結合、非正規化、重複除外、計算、スケーリングおよび形成する必要があります。通常、この手順はデータ・エンジニアが行いますが、このステップに多くのデータ・サイエンティストが関与しています。これらの手順を実行するためのデファクト・ツールキットはApache Sparkであり、Oracle Cloud Infrastructure Data Flowを使用することをお薦めします。
データ・フローは、Sparkアプリケーションを実行するための完全に管理されているサービスです。これにより、アプリケーションに集中でき、実行のための簡単なランタイム環境が提供されます。アプリケーションおよびワークフローとの統合のためのAPIサポートを持つ、簡単でシンプルなユーザー・インタフェースが用意されています。基礎となるインフラストラクチャ、クラスタ・プロビジョニング、またはソフトウェア・インストールに時間をかける必要はありません。
- OCIデータ・サイエンス
Oracle Cloud Infrastructureデータ・サイエンスは、データ・サイエンス・チームがOCIで機械学習モデルの構築、トレーニング、管理およびデプロイに使用できる完全に管理されたプラットフォームです。データ・サイエンスには、ノートブック・セッション、ジョブ、モデル・カタログ、モデル・デプロイメント、高速データ・サイエンス(ADS)のPython SDKが含まれます。データは、ノートブック・セッションまたは様々なデータ・ソースのジョブのいずれかに取り込み、モデル・トレーニングの予測機能に変換できます。ノートブック・セッションとは、データ・サイエンティストが、モデルのエンジニアリングやトレーニングに必要な変換のパイプラインをプロトタイプ化できるIDEです。これらのステップは、ジョブで大規模に生産できます。モデルのトレーニング後、これらは管理対象モデル・ストレージ・レイヤー(モデル・カタログ)に格納され、デプロイメント用にステージングされます。モデルは、モデル・デプロイメントを介してHTTPエンドポイントとしてデプロイできます。デプロイ後、これらのアプリケーションがOCIでホストされているか、他の場所でホストされているかに関係なく、モデルをサードパーティ・アプリケーションで利用できます。
- Oracle Machine Learning
Oracle Machine Learningには、データベース内のデータのモデルを作成、トレーニングおよびデプロイする機能も用意されています。Oracle Machine Learningには、OML4Py Pythonクライアント・ライブラリを使用してデータ・サイエンティストがモデルをトレーニングできるZeppelinノートブック・インタフェースが用意されています。OMLでは、AutoML UIでトレーニングをモデル化するためのコードなしアプローチも提供されます。モデルをREST APIとしてデプロイするには、Oracle Machine Learning Servicesを使用します。ただし、オープン・ソース・ソフトウェアに対するサポートは限られています。
- AIサービス
AIサービスは、言語、ビジョン、スピーチ、意思決定、予測など、多岐にわたるユース・ケースで、事前トレーニングとカスタマイズ可能なモデルAPIのコレクションを提供します。AIサービスは、REST APIエンドポイント経由でアクセス可能なモデル予測を提供します。これらのサービスは、最新の事前トレーニング・モデルを提供し、サービス1-6を使用してカスタムの機械学習モデルをトレーニングする前に、検討と評価する必要があります。また、Oracle Machine Learningサービスは、言語(トピック、キーワード、サマリー、類似性)およびビジョンに関する一連の事前トレーニング済モデルも提供します。
注意事項
機械学習と人工知能を実装する際には、これらのオプションを考慮してください。
- モデル開発ライフサイクルのすべてのステップで水平方向のスケーラビリティを提供します
ETLおよびデータ処理ステップ(OCIデータ・フローを介して)、モデル・トレーニング自体およびモデル・デプロイメントに水平方向のスケーラビリティを提供します。また、モデル・トレーニング側とデプロイメント側の両方でGPUを使用することも検討してください。
- モデルの再現性を確保
モデルは監査され、再作成する必要があります。モデルを再生成するには、モデルの保存時にソース・コード、トレーニングおよび検証データセットおよび環境(サードパーティ・ライブラリおよびアーキテクチャ)への参照を指定する必要があります。Gitリポジトリ対応とコミット・ハッシュへの参照を使用して、コードを追跡します。オブジェクト・ストレージを使用して、トレーニング・データセットおよび検証データセットのスナップショットを保存します。モデル・メタデータの一部として公開されているコンマ環境への参照を含めます。
- バージョン管理コード、機能およびモデル
この検討は、モデルの再現性に関連しています。モデルは、データ・サイエンス・モデル・カタログで直接バージョニングできます。Gitの使用をデータ・サイエンスIDE (JupyterLabなど)の一部として統合するか、データ・サイエンス・ジョブなどのトレーニング実行エンジンに統合します。デフォルトでオブジェクト・バージョニングをサポートするオブジェクト・ストレージやGit Large File Storage (LFS)などのツールを使用して、機能をデータセットとしてバージョニングできます。
- サード・パーティのランタイム依存関係をパッケージ、共有、再利用
ノートブック、ジョブおよびモデル・デプロイメントで同じコンマ環境を再使用します。これにより、これらのステップ間のサードパーティ依存性の不一致のリスクも最小限に抑えられます。
- データ転送を制限しながらデータ・ソースに依存しません。
モデル・トレーニング環境へのデータの転送には時間がかかります。ノートブック環境またはトレーニング・ジョブ間で可能なかぎり共有可能なブロック・ボリュームを使用します。モデル・トレーニングおよび検証のためにローカルのデータセット・スナップショットを保持します。
代替パターン
- マネージド・データ・サイエンス・サービスのかわりにOCI Marketplaceからデータ・サイエンスVMをデプロイする
データ・サイエンスVMイメージは、CPUおよびNVIDIA GPUシェイプ・ファミリの両方で使用できます。この環境には、データ・サイエンティストが使用できる包括的な一連の機械学習ライブラリおよびIDEが用意されています。ただし、モデル・デプロイメント機能は提供されません。モデル・デプロイメントは、OCI Data Scienceモデル・デプロイメントまたはOracle Functionsを介して実現できます。
- データベースで機械学習モデルを構築、トレーニングおよびデプロイするためのデータベース内のOracle Machine Learning (OML Notebooks、AutoML UI、サービス、OML4Py)
この代替パターンは、モデルのトレーニングに必要なデータがデータベース内にある場合に強力な機能を提供します。このパターンは、機械学習のオープン・ソース・ソフトウェアのサポートに制限があります。
- OCIレジストリ、Oracle Functions、APIゲートウェイを介したREST APIとしてのモデルの展開
このパターンは、Data Science VMイメージ環境またはOCI Data Scienceでモデルをトレーニングしているお客様に適用されます。このパターンは、REST APIエンドポイントとして機械学習モデルのデプロイメントへの代替パスを提供します。トレーニングを受けたモデル・アーティファクトを含むDockerイメージは、OCIレジストリに構築およびデプロイする必要があります。Oracleファンクションはdockerイメージから作成され、APIゲートウェイのバックエンド・リソースとしてデプロイできます。
- OKEへのOSS Kubeflow MLプラットフォームの導入
このパターンはスタンドアロン・ソリューションを提供し、Oracle Container Engine for Kubernetesでコンテナベースの機械学習ワークロードを実行するオプションをお客様に提供します。Kubeflowは機械学習プラットフォームのすべての主要機能を提供するOSS製品です。
アンチパターン
カスタムの機械学習OSSスタックを使用して構築されたVMはお薦めしません。機械学習プロジェクトは、通常、複数のOSSライブラリ上に構築されます。複雑な依存関係や、頻繁に競合するセキュリティ脆弱性が、絶えずパッケージのアップグレードを必要とするからです。すぐに使用できる安全な環境を構築する負担となるマネージド・サービスを推奨します。