O componente Notebook no Machine Learning Designer permite escrever, depurar e executar código diretamente em um pipeline, sem interromper seu contexto ou estado. Ele se integra a instâncias do Data Science Workshop (DSW) para desenvolvimento interativo e converte arquivos de Notebook em jobs do Deep Learning Containers (DLC) para execuções em produção.
Como funciona
O componente Notebook oferece dois modos:
|
Modo |
Quando usar |
Recurso cobrado |
|
Development |
Escreva e depure código interativamente em uma instância DSW vinculada ao pipeline |
Duração da execução da instância DSW |
|
Running |
Execute o Notebook como parte de uma execução de pipeline ou job agendado |
Duração da execução do job DLC |
No modo Development, inicie uma instância DSW a partir do nó do Notebook. A instância carrega automaticamente os dados de saída e o estado dos componentes anteriores, permitindo inspecionar resultados upstream, desenvolver lógica e transmitir resultados downstream — tudo isso sem sair da tela do pipeline.
No modo Running, acionar o pipeline (manualmente ou por meio de um agendamento do DataWorks) inicia um job DLC que executa o arquivo de Notebook convertido pelo Jupyter nbconvert.
Se você utilizar um grupo de recursos com pagamento conforme o uso, as cobranças serão baseadas na duração da execução. Consulte Faturamento do DSW e Faturamento do DLC.
Descrição do componente
O componente Notebook possui quatro portas de entrada e quatro portas de saída:
|
Porta |
Direção |
Tipo de armazenamento |
Nomes |
|
Entrada |
In |
Tabela OSS ou MaxCompute |
input1, input2, input3, input4 |
|
Saída (OSS) |
Out |
OSS |
output1, output2 |
|
Saída (MaxCompute) |
Out |
Tabela MaxCompute |
output3, output4 |
Use o pacote pai-notebook-utils para acessar as configurações das portas e parâmetros personalizados diretamente no Notebook.
Instale pai-notebook-utils
Execute o seguinte comando no seu Notebook ou no Init Command:
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
Acessar portas e parâmetros
Todas as três funções estão disponíveis na classe NotebookUtils:
from pai_notebook.utils.notebook_utils import NotebookUtils
node_inputs = NotebookUtils.get_inputs() # list of input port configs
node_outputs = NotebookUtils.get_outputs() # list of output port configs
custom_params = NotebookUtils.get_custom_params() # dict of custom parameters
Portas de entrada
A função get_inputs() retorna uma lista. Cada item contém:
|
Campo |
Descrição |
|
|
Nome da porta: |
|
|
Tipo da porta, como |
|
|
Tipo de armazenamento: |
|
|
Configuração da porta como um MAP |
Entrada de tabela MaxCompute — location_type é MaxComputeTable; value contém project, table e 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}")
Entrada OSS — location_type é OSS; o caminho do OSS é montado em um caminho local. O campo value contém key, bucket, endpoint e mountPath:
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}")
Caso o caminho do OSS seja alterado após o início da instância DSW, o mountPath ficará indisponível. Reinicie a instância DSW para remontar o novo caminho.
Portas de saída
A função get_outputs() retorna uma lista. Cada item contém:
|
Campo |
Descrição |
|
|
Nome da porta: |
|
|
Tipo de armazenamento: |
|
|
Configuração da porta como um MAP (mesma estrutura de campos das portas de entrada) |
Saídas OSS (output1, output2): os dados são gravados no caminho configurado do OSS. Se o Job Output Path não estiver definido, o sistema gera o caminho automaticamente a partir do caminho padrão global. O diretório OSS é montado em
/ml/output/no contêiner do job: output1 mapeia para/ml/output/output1/e output2 mapeia para/ml/output/output2/. O resultado da execução do Notebook (HTML) é salvo em/ml/output/result/.Saídas MaxCompute (output3, output4): o workspace deve estar associado a um mecanismo de computação MaxCompute.
from pai_notebook.utils.notebook_utils import NotebookUtils
node_outputs = NotebookUtils.get_outputs()
for node_output in node_outputs:
output_name = node_output.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"output_name: {output_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"output_name: {output_name}, bucket: {bucket}, key: {key}, endpoint: {endpoint}, mount path: {mount_path}")
else:
print(json.dumps(node_output.value, indent=4))
Parâmetros personalizados
Configure parâmetros personalizados como pares chave-valor no nó do Notebook. Referencie variáveis globais usando o formato ${globalParamName}. Por exemplo, defina uma chave de parâmetro como modelVersion e seu valor como ${globalModelVersion}. Durante a execução, get_custom_params() retorna o valor resolvido:
from pai_notebook.utils.notebook_utils import NotebookUtils
custom_params = NotebookUtils.get_custom_params()
print(custom_params)
# Example output: {'modelVersion': '2.1.0', 'batchSize': '32'}
Os parâmetros personalizados seguem o formato de pares chave-valor e podem ser compartilhados entre o pipeline e a instância DSW, facilitando a modificação de parâmetros.
Configuração do Notebook
Adicione o componente Notebook a um pipeline no Machine Learning Designer e configure os seguintes parâmetros no painel direito.
Antes de iniciar uma instância DSW, configure o Pipeline Data Path durante a criação do pipeline. O caminho do arquivo de Notebook é gerado a partir dessa configuração.
| Categoria | Parâmetro | Obrigatório | Descrição | Padrão | |
|---|---|---|---|---|---|
| Notebook Config | DSW Instance | Não | Controle de status e inicialização da instância DSW vinculada a este nó | Not Running | |
| Notebook File | Sim | Caminho para o arquivo de Notebook, no formato <pipeline data path>/notebook/${pipeline ID}/${node ID}/main.ipynb. Encontre o ID do pipeline na aba Pipeline Attributes; o sistema gera o ID do nó. |
<pipeline data path>/notebook/${pipeline ID}/${node ID}/main.ipynb |
||
| Job Output Path | Não | Diretório OSS montado em /ml/output/ no contêiner do job. As portas de saída gravam em subdiretórios (output1/, output2/); os resultados da execução são salvos em result/ no formato HTML. |
Caminho de dados do pipeline | ||
| Custom Parameters | Não | Pares chave-valor compartilhados entre o pipeline e a instância DSW. Referencie variáveis globais usando ${globalParamName}. |
Nenhum | ||
| Init Command | Não | Comando shell executado antes do Notebook, como pip install pandas. |
Nenhum | ||
| Automatic shutdown time | Não | A instância DSW desliga automaticamente após esta duração para evitar cobranças excessivas. | 1 hora | ||
| Run Config | Select Resource Group | Public Resource Group | Não | Configure o tipo de nó (CPU/GPU), configurações de VPC, grupo de segurança, vSwitch, gateway de acesso à internet e imagem do nó. Tipo ECS padrão: ecs.c6.large. |
— |
| Dedicated resource group | Não | Configure vCPUs, memória, memória compartilhada, GPUs e número de instâncias. | Nenhum | ||
| Node Image | Não | Imagem oficial, imagem personalizada ou endereço de imagem pública. | Oficial | ||