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 em uma instância de computação no estúdio de Aprendizado de Máquina do Azure, 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

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.

  1. Entrar no estúdio do Azure Machine Learning

  2. Abra seu espaço de trabalho se ele ainda não estiver aberto

  3. No painel de navegação esquerdo, selecione Blocos de Anotações

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

  5. Selecione o bloco de anotações.

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

  7. Na barra de ferramentas do bloco de anotações, alterne o kernel para R.

    Screenshot: Switch the notebook kernel to use 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 pacote Python e o azureml-fsspecreticulate 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:

  1. Crie um novo 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 estas etapas:

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

  1. 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")
    
  2. Carregue reticulate e defina o ambiente de conda onde azureml-fsspec foi instalado

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

    1. 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")
    2. Use este código para recuperar o ativo. Certifique-se de substituir <MY_NAME> e com o nome e <MY_VERSION> 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"
    3. Execute o código para recuperar o URI.

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

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

    1. Navegue até o arquivo/pasta que deseja ler em R
    2. Selecione a elipse (...) ao lado dela.
    3. Selecione no menu Copiar URI.
    4. 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. 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 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).

Próximos passos