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.whlpai-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パラメーターを設定すると、ノートブックファイルが自動的に生成されます。 値は | パイプラインデータパス /ノートブック /${パイプラインID}/${ノードID}/main.ipynb | ||
ジョブ出力パス | 不可 |
| このパラメーターを空のままにすると、パイプラインデータパスが使用されます。 | ||
カスタムパラメータ | 不可 | Notebookファイルによって参照されるパラメーター。 パラメーターはキーと値のペア形式であり、パイプラインとDSWインスタンスで共有できます。 これにより、パラメータの変更が容易になる。 Machine Learning Designerのパイプラインでグローバル変数を参照できます。 | None | ||
Initコマンド | 不可 | Notebookファイルを実行する前にランタイム環境を初期化するために使用されるコマンド。 たとえば、 | None | ||
自動シャットダウン時間 | 不可 | DSWインスタンスが自動的にシャットダウンされる期間。 これにより、デバッグ完了後にインスタンスのシャットダウンを忘れることがなくなります。 | 1 時間 | ||
設定の実行 | リソースグループの選択 | パブリックリソースグループ | 不可 | ノードタイプ (CPUまたはGPU) 、VPC設定、セキュリティグループ、vSwitch、インターネットアクセスゲートウェイ、およびノードイメージのパラメーターを設定する必要があります。 | デフォルトのECSタイプ: ecs.c6.large |
専用リソースグループ | 不可 | 使用するvCPU、メモリ、共有メモリ、GPUの数、およびインスタンスの数を設定する必要があります。 | None | ||
ノードイメージ | 不可 | 公式イメージまたはカスタムイメージを選択するか、パブリックイメージアドレスを入力できます。 | Official | ||