通过 azure 机器学习 + azuremlsdk 在 R 中部署模型并将模型公开为 Web 服务
deploy model and expose model as web service via azure machine learning + azuremlsdk in R
我正在尝试按照 this post 在 Azure 中部署“模型”。
代码片段如下,该模型只是一个将 2 个数字相加的函数,似乎可以正常注册。经过 1000 次尝试后,我什至没有使用该模型来隔离问题,因为此评分代码显示:
library(jsonlite)
init <- function()
{
message("hello world")
function(data)
{
vars <- as.data.frame(fromJSON(data))
prediction <- 2
toJSON(prediction)
}
}
应该没问题吧?无论如何我 运行 这个代码片段:
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)
产生这个(在很长一段时间后):
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."
}
]
}
它告诉我的不多。不确定如何进一步调试?我怎样才能 运行 这个:
print(service.get_logs())
请问在哪里?猜猜这是一件Python神器?非常欢迎任何其他输入。
PS:
在这个时候,我怀疑上面的 R 入口文件定义不是这些天所期望的。查看取自 here 的 Python 等价物:
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}"
这样的是不是更合适(试了没成功)
library(jsonlite)
init <- function()
{
message("hello world")
}
init <- function()
{
return(42)
}
很高兴看到人们让 R SDK 走上正轨!
您使用的小插图显然是一个很好的入门方式。看来你几乎一路顺利。
部署总是很棘手,我自己也不是专家。我会向您指出这个 guide on troubleshooting deployment locally. Similar functionality exists for the R SDK, namely: local_webservice_deployment_config()
.
所以我想你把你的例子改成这样:
deployment_config <- local_webservice_deployment_config(port = 8890)
一旦您知道该服务在本地运行,您遇到的 ACI 网络服务问题就会变得容易得多。
我正在尝试按照 this post 在 Azure 中部署“模型”。
代码片段如下,该模型只是一个将 2 个数字相加的函数,似乎可以正常注册。经过 1000 次尝试后,我什至没有使用该模型来隔离问题,因为此评分代码显示:
library(jsonlite)
init <- function()
{
message("hello world")
function(data)
{
vars <- as.data.frame(fromJSON(data))
prediction <- 2
toJSON(prediction)
}
}
应该没问题吧?无论如何我 运行 这个代码片段:
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)
产生这个(在很长一段时间后):
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."
}
]
}
它告诉我的不多。不确定如何进一步调试?我怎样才能 运行 这个:
print(service.get_logs())
请问在哪里?猜猜这是一件Python神器?非常欢迎任何其他输入。
PS:
在这个时候,我怀疑上面的 R 入口文件定义不是这些天所期望的。查看取自 here 的 Python 等价物:
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}"
这样的是不是更合适(试了没成功)
library(jsonlite)
init <- function()
{
message("hello world")
}
init <- function()
{
return(42)
}
很高兴看到人们让 R SDK 走上正轨!
您使用的小插图显然是一个很好的入门方式。看来你几乎一路顺利。
部署总是很棘手,我自己也不是专家。我会向您指出这个 guide on troubleshooting deployment locally. Similar functionality exists for the R SDK, namely: local_webservice_deployment_config()
.
所以我想你把你的例子改成这样:
deployment_config <- local_webservice_deployment_config(port = 8890)
一旦您知道该服务在本地运行,您遇到的 ACI 网络服务问题就会变得容易得多。