因此,我们必须放弃使用SQL Server 机器学习服务,因为它仅支持 R 3.5.2,即使对于 SQL Server 2019 也是如此!
我正在努力进入整个 21 世纪,并将我们的一些本地 R 训练模型部署为 Web 服务,正如Microsoft 传道者之一 David Smith所描述的那样(参见下面的代码)。
看着r_environment我惊恐地发现,如果我不使用自定义 docker 镜像,预定义镜像只支持 R 3.6?!这个对吗?如果是这样,我如何创建自定义 docker 映像以及为什么 Microsoft 建议在 R 版本也有限制的情况下使用 Azure ML!
PS:
一些可能复制我的问题的代码:
在本地训练模型:
library(datasets)
library(caret)
data(iris)
setwd("C:/Data")
index <- createDataPartition(iris$Species, p=0.80, list=FALSE)
testset <- iris[-index,]
trainset <- iris[index,]
model = train(Species ~ .,
data=trainset,
method="rpart",
trControl = trainControl(method = "cv"))
saveRDS(model, "model.rds")
我可以在 Azure ML 中部署这个模型:
评分脚本 score.r
library(jsonlite)
init <- function()
{
model_path <- Sys.getenv("AZUREML_MODEL_DIR")
model <- readRDS(file.path(model_path, "model.rds"))
message("iris classfication model loaded")
function(data)
{
vars <- as.data.frame(fromJSON(data))
prediction <- predict(model, newdata=vars)
toJSON(prediction)
}
}
失败代码:
library(azuremlsdk)
interactive_auth <- interactive_login_authentication(tenant_id="xxx")
ws <- get_workspace(
name = "amazing_work_space",
subscription_id = "xxx",
resource_group ="xxx",
auth = interactive_auth
)
model <- get_model(ws, name = "iris_classification")
r_env <- r_environment(name = 'myr_env',
version = '1')
inference_config <- inference_config(
entry_script = "score.R",
source_directory = ".",
environment = r_env)
aci_config <- aci_webservice_deployment_config(cpu_cores = 1, memory_gb = 0.5)
aci_service <- deploy_model(ws,
'xxx',
list(model),
inference_config,
aci_config)
wait_for_deployment(aci_service, show_output = TRUE)