全部產品
Search
文件中心

Platform For AI:Notebook

更新時間:Jul 13, 2024

Designer中提供了Notebook組件,可與DSW執行個體實現無縫串連,支援使用者在工作流程中直接使用Notebook編寫、調試和運行代碼,同時保留工作流程的上下文和狀態。

背景資訊

隨著Notebook在開源社區的廣泛應用,許多資料或AI開發人員已將其視為一個強大的代碼編寫和調試工具。因此Designer中提供了Notebook組件,可與DSW執行個體實現無縫串連,支援使用者在工作流程中直接使用Notebook編寫、調試和運行代碼,同時保留工作流程的上下文和狀態。

相對於直接使用DSW進行開發,在Designer中使用Notebook組件具有以下優勢:

  • 提升開發效率:可以在工作流程中直接開啟Notebook,利用容器化執行個體進行開發並調試代碼。

  • 上下文保留: Designer中的Notebook組件可在執行個體啟動時,自動載入工作流程中上遊組件的輸出資料和狀態,使得使用者能夠立即使用這些資料進行進一步的分析和開發,並將結果傳給下遊。

  • 工作流程整體調試: Notebook組件將作為工作流程中的一環,使用者可以在不同的組件之間無縫切換,最佳化整個資料處理和模型訓練的過程。

使用情境

開發環節

使用者在組件中啟動並前往DSW執行個體編輯Notebook檔案,可以直接在DSW執行個體內部開發和調試Notebook,並且支援從Designer中擷取自訂參數配置。

重要

如果資源群組選擇隨用隨付,則會根據DSW執行個體啟動時間長度進行計費,詳情請參見DSW後付費(隨用隨付)

運行環節

使用者在Designer畫布直接執行Notebook組件、整個工作流程或使用DataWorks周期性調度工作流程,系統會啟動一個DLC任務來執行jupyter nbconvert轉換後的Notebook檔案。

重要

如果資源群組選擇隨用隨付,則會根據DLC任務執行時間長度進行計費,詳情請參見DLC後付費(隨用隨付)

組件說明

Notebook組件共有4個輸入連接埠和4個輸出連接埠。其中,所有的輸入連接埠均可串連OSS路徑或MaxCompute表類型的資料;輸出連接埠中連接埠1、2是OSS路徑輸出連接埠,連接埠3、4是MaxCompute表輸出連接埠。

通過Notebook組件啟動的DSW執行個體時,需要安裝pai-notebook-utils包,使用者通過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()三個函數,分別用於擷取輸入連接埠配置、輸出連接埠配置、自訂參數。

    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組件有4個輸入連接埠,可以接收OSS資料或MaxCompute表,通過pai-notebook-utils提供的NotebookUtils.get_inputs()可以擷取到所有連接埠的輸入資訊,其傳回值是一個數組,數組中每個item包含以下欄位:

item欄位

說明

name

輸入連接埠名稱,輸入連接埠名稱包含input1、input2、input3、input4。

type

連接埠類型,包含DataSet、Model等。

location_type

儲存類型,包含MaxComputeTable、OSS。

value

Map格式,儲存連接埠的配置資訊。

  • 當輸入端為MaxCompute表類型時,此時location_type為MaxComputeTable,value包含project、table、endpoint欄位,依次分別表示表所屬的MaxCompute專案、MaxCompute表名、MaxCompute的endpoint。

    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檔案,也可以通過OSS SDK直接存取OSS。此時location_type為OSS,value包含key、bucket、endpoint、mountPath欄位,依次分別表示OSS路徑的Path、OSS Bucket、OSS的endpoint、OSS的本地掛載路徑。

    重要

    如果上遊OSS路徑發生了變化,且新的路徑未掛載到DSW執行個體中,將無法擷取到mountPath,您需要重啟DSW執行個體。

    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提供的NotebookUtils.get_outputs()可以擷取到所有連接埠的輸出資訊,其傳回值是一個數組,數組中每個item包含以下欄位:

item欄位

說明

name

輸出連接埠名稱,輸入連接埠名稱包含output1、output2、output3、output4。

location_type

儲存類型,包含MaxComputeTable、OSS。

value

Map格式,儲存連接埠的配置資訊。

當輸出端為MaxCompute表類型時,當前工作空間需要關聯MaxCompute計算引擎;當輸出端為OSS類型時,資料將會被儲存到輸出的OSS路徑中,如果未配置任務輸出路徑,會通過全域的預設路徑自動產生輸出路徑。輸出端value中的欄位和輸入連接埠中的格式一致。

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}(全域變數)的方式引用工作流程中配置的全域變數,通過NotebookUtils.get_custom_params()可以擷取到組件中配置的自訂參數,傳回值是一個Map,對應的key和value都是字串。

from pai_notebook.utils.notebook_utils import NotebookUtils

custom_params = NotebookUtils.get_custom_params()
print(custom_params)

配置組件

在Designer工作流程頁面添加Notebook組件,並在介面右側配置相關參數:

參數類型

參數

是否必選

描述

預設值

Notebook設定

DSW執行個體狀態

展示節點關聯的DSW執行個體狀態及啟動操作。啟動DSW執行個體時需保證已配置工作流程資料存放區路徑。

未啟動

Notebook檔案

配置工作流程儲存路徑後,會自動產生工作流程資料存放區路徑/notebook/${工作流程ID}/${節點ID}/main.ipynb檔案。其中工作流程ID可在工作流程屬性中查詢,節點ID為系統自動產生。

工作流程資料存放區路徑/notebook/${工作流程ID}/${節點ID}/main.ipynb

任務輸出路徑

  • 選擇的OSS目錄會掛載到作業容器的/ml/output/路徑下,任務寫出到/ml/output/路徑下的資料,會被持久化儲存到對應的OSS路徑下。

  • 組件的輸出連接埠“OSS輸出-1”和“OSS輸出-2”分別對應/ml/output下的子目錄output1和output2。當組件的OSS輸出連接埠和下遊連線時,下遊接收到的資料為對應子目錄的資料。

  • 組件的運行結果將會以HTML的格式儲存到/ml/output下的result子目錄。

如果為空白,預設取工作流程資料存放區路徑

自訂參數

KV格式,指在Notebook檔案中引用的參數,可以實現在工作流程和DSW中共用參數變數,方便靈活調整。支援引用Designer工作流程中的全域變數

初始化命令

在運行Notebook ipynb檔案前初始化運行環境,例如安裝必須的包:pip install pandas

自動關機時間

DSW執行個體將在指定的時間內自動關機,避免使用者調試完成後忘記關閉環境。

1小時

執行配置

選擇資源群組

公用資源群組

選擇節點規格(CPU或GPU執行個體規格)、專用網路、安全性群組、交換器、網關類型、節點鏡像。

預設規格為ecs.c6.large

專有資源群組

選擇CPU核心數、記憶體、共用記憶體、GPU卡數、節點數量。

節點鏡像

支援選擇官方鏡像、自訂鏡像或直接填寫公開的鏡像地址。

官方鏡像