2

因此,我们必须放弃使用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)
4

0 回答 0