Azure Machine Learning integration of R: Should the 'azureml' module have an attribute 'core'?

I'm having issues with Azure Machine Learning SDK for R: "module 'azureml' has no attribute 'core'"...

For reasons that aren't my own, I have to use azureml to apply machine learning (my own stuff, written in R) to data from our data warehouse that is put in the blob storage. The modelled output should be put back into the blob storage so it can be accessed from the data warehouse. I've written the code in R on my local machine (stored in a git repo). Preferably, I'd find some method to pull my code from git into a pipeline in the azureml environment so that it can be directly run whenever new data is available in the blob storage.

I've embarked on a tutorial-spree and found this seemingly relevant walkthrough: Train and deploy your first model with Azure ML (and this one).

But... after trying all I could think of, I'm stuck on the first steps. After installing all (or at least.. that's what I think) packages, modules, apps etc, and running the following code in RStudio:

   library(azuremlsdk)
    existing_ws <- get_workspace(name = name, 
                                 subscription_id = subscription_id, 
                                 resource_group)

I run into an error that I haven't been able to fix:

AttributeError: module 'azureml' has no attribute 'core'

It seems that the azuerml is supposed to have an attribute "core", but when looking at it more closely, there is indeed no such attribute. The function "get_workspace()" is trying to access: "azureml$core$Workspace$get". I found that "azuerML$Workspace" does exist, but then I can't figure out how to make that work.

Can anyone explain to me why I'm encountering this error? Does anyone know of a better tutorial on how to connect my R code the azureml's cloud service?

Any pointers in the right direction are much appreciated!


EDITS - still not solved: After advice from others, I double, triple and quadruple checked the installation.

I updated R and I'm now running:

R.version

platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status
major 3
minor 6.2
year 2019
month 12
day 12
svn rev 77560
language R
version.string R version 3.6.2 (2019-12-12) nickname Dark and Stormy Night

I installed Conda with Python 3.6.10. I installed the azuremlsdk R package (I tried both provided options). I then realized that there are some inconsistencies with the versions of the azure-modules, so I also tried installing it with the keyword 'multi-arch':

remotes::install_cran('azuremlsdk', repos = 'http://cran.us.r-project.org', INSTALL_opts=c("--no-multiarch"))

Then, I installed the azureml python sdk. I had a look at all the versions again (using python -m pip freeze):

azure-common==1.1.24

azure-graphrbac==0.61.1

azure-mgmt-authorization==0.60.0

azure-mgmt-containerregistry==2.8.0

azure-mgmt-keyvault==2.0.0

azure-mgmt-resource==7.0.0

azure-mgmt-storage==7.1.0

azureml==0.2.7

azureml-automl-core==1.0.83.1

azureml-core==1.0.69

azureml-dataprep==1.1.36

azureml-dataprep-native==13.2.0

azureml-pipeline==1.0.69

azureml-pipeline-core==1.0.69

azureml-pipeline-steps==1.0.69

azureml-sdk==1.0.69

azureml-telemetry==1.0.69

azureml-train==1.0.69

azureml-train-automl-client==1.0.83

azureml-train-core==1.0.69

azureml-train-restclients-hyperdrive==1.0.69

As I was surprised to see all the 1.0.69 versions, instead of the 1.0.83 versions, I re-installed the azureml python sdk using:

azuremlsdk::install_azureml(version = "1.0.83")

This worked, in the sense that indeed all versions are now 1.0.83:

azure-common==1.1.24

azure-graphrbac==0.61.1

azure-mgmt-authorization==0.60.0

azure-mgmt-containerregistry==2.8.0

azure-mgmt-keyvault==2.0.0

azure-mgmt-resource==7.0.0

azure-mgmt-storage==7.1.0

azureml==0.2.7

azureml-automl-core==1.0.83.1

azureml-core==1.0.83

azureml-dataprep==1.1.36

azureml-dataprep-native==13.2.0

azureml-pipeline==1.0.83

azureml-pipeline-core==1.0.83

azureml-pipeline-steps==1.0.83

azureml-sdk==1.0.83

azureml-telemetry==1.0.83

azureml-train==1.0.83

azureml-train-automl-client==1.0.83

azureml-train-core==1.0.83

azureml-train-restclients-hyperdrive==1.0.83

But still... I get the error with the missing core. I get it both when running:

library(azuremlsdk)
get_current_run()

and also when running:

library(azuremlsdk)
existing_ws <- get_workspace(name = name, 
                         subscription_id = subscription_id, 
                         resource_group)

Note that the first time running this code after starting up RStudio, I get the error:

Error in py_get_attr_impl(x, name, silent) :

AttributeError: module 'azureml' has no attribute '_base_sdk_common'

And every time after that I get this error:

Error in py_get_attr_impl(x, name, silent) :

AttributeError: module 'azureml' has no attribute 'core'

Any help would be much appreciated!

Answers

This issue was introduced by the latest reticulate 1.14 release, in which reticulate would create a default r-reticulate conda environment. Since Azure ML was installing the python SDK in an environment named r-azureml, the r-reticulate environment used by reticulate was missing the python SDK. A fix for this issue was addressed in a PR and has been merged into master. Please install from GitHub for now if you have reticulate version 1.14 and are running into this issue. We will be releasing an update to CRAN shortly.

Posted on by Anonymous