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 Estudio de Azure Machine Learning en una instancia de proceso 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
- Si no tiene una suscripción de Azure, cree una cuenta gratuita antes de empezar. Pruebe hoy mismo la versión gratuita o de pago de Azure Machine Learning.
- Un área de trabajo de Azure Machine Learning y una instancia de proceso.
- Conocimientos básicos sobre el uso de cuadernos de Jupyter Notebook en Estudio de Azure Machine Learning. Para obtener más información, visite el recurso Desarrollo de modelos en una estación de trabajo en la nube.
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.
Inicie sesión en Azure Machine Learning Studio.
Abra su área de trabajo si aún no está abierta.
En el panel de navegación izquierdo, seleccione Cuadernos.
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
Seleccione el cuaderno.
En la barra de herramientas del cuaderno, asegúrese de que la instancia de proceso se está ejecutando. De lo contrario, iníciela.
En la barra de herramientas del cuaderno, cambie el kernel a 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:
Cree un archivo en la instancia de proceso, denominado setup.sh.
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
Seleccione Guardar y ejecutar script en el terminal para ejecutar el script.
El script de instalación controla estos pasos:
pip
instalaazureml-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.
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")
Cargue
reticulate
y establezca el entorno de Conda donde se instalóazureml-fsspec
.library(reticulate) use_condaenv("azureml_py310_sdkv2") print("Environment is set")
Busque la ruta de acceso del URI al archivo de datos.
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")
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"
Ejecute el código para recuperar el URI.
py_run_string(py_code) print(paste("URI path is", py$data_uri))
Use funciones de lectura de Pandas para leer el archivo o 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.
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:
- Vaya al archivo o carpeta que desea leer en R
- Seleccione el botón de puntos suspensivos (...) situado junto a él.
- Seleccione en el menú Copiar URI.
- 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.
Cree un objeto de almacén de archivos con el URI mencionado anteriormente:
fs <- azureml.fsspec$AzureMachineLearningFileSystem(uri, sep = "")
- 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).