用顶点AI在谷歌云中托管TensorFlow Hub模型

聪明的软件开发者会使用别人的机器学习模型。

如果你以前训练过ML模型,你就会知道这个过程中最耗时和最麻烦的部分之一是收集和策划数据来训练这些模型。但是对于很多问题,你可以跳过这一步,而是使用别人的模型,这些模型已经被训练成你想要的样子--比如检测垃圾邮件,将语音转换为文本,或者标记图像中的物体。如果这个模型是由那些能够接触到大数据集、强大的训练设备和机器学习专业知识的人建立和维护的,那就更好了。

找到这些类型的 "预训练 "模型的一个好地方是TensorFlow Hub,它承载了大量由谷歌研究院建立的最先进的模型,你可以免费下载和使用。在这里,你可以找到用于执行图像分割超级分辨率问题回答文本嵌入等任务的模型。不需要训练数据集。但是,如果你想在你的应用程序中使用这些大型模型,那么问题就变成了在哪里托管它们,可以快速、可靠和可扩展。

谷歌的新顶点人工智能平台正好可以解决这一问题。可以从TensorFlow Hub下载一个模型,并将其上传到Vertex的预测服务,它将在云中托管这一模型,并通过REST端点进行预测。这是一种无服务器的方式来服务机器学习模型。这不仅使应用程序的开发更容易,还可以利用GPU等硬件和Vertex内置的模型监控功能。

从TensorFlow中心下载一个模型

Download a model

tfhub.dev/,你会发现很多处理音频、文本、视频和图像的免费模型。抓取最受欢迎的Hub模型之一,通用句子编码器。这个模型将一个句子或段落作为输入,并返回一个矢量或 "嵌入",将文本映射到空间中的点。然后,这些嵌入可用于从句子相似性到智能搜索到构建聊天机器人的所有方面(阅读更多相关信息)。

Model Formats

Universal Sentence Encoder页面,点击 "下载",以TensorFlow的SavedModel格式抓取模型。你会下载一个压缩文件,其中包含一个目录,格式是这样的。

-universal-sentence-encoder_4

      -assets    
      
      -saved_model.pb

      -variables

              - variables.data-00000-of-00001

              - variables.index

在这里,saved_model.pb 文件描述了保存的神经网络的结构,而variables 文件夹中的数据包含了网络的学习权重。

在模型的中心页面,你可以看到它的使用实例。

Universal Sentence

给模型输入一个句子数组,它就吐出一个向量数组。

还可以通过使用TensorFlow的SavedModel CLI来了解该模型支持哪些输入和输出。如果安装了TensorFlow,在你下载的Hub模型的目录下,运行。

saved_model_cli show --dir . --tag_set serve --signature_def serving_default

对于这个模型,该命令输出。

The given SavedModel SignatureDef contains the following input(s):
  inputs['inputs'] tensor_info:
      dtype: DT_STRING
      shape: (-1)
      name: serving_default_inputs:0
The given SavedModel SignatureDef contains the following output(s):
  outputs['outputs'] tensor_info:
      dtype: DT_FLOAT
      shape: (-1, 512)
      name: StatefulPartitionedCall_1:0
Method name is: tensorflow/serving/predict

由此,我们知道,模型期望输入一个一维的字符串数组。

开始使用顶点人工智能

顶点人工智能是今年在谷歌I/O大会上推出的一个用于训练、部署和监控机器学习模型的新平台。

Introducing Vertex AI

对于这个项目,将只使用预测服务,它将把我们的模型包裹在一个方便的REST终端中。

要开始,你需要一个谷歌云账户,并设置一个GCP项目。接下来,需要创建一个云存储桶,这是你将上传TensorFlow Hub模型的地方。你可以在命令行中使用gsutil来做这个。

如果这个模型很大,这可能需要一些时间。

在侧面菜单中,启用顶点AI API。

一旦Hub模型被上传到云存储,就可以按照文档或这个快速总结直接将其导入Vertex AI。

  1. 在顶点AI的 "模型 "标签上,点击导入。

Import

2.为你的模型选择任何名称。

Import model

3.选择一个兼容的TensorFlow版本来使用你的模型(对于较新的模型,>=2.0应该可以)。如果你想支付GPU以加快预测时间,选择 "GPU"。

Model settings

4.将 "模型工件位置 "指向您上传至云存储的模型文件夹。

model artifact

5.点击 "导入"。

6.一旦你的模型被导入,你就可以直接从模型标签中试用它。点击你的模型的名称。

Use

7.在模型页面中,你可以直接从用户界面测试你的模型。还记得我们先前如何用saved_model_cli检查我们的模型,并了解到它接受一个字符串数组作为输入吗?这里是我们如何用这个输入调用模型的。

Deploy your model

8.一旦验证了你的模型在用户界面中工作,你就想把它部署到一个端点,这样就可以从你的应用程序中调用它。在 "端点 "选项卡中,点击 "创建端点 "并选择你刚刚导入的模型。

new endpoint

9.现在你的TensorFlow Hub模型被部署到了你的应用程序中。TensorFlow Hub模型已经部署并准备好被使用。你可以通过POST请求从任何网络客户端或使用Python客户端库来调用它。

现在已经在Vertex上设置了我们的TensorFlow Hub模型,可以在我们的应用程序中使用它,而不必考虑(大部分)在生产中使用大型机器学习模型的性能和运营挑战。这是一个很好的无服务器的方式,可以快速建立人工智能。

原文链接:cloud.google.com/blog/topics…