Desenvolvimento interativo com o R
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)
Este artigo mostra como usar o R no Estúdio do Azure Machine Learning em uma instância de computação, que executa um kernel R em um notebook Jupyter.
O IDE popular do RStudio 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, tem limitações na leitura e escrita no seu workspace 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 sucesso.
Pré-requisitos
- Caso não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar. Experimente hoje mesmo a versão gratuita ou paga do Azure Machine Learning
- Um workspace do Azure Machine Learning e uma instância de computação
- Uma compreensão básica do uso dos Jupyter notebooks no Estúdio do Azure Machine Learning. Visite o Desenvolvimento de modelo em um recurso de estação de trabalho de nuvem para obter mais informações.
Executar o R em um notebook no estúdio
Você usará um notebook no workspace do Azure Machine Learning em uma instância de computação.
Entre no Estúdio do Azure Machine Learning
Abra o workspace, caso ele ainda não esteja aberto
No painel de navegação à esquerda, selecione Notebooks
Crie um notebook chamado RunR.ipynb
Dica
Se você não souber como criar e trabalhar com notebooks no estúdio, consulte Executar notebooks Jupyter no seu espaço de trabalho
Selecione o notebook.
Na barra de ferramentas do notebook, verifique se a instância de computação está em execução. Se ela não estiver, inicie-a agora.
Na barra de ferramentas do notebook, alterne o kernel para R.
Seu notebook agora está pronto para executar comandos R.
Acessar dados
Você pode carregar arquivos para o recurso de armazenamento de arquivos do workspace e, em seguida, acessar esses arquivos no 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 o Python e o pacote reticulate
para carregar seus ativos de dados e armazenamentos de dados no R, a partir de uma sessão interativa. Use o pacote Python azureml-fsspec
e o pacote R reticulate
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 esses pacotes:
Crie um 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 essas etapas:
pip
instalaazureml-fsspec
no ambiente do Conda padrão para a instância de computação- Instala o pacote
reticulate
do R, se necessário (a versão precisa ser 1.26 ou superior)
Ler dados de tabela de ativos ou armazenamentos de dados registrados
Para dados armazenados em um ativo de dados criado no Azure Machine Learning, use essas etapas para ler esse arquivo tabular em um Pandas DataFrame ou em um R data.frame
:
Observação
A leitura de um arquivo com reticulate
só funciona com os dados de tabela.
Verifique se você tem 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")
Carregar o
reticulate
e definir o ambiente do Conda em que oazureml-fsspec
foi instaladolibrary(reticulate) use_condaenv("azureml_py310_sdkv2") print("Environment is set")
Localize o caminho do URI para o arquivo de dados.
Primeiro, obtenha um identificador para seu workspace
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. Substitua
<MY_NAME>
e<MY_VERSION>
pelo nome e pelo número do ativo de dados.Dica
No estúdio, selecione Dados na navegação à esquerda para encontrar o nome e o número de 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))
Usar as funções de leitura do Pandas para ler o arquivo ou arquivos no ambiente do R.
pd <- import("pandas") cc <- pd$read_csv(py$data_uri) head(cc)
Você também poderá usar um URI do armazenamento de dados para acessar arquivos diferentes em um armazenamento de dados registrado e ler esses recursos em um R data.frame
.
Nesse formato, crie um URI do 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)
Dica
Em vez de lembrar o formato do 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 seu arquivo está localizado:
- Navegue até o arquivo/pasta que você deseja ler em R
- Selecione a elipse (...) ao lado dela.
- Selecione no menu Copiar URI.
- Selecione o URI de Armazenamento de Dados a ser copiado para o notebook/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
data.frame
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)
Instalar pacotes do 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.
Dica
Ao criar ou usar uma instância de computação diferente, você deve reinstalar todos os pacotes instalados.
Por exemplo, para instalar o pacote tsibble
:
install.packages("tsibble",
dependencies = TRUE,
lib = "/home/azureuser")
Observação
Se você instalar pacotes em uma sessão do R executada em um notebook Jupyter, é necessário o dependencies = TRUE
. Caso contrário, os pacotes dependentes não serão instalados automaticamente. O local da biblioteca também é necessário para a instalação no local correto da instância de computação.
Carregar bibliotecas do R
Adicione /home/azureuser
ao caminho da biblioteca do R.
.libPaths("/home/azureuser")
Dica
Você deve atualizar o .libPaths
em cada script R interativo para acessar as bibliotecas instaladas pelo usuário. Adicione este código ao início de cada notebook ou script interativo do R.
Depois que o libPath for atualizado, carregue as bibliotecas como de costume.
library('tsibble')
Usar o R no notebook
Além dos problemas descritos anteriormente, use o R como faria em qualquer outro ambiente, incluindo sua estação de trabalho local. No notebook ou no script, você pode fazer leituras e gravações no caminho em que o notebook/o script está armazenado.
Observação
- Em uma sessão interativa do R, você só pode fazer gravações no sistema de arquivos do workspace.
- Em uma sessão interativa do R, você não pode interagir com o MLflow (como modelo de log ou registro de consulta).