gpt4 book ai didi

google-cloud-ml - 在生产中使用 CloudML 预测 API(无需 gcloud)

转载 作者:行者123 更新时间:2023-12-02 12:57:26 26 4
gpt4 key购买 nike

在生产服务中使用 CloudML 预测 API 的最佳方式是什么?

我见过: https://cloud.google.com/ml/docs/quickstarts/prediction但它依赖于gcloud工具

我正在寻找不依赖于在发出请求的计算机上安装和初始化 gcloud 的解决方案。如果能够拥有适用于 GCP、AWS 以及可能的其他云的解决方案,那就太好了。

谢谢

最佳答案

我将向您展示如何验证您的生产环境以使用 CloudML 在线预测。 CloudML 快速入门使用 gcloud 通过用户名、密码等对最终用户进行身份验证。gcloud 无法很好地扩展到具有 100 台计算机启动和停止的环境。下面,我将引导您完成创建云服务帐户和生成私钥的步骤,通过私钥,您的生产实例可以向 Google 服务器识别自己的身份。请参阅身份验证文档 here

这是您可以使用的食谱。

PROJECT=
MODEL_NAME=
SERVICE_ACCOUNT_PREFIX=cloud-ml-predict
SERVICE_ACCOUNT="${SERVICE_ACCOUNT_PREFIX}@${PROJECT}.iam.gserviceaccount.com"

这些步骤只需完成一次,将为您创建一个服务帐户和私钥。

# Make a new service account
gcloud iam service-accounts create ${SERVICE_ACCOUNT_PREFIX} \
--display-name ${SERVICE_ACCOUNT_PREFIX}

# Provide correct role to service account permissions:
gcloud projects add-iam-policy-binding $PROJECT \
--member "serviceAccount:$SERVICE_ACCOUNT" --role roles/viewer

# Create private key for the service account:
gcloud iam service-accounts keys create --iam-account \
$SERVICE_ACCOUNT private_key.json

现在我们有了私钥(在 private_key.json 中),我们可以从任何具有 googleapiclient Python 库的计算机调用预测 API。现在,从任何带有或不带有 gcloud 的计算机,您只需包含以下行即可通过 HTTP 访问 CloudML 预测服务

scopes = ['https://www.googleapis.com/auth/cloud-platform']
credentials = ServiceAccountCredentials.from_json_keyfile_name(key_filename, scopes=scopes)
ml_service = discovery.build('ml', 'v1beta1', credentials=credentials)

最后,这是一个工作示例,假设您有一个从 quickstarts 部署的 MNIST 模型。 .

cat > key_pair_cloud_ml_serve.py <<EOD
from googleapiclient import discovery
import json
from oauth2client.service_account import ServiceAccountCredentials
import sys

def get_mnist_prediction(ml_service, project, model_name, instance):
parent = 'projects/{}/models/{}'.format(project, model_name)
request_dict = {'instances': [json.loads(instance)]}

request = ml_service.projects().predict(name=parent, body=request_dict)
print request.execute() # waits till request is returned

if __name__ == '__main__':
usage_str = 'usage: python prog private_key.json MODEL_NAME data/predict*json'
assert len(sys.argv) == 4, usage_str

key_file = sys.argv[1]
model_name = sys.argv[2]
data_file = sys.argv[3]

scopes = ['https://www.googleapis.com/auth/cloud-platform']
credentials = ServiceAccountCredentials.from_json_keyfile_name(key_file,
scopes=scopes)
ml_service = discovery.build('ml', 'v1beta1', credentials=credentials)
with open(key_file) as ff:
project = json.load(ff)['project_id']


with open(data_file) as ff:
for ii, instance in enumerate(ff):
get_mnist_prediction(ml_service, project, model_name, instance)
EOD

以及 Cloud ML samplesmnist/deployable 文件夹中我们称我们的代码...

python key_pair_cloud_ml_serve.py private_key.json \
$MODEL_NAME data/predict_sample.tensor.json


{u'predictions': [{u'prediction': 5, u'key': 0, u'scores': [0.04025577753782272, 0.00042669562390074134, 0.005919951014220715, 0.4221051335334778, 2.2986243493505754e-05, 0.5084351897239685, 0.0007824163185432553, 0.01125132292509079, 0.008616944774985313, 0.0021835025399923325]}]}

瞧!我们使用私钥,并且不需要使用 gcloud 进行身份验证或查询我们的预测模型!

关于google-cloud-ml - 在生产中使用 CloudML 预测 API(无需 gcloud),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40917675/

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