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 简介