Le composant Notebook de Machine Learning Designer vous permet d'écrire, de déboguer et d'exécuter du code directement au sein d'un pipeline, sans interrompre son contexte ni son état. Il s'intègre aux instances Data Science Workshop (DSW) pour un développement interactif et convertit les fichiers Notebook en jobs Deep Learning Containers (DLC) pour les exécutions en production.
Fonctionnement
Le composant Notebook prend en charge deux modes :
| Mode | Cas d'utilisation | Ressource facturée |
|---|---|---|
| Développement | Écrire et déboguer du code de manière interactive dans une instance DSW associée au pipeline | Durée d'exécution de l'instance DSW |
| Exécution | Exécuter le Notebook dans le cadre d'une exécution de pipeline ou d'un job planifié | Durée d'exécution du job DLC |
En mode Development, démarrez une instance DSW depuis le nœud Notebook. L'instance charge automatiquement les données de sortie et l'état des composants en amont. Vous pouvez ainsi inspecter les résultats intermédiaires, développer la logique métier et transmettre les résultats aux étapes suivantes, le tout sans quitter le canevas du pipeline.
En mode Running, le déclenchement du pipeline (manuellement ou via une planification DataWorks) lance un job DLC qui exécute le fichier Notebook converti par Jupyter nbconvert.
Si vous utilisez un groupe de ressources avec paiement à l'utilisation, des frais sont appliqués en fonction de la durée d'exécution. Consultez les rubriques Facturation de DSW et Facturation de DLC.
Description du composant
Le composant Notebook dispose de quatre ports d'entrée et de quatre ports de sortie :
| Port | Direction | Type de stockage | Noms |
|---|---|---|---|
| Entrée | Entrée | OSS ou table MaxCompute | input1, input2, input3, input4 |
| Sortie (OSS) | Sortie | OSS | output1, output2 |
| Sortie (MaxCompute) | Sortie | Table MaxCompute | output3, output4 |
Utilisez le package pai-notebook-utils pour accéder aux configurations des ports et aux paramètres personnalisés depuis le Notebook.
Installation de pai-notebook-utils
Exécutez la commande suivante dans votre Notebook ou dans la commande d'initialisation :
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
Accès aux ports et aux paramètres
Les trois fonctions sont accessibles via la 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
Ports d'entrée
La fonction get_inputs() renvoie une liste. Chaque élément contient :
| Champ | Description |
|---|---|
name |
Nom du port : input1, input2, input3 ou input4 |
type |
Type de port, par exemple DataSet ou Model |
location_type |
Type de stockage : MaxComputeTable ou OSS |
value |
Configuration du port sous forme de map |
Entrée de table MaxCompute — location_type est défini sur MaxComputeTable ; value contient project, table et 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}")
Entrée OSS — location_type est défini sur OSS ; le chemin OSS est monté sur un chemin local. value contient key, bucket, endpoint et 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}")
Si le chemin OSS change après le démarrage de l'instance DSW, mountPath devient indisponible. Redémarrez l'instance DSW pour monter le nouveau chemin.
Ports de sortie
La fonction get_outputs() renvoie une liste. Chaque élément contient :
| Champ | Description |
|---|---|
name |
Nom du port : output1, output2, output3 ou output4 |
location_type |
Type de stockage : MaxComputeTable ou OSS |
value |
Configuration du port sous forme de map (même structure de champs que les ports d'entrée) |
Sorties OSS (output1, output2) : les données sont écrites dans le chemin OSS configuré. Si le champ Job Output Path n'est pas défini, le chemin est généré automatiquement à partir du chemin global par défaut. Le répertoire OSS est monté sur
/ml/output/dans le conteneur du job : output1 correspond à/ml/output/output1/et output2 à/ml/output/output2/. Le résultat de l'exécution du Notebook (HTML) est enregistré dans/ml/output/result/.Sorties MaxCompute (output3, output4) : l'espace de travail doit être associé à un moteur de calcul 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))
Paramètres personnalisés
Configurez les paramètres personnalisés sous forme de paires clé-valeur dans le nœud Notebook. Faites référence aux variables globales en utilisant le format ${globalParamName}. Par exemple, définissez une clé de paramètre sur modelVersion et sa valeur sur ${globalModelVersion}. À l'exécution, get_custom_params() renvoie la valeur résolue :
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'}
Les paramètres personnalisés sont présentés sous forme de paires clé-valeur et peuvent être partagés entre un pipeline et une instance DSW, ce qui facilite leur modification.
Configuration du Notebook
Ajoutez le composant Notebook à un pipeline dans Machine Learning Designer, puis configurez les paramètres suivants dans le volet de droite.
Avant de démarrer une instance DSW, configurez le Chemin de données du pipeline lors de la création du pipeline. Le chemin du fichier Notebook est généré à partir de ce paramètre.
| Catégorie | Paramètre | Obligatoire | Description | Valeur par défaut | |
|---|---|---|---|---|---|
| Configuration du Notebook | Instance DSW | Non | État et contrôle de démarrage de l'instance DSW associée à ce nœud | Non en cours d'exécution | |
| Fichier Notebook | Oui | Chemin vers le fichier Notebook, au format <chemin de données du pipeline>/notebook/${ID du pipeline}/${ID du nœud}/main.ipynb. Trouvez l'ID du pipeline dans l'onglet Attributs du pipeline ; l'ID du nœud est généré par le système. |
<chemin de données du pipeline>/notebook/${ID du pipeline}/${ID du nœud}/main.ipynb |
||
| Chemin de sortie du job | Non | Répertoire OSS monté sur /ml/output/ dans le conteneur du job. Les ports de sortie écrivent dans des sous-répertoires (output1/, output2/) ; les résultats d'exécution sont enregistrés au format HTML dans result/. |
Chemin de données du pipeline | ||
| Paramètres personnalisés | Non | Paires clé-valeur partagées par le pipeline et l'instance DSW. Faites référence aux variables globales en utilisant ${globalParamName}. |
Aucun | ||
| Commande d'initialisation | Non | Commande Shell à exécuter avant l'exécution du Notebook, telle que pip install pandas. |
Aucun | ||
| Heure d'arrêt automatique | Non | L'instance DSW s'arrête automatiquement après cette durée afin d'éviter des frais excessifs. | 1 heure | ||
| Configuration d'exécution | Sélectionner un groupe de ressources | Groupe de ressources public | Non | Configurez le type de nœud (CPU/GPU), les paramètres VPC, le groupe de sécurité, le vSwitch, la passerelle d'accès Internet et l'image du nœud. Type ECS par défaut : ecs.c6.large. |
— |
| Groupe de ressources dédié | Non | Configurez les vCPU, la mémoire, la mémoire partagée, les GPU et le nombre d'instances. | Aucun | ||
| Image du nœud | Non | Image officielle, image personnalisée ou adresse d'image publique. | Officielle | ||