首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过azure机器学习+ azuremlsdk在R中部署模型并将模型公开为web服务

通过azure机器学习+ azuremlsdk在R中部署模型并将模型公开为web服务
EN

Stack Overflow用户
提问于 2021-05-14 13:17:56
回答 1查看 302关注 0票数 2

我正试图跟随这个职位在Azure中部署一个“模型”。

代码片段如下所示,该模型仅仅是一个添加了2个数字的函数,似乎很好。在经过1000 s的尝试之后,我甚至没有使用该模型来隔离问题,正如下面的评分代码所示:

代码语言:javascript
复制
library(jsonlite)

init <- function()
{
  message("hello world")
  
  function(data)
  {
    vars <- as.data.frame(fromJSON(data))
    prediction <- 2
    toJSON(prediction)
  }
}

应该可以的,不是吗?任何我运行这个代码片段的方式:

代码语言:javascript
复制
r_env <- r_environment(name = "basic_env")
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, 
                            'xxxxx', 
                            list(model), 
                            inference_config, 
                            aci_config)

wait_for_deployment(aci_service, show_output = TRUE)

它产生这样的结果(经过一段时间后):

代码语言:javascript
复制
Running.....................................................................
Failed
Service deployment polling reached non-successful terminal state, current service state: Failed
Operation ID: 14c35064-7ff4-46aa-9bfa-ab8a63218a2c
More information can be found using '.get_logs()'
Error:
{
  "code": "AciDeploymentFailed",
  "statusCode": 400,
  "message": "Aci Deployment failed with exception: Error in entry script, RuntimeError: Error in file(filename, \"r\", encoding = encoding) : , please run print(service.get_logs()) to get details.",
  "details": [
    {
      "code": "CrashLoopBackOff",
      "message": "Error in entry script, RuntimeError: Error in file(filename, \"r\", encoding = encoding) : , please run print(service.get_logs()) to get details."
    }
  ]
}

它告诉我的不多。不知道如何进一步调试?我怎么能运行这个:

代码语言:javascript
复制
print(service.get_logs())

请到哪儿去?你猜这是Python神器吗?任何其他投入都非常欢迎。

PS:

在这一点上,我怀疑上述R条目文件的定义不是预期的这几天。查看从这里获取的Python等价物

代码语言:javascript
复制
import json

def init():
    print("This is init")

def run(data):
    test = json.loads(data)
    print(f"received data {test}")
    return f"test is {test}"

像这样的东西是不是更合适(尝试过,但没有成功)。

代码语言:javascript
复制
library(jsonlite)

init <- function()
{
    message("hello world")
}

init <- function()
{
    return(42)
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-14 15:53:45

很高兴看到人们把R通过它的步伐!

很明显,你使用的是一个很好的开始方式。看来你几乎一帆风顺。

部署总是很棘手的,我自己也不是专家。我会指给你看这个本地部署疑难解答指南。R也有类似的功能,即:local_webservice_deployment_config()

所以我认为你把你的例子改为:

代码语言:javascript
复制
deployment_config <- local_webservice_deployment_config(port = 8890)

一旦您知道该服务在本地工作,您对的问题就会变得更容易缩小范围。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67535014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档