mlflow R 安装 MLFLOW_PYTHON_BIN
Posted
技术标签:
【中文标题】mlflow R 安装 MLFLOW_PYTHON_BIN【英文标题】:mlflow R installation MLFLOW_PYTHON_BIN 【发布时间】:2020-06-23 18:00:27 【问题描述】:我正在尝试在 R 中安装 mlflow,我收到此错误消息说
mlflow::install_mlflow() mlflow_conda_bin() 中的错误: 无法找到 conda 二进制文件。 Anaconda 安装了吗? 如果你不使用 conda,你可以将环境变量 MLFLOW_PYTHON_BIN 设置为你的 python 可执行文件的路径。
我已经尝试了以下
export MLFLOW_PYTHON_BIN="/usr/bin/python"
source ~/.bashrc
echo $MLFLOW_PYTHON_BIN -> this prints the /usr/bin/python.
或在 R 中,
sys.setenv(MLFLOW_PYTHON_BIN="/usr/bin/python")
sys.getenv() -> prints MLFLOW_PYTHON_BIN is set to /usr/bin/python.
还是不行
我不想使用 conda 环境。
如何解决这个错误?
【问题讨论】:
你解决了吗? 【参考方案1】:install_mlflow 命令目前仅适用于 conda,对于令人困惑的消息,我们深表歉意。您可以:
安装 conda - 这是安装和使用 mlflow 的推荐方式或
通过 pip 自己安装 mlflow python 包要自己安装 mlflow,pip install correct(匹配 R 包)python 版本的 mlflow 并设置 MLFLOW_PYTHON_BIN 环境变量以及 MLFLOW_BIN evn 变量:例如
library(mlflow)
system(paste("pip install -U mlflow==", mlflow:::mlflow_version(), sep=""))
Sys.setenv(MLFLOW_BIN=system("which mlflow"))
Sys.setenv(MLFLOW_PYTHON_BIN=system("which python"))
【讨论】:
我尝试了第二种方法,但如果一直出现相同的消息...任何解决方案?谢谢 您需要在系统调用中设置 intern=TRUE 才能正确设置环境变量: Sys.setenv(MLFLOW_BIN=system("which mlflow", intern=TRUE)) Sys.setenv( MLFLOW_PYTHON_BIN=system("which python", intern=TRUE))【参考方案2】:刚刚遇到这个问题,@Tomas 接受的答案非常有帮助。我在上面添加了一条评论,但是,对于一些额外的上下文,如果有任何其他 Enterprise Databricks R 用户在这篇文章中尝试使用 Databricks 上的 R 的 MLflow 包,我想创建一个更全面的回复。
Databricks MLflow quickstart guide 会告诉您需要运行以下命令:
library(mlflow)
install_mlflow()
但是,对于 Enterprise Databricks 用户,如果您的集群没有外部连接权限(很可能没有)并且无法连接到 Anaconda 存储库以下载必要的软件包,install_mlflow()
函数将失败。您可能会收到如下错误:
CondaHTTPError: HTTP 000 CONNECTION FAILED for url https://conda.anaconda.org/conda-forge/linux-64/current_repodata.js
好消息是,您的 Databricks 运行时应该已经安装了 MLflow。因此,您可以改为引用该安装,然后如@Tomas 所述,使用它为MLFLOW_BIN
和MLFLOW_PYTHON_BIN
设置R 环境变量。从那里开始,R MLflow API 按规定工作(根据我的经验,但是 ymmv)。
上述解决方案的唯一问题是,当您在 R 中使用 system()
函数时,您需要设置 intern=TRUE
in order capture the output of the command。 system()
函数的默认行为是intern=FALSE
。因此,如果您没有显式设置intern=TRUE
,那么退出代码0 将从您的system()
调用中返回(或者可能是另一个错误退出代码)并且Sys.setenv()
会将环境变量设置为0!
### intern=True missing ###
Sys.setenv(MLFLOW_BIN=system("which mlflow"))
Sys.setenv(MLFLOW_PYTHON_BIN=system("which python"))
示例输出(可以看到环境变量设置不正确):
s <- Sys.getenv()
s[grep("MLFLOW", names(s))]
MLFLOW_BIN 0
MLFLOW_CONDA_HOME /databricks/conda
MLFLOW_PYTHON_BIN 0
MLFLOW_PYTHON_EXECUTABLE
/databricks/python/bin/python
MLFLOW_TRACKING_URI databricks
然而,当intern=TRUE
,你会得到正确的环境变量:
### intern=True set ###
Sys.setenv(MLFLOW_BIN=system("which mlflow", intern=TRUE))
Sys.setenv(MLFLOW_PYTHON_BIN=system("which python", intern=TRUE))
示例输出:
s <- Sys.getenv()
s[grep("MLFLOW", names(s))]
MLFLOW_BIN /databricks/python3/bin/mlflow
MLFLOW_CONDA_HOME /databricks/conda
MLFLOW_PYTHON_BIN /databricks/python3/bin/python
MLFLOW_PYTHON_EXECUTABLE
/databricks/python/bin/python
MLFLOW_TRACKING_URI databricks
注意:这是使用 Databricks 运行时 9.1 LTS ML。这可能适用于其他 Databricks 运行时配置,也可能不适用。
【讨论】:
以上是关于mlflow R 安装 MLFLOW_PYTHON_BIN的主要内容,如果未能解决你的问题,请参考以下文章
mlflow执行import mlflow 报错:ImportError: No module named 'pkg_resources'
Spark发布了MLflow 0.2 内置TensorFlow 继承