すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:ノート

最終更新日:Jul 22, 2024

Machine Learning Designerは、Data Science Workshop (DSW) インスタンスとシームレスに連携できるNotebookコンポーネントを統合します。 ノートブックコンポーネントを使用して、パイプラインのコンテキストとステータスを中断することなく、パイプラインでコードを記述、デバッグ、実行できます。

背景情報

ノートブックコンポーネントはオープンソースコミュニティで広く使用されており、多くのデータまたは人工知能 (AI) 開発者はこのコンポーネントを強力なコード作成およびデバッグツールと見Noneています。 Machine Learning Designerはノートブックコンポーネントを統合し、DSWインスタンスとシームレスに連携できます。 ノートブックコンポーネントを使用して、パイプラインのコンテキストとステータスを中断することなく、パイプラインでコードを記述、デバッグ、実行できます。

Machine Learning Designerのノートブックコンポーネントには、DSWよりも次の利点があります。

  • 開発効率の向上: ノートブックエディターをパイプラインで直接開き、コンテナ化されたインスタンスでコードを開発およびデバッグできます。

  • Preservesコンテキスト: ノートブックコンポーネントは、インスタンスの起動時に、出力データとアップストリームコンポーネントのステータスをパイプラインに自動的にロードできます。 これにより、データを使用してさらなる分析と開発を行い、結果を下流のコンポーネントに渡すことができます。

  • パイプライン全体のデバッグ: ノートブックコンポーネントはパイプラインの一部として使用されます。 さまざまなコンポーネントをシームレスに切り替えて、データ処理全体とモデルトレーニングプロセスを最適化できます。

シナリオ

開発

NotebookコンポーネントでDSWインスタンスを起動し、DSWインスタンス上のNotebookファイルを変更してコードを開発およびデバッグできます。 カスタムパラメーターの設定は、Machine Learning Designerから取得することもできます。

重要

従量課金リソースグループを使用する場合、DSWインスタンスの実行期間に基づいて課金されます。 詳細については、「DSWの課金」をご参照ください。

実行中

Machine Learning DesignerのキャンバスでNotebookコンポーネントまたはパイプラインを実行する場合、またはDataWorksを使用してパイプラインを定期的にスケジュールする場合、システムは、Jupyter nbconvertによって変換されたNotebookファイルを実行するためのDeep Learning Containers (DLC) ジョブを開始します。

重要

従量課金リソースグループを使用する場合、DLCジョブの実行期間に基づいて課金されます。 詳細については、「Billing of DLC」をご参照ください。

コンポーネントの説明

ノートブックコンポーネントには、4つの入力ポートと4つの出力ポートがあります。 すべての入力ポートを使用して、Object Storage Service (OSS) データまたはMaxComputeテーブルデータを受信できます。 出力ポートの中で、ポート1と2はデータをOSSに渡すために使用され、ポート3と4はデータをMaxComputeテーブルに渡すために使用されます。

Notebookコンポーネントを使用してDSWインスタンスを起動する前に、pai-notebook-utilsパッケージをインストールして、Notebookノードの入力ポート、出力ポート、およびカスタムパラメーターに関する情報を取得する必要があります。

pai-notebook-utilsパッケージのインストールと使用

  • pai-notebook-utilsのインストール

    pip install --upgrade https://pai-sdk.oss-cn-shanghai.aliyuncs.com/pai_notebook_utils/dist/pai_notebook_utils-0.0.1-py2.py3-none-any.whl
  • pai-notebook-utilsの使用

    pai-notebook-utilsパッケージは、get_inputs()get_outputs() 、およびget_custom_params() 関数を提供します。 get_inputs() 関数は入力ポートの設定を取得するために使用され、get_outputs() 関数は出力ポートの設定を取得するために使用され、get_custom_params() 関数はカスタムパラメータの設定を取得するために使用されます。

    pai_notebook.utils.notebook_utils import NotebookUtilsからの

    from pai_notebook.utils.notebook_utils import NotebookUtils
    
    node_inputs = NotebookUtils.get_inputs()
    node_outputs = NotebookUtils.get_outputs()
    custom_params = NotebookUtils.get_custom_params()

入力ポート

Notebookコンポーネントには、OSSデータまたはMaxComputeテーブルデータの受信に使用できる4つの入力ポートがあります。 pai-notebook-utilsパッケージが提供するget_inputs() 関数を使用して、すべての入力ポートの情報を取得できます。 戻り値は配列であり、配列内の各項目には次の表に示すフィールドが含まれます。

項目

説明

name

入力ポートの名前。 有効な値: input1、input2、input3、およびinput4。

type

DataSetやModelなどのポートタイプ。

location_type

ストレージタイプです。 有効な値: MaxComputeTableとOSS。

value

ポートの構成情報。 設定情報はMAP形式で保存されます。

  • 入力がMaxComputeテーブルの場合、location_typeフィールドの値はMaxComputeTableで、valueフィールドはproject、table_name、endpointフィールドで構成され、テーブルが属するMaxComputeプロジェクト、MaxComputeテーブルの名前、MaxComputeのエンドポイントを指定します。

    pai_notebook.utils.notebook_utils import NotebookUtilsからの

    from pai_notebook.utils.notebook_utils import NotebookUtils
    
    node_inputs = NotebookUtils.get_inputs()
    
    for node_input in node_inputs:
        if node_input.location_type == "MaxComputeTable":
            input_name = node_input.name
            table_name = node_input.value["table"]
            project = node_input.value["project"]
            endpoint = node_input.value["endpoint"]
            print(f"input_name: {input_name}, project: {project}, table_name: {table_name}, endpoint: {endpoint}")
  • 入力がOSSの場合、OSSパスはローカルパスにマウントされます。 ローカルパスまたはOSS SDKを使用して、OSSオブジェクトにアクセスできます。 この場合、location_typeフィールドの値はOSSであり、valueフィールドはkey、bucket、endpoint、およびmount_pathフィールドで構成され、OSSパス、OSSバケット、OSSのエンドポイント、およびOSSのローカルマウントパスを指定します。

    重要

    OSSパスが変更され、新しいパスがDSWインスタンスにマウントされていない場合、mount_pathフィールドは取得できません。 DSWインスタンスを再起動する必要があります。

    pai_notebook.utils.notebook_utils import NotebookUtilsからの

    from pai_notebook.utils.notebook_utils import NotebookUtils
    
    node_inputs = NotebookUtils.get_inputs()
    
    for node_input in node_inputs:
        if node_input.location_type == "OSS":
            input_name = node_input.name
            key = node_input.value["key"]
            bucket = node_input.value["bucket"]
            endpoint = node_input.value["endpoint"]
            mount_path = node_input.value["mountPath"]
            print(f"input_name: {input_name}, bucket: {bucket}, key: {key}, endpoint: {endpoint}, mount path: {mount_path}")

出力ポート

Notebookコンポーネントには4つの出力ポートがあります。 ポート1と2はOSSにデータを渡すために使用され、ポート3と4はMaxComputeテーブルにデータを渡すために使用されます。 pai-notebook-utilsパッケージで提供されるget_outputs() 関数を使用して、すべての出力ポートの情報を取得できます。 戻り値は配列であり、配列内の各項目には次の表に示すフィールドが含まれます。

項目

説明

name

出力ポートの名前。 有効な値: output1、output2、output3、およびoutput4。

location_type

ストレージタイプです。 有効な値: MaxComputeTableとOSS。

value

ポートの構成情報。 設定情報はMAP形式で保存されます。

出力がMaxComputeテーブルの場合、現在のワークスペースはMaxCompute計算エンジンに関連付けられている必要があります。 出力がOSSの場合、データは指定されたOSSパスに渡されます。 [ジョブ出力パス] パラメーターが設定されていない場合、グローバルデフォルトパスに基づいて出力パスが自動的に生成されます。 出力ポートの値フィールドのフィールドの形式は、入力ポートのそれと同じです。

pai_notebook.utils.notebook_utils import NotebookUtilsからの

from pai_notebook.utils.notebook_utils import NotebookUtils

node_outputs = NotebookUtils.get_outputs()

for node_output in node_outputs:
    input_name = node_input.name
    if node_output.location_type == "MaxComputeTable":
        table_name = node_output.value["table"]
        project = node_output.value["project"]
        endpoint = node_output.value["endpoint"]
        print(f"input_name: {input_name}, project: {project}, table_name: {table_name}, endpoint: {endpoint}")
    elif node_output.location_type == "OSS":
        key = node_output.value["key"]
        bucket = node_output.value["bucket"]
        endpoint = node_output.value["endpoint"]
        mount_path = node_output.value["mountPath"]
        print(f"input_name: {input_name}, bucket: {bucket}, key: {key}, endpoint: {endpoint}, mount path: {mount_path}")
    else:
        print(json.dumps(node_output.value, indent=4))

カスタムパラメーター

${globalParamName} 形式でカスタムパラメーターを設定して、パイプラインで設定されたグローバル変数を参照できます。 ノートブックコンポーネントで設定されたカスタムパラメータは、get_custom_params() 関数を使用して取得できます。 戻り値はMAP形式で、キーと値は文字列です。

pai_notebook.utils.notebook_utils import NotebookUtilsからの

from pai_notebook.utils.notebook_utils import NotebookUtils

custom_params = NotebookUtils.get_custom_params()
print(custom_params)

ノートブックの設定

Machine Learning Designerのパイプラインの詳細ページで、Notebookコンポーネントをパイプラインに追加します。 次に、ページの右側にある次の表に記載されているパラメーターを設定します。

カテゴリ

パラメーター

必須

説明

デフォルト値

ノートブック設定

DSWインスタンス

不可

Notebookノードに関連付けられているDSWインスタンスのステータスと開始操作。 DSWインスタンスを起動する前に、Pipeline Data Pathパラメーターを設定して、パイプラインの作成時にパイプラインデータパスを指定してください。

実行していない

ノートブックファイル

Pipeline Data Pathパラメーターを設定すると、ノートブックファイルが自動的に生成されます。 値はpipeline data path/notebook/${pipeline ID}/${node ID}/main.ipynb形式です。 パイプラインIDは、[パイプライン属性] タブで確認できます。 ノードIDはシステムによって自動的に生成されます。

パイプラインデータパス /ノートブック /${パイプラインID}/${ノードID}/main.ipynb

ジョブ出力パス

不可

  • 選択したOSSディレクトリは、ジョブコンテナの /ml/output/ pathにマウントされます。 /ml/output/ pathに書き込まれたデータは、選択したOSSパスに保持されます。

  • Notebookコンポーネントの出力ポートOSS output-1は /ml/outputパスのoutput1サブディレクトリに対応し、Notebookコンポーネントの出力ポートOSS output-2は /ml/outputパスのoutput2サブディレクトリに対応します。 ノートブックコンポーネントのOSS出力ポートがダウンストリームコンポーネントに接続されている場合、ダウンストリームコンポーネントは対応するサブディレクトリからデータを受信します。

  • Notebookコンポーネントの実行結果は、HTML形式で /ml /出力パスの結果サブディレクトリに保存されます。

このパラメーターを空のままにすると、パイプラインデータパスが使用されます。

カスタムパラメータ

不可

Notebookファイルによって参照されるパラメーター。 パラメーターはキーと値のペア形式であり、パイプラインとDSWインスタンスで共有できます。 これにより、パラメータの変更が容易になる。 Machine Learning Designerのパイプラインでグローバル変数を参照できます。

None

Initコマンド

不可

Notebookファイルを実行する前にランタイム環境を初期化するために使用されるコマンド。 たとえば、pip install pandasコマンドを実行して、必要なパッケージをインストールできます。

None

自動シャットダウン時間

不可

DSWインスタンスが自動的にシャットダウンされる期間。 これにより、デバッグ完了後にインスタンスのシャットダウンを忘れることがなくなります。

1 時間

設定の実行

リソースグループの選択

パブリックリソースグループ

不可

ノードタイプ (CPUまたはGPU) 、VPC設定、セキュリティグループ、vSwitch、インターネットアクセスゲートウェイ、およびノードイメージのパラメーターを設定する必要があります。

デフォルトのECSタイプ: ecs.c6.large

専用リソースグループ

不可

使用するvCPU、メモリ、共有メモリ、GPUの数、およびインスタンスの数を設定する必要があります。

None

ノードイメージ

不可

公式イメージまたはカスタムイメージを選択するか、パブリックイメージアドレスを入力できます。

Official