Desenvolvimento R interativo
APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)
Este artigo mostra como usar R no estúdio de Aprendizado de Máquina do Azure em uma instância de computação que executa um kernel R em um bloco de anotações Jupyter.
O popular RStudio IDE também funciona. Você pode instalar o RStudio ou o Posit Workbench em um contêiner personalizado em uma instância de computação. No entanto, isso tem limitações na leitura e gravação em seu espaço de trabalho do Azure Machine Learning.
Importante
O código mostrado neste artigo funciona em uma instância de computação do Azure Machine Learning. A instância de computação tem um ambiente e um arquivo de configuração necessários para que o código seja executado com êxito.
Pré-requisitos
- Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar. Experimente hoje mesmo a versão gratuita ou paga do Azure Machine Learning
- Um espaço de trabalho do Azure Machine Learning e uma instância de computação
- Uma compreensão básica do uso de blocos de anotações Jupyter no estúdio de Aprendizado de Máquina do Azure. Visite o recurso Desenvolvimento de modelo em uma estação de trabalho na nuvem para obter mais informações.
Executar R em um notebook no estúdio
Você usará um bloco de anotações em seu espaço de trabalho do Azure Machine Learning, em uma instância de computação.
Entrar no estúdio do Azure Machine Learning
Abra seu espaço de trabalho se ele ainda não estiver aberto
No painel de navegação esquerdo, selecione Blocos de Anotações
Criar um novo bloco de anotações, chamado RunR.ipynb
Gorjeta
Se não tiver a certeza de como criar e trabalhar com blocos de notas no estúdio, consulte Executar blocos de notas Jupyter na sua área de trabalho
Selecione o bloco de anotações.
Na barra de ferramentas do bloco de anotações, verifique se a instância de computação está em execução. Se não, comece agora.
Na barra de ferramentas do bloco de anotações, alterne o kernel para R.
O seu bloco de notas está agora pronto para executar comandos R.
Aceder a dados
Você pode carregar arquivos para o recurso de armazenamento de arquivos do espaço de trabalho e, em seguida, acessar esses arquivos em R. No entanto, para arquivos armazenados em ativos de dados do Azure ou dados de armazenamentos de dados, você deve instalar alguns pacotes.
Esta seção descreve como usar Python e o reticulate
pacote para carregar seus ativos de dados e armazenamentos de dados em R, a partir de uma sessão interativa. Você usa o azureml-fsspec
pacote Python e o reticulate
pacote R para ler dados tabulares como Pandas DataFrames. Esta seção também inclui um exemplo de leitura de ativos de dados e armazenamentos de dados em um R data.frame
.
Para instalar estes pacotes:
Crie um novo arquivo na instância de computação, chamado setup.sh.
Copie este código para o arquivo:
#!/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
Selecione Salvar e executar script no terminal para executar o script
O script de instalação lida com estas etapas:
pip
Instalaazureml-fsspec
no ambiente conda padrão para a instância de computação- Instala o pacote R
reticulate
, se necessário (a versão deve ser 1.26 ou superior)
Ler dados tabulares de ativos de dados registrados ou armazenamentos de dados
Para dados armazenados em um ativo de dados criado no Azure Machine Learning, use estas etapas para ler esse arquivo tabular em um Pandas DataFrame ou um R data.frame
:
Nota
A leitura de um arquivo só reticulate
funciona com dados tabulares.
Certifique-se de ter a versão correta do
reticulate
. Para uma versão inferior a 1.26, tente usar uma instância de computação mais recente.packageVersion("reticulate")
Carregue
reticulate
e defina o ambiente de conda ondeazureml-fsspec
foi instaladolibrary(reticulate) use_condaenv("azureml_py310_sdkv2") print("Environment is set")
Localize o caminho de URI para o arquivo de dados.
Primeiro, controle seu espaço de trabalho
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 o ativo. Certifique-se de substituir
<MY_NAME>
e<MY_VERSION>
com o nome e número do seu ativo de dados.Gorjeta
No Studio, selecione Dados na navegação à esquerda para encontrar o nome e o número da versão do seu ativo de dados.
# 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"
Para recuperar o URI, execute o código.
py_run_string(py_code) print(paste("URI path is", py$data_uri))
Use as funções de leitura do Pandas para ler o arquivo ou arquivos no ambiente R.
pd <- import("pandas") cc <- pd$read_csv(py$data_uri) head(cc)
Você também pode usar um URI de armazenamento de dados para acessar arquivos diferentes em um armazenamento de dados registrado e ler esses recursos em um R data.frame
.
Neste formato, crie um URI de armazenamento de dados, usando seus próprios 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)
Gorjeta
Em vez de lembrar o formato URI do armazenamento de dados, você pode copiar e colar o URI do armazenamento de dados da interface do usuário do Studio, se souber o armazenamento de dados onde o arquivo está localizado:
- Navegue até o arquivo/pasta que deseja ler em R
- Selecione a elipse (...) ao lado dela.
- Selecione no menu Copiar URI.
- Selecione o URI do Datastore a ser copiado para o seu bloco de anotações/script.
Observe que você deve criar uma variável para
<path>
no código.
Crie um objeto de armazenamento de arquivos usando o URI mencionado anteriormente:
fs <- azureml.fsspec$AzureMachineLearningFileSystem(uri, sep = "")
- Leia em um R
data.frame
:
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)
Instalar pacotes de R
Uma instância de computação tem muitos pacotes R pré-instalados.
Para instalar outros pacotes, você deve declarar explicitamente o local e as dependências.
Gorjeta
Ao criar ou usar uma instância de computação diferente, você deve reinstalar todos os pacotes instalados.
Por exemplo, para instalar o tsibble
pacote:
install.packages("tsibble",
dependencies = TRUE,
lib = "/home/azureuser")
Nota
Se você instalar pacotes dentro de uma sessão R que é executada em um notebook Jupyter, dependencies = TRUE
é necessário. Caso contrário, os pacotes dependentes não serão instalados automaticamente. O local lib também é necessário para instalar no local correto da instância de computação.
Carregar bibliotecas R
Adicione /home/azureuser
ao caminho da biblioteca R.
.libPaths("/home/azureuser")
Gorjeta
Você deve atualizar o em cada script R interativo para acessar as bibliotecas instaladas pelo .libPaths
usuário. Adicione este código à parte superior de cada script R interativo ou bloco de anotações.
Depois que o libPath for atualizado, carregue as bibliotecas como de costume.
library('tsibble')
Usar R no bloco de anotações
Além dos problemas descritos anteriormente, use R como faria em qualquer outro ambiente, incluindo sua estação de trabalho local. No seu bloco de notas ou script, pode ler e escrever no caminho onde o bloco de notas/script está armazenado.
Nota
- A partir de uma sessão R interativa, você só pode gravar no sistema de arquivos do espaço de trabalho.
- A partir de uma sessão R interativa, você não pode interagir com o MLflow (como modelo de log ou registro de consulta).