gpt4 book ai didi

python - 首选 Azure 服务以可扩展的方式使用端点运行 python 脚本

转载 作者:行者123 更新时间:2023-12-03 06:20:29 26 4
gpt4 key购买 nike

我用 Python 编写了一个繁重的计算脚本,并使用 Flask API 对其进行了测试。它接收 JSON 并返回 JSON。现在我们希望在 Azure 中运行繁重的计算,但我们不确定使用哪个服务。我一直在尝试将它集成到 Azure 机器学习工作室中,但我觉得它应该由完整的机器学习模型使用,而不仅仅是 python 脚本。我们需要的是一种可扩展的方式来运行可通过端点访问的繁重计算。如果可能的话,它应该以某种方式与 Azure ml studio 兼容。数据库的类型尚未确定,稍后可能会添加。首选服务是什么?

我尝试将 python 脚本集成到 Azure 机器学习工作室中。我们预计这是适合此目的的服务,但现在想知道这是否是正确的选择。

最佳答案

我使用 azure 函数应用程序来使用通用算法。在这里,我创建了一个函数应用程序,在向函数 URL 发送带有数据的 post 请求后,它会给出模型输出结果。模型结果是通过使用 Azure ML 端点来实现的,您的模型可以在其中注册并创建一个实时端点,并在该端点上引发 POST 请求。

这是要遵循的步骤,首先,您需要在 azure ML 中注册您的模型。

创建新的 ML 工作区 > 启动 ML studio。 model register

注册模型后进行部署,如下所示

enter image description here

选择实时端点并开始配置所询问的详细信息。

接下来选择身份验证作为 key ,如下所示 enter image description here

在环境部分,您需要添加当客户端请求时需要执行的源文件。您可以引用以下文档如何注册模型和端点创建。 Model registering and endpoint creation

创建端点后,您将获得如下所示的其余 api url

enter image description here接下来,您需要在发出请求时获取用于身份验证的 key 。

根据您在azure CLI中的配置输入以下命令以获取 key

az ml online-endpoint get-credentials --name <your endpoint name> --resource-group <your resource grp> --workspace-name <ML workspace name> -o tsv --query primaryKey

获取 key 后保存它。

使用您的订阅和资源组在 Azure 中创建函数应用。 enter image description here初始创建函数后,函数选项卡中将没有函数,如下所示,对我来说,因为我在显示之前就部署了该功能。 enter image description here

以下是在可视代码中部署函数的步骤。转到扩展 > 搜索 azure 函数进行安装。

安装后,您会在左下角看到 azure 符号。

enter image description here

转到azure选项卡,如上所示,有一个用于创建函数的选项。单击它并使用 HTTP 触发器 创建函数,给出函数的名称并授权级别为匿名

成功创建函数后,您将获得一个 __init__.py 和项目结构,如下所示。

enter image description here

默认情况下,代码如下“init.py”。

enter image description here `用下面的代码替换该代码。您可以在此处添加通用脚本并从模型获取结果。您可以根据自己的需要修改它并调用 ML 端点 url。

import  logging
import urllib.request
import json
import os
import ssl
import azure.functions as func
def allowSelfSignedHttps(allowed):#bypass the server certificate verification on client side
if allowed and not os.environ.get('PYTHONHTTPSVERIFY', '') and getattr(ssl, '_create_unverified_context', None):
ssl._create_default_https_context = ssl._create_unverified_context
allowSelfSignedHttps(True)
def getmodelres(data):
body = str.encode(json.dumps(data))
endpointurl = 'https://xxxx.centralindia.inference.ml.azure.com/score'
endpoint_api_key = "xxxxxxxxxx" # Replace this with the key or token you obtained
print(api_key)
headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ endpoint_api_key)}
req = urllib.request.Request(endpointurl, body, headers)
try:
response = urllib.request.urlopen(req)
result = response.read()
print(result)
return result
except urllib.error.HTTPError as error:
print("The request failed with status code: " + str(error.code))# Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure
print(error.info())
print(error.read().decode("utf8", 'ignore'))
return error.info()

def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
data = req.get_json()
name = getmodelres(data)
if name:
return func.HttpResponse(f"Model result, {name}. This HTTP triggered function executed successfully.")
else:
return func.HttpResponse("This HTTP triggered function executed successfully. Pass in the request body for a personalized response."
status_code=200)

接下来在您为端点创建而获得的脚本中提供端点 URL 和端点 key 。

upload

更新代码后,有一个名为“部署”的选项,如图所示。单击该按钮并选择您之前在 azure 中创建的订阅 ID资源组azure 函数。这将开始部署。

然后转到 azure 中的应用程序功能,您可以在功能选项卡下找到已部署的功能,然后单击它。您将获得如下详细信息。在那里你可以获取函数 url。 enter image description here

部署后,然后将函数 URL 测试为 POST 请求,其正文包含要以 json 格式建模的输入数据。

我在 postman 中使用 azure function url 对此进行了测试。您可以在此处看到结果,我向函数 url 和包含数据的正文发送了 post 请求,这些数据是模型的输入。 enter image description here

关于python - 首选 Azure 服务以可扩展的方式使用端点运行 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75938689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com