R 的 Azure 机器学习集成:“azureml”模块是不是应该具有“核心”属性?

Posted

技术标签:

【中文标题】R 的 Azure 机器学习集成:“azureml”模块是不是应该具有“核心”属性?【英文标题】:Azure Machine Learning integration of R: Should the 'azureml' module have an attribute 'core'?R 的 Azure 机器学习集成:“azureml”模块是否应该具有“核心”属性? 【发布时间】:2020-04-28 04:45:51 【问题描述】:

我在使用适用于 R 的 Azure 机器学习 SDK 时遇到问题:“模块 'azureml' 没有属性 'core'”...

出于不属于我自己的原因,我必须使用 azureml 将机器学习(我自己的东西,用 R 编写)应用于来自我们数据仓库的数据,这些数据放在 blob 存储中。建模的输出应放回 blob 存储,以便可以从数据仓库访问。 我已经在本地机器上用 R 编写了代码(存储在 git repo 中)。最好,我会找到一些方法将我的代码从 git 拉到 azureml 环境中的管道中,以便在 blob 存储中有新数据可用时直接运行它。

我开始了教程,发现了这个看似相关的演练:Train and deploy your first model with Azure ML(和this one)。

但是……在尝试了我能想到的所有方法之后,我被困在了第一步。在安装完所有(或者至少是我认为的)包、模块、应用程序等,并在 RStudio 中运行以下代码之后:

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

我遇到了一个我无法修复的错误:

AttributeError: 模块 'azureml' 没有属性 'core'

好像azuerml应该有一个属性“core”,但是仔细看确实没有这个属性。 函数“get_workspace()”正在尝试访问:“azureml$core$Workspace$get”。 我发现“azuerML$Workspace”确实存在,但是我不知道如何使它工作。

谁能向我解释为什么我会遇到这个错误? 有谁知道如何将我的 R 代码连接到 azureml 的云服务的更好的教程?

非常感谢任何指向正确方向的指针!


编辑 - 仍未解决: 在其他人的建议下,我检查了installation 的两倍、三倍和四倍。

我更新了 R,现在正在运行:

R.版本

平台 x86_64-w64-mingw32 拱 x86_64 操作系统 mingw32 系统 x86_64、mingw32 状态 专业 3 次要 6.2 2019 年 第 12 个月 第 12 天 svn 版本 77560 语言 R version.string R 版本 3.6.2 (2019-12-12) 昵称 黑暗风雨之夜

我使用 Python 3.6.10 安装了 Conda。 我安装了the azuremlsdk R package(我尝试了两个提供的选项)。 然后我意识到 azure-modules 的版本存在一些不一致,所以我也尝试使用关键字'multi-arch'安装它:

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

那么,我installed the azureml python sdk。 我再次查看了所有版本(使用 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

当我惊讶地看到所有 1.0.69 版本而不是 1.0.83 版本时,我使用以下方法重新安装了 azureml python sdk:

azuremlsdk::install_azureml(version = "1.0.83")

这很有效,因为实际上所有版本现在都是 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

但仍然......我得到了缺少核心的错误。我在运行时都得到了它:

library(azuremlsdk)
get_current_run()

以及在运行时:

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

请注意,在启动 RStudio 后第一次运行此代码时,我收到错误:

py_get_attr_impl(x, name, silent) 中的错误: AttributeError:模块“azureml”没有属性“_base_sdk_common”

之后每次我都会收到此错误:

py_get_attr_impl(x, name, silent) 中的错误: AttributeError:模块“azureml”没有属性“核心”

任何帮助将不胜感激!

【问题讨论】:

会不会是azuremlsdk还没有完全安装好?在 GitHub 安装说明中,包作者提到该包需要在创建/获取工作区之前使用 azuremlsdk::install_azureml() 安装来自 AzureML Python SDK 的编译代码:github.com/Azure/azureml-sdk-for-r 我在 R 中按照以下步骤操作: install.packages("azuremlsdk") remotes::install_github('github.com/Azure/azureml-sdk-for-r') azuremlsdk::install_azureml() --> 它以消息“安装完成” 再次启动 R 后,我收到一个新错误:“AttributeError: module 'azureml' has no attribute '_base_sdk_common'Error in value[[3L]](cond) :” 但是在(重新)安装 azuremlsdk 之后,我仍然再次出现旧错误:“AttributeError:模块'azureml'没有属性'_base_sdk_common'值错误[[3L]](cond):” 这是一个 python 错误。你是在 conda 环境中运行它吗?或许你可以试试这里的安装说明:azure.github.io/azureml-sdk-for-r/articles/installation.html 请注意,您需要执行install.packages,这意味着您正在从 CRAN 安装软件包,或者 remotes::install_github,这意味着您正在从 Github 安装。你不需要两者都做。 是的,我想。但是用第一种方法安装后,它没有用,所以我也尝试用第二种方法安装它,也没有用...感谢链接。我现在将完成这些步骤。 【参考方案1】:

我似乎已经通过专门安装 python 包 azureml 和 azureml.core 解决了这个问题:

python -m pip install azureml

然后……

python -m pip install azureml.core

我为由 R (r-reticulate) 调用的 Conda 版本执行此操作。在没有 R 切换回 'r-reticulate' 的情况下无法使用 Conda 环境 'r-azureml' 有点奇怪,但是啊……至少我不知道我的 'azureml' 没有属性'核心”了。

【讨论】:

【参考方案2】:

这个问题是由最新的 reticulate 1.14 版本引入的,其中 reticulate 将创建一个默认的r-reticulate conda 环境。由于 Azure ML 在名为 r-azureml 的环境中安装 python SDK,因此 reticulate 使用的 r-reticulate 环境缺少 python SDK。此问题的修复已在 PR 中得到解决,并已合并到 master 中。如果您有网状版本 1.14 并遇到此问题,请从 GitHub 安装。我们将很快发布 CRAN 的更新。

【讨论】:

以上是关于R 的 Azure 机器学习集成:“azureml”模块是不是应该具有“核心”属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Pycharm 和 git 与 azure 机器学习服务(工作区)集成

云计算与数据科学:Microsoft Azure 机器学习与R 简介

安排 Azure 机器学习计算实例

在本地运行 Azure 机器学习服务管道

使用 Javascript Ajax 调用的 Azure 机器学习

提高 Azure 机器学习工作区的处理能力