Интерактивная разработка R

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)

В этой статье показано, как использовать R в вычислительном экземпляре в Студия машинного обучения Azure, который запускает ядро R в записной книжке Jupyter.

Также работает популярная интегрированная среда разработки RStudio. Вы можете установить RStudio или Posit Workbench в пользовательском контейнере на вычислительном экземпляре. Однако это имеет ограничения на чтение и запись в рабочую область Машинное обучение Azure.

Важно!

Код, показанный в этой статье, работает над Машинное обучение Azure вычислительным экземпляром. Вычислительный экземпляр имеет среду и файл конфигурации, необходимый для успешного выполнения кода.

Необходимые компоненты

Запуск R в записной книжке в студии

Записная книжка будет использоваться в рабочей области Машинное обучение Azure на вычислительном экземпляре.

  1. Войдите в Студию машинного обучения Azure

  2. Откройте рабочую область, если она еще не открыта

  3. В области навигации слева выберите "Записные книжки"

  4. Создание записной книжки с именем RunR.ipynb

    Совет

    Если вы не знаете, как создавать и работать с записными книжками в студии, просмотрите записные книжки Jupyter в рабочей области.

  5. Выберите записную книжку.

  6. На панели инструментов записной книжки убедитесь, что вычислительный экземпляр запущен. Если нет, запустите его сейчас.

  7. На панели инструментов записной книжки переключите ядро на R.

    Screenshot: Switch the notebook kernel to use R.

Теперь записная книжка готова к выполнению команд R.

Доступ к данным

Вы можете передать файлы в ресурс хранилища файлов рабочей области, а затем получить доступ к этим файлам в R. Однако для файлов, хранящихся в ресурсах данных Azure или данных из хранилищ данных, необходимо установить некоторые пакеты.

В этом разделе описывается, как использовать Python и reticulate пакет для загрузки ресурсов данных и хранилищ данных в R из интерактивного сеанса. Пакет Python и reticulate пакет R используются azureml-fsspec для чтения табличных данных в виде кадров данных Pandas. В этом разделе также приведен пример чтения ресурсов данных и хранилищ данных в R data.frame.

Чтобы установить эти пакеты, выполните приведенные ниже действия.

  1. Создайте новый файл в вычислительном экземпляре с именем setup.sh.

  2. Скопируйте следующий код в файл:

    #!/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. Нажмите кнопку "Сохранить и запустить скрипт" в терминале , чтобы запустить скрипт

Сценарий установки обрабатывает следующие действия:

  • pipazureml-fsspec устанавливает в среду conda по умолчанию для вычислительного экземпляра
  • При необходимости устанавливает пакет R reticulate (версия должна быть 1.26 или более поздней)

Чтение табличных данных из зарегистрированных ресурсов данных или хранилищ данных

Для данных, хранящихся в ресурсе данных, созданном в Машинное обучение Azure, выполните следующие действия, чтобы прочитать этот табличный файл в кадр данных Pandas или Rdata.frame:

Примечание.

Чтение файла только reticulate с табличными данными.

  1. Убедитесь, что у вас есть правильная версия reticulate. Для версии менее 1.26 попробуйте использовать более новый вычислительный экземпляр.

    packageVersion("reticulate")
    
  2. Загрузка reticulate и установка среды conda, в которой azureml-fsspec была установлена

    library(reticulate)
    use_condaenv("azureml_py310_sdkv2")
    print("Environment is set")
  3. Найдите путь URI к файлу данных.

    1. Сначала получите дескриптор рабочей области

      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. Используйте этот код для получения ресурса. Обязательно замените <MY_NAME> и <MY_VERSION> на имя и номер ресурса данных.

      Совет

      В студии выберите Данные в левой области навигации, чтобы найти имя и номер версии ресурса данных.

      # 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. Запустите код, чтобы получить универсальный код ресурса (URI).

      py_run_string(py_code)
      print(paste("URI path is", py$data_uri))
  4. Использование функций чтения Pandas для чтения файлов в среде R

    pd <- import("pandas")
    cc <- pd$read_csv(py$data_uri)
    head(cc)

Вы также можете использовать универсальный код ресурса (URI) хранилища данных для доступа к разным файлам в зарегистрированном хранилище данных и считывать эти ресурсы в R data.frame.

  1. В этом формате создайте универсальный код ресурса (URI) хранилища данных, используя собственные значения:

    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)
    

    Совет

    Вместо запоминания формата URI хранилища данных можно скопировать и вставить универсальный код ресурса (URI) хранилища данных из пользовательского интерфейса Студии, если вы знаете хранилище данных, где находится файл:

    1. Перейдите к файлу или папке, которую нужно прочитать в R
    2. Рядом с ним выберите elipsis (...).
    3. Выберите в меню URI копирования.
    4. Выберите универсальный код ресурса (URI ) хранилища данных для копирования в записную книжку или скрипт. Обратите внимание, что в коде необходимо создать переменную <path> . Screenshot highlighting the copy of the datastore URI.
  2. Создайте объект filestore с помощью приведенного выше упоминание URI:

fs <- azureml.fsspec$AzureMachineLearningFileSystem(uri, sep = "")
  1. Чтение в 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)

Установка пакетов R

Вычислительный экземпляр имеет множество предустановленных пакетов R.

Чтобы установить другие пакеты, необходимо явно указать расположение и зависимости.

Совет

При создании или использовании другого вычислительного экземпляра необходимо повторно установить все установленные пакеты.

Например, чтобы установить tsibble пакет, выполните следующие действия.

install.packages("tsibble", 
                 dependencies = TRUE,
                 lib = "/home/azureuser")

Примечание.

Если вы устанавливаете пакеты в сеансе R, работающем в записной книжке Jupyter, dependencies = TRUE требуется. В противном случае зависимые пакеты не будут автоматически устанавливаться. Расположение lib также требуется для установки в правильном расположении вычислительного экземпляра.

Загрузка библиотек R

Добавьте /home/azureuser путь к библиотеке R.

.libPaths("/home/azureuser")

Совет

Чтобы получить доступ к установленным пользователям библиотекам, необходимо обновить .libPaths каждый интерактивный скрипт R. Добавьте этот код в верхнюю часть каждого интерактивного скрипта R или записной книжки.

После обновления libPath загрузите библиотеки как обычно.

library('tsibble')

Использование R в записной книжке

Помимо описанных выше проблем, используйте R, как и в любой другой среде, включая локальную рабочую станцию. В записной книжке или скрипте можно читать и записывать данные в путь, в котором хранится записная книжка или скрипт.

Примечание.

  • В интерактивном сеансе R можно записывать только в файловую систему рабочей области.
  • В интерактивном сеансе R невозможно взаимодействовать с MLflow (например, моделью журнала или реестром запросов).

Следующие шаги