昨天我们成功的让 App 在本机端运作,但按下 开始预测!
後却出现了错误:
这意味着虽然 App 试图使用 ironbird/app.py
与 ironbird/utils.py
内的函式与 GCP 取得联系,但可能存在以下问题:
为了修正上述的问题,今天我们要准备完成的东西如下:
那就让我们开始吧:
训练模型并存为 SavedModel
格式 (这是针对 TensorFlow,若使用 Pytorch 就改为 state_dict
之类的即可),这部分详细请参考 Colab model_training.ipynb 的说明。
有了 SavedModel
後,我们就可以把它传到 Google Storage,但在此之前必须 建立 Google Storage 值区。
取一个喜欢的名字就好,储存位置我是选择 asia-east1 (台湾),但因为 Colab 的主机在美国,所以选择 us- 开头的也可以,这样档案的传输速度会快一点,剩下的选项就按照预设的即可 (详细步骤可以参考上方超连结)。
有了值区之後就可以把模型复制到上面了,在 Colab 中我们会使用以下指令取得授权:
# Authentic Colab
# (Running this will give you a code to authentic your Google Colab instance, keep the verification code secret)
from google.colab import auth
auth.authenticate_user()
接着安装 CLI 工具:
# Install and initialize the gcloud command line tool - https://cloud.google.com/sdk/docs/install
# (this will give you access to gcloud tools within Colab)
!curl https://sdk.cloud.google.com | bash 1> /dev/null
!gcloud init
最後就可以使用 !gsutil cp -r <YOUR_MODEL_PATH> <YOUR_GOOGLE_STORAGE_BUCKET>
把 SavedModel
上传到值区。
执行这一步骤时,会被问很多与设定 gcloud 相关的问题,以下是会被问到的问题与我的回答 (请选择自己的 Google Cloud project):
# Pick configuration to use:
# [1] Re-initialize this configuration [default] with new settings
# [2] Create a new configuration
# Please enter your numeric choice: 1
# Choose the account you would like to use to perform operations for
this configuration:
# [1] [email protected]
# [2] Log in with a new account
# Please enter your numeric choice: 1
# Pick cloud project to use:
# [1] civic-capsule-327205
# [2] data-button-305900
# [3] first-haven-327205
# [4] ironman-327706
# [5] Create a new project
# Please enter numeric choice or text value (must exactly match list
# item): 4
以下为范例程序码:
# Copy model to bucket - https://cloud.google.com/storage/docs/uploading-objects#gsutil
# Use "-r" for folders (r stands for recursive)
!gsutil cp -r efficientnet_model_1_10_classes gs://ironbird_2021
将值区内的模型连接到 AI Platform,这部分详细一样参考 官方文件:
区域我一样选择 asia-east1。
在 AI Platform 建立模型之後,我们需要建立版本并将其与现有模型连结。
这步骤首先需要在模型列表内点选刚刚建立的模型,然後再点选 新增版本
,以下为参考选项:
接着需要将这个版本与我们存放在 Google Storage 的模型连结:
最後资源的部分选择 自动调整资源配置
以及最低的 n1-standard-2, 2 vCPUs, 7.5 GB memory
即可。
这部分会需要等待一段时间
接着需要建立服务帐户,这样才能得到模型的存取权,这部分一样参考 官方文件 即可,其中最重要的步骤在於专案存取权的角色要选择 AI 平台开发人员
:
有了服务帐户之後,我们可以进入管理金钥的页面点选 新增金钥
,并下载成 .JSON
档存放於 ironbird 资料夹内。
⚠️ 金钥会授与 GCP 帐号的存取权,所以务必不要分享给别人! (例如把
*.json
加到.gitignore
以避免传到 Github 上)
最後需要修改以下变数:
app.py
内的 GCP 金钥位址改为你的金钥位址:
# Google Cloud Services look for these when your app runs
# Old
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "ironman-327706-ba995652161d.json"
# New
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "<PATH_TO_YOUR_KEY>"
app.py
内的 GCP project 与区域改为你的 GCP project 与区域:
# Old
PROJECT = "ironman-327706"
REGION = "asia-east1"
# New
PROJECT = "<YOUR_GCP_PROJECT_NAME>"
REGION = "<YOUR_GCP_REGION>"
注意这里的 project 名称要使用专案 IDutils.py
内的 "model_name"
改为前面建立的模型名称:
# Old
classes_and_models = {
"model_1": {
"classes": base_classes,
"model_name": "ironbird_model_1"
}
}
# New
classes_and_models = {
"model_1": {
"classes": base_classes,
"model_name": "<YOUR_AI_PLATFORM_MODEL_NAME>"
}
}
完成上述所有步骤後,重新执行 开始预测!
应该就能得到结果了:
以上就是今天的内容啦,明天我们就可以把这个 App 部署到 Google App Engine 上,这样就能在世界的任何角落使用我们的 App 啦~~
今天要介绍netmask,是可以让我们自由转换各种不同表示类型的网路地址以及子网遮罩,在划分子网路的...
这是第一次参加铁人赛,期待自己可以依照书上的教学将Kotlin学好,并具备开发小型系统的能力。 此次...
今天在分享几个方便好用的工具。 一个是 Android Asset Studio ,有9种图标的变形...
第一次後制工作做到怀疑人生 0.0 看一次就发现一次AWS帐号的个资出现在画面上,每看一次就抓到一...
踏入讨论区的界面,麻烦的事情开始出现啦,需要在每个主题上插入按键,再插入文字框来显示主题文字,况且跳...