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 em uma instância de computação no Estúdio do Azure Machine Learning, 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

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.

  1. Entre no Estúdio do Azure Machine Learning

  2. Abra o workspace, caso ele ainda não esteja aberto

  3. No painel de navegação à esquerda, selecione Notebooks

  4. 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

  5. Selecione o notebook.

  6. 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.

  7. Na barra de ferramentas do notebook, alterne o kernel para R.

    Screenshot: Switch the notebook kernel to use 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:

  1. Crie um arquivo na instância de computação chamado setup.sh.

  2. 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
    
  3. Selecione Salvar e executar script no terminal para executar o script

O script de instalação lida com essas etapas:

  • pip instala azureml-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.

  1. 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")
    
  2. Carregar o reticulate e definir o ambiente do Conda em que o azureml-fsspec foi instalado

    library(reticulate)
    use_condaenv("azureml_py310_sdkv2")
    print("Environment is set")
  3. Localize o caminho do URI para o arquivo de dados.

    1. 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")
    2. 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"
    3. Execute o código para recuperar o URI.

      py_run_string(py_code)
      print(paste("URI path is", py$data_uri))
  4. Usar as funções de leitura do Pandas para ler os 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.

  1. 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:

    1. Navegue até o arquivo/pasta que você deseja ler em R
    2. Selecione a elipse (...) ao lado dela.
    3. Selecione no menu Copiar URI.
    4. 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 . Screenshot highlighting the copy of the datastore URI.
  2. Crie um objeto filestore usando o URI acima mencionado:

fs <- azureml.fsspec$AzureMachineLearningFileSystem(uri, sep = "")
  1. 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).

Próximas etapas