Desarrollo interactivo de R

SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)SDK de Python azure-ai-ml v2 (actual)

En este artículo se muestra cómo usar R en una instancia de proceso en Estudio de Azure Machine Learning que ejecuta un kernel de R en un cuaderno de Jupyter.

El popular IDE de RStudio también sirve. Puede instalar RStudio o Posit Workbench en un contenedor personalizado en una instancia de proceso. Sin embargo, esto tiene limitaciones al leer y escribir en el área de trabajo de Azure Machine Learning.

Importante

El código que se muestra en este artículo funciona en una instancia de proceso de Azure Machine Learning. La instancia de proceso tiene un entorno y un archivo de configuración necesarios para que el código se ejecute correctamente.

Requisitos previos

Ejecución de R en un cuaderno en Studio

Usará un cuaderno en el área de trabajo de Azure Machine Learning, en una instancia de proceso.

  1. Inicie sesión en Azure Machine Learning Studio.

  2. Abra su área de trabajo si aún no está abierta.

  3. En el panel de navegación izquierdo, seleccione Cuadernos.

  4. Cree un cuaderno, denominado RunR.ipynb.

    Sugerencia

    Si no está seguro de cómo crear cuadernos en Studio y cómo trabajar con ellos, vea Ejecución de cuadernos de Jupyter Notebook en su área de trabajo

  5. Seleccione el cuaderno.

  6. En la barra de herramientas del cuaderno, asegúrese de que la instancia de proceso se está ejecutando. De lo contrario, iníciela.

  7. En la barra de herramientas del cuaderno, cambie el kernel a R.

    Screenshot: Switch the notebook kernel to use R.

El cuaderno ya está listo para ejecutar comandos de R.

Acceso a los datos

Puede cargar archivos en el recurso de almacenamiento de archivos del área de trabajo y, a continuación, acceder a esos archivos en R. Sin embargo, para los archivos almacenados en recursos de datos de Azure o datos de almacenes de datos, debe instalar algunos paquetes.

En esta sección se describe cómo usar Python y el paquete reticulate para cargar los recursos de datos y los almacenes de datos en R desde una sesión interactiva. Use el paquete azureml-fsspec de Python y el paquete reticulate de R para leer datos tabulares como DataFrames de Pandas. En esta sección también se incluye un ejemplo de lectura de recursos de datos y almacenes de datos en una elemento de data.frame de R.

Para instalar estos paquetes:

  1. Cree un archivo en la instancia de proceso, denominado setup.sh.

  2. Copie este código en el archivo:

    #!/bin/bash
    
    set -e
    
    # Installs azureml-fsspec in default conda environment 
    # Does not need to run as sudo
    
    eval "$(conda shell.bash hook)"
    conda activate azureml_py310_sdkv2
    pip install azureml-fsspec
    conda deactivate
    
    # Checks that version 1.26 of reticulate is installed (needs to be done as sudo)
    
    sudo -u azureuser -i <<'EOF'
    R -e "if (packageVersion('reticulate') >= 1.26) message('Version OK') else install.packages('reticulate')"
    EOF
    
  3. Seleccione Guardar y ejecutar script en el terminal para ejecutar el script.

El script de instalación controla estos pasos:

  • pip instala azureml-fsspec en el entorno de Conda predeterminado para la instancia de proceso.
  • Instala el paquete reticulate de R si es necesario (la versión debe ser la 1.26 o una posterior).

Lectura de datos tabulares de recursos de datos registrados o almacenes de datos

Para los datos almacenados en un recurso de datos creado en Azure Machine Learning, siga estos pasos para leer ese archivo tabular en un Pandas DataFrame o elemento data.frame de R:

Nota

La lectura de un archivo con reticulate solo funciona con datos tabulares.

  1. Asegúrese de tener la versión correcta de reticulate. Si la versión es inferior a la 1.26, intente usar una instancia de proceso más reciente.

    packageVersion("reticulate")
    
  2. Cargue reticulate y establezca el entorno de Conda donde se instaló azureml-fsspec.

    library(reticulate)
    use_condaenv("azureml_py310_sdkv2")
    print("Environment is set")
  3. Busque la ruta de acceso del URI al archivo de datos.

    1. En primer lugar, obtenga un identificador para el área de trabajo.

      py_code <- "from azure.identity import DefaultAzureCredential
      from azure.ai.ml import MLClient
      credential = DefaultAzureCredential()
      ml_client = MLClient.from_config(credential=credential)"
      
      py_run_string(py_code)
      print("ml_client is configured")
    2. Use este código para recuperar el recurso. Asegúrese de reemplazar <MY_NAME> y <MY_VERSION> por el nombre y el número del recurso de datos.

      Sugerencia

      En Studio, seleccione Datos en el panel de navegación izquierdo para buscar el nombre y el número de versión del recurso de datos.

      # Replace <MY_NAME> and <MY_VERSION> with your values
      py_code <- "my_name = '<MY_NAME>'
      my_version = '<MY_VERSION>'
      data_asset = ml_client.data.get(name=my_name, version=my_version)
      data_uri = data_asset.path"
    3. Ejecute el código para recuperar el URI.

      py_run_string(py_code)
      print(paste("URI path is", py$data_uri))
  4. Use funciones de lectura de Pandas para leer los archivos en el entorno de R.

    pd <- import("pandas")
    cc <- pd$read_csv(py$data_uri)
    head(cc)

Puede usar un URI de almacén de datos para tener acceso a archivos diferentes en un almacén de datos registrado y leer estos recursos en un elemento data.frame de R.

  1. En este formato, cree un URI de almacén de datos con sus propios valores:

    subscription <- '<subscription_id>'
    resource_group <- '<resource_group>'
    workspace <- '<workspace>'
    datastore_name <- '<datastore>'
    path_on_datastore <- '<path>'
    
    uri <- paste0("azureml://subscriptions/", subscription, "/resourcegroups/", resource_group, "/workspaces/", workspace, "/datastores/", datastore_name, "/paths/", path_on_datastore)
    

    Sugerencia

    En lugar de recordar el formato del URI del almacén de datos, puede copiar y pegar el URI del almacén de datos desde la interfaz de usuario de Studio, si conoce el almacén de datos donde se encuentra el archivo:

    1. Vaya al archivo o carpeta que desea leer en R
    2. Seleccione el botón de puntos suspensivos (...) situado junto a él.
    3. Seleccione en el menú Copiar URI.
    4. Seleccione el identificador URI del almacén de datos para copiarlo en el cuaderno o script. Tenga en cuenta que debe crear una variable para <path> en el código. Screenshot highlighting the copy of the datastore URI.
  2. Cree un objeto de almacén de archivos con el URI mencionado anteriormente:

fs <- azureml.fsspec$AzureMachineLearningFileSystem(uri, sep = "")
  1. Leer en un elemento data.frame de R:
df <- with(fs$open("<path>)", "r") %as% f, {
 x <- as.character(f$read(), encoding = "utf-8")
 read.csv(textConnection(x), header = TRUE, sep = ",", stringsAsFactors = FALSE)
})
print(df)

Instalación de paquetes de R

Una instancia de proceso tiene muchos paquetes de R preinstalados.

Para instalar otros paquetes, debe indicar explícitamente la ubicación y las dependencias.

Sugerencia

Al crear o usar una instancia de proceso diferente, deberá instalar de nuevo los paquetes ya que haya instalado.

Por ejemplo, para instalar el paquete tsibble, haga lo siguiente:

install.packages("tsibble", 
                 dependencies = TRUE,
                 lib = "/home/azureuser")

Nota

Si instala paquetes en una sesión de R que se ejecuta en un cuaderno de Jupyter, dependencies = TRUE es necesario. De lo contrario, los paquetes dependientes no se instalarán automáticamente. La ubicación de la biblioteca también es necesaria para instalarse en la ubicación correcta de la instancia de proceso.

Carga de bibliotecas de R

Agregue /home/azureuser a la ruta de acceso de la biblioteca de R.

.libPaths("/home/azureuser")

Sugerencia

Debe actualizar .libPaths en cada script interactivo de R para acceder a las bibliotecas instaladas por el usuario. Agregue este código a la parte superior de cada cuaderno o script interactivo de R.

Una vez actualizado libPath, cargue las bibliotecas como de costumbre.

library('tsibble')

Uso de R en el cuaderno

Más allá de los problemas descritos anteriormente, utilice R como lo haría en cualquier otro entorno, incluida su estación de trabajo local. En el cuaderno o el script, puede leer y escribir en la ruta de acceso donde se almacenan estos.

Nota

  • Desde una sesión interactiva de R, solo puede escribir en el sistema de archivos del área de trabajo.
  • Desde una sesión interactiva de R, no puede interactuar con MLflow (por ejemplo, registrar el modelo o consultar el registro).

Pasos siguientes