データ・サイエンティスト向けOCIガイド

Oracle Cloud Infrastructure (OCI)は、人工知能(AI)および機械学習(ML)サービスのファミリを提供します。このガイドでは、MLライフ・サイクルをフレームワークとして使用して、データ・サイエンティストにそれらのサービスの紹介ツアーを提供します。

機械学習ライフ・サイクル

機械学習モデル(ML)の構築は、反復的なプロセスです。データ・サイエンティストがモデルのパフォーマンスに満足するまで、必要なステップの多くが繰り返されて変更されます。このプロセスでは、多くのデータ探索、ビジュアライゼーションおよび実験が必要になります。

OCIデータ・サイエンス・サービスは、MLライフ・サイクル全体を通じてデータ・サイエンティストをサポートします。MLモデルを迅速に構築、トレーニング、デプロイおよび管理します。データ・サイエンス・ユーザーは、使い慣れたJupyterLabノートブック・インタフェースで作業し、Pythonコードを記述し、オープン・ソース・ライブラリにアクセスできます。

ヒント

データ・サイエンス・サービスの概要ビデオをご覧ください。

MLライフ・サイクルにデータ・サイエンスを使用するための前提条件として、OCI環境およびワークスペースを準備する必要があります。続いて、次のタスクを実行します:

  1. データへのアクセスと収集
  2. データの準備と探索
  3. モデルのトレーニング
  4. モデルの評価および検証
  5. モデルのデプロイ
  6. モデルの管理およびモニター

MLおよびAI製品をすべて調べ追加のリソースにアクセスすることもできます。

MLライフ・サイクルを示すイメージ。
インフラストラクチャおよびワークスペースの準備
ステップ1: OCIの設定
ヒント

データ・サイエンス用にテナンシを構成する最も簡単な方法は、OCIリソース・マネージャを使用することです。これにより、数回クリックするだけで前提条件を処理できます。リソース・マネージャを使用したデータ・サイエンスのテナンシの構成を参照してください。

データおよびモデリングを開始する前に、次のリソースを使用してOCIテナンシが適切に構成されていることを確認する必要があります。データ・サイエンス用のテナンシの設定に関するチュートリアルについては、データ・サイエンス・テナンシの手動の構成に関する項を参照してください。

  • コンパートメント – OCIリソースを編成するための論理コンテナ。詳細は、テナンシを設定するためのベスト・プラクティスについて学習を参照してください。
  • ユーザー・グループ – データ・サイエンティストを含むユーザーのグループ。
  • 動的グループ – 定義したルールに一致するリソース(データ・サイエンス・ノートブック・セッション、ジョブ実行、モデル・デプロイメントなど)を含む特殊なタイプのグループ。これらの一致ルールにより、それらのルールに一致するリソースが作成または削除されると、グループ・メンバーシップを動的に変更できます。これらのリソースは、動的グループ用に記述されたポリシーに従って、サービスへのAPIコールを実行できます。たとえば、データ・サイエンス・ノートブック・セッションのリソース・プリンシパルを使用して、オブジェクト・ストレージAPIをコールしてバケットからデータを読み取ることができます。
  • ポリシー – OCIでアクセスできるユーザーやリソースなどのプリンシパルを定義します。アクセス権はグループおよびコンパートメント・レベルで付与されます。特定のコンパートメント内の特定のタイプのアクセス権をグループに付与するポリシーを記述できます。
ステップ2: データ・サイエンス環境の設定
  1. コンパートメントにデータ・サイエンス・プロジェクトを作成します。

    プロジェクトは、データ・サイエンス・チームが作業を整理できるようにするコンテナです。ノートブック・セッションおよびモデルを編成するためのコラボレーション・ワークスペースを表します。

    Oracle Accelerated Data Science (ADS) SDKのcreate_projectメソッドを使用することもできます。

  2. プロジェクト内にノートブック・セッションを作成し、コンパートメントを指定します。

    ノートブック・セッションは、モデルを構築およびトレーニングするための対話型コーディング環境で作業できるJupyterLabインタフェースです。環境には、オープン・ソース・ライブラリが事前インストールされており、他のライブラリを追加することも可能です。

    ノートブック・セッションは完全管理型のインフラストラクチャで実行されます。ノートブック・セッションを作成する際に、手動でプロビジョニングすることなく、CPUまたはGPU、コンピュート・シェイプおよびストレージ量を選択できます。ノートブック・セッションを再アクティブ化するたびに、これらのオプションを変更できます。また、ノートブック・セッションのネットワーキングをサービスが管理するようにできます。

    ADS SDKのcreate_notebook_sessionメソッドを使用することもできます。

  3. ノートブック・セッションで、Conda環境をインストールまたは作成します。Condaはオープン・ソース環境およびパッケージ管理システムであり、パッケージとその依存関係をすばやくインストール、実行および更新するために使用できます。様々なソフトウェア構成、スイッチ環境および公開環境を分離して、調査を再現可能にします。
    ヒント

    ノートブック・セッションで開始する最も速い方法は、既存のデータ・サイエンスCONDA環境を選択することです。OCIデータ・サイエンス・チームは、これらの環境を管理します。環境は、ML作業を行うための特定のツールとフレームワークの提供、またはビジネス・ユース・ケースを解決するための包括的な環境の提供に重点を置いています。各データ・サイエンス環境には独自のノートブック例セットが用意されており、環境にインストールされているライブラリの使用を開始するのに役立ちます。
  4. ノートブック・セッションにConda環境をインストールした後、データにアクセスして、MLライフサイクルを開始します。
データへのアクセスと収集

すべてのMLモデルはデータから始まります。OCIデータ・サイエンスを使用するデータ・サイエンティストは、あらゆるクラウドまたはオンプレミス環境のデータ・ソースにアクセスして使用できるため、より多くのデータ機能とより優れたモデルの実現が可能になります。ADS SDKでサポートされているデータ・ソースおよび形式の完全なリストを参照してください。

データ・サイエンス・サービスを使用する場合は、すばやくアクセスできるように、データをノートブック・セッションに格納することをお薦めします。ノートブック・セッションから、次のソースからのデータにアクセスできます:

  • オブジェクト・ストレージ: データを取得するには、まずオブジェクト・ストレージへの接続を設定する必要があります。この設定後、ノートブック・セッションでOCI Python SDKを使用してデータを取得できます。ADS SDKを使用してオブジェクト・ストレージからデータをプルすることもできます。
  • ローカル・ストレージ: ADS SDKを使用してローカル・ソースからデータフレームをロードするには、pandasの関数を直接使用します。
  • HTTPおよびHTTPSエンドポイント: リモートWebサーバー・ソースからデータフレームをロードするには、pandasを直接使用します。
  • データベース: ノートブック・セッションからAutonomous Data Warehouseに接続できます。autonomous_database.ipynbノートブック例では、このタイプの接続を対話形式で示します。
  • ストリーミング・データ・ソース: kafka-pythonクライアント・ライブラリはノートブック・セッションで使用できます。Apache Kafka分散ストリーム処理システムのPythonクライアント・ライブラリを使用すると、データ・サイエンティストはKafka互換APIを使用してストリーミング・サービスに接続できます。ノートブック・セッション環境でのstreaming.ipynbノートブック例を示します。
  • 参照ライブラリ: 参照ライブラリからデータセットを開くには、DatasetBrowserを使用します。サポートされているライブラリを表示するには、DatasetBrowser.list()を使用します。

セキュリティ

OCI Vaultサービスを使用して、データを保護する暗号化キーおよびリソースに安全にアクセスするために使用する資格証明を一元的に管理できます。vault.ipynbノートブック例を使用して、データ・サイエンスでボールトを使用する方法を学習できます。

詳細は、ADS SDKのVaultドキュメントを参照してください。

データの準備と探索

ADS SDKの組込み関数を使用して、データを準備、変換および操作できます。ADSDatasetオブジェクトの基礎はPandasデータ・フレームです。pandasデータ・フレームで実行できる操作は、ADSデータセットにも適用できます。

注意

ADSのデータセットはすべて不変であり、適用された変換は新しいデータセットになります。

準備

データが不完全、一貫性がない、またはエラーが含まれている可能性があります。ADS SDKを使用すると、次のタスクを実行できます:

ノート

機能タイプを使用して、データの物理的な表現方法とデータが測定するものを区別できます。多数の機能タイプを作成して、データに割り当てることができます。機能タイプがワークフローをどのように改善するかを説明したブログ投稿をお読みください。

変換

ADS SDKの次のメソッドを使用して、データセットの自動変換を行うことができます:

  • suggest_recommendations()は問題を表示し、問題を修正するための変更およびコードを推奨します
  • auto_transform()は、すべての推奨事項および最適化が自動的に適用された変換済データセットを返します
  • visualize_transforms()データセットで実行された変換をビジュアル化します

OCIデータ・サイエンスでは、pandas、Dask、NumPyなどのオープン・ソースのデータ操作ツールもサポートされます。

ヒント

すべてのデータ変換が完了したら、トレーニングとテストのセット、またはトレーニング、テストおよび検証のセットにデータを分割できます。

ビジュアル化および探索

ビジュアライゼーションは、データから値を導出するために使用される初期ステップの1つです。これにより、アナリストはデータから効率的にインサイトを取得して、探索的なデータ分析を行うことができます。ADS SDKには、データ型を自動的に検出し、データの特性を最適に表すプロットをレンダリングするスマート・ビジュアライゼーション・ツールが含まれています。次に、いくつかの自動ビジュアライゼーション・メソッドを示します:

ADS SDKのcall()メソッドを使用して、seaborn、Matplotlib、Plotly、Bokeh、Geographic Information System (GIS)などの優先ライブラリおよびパッケージを使用してデータをプロットすることもできます。ADS SDKの例を参照してください。

モデルのトレーニング

モデリングによって、データ・ポイント間の関係の最適な数学的表現が作成されます。モデルは、この関係またはパターンを取得するトレーニング・プロセスによって作成されるアーティファクトです。

モデルをトレーニングした後、評価してからデプロイします。

モデルをトレーニングするには、自動機械学習(AutoML)を使用するか、オープン・ソース・ライブラリを使用します。次の方法を使用してトレーニングできます:

  • ノートブック: JupyterLabインタフェースのライブラリを使用してPythonコードを記述および実行します
  • Conda環境: ADS SDK、AutoMLまたは機械学習の説明可能性(MLX)を使用してトレーニングします
  • ジョブ: JupyterLabのノートブック・セッションの外部でMLまたはデータ・サイエンス・タスクを実行します

AutoML

成功するMLモデルを構築するには、多くの反復と実験が必要であり、最初の反復で、最適なハイパーパラメータのセットを使用してモデルが実現されることはほとんどありません。AutoMLは、MLモデリング・プロセスの4つのステップを自動化します:

  1. アルゴリズムの選択は、データと問題に最適なアルゴリズムを特定するもので、網羅的な検索よりも高速です。
  2. 適応サンプリングは、適切なサンプル・サイズを特定し、不均衡なデータを調整します。
  3. 機能選択は、最適な機能サブセットを特定し、機能の数を減らします。
  4. モデル・チューニングは、ハイパーパラメータを自動的にチューニングして、モデルの精度を最大限に高めます。

詳細は、ADS SDKのAutoMLパイプラインのドキュメントを参照してください。

モデルの評価および検証

モデルをトレーニングした後、一連のベンチマークに対するモデルの動作を確認できます。評価関数を使用して、テスト・データの出力を、解釈可能な標準化された一連のスコアおよびチャートに変換します。

ADS SDKを使用した自動評価

自動評価により、新しいデータに対するモデル・パフォーマンスを測定し、モデル候補を比較するためのメトリックおよびビジュアライゼーションの包括的なスイートが生成されます。ADSは、複数のモデルの対比に関するツール、メトリックおよびチャートの集合を提供します。エバリュエータは次のとおりです:

  • バイナリ分類子は、出力がバイナリであるモデルに使用されます。たとえば、「はい」または「いいえ」、「上」または「下」、「1」または「0」などです。これらのモデルは、多項分類の特殊なケースであるため、特別に対応したメトリックがあります。
  • 多項分類子は、出力が個別であるモデルに使用されます。これらのモデルには、評価のための専用のチャートとメトリックのセットがあります。
  • 回帰は、価格、高さ、売上、長さなど、出力が連続するモデルに使用されます。これらのモデルには、モデルのベンチマークに役立つ固有のメトリックがあります。

検証、説明および解釈

機械学習の説明可能性(MLX)は、MLモデルおよびディープ・ラーニング・モデルを説明および解釈するプロセスです。説明可能性は、モデルの予測の背後にある理由を説明する機能です。解釈性は、人間がその説明を理解できるレベルです。MLXは、次のタスクの実行に役立つ可能性があります:

  • モデルの動作の理解および解釈の向上
  • モデルの品質のデバッグおよび改善
  • モデルへの信頼と、モデルのデプロイに対する信頼性の向上

モデルの説明可能性の詳細を読み、グローバル説明機能、ローカル説明機能およびWhatIf説明機能についてよく理解してください。

モデルのデプロイ

モデル・トレーニングおよび評価プロセスが完了すると、最適な候補モデルが保存され、デプロイできるようになります。モデルのデプロイメントとその主要コンポーネントについてを参照してください。

ヒント

ADS SDKには、モデルを数ステップで本番環境にプッシュする一連のクラスがあります。詳細は、モデルのシリアライズを参照してください。

モデル・カタログの概要

モデルをデプロイする前に、モデル・カタログにモデルを保存する必要があります。モデル・カタログとは、モデル・アーティファクトの一元化された管理対象リポジトリです。カタログに格納されているモデルは、チームのメンバー間で共有でき、ノートブック・セッションに再度ロードできます。モデル・アーティファクトは、次のファイルとデータを含むアーカイブ・ファイルです:

  • score.py: シリアル化されたモデル・オブジェクトをメモリーにロードするためのカスタム・ロジックを含み、推論エンドポイント(predict())を定義するPythonスクリプト
  • runtime.yaml: モデルのランタイム環境。モデル・デプロイメントの目的で必要なConda環境参照を提供します
  • アーティファクトでモデルを実行するために必要な追加ファイル
    重要

    推論に使用されるコードは、score.pyと同じレベルまたは下位レベルでアーカイブする必要があります。必要なファイルがscore.pyファイルより上のフォルダ・レベルにある場合、それらは無視され、これによりデプロイメントが失敗する可能性があります。
  • Git関連情報を含むモデルの来歴に関するメタデータ
  • モデルをカタログにプッシュするために使用されるスクリプトまたはノートブック
ヒント

GitHubリポジトリには、score.pyファイルなどの様々なモデル・カタログの例およびテンプレートが用意されています。

モデル・メタデータおよびドキュメントの準備

モデル・メタデータはオプションですが、推奨されています。モデル・メタデータの準備およびメタデータの操作を参照してください。メタデータには、次の情報が含まれています:

  • モデル入力および出力のスキーマ: モデル予測の成功に必要な機能の説明
  • 来歴: モデルの再現性と監査可能性を改善するためのドキュメント
  • タクソノミ: モデル・カタログに保存するモデルの説明
  • モデル・イントロスペクション・テスト: モデルの操作ヘルスのすべての側面をテストするために、モデル・アーティファクトで実行される一連のテストおよびチェック
ヒント

ADS SDKでは、モデルをADSで保存すると、来歴およびタクソノミが自動的に移入されます。

カタログへのモデルの保存

ADS SDK、OCI Python SDKまたはコンソールを使用して、カタログにモデルを保存できます。詳細は、モデル・カタログへのモデルの保存を参照してください。

ノート

カタログに格納されたモデル・アーティファクトは、不要な変更を防止し、本番環境内のすべてのモデルが使用された正確なアーティファクトに追跡できるように、設計上不変です。保存済モデルは変更できません。

モデルのデプロイ

モデルを本番環境にデプロイする最も一般的な方法は、HTTPエンドポイントとしてリアルタイムで予測を提供することです。データ・サイエンス・サービスは、モデル・デプロイメントをリソースとして管理します。また、コンピュート・プロビジョニングおよびロード・バランシングを含むすべてのインフラストラクチャ操作を処理します。ADS SDKまたはコンソールを使用して、モデルをデプロイできます。

ヒント

モデルを関数としてデプロイすることもできます。関数は、OCIのスケーラビリティの高いオンデマンドのサーバーレス・アーキテクチャです。詳細は、このブログ投稿を参照してください。

モデルの起動

モデルがデプロイされてアクティブになると、エンドポイントはクライアントによって行われたリクエストを正常に受信できます。モデル・デプロイメントを起動すると、特徴ベクトルまたはデータ・サンプルを予測エンドポイントに渡すことができます。次に、モデルからこれらのデータ・サンプルの予測が返されます。詳細は、モデル・デプロイメントの呼出しを参照し、デプロイ済モデルの編集、非アクティブ化およびその他の管理についてお読みください。

MLライフ・サイクルの管理(MLOps)

MLOpsは、MLライフ・サイクル管理の標準化、合理化および自動化です。MLアセットは、反復的な継続的インテグレーション(CI)、継続的デプロイメント(CD)環境内の他のソフトウェア・アセットと同様に処理されます。

DevOpsでは、CIは更新済コードの検証および中央リポジトリへの統合を意味し、CDは本番環境へのこれらの変更の再デプロイメントを意味します。MLOpsでは、CIは新しいデータとMLモデルの検証と統合を意味し、CDは本番環境へのモデルのリリースを意味します。

継続的トレーニングは、MLOpsに固有のものであり、再デプロイメントのためのMLモデルの自動再トレーニングを指します。モデルが更新されていない場合、その予測の精度は徐々に低くなっていきますが、自動化を使用して、できるだけ早く新しいデータでモデルを再トレーニングできます。

ジョブ

データ・サイエンス・ジョブでは、完全管理型のインフラストラクチャで繰返し可能なMLタスクを定義して実行できます。ジョブを使用して、次のタスクを実行できます:

  • ノートブック・セッションの外部でのMLまたはデータ・サイエンス・タスクの実行
  • 再利用可能で実行可能な操作など、個別のデータ・サイエンスおよびMLタスクの運用可能化
  • MLOpsまたはCI/CDパイプラインの自動化
  • イベントまたはアクションによってトリガーされるバッチ・ジョブまたはワークロードの実行
  • バッチ、ミニ・バッチまたは分散バッチ・ジョブの推論の実行
  • JupyterLabノートブック・セッションでは、データ・サイエンス・ジョブで長時間実行タスクまたは計算集中型タスクを作成し、作業を継続するためにノートブックを解放しておくことができます
ノート

ジョブ実行のスケジュールに関するチュートリアルを試してください。

モニタリング

モニタリングおよびロギングは、ジョブ・ライフ・サイクルの最後のステップです。ジョブのパフォーマンスおよびメトリックに関するインサイトを提供するだけでなく、ジョブ実行ごとに後で参照できるレコードも提供します。モニタリング、アラームおよびメトリックの詳細は、メトリックに関する項を参照してください。

  • モニタリングはメトリックおよびアラームで構成され、クラウド・リソースのヘルス、容量およびパフォーマンスを確認できます。このデータを使用して、負荷の増加を管理するためにより多くのインスタンスを作成するタイミングを決定したり、インスタンスの問題のトラブルシューティングを行うことができ、またはシステム動作の理解をより深めることができます。
  • メトリックが設定されたしきい値に違反すると、アラームがトリガーされます。
  • メトリックは、CPUまたはGPUの使用率、使用可能なジョブ実行コンテナ・メモリーの使用率、コンテナ・ネットワーク・トラフィックおよびコンテナ・ディスクの使用率を追跡します。これらの数値が特定のしきい値に達すると、ワークロードに対応するために、ブロック・ストレージやコンピュート・シェイプなどのリソースをスケール・アップできます。
  • イベントを使用すると、ジョブやジョブ実行イベントなどのリソースの変更をサブスクライブし、機能、通知またはストリームを使用してそれらに応答することができます。イベントを使用した自動化の作成を参照してください。

ロギング

サービス・ログまたはカスタム・ログをジョブ実行で使用できます。ジョブ実行は、サービス・ログをOCIロギング・サービスに発行します。カスタム・ログでは、特定のコンテキストで収集されるログ・イベントおよびログが格納される場所を指定できます。ロギング・サービスを使用して、ジョブのジョブ実行ログを有効化、管理および参照できます。詳細は、ロギングおよびログについてを参照してください。

ノート

ジョブ・リソースのロギング・サービスとの統合はオプションですが、潜在的な問題のデバッグ、およびジョブ・アーティファクトの実行の進捗のモニタリングの両方のために行うことをお薦めします。

MLおよびAIサービスの完全なリスト

このガイドではOCIデータ・サイエンス・サービスに重点を置いていますが、他のMLおよびAIサービスをデータ・サイエンスとともに使用すると、サービスを利用する方法として、または広範なMLプロジェクトの一部として使用できます。

OCIのMLサービス

OCIの機械学習サービスは、主にデータ・サイエンティストが、機械学習モデルの構築、トレーニング、デプロイおよび管理に使用します。データ・サイエンスは、データ・サイエンティストがビジネスの問題をより迅速に解決するために必要なオープン・ソース・ツールにアクセスできるように、キュレートされた環境を提供します。

  • データ・サイエンスにより、オープン・ソースのPythonを使用してMLモデルを構築、トレーニングおよび管理することが可能になり、ML (AutoML)、モデル評価およびモデル説明のための追加機能が提供されます。
  • データ・ラベリングには、AIおよびMLモデルをより正確にトレーニングするためのラベル付きデータセットが用意されています。ユーザーは、ユーザー・インタフェースおよびパブリックAPIを使用して、データを組み立て、データセットを作成および参照し、データ・レコードにラベルを適用できます。ラベル付きデータセットは、モデル開発用にエクスポートおよび使用できます。イメージ、テキストまたは音声で動作するMLモデルを構築する際には、モデルのトレーニングに使用できるラベル付きデータが必要です。
  • データ・フローは、開発者およびデータ・サイエンティストがApache Sparkアプリケーションを大規模にバッチで実行するためのスケーラブルな環境を提供します。Spark言語で記述されたアプリケーションを実行して、様々なデータ準備タスクを実行できます。
  • Oracle Databaseでの機械学習では、データの探索と準備、およびSQL、R、Python、REST、AutoMLおよびコーディングなしのインタフェースを使用したMLモデルの構築とデプロイがサポートされています。アプリケーションですぐに使用できるように、Oracle Databaseでモデルを生成する30を超えるデータベース内アルゴリズムが含まれています。MLプロセスの主要な要素を簡素化および自動化することで、モデルを迅速に構築します。
OCIのAIサービス

OCIのAIサービスには、特定の用途向けのデフォルトのMLモデルが含まれています。一部のAIサービスは事前にトレーニングされており、一部は独自のデータを使用してトレーニングできます。これらを使用するには、サービスのAPIをコールし、処理するデータを渡すだけです。サービスから結果が返されます。管理するインフラストラクチャはありません。

  • デジタル・アシスタントは、テキスト、チャットおよび音声インタフェースを介してビジネス・アプリケーションと顧客向けの会話型エクスペリエンスを作成するためのあらかじめ用意されたスキルやテンプレートを提供します。
  • 言語では、高度なテキスト分析を大規模に実行できます。言語サービスには、感情分析、キー・フレーズ抽出、テキスト分類、名前付きエンティティ認識などの事前トレーニング済モデルが含まれています。
  • 音声では、自動音声認識(ASR)を使用して音声をテキストに変換します。デジタル・アシスタントに使用されるのと同じAIモデル上に構築されているため、開発者は、実績のある音響モデルと言語モデルを使用し、様々な言語のオーディオ・ファイルやビデオ・ファイルの高精度なトランスクリプションの提供が可能です。
  • Visionでは、コンピュータ・ビジョンを適用して、イメージベースのコンテンツを分析します。開発者は、APIを使用して事前トレーニング済モデルをアプリケーションに簡単に統合したり、特定のユース・ケースに合せてカスタムトレーニング・モデルを作成したりできます。これらのモデルを使用して、製造における視覚的な異常を検出したり、ビジネス・ワークフローを自動化するためにドキュメントからテキストを抽出したり、製品や出荷をカウントするためにイメージ内のアイテムにタグ付けしたりできます。