对象检测 Django Rest API 在 Google 云平台或 Google 机器学习引擎上的部署

Object Detection Django Rest API Deployment on Google Cloud Platform or Google ML Engine

我开发了 Django API,它接受来自 livefeed 相机的图像,以 base64 的形式作为请求。然后,在 API 中,该图像被转换为​​ numpy 数组以传递给机器学习模型,即使用 tensorflow 对象 API 进行对象检测。响应是检测到的对象的简单文本。

我需要基于 GPU 的云实例,我可以在其中部署此应用程序以进行快速处理以获得实时结果。我搜索了很多但没有找到这样的资源。我相信 google 云控制台(实例)可以连接到实时 API 但我不确定具体如何。

谢谢

我假设您在本地或托管 Django 应用程序的任何地方使用 GPU。

首先要确保您使用的是 tensorflow-gpu,并且已完成 Cuda 的所有必要设置。

您可以在 Google 云平台 (GCP) 上轻松启动您的 GPU 实例。有多种方法可以做到这一点。

快速选项

  • 搜索 notebooks 并使用所需的 GPU 和启动一个新实例 内存。
  • 如果您需要一些特定的OS和更灵活地选择机器,您可以单独设置实例而不是笔记本实例。
  • 要使用 ssh 访问实例,只需添加您的 ssh public 密钥 到打开实例详细信息时可以看到的元数据。
  • 像在服务器上一样安装 Django。要测试它,只需在主机 00.0.0.0 和首选端口上调试 运行 它即可。
  • 您可以使用机器的外部IP访问APIs,可以在实例详情页中找到。

一些建议

  • 虽然第一个选项既快又脏,但不建议在生产中使用它。
  • 最好结合 Kubeflow 使用一些部署服务,例如 tensorflow-serving
  • 如果您认为自己正确地处理了推理,请确保正确地平衡服务器负载。使用 NGINX 或任何其他好的服务器以及 gunicorn/uwsgi.
  • 队列管理可以使用redis。当有人调用 API 时,不需要 GPU 可用于推理。当每秒 API 的点击次数非常少时,最好不要使用它。但是当我们考虑向上扩展时,想想每秒 50 个请求,单个 GPU 一次无法处理,我们可以使用队列系统。
  • 所有的请求应该先直接到redis,GPU从队列中取出需要完成的工作。如果需要,您可以随时缩放 GPU。

Google Cloud 实际上提供 Cloud GPU。如果您希望使用需要实时功能的应用程序执行更高级别的计算,我建议您查看以下 link 以获取更多信息。 https://cloud.google.com/gpu/

Compute Engine 还提供可以添加到虚拟机实例的 GPU。使用 GPU 加速实例上的特定工作负载,例如机器学习和数据处理。 https://cloud.google.com/compute/docs/gpus/

但是,如果您的应用程序需要大量资源,您将需要增加配额以确保您的项目中有足够的 GPU 可用。确保选择 GPU 可用的区域。如果这需要更多的计算能力,您需要提交增加配额的请求。 https://cloud.google.com/compute/docs/gpus/add-gpus#create-new-gpu-instance

由于您将在 ML 引擎上的应用程序中使用 Tensorflow API,我建议您查看下面的 link。它提供了使用 TensorFlow 和其他预安装工具创建深度学习 VM 实例的说明。 https://cloud.google.com/ai-platform/deep-learning-vm/docs/tensorflow_start_instance