对象检测 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。要测试它,只需在主机
0
或 0.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
我开发了 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。要测试它,只需在主机
0
或0.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