向图像识别项目的开发者提问。组织此类服务架构的最佳方式是什么?
现在我倾向于决定使用专门的 Amazon EC2 P2 GPU 实例来处理数据(尤其是训练)。这些服务器安装了仅用于人工神经网络(Python、Anaconda、Keras、TensorFlow)操作的软件。在生产模式下,服务器将带有元数据的图像作为输入(具体如何处理图像以及返回什么数据),并在输出时返回一个 JSON 数组,具体取决于元数据的类型。那里没有存储任何特殊逻辑,所有分析都在 Web 应用程序服务器上进行。
训练和测试样本存储在单独的集群(具有大磁盘空间的常规服务器)中。他们自己的搜索机器人(通过社交网络和搜索引擎)找到的来自网络的图像也被加载在那里。
Web 应用程序与神经网络的交互是通过对 GPU 服务器的 API 请求来执行的。此外,结果已经发送给客户端(类似地,从客户端到 Web 应用程序的所有内容,然后到神经网络中的处理)。
现在主要问题:
- 您在哪个领域进行分析?(例如,要确定一个男人在照片中穿着一件蓝色男式夹克,会执行一系列查询“搜索男人”->“搜索夹克”->“确定夹克的颜色”以神经网络以获得更高质量的响应并减少网络负载,如果前一个请求是肯定的,则每个请求都单独执行)。在单个神经网络中实现所有搜索选项是否有意义,或者为相当简单的任务创建许多单独的神经网络是否更好?
- 您如何在培训和网络阶段优化资源消耗?到目前为止,我唯一的选择是在云托管的框架内创建一个专门的 GPU 集群进行训练,并根据需要定期打开它(否则它会变得很昂贵)。
您的问题表明您没有意识到在照片中寻找男人的问题的复杂性,更不用说寻找夹克了。至少按照 2017 年底的标准,在照片中找到任意大小的物体已经是科学的前沿了。
先从简单开始。至少尝试笼统地解决您的问题,这在问题中没有提到。无论您为此租用一台服务器,还是购买合适的显卡,都是另一回事。没有视频卡是可能的。一旦您了解您需要在您的设施中工作数年才能从根本上减少学习错误,那么您就可以谈论租用集群了。然后你可以参考 TensorFlow 文档来了解这些问题是如何解决的。