DatabricksStep Clase
Crea un paso de canalización de Azure Machine Learning para agregar un cuaderno de DataBricks, un script de Python o un archivo JAR como nodo.
Para obtener un ejemplo del uso de DatabricksStep, consulte el cuaderno https://aka.ms/pl-databricks.
Cree un paso de canalización de Azure ML para agregar un cuaderno de DataBricks, un script de Python o un archivo JAR como nodo.
Para obtener un ejemplo del uso de DatabricksStep, consulte el cuaderno https://aka.ms/pl-databricks.
:p aram python_script_name:[Obligatorio] Nombre de un script de Python relativo a source_directory
.
Si el script toma entradas y salidas, se pasarán al script como parámetros.
Si se especifica python_script_name
, también se debe especificar source_directory
.
Especifique exactamente uno entre notebook_path
, python_script_path
, python_script_name
o main_class_name
.
Si especifica un objeto DataReference como entrada con data_reference_name=input1 y un objeto PipelineData como salida con name=output1, las entradas y salidas se pasarán al script como parámetros. Este será su aspecto y tendrá que analizar los argumentos del script para acceder a las rutas de acceso de cada entrada y salida: "-input1","wasbs://test@storagename.blob.core.windows.net/test","-output1", "wasbs://test@storagename.blob.core.windows.net/b3e26de1-87a4-494d-a20f-1988d22b81a2/output1"
Además, los parámetros siguientes estarán disponibles en el script:
- AZUREML_RUN_TOKEN: token de AML para autenticarse con Azure Machine Learning.
- AZUREML_RUN_TOKEN_EXPIRY: hora de expiración del token de AML.
- AZUREML_RUN_ID: identificador de ejecución de Azure Machine Learning para esta ejecución.
- AZUREML_ARM_SUBSCRIPTION: suscripción de Azure del área de trabajo de AML.
- AZUREML_ARM_RESOURCEGROUP: grupo de recursos de Azure del área de trabajo de Azure Machine Learning.
- AZUREML_ARM_WORKSPACE_NAME: nombre del área de trabajo de Azure Machine Learning.
- AZUREML_ARM_PROJECT_NAME: nombre del experimento de Azure Machine Learning.
- AZUREML_SERVICE_ENDPOINT: dirección URL del punto de conexión de los servicios de AML.
- AZUREML_WORKSPACE_ID: id. del área de trabajo de Azure Machine Learning.
- AZUREML_EXPERIMENT_ID: id. del experimento de Azure Machine Learning.
- AZUREML_SCRIPT_DIRECTORY_NAME: ruta de acceso de directorios en DBFS donde se ha copiado source_directory.
(This parameter is only populated when `python_script_name` is used. See more details below.)
Al ejecutar un script de Python desde la máquina local en Databricks con los parámetros source_directory
y python_script_name
de Databricks, se copia source_directory en DBFS y la ruta de acceso de directorios en DBFS se pasa como un parámetro al script cuando comienza la ejecución.
Este parámetro se etiqueta como --AZUREML_SCRIPT_DIRECTORY_NAME. Debe agregar un prefijo con la cadena "dbfs:/". o "/dbfs/" para acceder al directorio en DBFS.
- Herencia
-
azureml.pipeline.core._databricks_step_base._DatabricksStepBaseDatabricksStep
Constructor
DatabricksStep(name, inputs=None, outputs=None, existing_cluster_id=None, spark_version=None, node_type=None, instance_pool_id=None, num_workers=None, min_workers=None, max_workers=None, spark_env_variables=None, spark_conf=None, init_scripts=None, cluster_log_dbfs_path=None, notebook_path=None, notebook_params=None, python_script_path=None, python_script_params=None, main_class_name=None, jar_params=None, python_script_name=None, source_directory=None, hash_paths=None, run_name=None, timeout_seconds=None, runconfig=None, maven_libraries=None, pypi_libraries=None, egg_libraries=None, jar_libraries=None, rcran_libraries=None, compute_target=None, allow_reuse=True, version=None, permit_cluster_restart=None)
Parámetros
- inputs
- list[Union[InputPortBinding, DataReference, PortDataReference, PipelineData]]
Lista de conexiones de entrada para los datos consumidos por este paso. Recupera esto dentro del cuaderno mediante dbutils.widgets.get("input_name"). Puede ser un elemento DataReference o PipelineData. DataReference representa un fragmento de datos existente en un almacén de datos. Básicamente, se trata de una ruta de acceso en un almacén de datos. DatabricksStep admite almacenes de datos que encapsulan DBFS, blobs de Azure o ADLS v1. PipelineData representa los datos intermedios generados por otro paso de una canalización.
Lista de definiciones de puerto de salida para las salidas producidas por este paso. Recupera esto dentro del cuaderno mediante dbutils.widgets.get("output_name"). Debe ser un elemento PipelineData.
- existing_cluster_id
- str
Identificador de un clúster interactivo existente en el área de trabajo de Databricks. Si va a pasar este parámetro, no puede pasar ninguno de los parámetros siguientes, que se usan para crear un nuevo clúster:
- spark_version
- node_type
- instance_pool_id
- num_workers
- min_workers
- max_workers
- spark_env_variables
- spark_conf
Nota: Para crear un nuevo clúster de trabajos, deberá pasar los parámetros anteriores. Puede pasar estos parámetros directamente o puede pasarlos como parte del objeto RunConfiguration mediante el parámetro runconfig. Si se pasan estos parámetros directamente y mediante RunConfiguration, se produce un error.
- spark_version
- str
La versión de Spark para el clúster de ejecución de Databricks, por ejemplo: "10.4.x-scala2.12".
Para más información, consulte la descripción del parámetro existing_cluster_id
.
- node_type
- str
[Obligatorio] Tipos de nodo de máquina virtual de Azure para el clúster de ejecución de Databricks, por ejemplo: "Standard_D3_v2". Especifique node_type
o instance_pool_id
.
Para más información, consulte la descripción del parámetro existing_cluster_id
.
- instance_pool_id
- str
[Obligatorio] Identificador del grupo de instancias al que se debe asociar el clúster.
Especifique node_type
o instance_pool_id
.
Para más información, consulte la descripción del parámetro existing_cluster_id
.
- num_workers
- int
[Obligatorio] Número estático de nodos de trabajo para el clúster de ejecución de Databricks.
Debe especificar num_workers
o min_workers
y max_workers
.
Para más información, consulte la descripción del parámetro existing_cluster_id
.
- min_workers
- int
[Obligatorio] Número mínimo de nodos de trabajo que se usarán para el escalado automático del clúster de ejecución de Databricks.
Debe especificar num_workers
o min_workers
y max_workers
.
Para más información, consulte la descripción del parámetro existing_cluster_id
.
- max_workers
- int
[Obligatorio] Número máximo de nodos de trabajo que se usarán para el escalado automático del clúster de ejecución de Databricks.
Debe especificar num_workers
o min_workers
y max_workers
.
Para más información, consulte la descripción del parámetro existing_cluster_id
.
- spark_env_variables
- dict
Variables de entorno de Spark para el clúster de ejecución de Databricks.
Para más información, consulte la descripción del parámetro existing_cluster_id
.
- spark_conf
- dict
Configuración de Spark para el clúster de ejecución de Databricks.
Para más información, consulte la descripción del parámetro existing_cluster_id
.
- init_scripts
- [str]
Desusado. Databricks anunció que el script de inicialización almacenado en DBFS dejará de funcionar después del 1 de dic de 2023. Para mitigar el problema, use scripts de inicialización globales en databricks después https://learn.microsoft.com/azure/databricks/init-scripts/global de 2) comente la línea de init_scripts en el paso de Databricks de AzureML.
- cluster_log_dbfs_path
- str
Rutas de acceso DBFS donde se van a entregar los registros de los clústeres.
- notebook_path
- str
[Obligatorio] Ruta de acceso al cuaderno en la instancia de Databricks. Esta clase permite cuatro maneras de especificar el código que se va a ejecutar en el clúster de Databricks.
Para ejecutar un cuaderno que esté presente en el área de trabajo de Databricks, use: notebook_path=notebook_path, notebook_params={'myparam': 'testparam'}
Para ejecutar un script de Python que esté presente en DBFS, use: python_script_path=python_script_dbfs_path, python_script_params={'arg1', 'arg2'}
Para ejecutar un archivo JAR que esté presente en DBFS, use: main_class_name=main_jar_class_name, jar_params={'arg1', 'arg2'}, jar_libraries=[JarLibrary(jar_library_dbfs_path)]
Para ejecutar un script de Python que esté presente en el equipo local, use: python_script_name=python_script_name, source_directory=source_directory
Especifique exactamente uno entre notebook_path
, python_script_path
, python_script_name
o main_class_name
.
- notebook_params
- dict[str, Union[str, PipelineParameter]]
Diccionario de parámetros que se van a pasar al cuaderno. Los elementos notebook_params
están disponibles como widgets. Puede capturar los valores de estos widgets dentro del cuaderno mediante dbutils.widgets.get("myparam").
- python_script_path
- str
[Obligatorio] Ruta de acceso al script de Python en DBFS.
Especifique exactamente uno entre notebook_path
, python_script_path
, python_script_name
o main_class_name
.
- python_script_params
- list[str, PipelineParameter]
Parámetros para el script de Python.
- main_class_name
- str
[Obligatorio] Nombre del punto de entrada en un módulo JAR.
Especifique exactamente uno entre notebook_path
, python_script_path
, python_script_name
o main_class_name
.
- python_script_name
- str
[Obligatorio] Nombre de un script de Python relativo a source_directory
.
Si el script toma entradas y salidas, se pasarán al script como parámetros.
Si se especifica python_script_name
, también se debe especificar source_directory
.
Especifique exactamente uno entre notebook_path
, python_script_path
, python_script_name
o main_class_name
.
Si especifica un objeto DataReference como entrada con data_reference_name=input1 y un objeto PipelineData como salida con name=output1, las entradas y salidas se pasarán al script como parámetros. Este será su aspecto y tendrá que analizar los argumentos del script para acceder a las rutas de acceso de cada entrada y salida: "-input1","wasbs://test@storagename.blob.core.windows.net/test","-output1", "wasbs://test@storagename.blob.core.windows.net/b3e26de1-87a4-494d-a20f-1988d22b81a2/output1"
Además, los parámetros siguientes estarán disponibles en el script:
- AZUREML_RUN_TOKEN: token de AML para autenticarse con Azure Machine Learning.
- AZUREML_RUN_TOKEN_EXPIRY: hora de expiración del token de AML.
- AZUREML_RUN_ID: identificador de ejecución de Azure Machine Learning para esta ejecución.
- AZUREML_ARM_SUBSCRIPTION: suscripción de Azure del área de trabajo de AML.
- AZUREML_ARM_RESOURCEGROUP: grupo de recursos de Azure del área de trabajo de Azure Machine Learning.
- AZUREML_ARM_WORKSPACE_NAME: nombre del área de trabajo de Azure Machine Learning.
- AZUREML_ARM_PROJECT_NAME: nombre del experimento de Azure Machine Learning.
- AZUREML_SERVICE_ENDPOINT: dirección URL del punto de conexión de los servicios de AML.
- AZUREML_WORKSPACE_ID: id. del área de trabajo de Azure Machine Learning.
- AZUREML_EXPERIMENT_ID: id. del experimento de Azure Machine Learning.
- AZUREML_SCRIPT_DIRECTORY_NAME: ruta de acceso de directorios en DBFS donde se ha copiado source_directory.
(Este parámetro solo se rellena cuando
python_script_name
se usa. Vea más detalles a continuación).
Al ejecutar un script de Python desde la máquina local en Databricks con los parámetros source_directory
y python_script_name
de Databricks, se copia source_directory en DBFS y la ruta de acceso de directorios en DBFS se pasa como un parámetro al script cuando comienza la ejecución.
Este parámetro se etiqueta como --AZUREML_SCRIPT_DIRECTORY_NAME. Debe agregar un prefijo con la cadena "dbfs:/". o "/dbfs/" para acceder al directorio en DBFS.
- source_directory
- str
Carpeta que contiene el script y otros archivos.
Si se especifica python_script_name
, también se debe especificar source_directory
.
- hash_paths
- [str]
EN DESUSO: ya no es necesario.
Una lista de rutas de acceso a hash al comprobar si hay cambios en el contenido del paso. Si no se detecta ningún cambio, la canalización reutilizará el contenido del paso de una ejecución anterior. De manera predeterminada, se aplica un algoritmo hash al contenido de source_directory
, excepto los archivos enumerados en los archivos .amlignore o .gitignore.
- runconfig
- RunConfiguration
Elemento runconfig que se va a usar.
Nota: Puede pasar tantas bibliotecas como quiera como dependencias a su trabajo mediante los parámetros siguientes: maven_libraries
, pypi_libraries
, egg_libraries
, jar_libraries
o rcran_libraries
. Pase estos parámetros directamente con sus parámetros correspondientes o como parte del objeto RunConfiguration mediante el parámetro runconfig
, pero no ambos.
- maven_libraries
- list[MavenLibrary]
Bibliotecas de Maven que se usarán para la ejecución de Databricks.
- pypi_libraries
- list[PyPiLibrary]
Bibliotecas de PyPi que se usarán para la ejecución de Databricks.
- egg_libraries
- list[EggLibrary]
Bibliotecas de Egg que se usarán para la ejecución de Databricks.
- jar_libraries
- list[JarLibrary]
Bibliotecas Jar que se usarán para la ejecución de Databricks.
- rcran_libraries
- list[RCranLibrary]
Bibliotecas de RCran que se usarán para la ejecución de Databricks.
- compute_target
- str, DatabricksCompute
[Obligatorio] Un recurso de proceso de Azure Databricks. Para poder usar DatabricksStep para ejecutar los scripts o los cuadernos en un área de trabajo de Azure Databricks, debe agregar el área de trabajo de Azure Databricks como destino de proceso al área de trabajo de Azure Machine Learning.
- allow_reuse
- bool
Indica si el paso debe volver a usar los resultados anteriores cuando se vuelve a ejecutar con la misma configuración. La reutilización está habilitada de manera predeterminada. Si el contenido del paso (scripts o dependencias), así como las entradas y los parámetros permanecen sin cambios, se reutiliza la salida de la ejecución anterior de este paso. Al volver a usar el paso, en lugar de enviar el trabajo al proceso, los resultados de la ejecución anterior se hacen disponibles inmediatamente para los pasos posteriores. Si usa conjuntos de datos de Azure Machine Learning como entradas, la reutilización viene determinada por si la definición del conjunto de datos ha cambiado, no por si los datos subyacentes han cambiado.
- version
- str
Etiqueta de versión opcional para indicar un cambio en la funcionalidad del paso.
- permit_cluster_restart
- bool
Si se especifica existing_cluster_id, este parámetro indica si el clúster se puede reiniciar en nombre del usuario.
- inputs
- list[Union[InputPortBinding, DataReference, PortDataReference, PipelineData]]
Lista de conexiones de entrada para los datos consumidos por este paso. Recupera esto dentro del cuaderno mediante dbutils.widgets.get("input_name"). Puede ser un elemento DataReference o PipelineData. DataReference representa un fragmento de datos existente en un almacén de datos. Básicamente, se trata de una ruta de acceso en un almacén de datos. DatabricksStep admite almacenes de datos que encapsulan DBFS, blob de Azure o ADLS v1. PipelineData representa los datos intermedios generados por otro paso de una canalización.
- outputs
- list[Union[OutputPortBinding, <xref:azureml.pipeline.core.pipeline_output_dataset.PipelineOutputDataset>, PipelineData]]
Lista de definiciones de puerto de salida para las salidas producidas por este paso. Recupera esto dentro del cuaderno mediante dbutils.widgets.get("output_name"). Debe ser un elemento PipelineData.
- existing_cluster_id
- str
Identificador de un clúster interactivo existente en el área de trabajo de Databricks. Si va a pasar este parámetro, no puede pasar ninguno de los parámetros siguientes, que se usan para crear un nuevo clúster:
- spark_version
- node_type
- instance_pool_id
- num_workers
- min_workers
- max_workers
- spark_env_variables
- spark_conf
Nota: Para crear un nuevo clúster de trabajos, deberá pasar los parámetros anteriores. Puede pasar estos parámetros directamente o puede pasarlos como parte del objeto RunConfiguration mediante el parámetro runconfig. Si se pasan estos parámetros directamente y mediante RunConfiguration, se produce un error.
- spark_version
- str
La versión de Spark para el clúster de ejecución de Databricks, por ejemplo: "10.4.x-scala2.12".
Para más información, consulte la descripción del parámetro existing_cluster_id
.
- node_type
- str
[Obligatorio] Tipos de nodo de máquina virtual de Azure para el clúster de ejecución de Databricks, por ejemplo: "Standard_D3_v2". Especifique node_type
o instance_pool_id
.
Para más información, consulte la descripción del parámetro existing_cluster_id
.
- instance_pool_id
- str
[Obligatorio] Identificador del grupo de instancias al que se debe asociar el clúster.
Especifique node_type
o instance_pool_id
.
Para más información, consulte la descripción del parámetro existing_cluster_id
.
- num_workers
- int
[Obligatorio] Número estático de nodos de trabajo para el clúster de ejecución de Databricks.
Debe especificar num_workers
o min_workers
y max_workers
.
Para más información, consulte la descripción del parámetro existing_cluster_id
.
- min_workers
- int
[Obligatorio] Número mínimo de nodos de trabajo que se usarán para el escalado automático del clúster de ejecución de Databricks.
Debe especificar num_workers
o min_workers
y max_workers
.
Para más información, consulte la descripción del parámetro existing_cluster_id
.
- max_workers
- int
[Obligatorio] Número máximo de nodos de trabajo que se usarán para el escalado automático del clúster de ejecución de Databricks.
Debe especificar num_workers
o min_workers
y max_workers
.
Para más información, consulte la descripción del parámetro existing_cluster_id
.
- spark_env_variables
- dict
Variables de entorno de Spark para el clúster de ejecución de Databricks.
Para más información, consulte la descripción del parámetro existing_cluster_id
.
- spark_conf
- dict
Configuración de Spark para el clúster de ejecución de Databricks.
Para más información, consulte la descripción del parámetro existing_cluster_id
.
- init_scripts
- [str]
Desusado. Databricks anunció que el script de inicialización almacenado en DBFS dejará de funcionar después del 1 de dic de 2023. Para mitigar el problema, use scripts de inicialización globales en databricks después https://learn.microsoft.com/azure/databricks/init-scripts/global de 2) comente la línea de init_scripts en el paso de Databricks de AzureML.
- cluster_log_dbfs_path
- str
Rutas de acceso DBFS donde se van a entregar los registros de los clústeres.
- notebook_path
- str
[Obligatorio] Ruta de acceso al cuaderno en la instancia de Databricks. Esta clase permite cuatro maneras de especificar el código que se va a ejecutar en el clúster de Databricks.
Para ejecutar un cuaderno que esté presente en el área de trabajo de Databricks, use: notebook_path=notebook_path, notebook_params={'myparam': 'testparam'}
Para ejecutar un script de Python que esté presente en DBFS, use: python_script_path=python_script_dbfs_path, python_script_params={'arg1', 'arg2'}
Para ejecutar un archivo JAR que esté presente en DBFS, use: main_class_name=main_jar_class_name, jar_params={'arg1', 'arg2'}, jar_libraries=[JarLibrary(jar_library_dbfs_path)]
Para ejecutar un script de Python que esté presente en el equipo local, use: python_script_name=python_script_name, source_directory=source_directory
Especifique exactamente uno entre notebook_path
, python_script_path
, python_script_name
o main_class_name
.
- notebook_params
- dict[str, (str o PipelineParameter)]
Diccionario de parámetros que se van a pasar al cuaderno. Los elementos notebook_params
están disponibles como widgets. Puede capturar los valores de estos widgets dentro del cuaderno mediante dbutils.widgets.get("myparam").
- python_script_path
- str
[Obligatorio] Ruta de acceso al script de Python en DBFS.
Especifique exactamente uno entre notebook_path
, python_script_path
, python_script_name
o main_class_name
.
- main_class_name
- str
[Obligatorio] Nombre del punto de entrada en un módulo JAR.
Especifique exactamente uno entre notebook_path
, python_script_path
, python_script_name
o main_class_name
.
- source_directory
- str
Carpeta que contiene el script y otros archivos.
Si se especifica python_script_name
, también se debe especificar source_directory
.
- hash_paths
- [str]
EN DESUSO: ya no es necesario.
Una lista de rutas de acceso a hash al comprobar si hay cambios en el contenido del paso. Si no se detecta ningún cambio, la canalización reutilizará el contenido del paso de una ejecución anterior. De manera predeterminada, se aplica un algoritmo hash al contenido de source_directory
, excepto los archivos enumerados en los archivos .amlignore o .gitignore.
- runconfig
- RunConfiguration
Elemento runconfig que se va a usar.
Nota: Puede pasar tantas bibliotecas como quiera como dependencias a su trabajo mediante los parámetros siguientes: maven_libraries
, pypi_libraries
, egg_libraries
, jar_libraries
o rcran_libraries
. Pase estos parámetros directamente con sus parámetros correspondientes o como parte del objeto RunConfiguration mediante el parámetro runconfig
, pero no ambos.
- maven_libraries
- list[<xref:azureml.core.runconfig.MavenLibrary>]
Bibliotecas de Maven que se usarán para la ejecución de Databricks.
Para obtener más información sobre la especificación de las bibliotecas de Maven, vea help(azureml.core.runconfig.MavenLibrary)
.
- pypi_libraries
- list[<xref:azureml.core.runconfig.PyPiLibrary>]
Bibliotecas de PyPi que se usarán para la ejecución de Databricks.
Para obtener más información sobre la especificación de bibliotecas de PyPi, consulte help(azureml.core.runconfig.PyPiLibrary)
.
- egg_libraries
- list[<xref:azureml.core.runconfig.EggLibrary>]
Bibliotecas de Egg que se usarán para la ejecución de Databricks.
Para obtener más información sobre la especificación de bibliotecas egg, vea help(azureml.core.runconfig.EggLibrary)
.
- jar_libraries
- list[<xref:azureml.core.runconfig.JarLibrary>]
Bibliotecas Jar que se usarán para la ejecución de Databricks.
Para obtener más información sobre la especificación de las bibliotecas Jar, vea help(azureml.core.runconfig.JarLibrary)
.
- rcran_libraries
- list[<xref:azureml.core.runconfig.RCranLibrary>]
Bibliotecas de RCran que se usarán para la ejecución de Databricks.
Para obtener más información sobre la especificación de las bibliotecas de RCran, vea help(azureml.core.runconfig.RCranLibrary)
.
- compute_target
- str, DatabricksCompute
[Obligatorio] Proceso de Azure Databricks. Para poder usar DatabricksStep para ejecutar los scripts o los cuadernos en un área de trabajo de Azure Databricks, debe agregar el área de trabajo de Azure Databricks como destino de proceso al área de trabajo de Azure Machine Learning.
- allow_reuse
- bool
Indica si el paso debe volver a usar los resultados anteriores cuando se vuelve a ejecutar con la misma configuración. La reutilización está habilitada de manera predeterminada. Si el contenido del paso (scripts o dependencias), así como las entradas y los parámetros permanecen sin cambios, se reutiliza la salida de la ejecución anterior de este paso. Al volver a usar el paso, en lugar de enviar el trabajo al proceso, los resultados de la ejecución anterior se hacen disponibles inmediatamente para los pasos posteriores. Si usa conjuntos de datos de Azure Machine Learning como entradas, la reutilización viene determinada por si la definición del conjunto de datos ha cambiado, no por si los datos subyacentes han cambiado.
- version
- str
Etiqueta de versión opcional para indicar un cambio en la funcionalidad del paso.
- permit_cluster_restart
- bool
Si se especifica existing_cluster_id, este parámetro indica si el clúster se puede reiniciar en nombre del usuario.
Métodos
create_node |
Crea un nodo a partir del paso de Databricks y lo agrega al grafo especificado. Este método no está pensado para usarse directamente. Cuando se crea una instancia de una canalización con este paso, Azure ML pasa automáticamente los parámetros necesarios mediante este método para que ese paso se pueda agregar a un grafo de canalización que represente el flujo de trabajo. |
create_node
Crea un nodo a partir del paso de Databricks y lo agrega al grafo especificado.
Este método no está pensado para usarse directamente. Cuando se crea una instancia de una canalización con este paso, Azure ML pasa automáticamente los parámetros necesarios mediante este método para que ese paso se pueda agregar a un grafo de canalización que represente el flujo de trabajo.
create_node(graph, default_datastore, context)
Parámetros
- default_datastore
- Union[AbstractAzureStorageDatastore, AzureDataLakeDatastore]
El almacén de datos predeterminado.
- context
- <xref:azureml.pipeline.core._GraphContext>
El contexto del grafo.
Devoluciones
Nodo creado.
Tipo de valor devuelto
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de