Отладка сценариев R в azure -ml: где можно найти журналы stdout и stderr? (или почему они пусты?) - PullRequest
1 голос
/ 23 января 2020

Я использую «studio (preview)» от Microsoft Azure Машинное обучение для создания конвейера, который применяет машинное обучение к набору данных в хранилище больших двоичных объектов, которое подключено к нашему хранилищу данных.

In «Конструктор», действие «Сценарий Exectue R» может быть добавлено в конвейер. Я использую эту функциональность, чтобы выполнить некоторые из моих собственных алгоритмов машинного обучения.

У меня есть работающая версия этого сценария 'hello world' (включая использование "комплекта сценариев" для загрузки функций в мой скрипт). собственные файлы R). Он применяет очень простую манипуляцию (вычисляет разницу дней с датой в столбце даты и «сегодня») и сохраняет выходные данные в виде нового файла. Учитывая, что экспортированный файл имеет правильную информацию, я знаю, что скрипт R работает хорошо.

Сценарий выглядит так:

# R version: 3.5.1
# The script MUST contain a function named azureml_main
# which is the entry point for this module.

# The entry point function can contain up to two input arguments:
#   Param<medals>: a R DataFrame
#   Param<matches>: a R DataFrame

azureml_main <- function(dataframe1, dataframe2){

  message("STARTING R script run.")

  # If a zip file is connected to the third input port, it is
  # unzipped under "./Script Bundle". This directory is added
  # to sys.path.

  message('Adding functions as source...')

  if (FALSE) {
    # This works...
      source("./Script Bundle/first_function_for_script_bundle.R")
  } else {
    # And this works as well!
    message('Sourcing all available functions...')
    functions_folder = './Script Bundle'

    list.files(path = functions_folder)
    list_of_R_functions <- list.files(path = functions_folder, pattern = "^.*[Rr]$", include.dirs = FALSE, full.names = TRUE)
    for (fun in list_of_R_functions) {

      message(sprintf('Sourcing <%s>...', fun))

      source(fun)

    }
  }

  message('Executing R pipeline...')
  dataframe1 = calculate_days_difference(dataframe = dataframe1)

  # Return datasets as a Named List
  return(list(dataset1=dataframe1, dataset2=dataframe2))
}

И хотя я действительно печатаю некоторые сообщения в R Скрипт, я не смог найти ни "stdoutlogs", ни "stderrlogs", которые должны содержать эти печатные сообщения.

Мне нужны печатные сообщения для 1) информации о том, как прошел анализ, и, что наиболее важно, - 2) отладка в случае сбоя кода.

Теперь я нашел (в нескольких местах) файлы "stdoutlogs.txt" и "stderrlogs.txt". Их можно найти в разделе «Журналы», когда я нажимаю «Сценарий Exectue R» в «Конструкторе». Я также могу найти файлы "stdoutlogs.txt" и "stderrlogs.txt" в разделе "Эксперименты", когда нажимаю готовый "Выполнить", а затем и на вкладке "Выходы", и на вкладке "Журналы". Однако ... все эти файлы пусты.

Может кто-нибудь сказать мне, как я могу печатать сообщения из моего скрипта R и помочь мне найти, где я могу найти напечатанную информацию?

1 Ответ

2 голосов
/ 24 января 2020

Можете ли вы нажать на кнопку «Выполнить модуль R» и загрузить файл 70_driver.log? Я попробовал сообщение («STARTING R script run.») В образце R и смог найти вывод там.

view logs for a execute R script module

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...