将人工智能添加到现有应用程序的5种方法

目录

自己写

直接在代码中使用AI库或工具包

使用抽象库(.NET ML、openVino)

托管人工智能服务

本地人工智能服务

下一步


如果您尚未被要求向应用程序添加人工智能(AI)功能,那么提出该主题可能只是时间问题。

添加AI功能并不难。但是,这就像说向应用程序添加数据库支持并不难。不是,但选择正确的数据库、设置架构和存储过程可能很困难。然后你需要决定数据库是否应该在同一台服务器上,不同的服务器上。您还需要决定您将使用哪个数据库:关系型、基于文档的、键/... 它可能会变得复杂。

人工智能就是这样。添加库,使用本地服务,使用托管服务,我使用哪个服务?我该如何设置。然后是棘手的问题:要花多少钱?我的数据将如何处理?它有多安全?

因此,让我们快速浏览一下您的选项,以便您至少知道要问的问题。

自己写

我首先要说的是,这就是我们十年前开始涉足人工智能的方式,我真的不推荐它。有这么多杰出的研究人员,他们花费了无数工时,基于快速发展的人工智能研究语料库构建了极其强大和高效的人工智能库和模型,以至于使用众多人工智能中的一种变得更容易、更快、更安全解决方案已经可用。

话虽如此,深入研究一个简单的神经网络来建立根据您的特定场景对数据进行分类的能力是可以实现的,提供很好的结果,并且会产生很少的开销。CodeProject的垃圾邮件过滤器就是这样一个野兽,在我们看来,任何更大的东西都会是矫枉过正。在这种情况下工作的正确工具。

优点

  • 写代码很有趣。
  • 你得到你所需要的,仅此而已
  • 您最终可能会得到一个小得多的代码库,因为您没有导入库及其所有依赖项

缺点

  • 你在重新发明轮子
  • 您(可能)不会做得那么好,那么准确,或者像已经存在的那样快速地找到解决方案。
  • 这可能会分散您对核心业务案例的注意力。与简单地使用现有解决方案相比,它最终可能会花费您更多的时间、错失的机会和开发人员的时间。

直接在代码中使用AI库或工具包

如果您希望将AI处理直接包含在您的代码库中,那么使用诸如TensorflowPyTorch之类的库就不会出错。有许多成熟的、受支持的、易于使用的库可用于多种语言和平台。他们会为您处理繁重的工作,再加上许多预训练模型,您需要做的就是包含工具包、加载模型、输入数据、运行推理并输出结果。

下面介绍如何在python中使用最新的YOLO5模型:

import torch                                             # import the Torch library

model = torch.hub.load(‘ultralytics/yolov5’, ‘yolov5s’)  # Load the YOLO model
img = '~/username/images/street.jpg'                     # Specify the image
results = model(img)                                     # Perform the inference
results.print()                                          # Output the results

那是多么容易!

当您需要满足不同的模型版本以及训练模型所针对的库版本时,就会出现问题。以及模型所需的库所需的编译器或解释器的版本。如果所有这些与应用程序其他部分的库、解释器版本甚至硬件要求发生冲突,会发生什么?

这可能是一个真正的挑战,特别是对于Python,您可能需要设置多个虚拟环境,每个环境都有自己的库包副本,并且每个环境都使用不同版本的Python。保持这些同步和不受损坏可能需要很大的耐心。

例如,对于Python 3.7,您可能有一个很好的解决方案,但是当它在另一台安装了Python 3.11的机器上运行时,它可能会失败。

AI直接添加到您的应用程序中可能意味着您需要非常小心,以确保始终将所需的所有部件部署为一个单元。Docker会在这里为您省钱,但对于许多人来说,这种开销可能是不可接受的。

最后,在向您的应用程序添加AI工具包时,您需要记住您还将添加模型本身。AI模型可以很大,比如Gigabyte

优点

  • 你建立在你之前优秀的开发人员和研究人员的工作之上
  • 许多库都是开源的,因此您可以查看和审核代码
  • 人工智能库和工具正在以惊人的速度开发和完善。有源源不断的新功能和改进的性能被发布
  • 这些库通常非常易于使用
  • 有一些工具可以在库之间转换模型。
  • 几乎所有语言和平台都有一个模型

缺点

  • 使用库肯定有一个学习曲线
  • 您可能被限制为给定库使用特定的模型格式
  • 有这么多库。选择的悖论。
  • 包括库很少意味着只有一个库:它通常会带来所有的朋友、亲戚和远房表亲。事情会变得臃肿
  • 包括一个库意味着包括模型。事情可以变得非常非常大,很快。
  • 您必须确保您的编译器/解释器、库和模型在版本控制方面保持同步。例如,永远不要假设python的默认安装可以与您的代码一起使用。

使用抽象库(.NET MLopenVino

许多库要求您使用特定形式的预训练模型,或者它们需要针对不同硬件的不同库。这个问题可以通过ML.NETopenVino等库来解决,它们可以聚合和抽象库和硬件,以便为您的AI操作提供单一API

优点

  • 使用专用库的所有优点
  • 无需为特定硬件提供特定版本。库将动态适应
  • 您可以轻松使用更广泛的模型
  • 您对新硬件和模型格式具有一定的前瞻性

缺点

  • 库和功能的聚合将导致更大的占用空间。
  • 抽象可能会导致最小公分母问题,即库仅公开通用功能,这意味着您无法访问专用库中可用的某些功能或微调
  • 您选择的语言或平台可能会受到限制。

托管人工智能服务

使用托管AI服务意味着您可以消除与库、硬件和兼容工具包相关的所有问题,以及在GB的模型中拖拽。您调用托管的AI服务,结果会在几毫秒后通过您的低延迟、高带宽互联网连接返回。当然,假设您拥有其中之一。

托管提供商提供的服务范围确实令人惊叹。预建模型、快速硬件、出色的API。请注意成本。

在考虑费用时,您需要了解费用的计算方式。将数据上传到提供商是否需要付费?下载结果呢?预请求的费用是多少,如何计算?有些服务会按请求收费,有些会按处理单元收费,有些会按时间收费。您还需要考虑数据存储成本和可能适用的任何许可成本。

另请注意,成本将在很大程度上受到任务的影响:传递应用于预训练模型的数据是一回事,但传递用于训练新模型的TB数据的成本要高出几个数量级。例如,据传GPT-3的训练成本约为500万美元。

有多种选择可以降低您的成本。一种方法是混合和匹配服务提供商:将您的数据上传并存储到具有廉价存储空间的提供商(例如DELL)。将此数据发送到可能没有存储摄取费用的Azure,训练模型,然后将结果发送回您的DELL存储。您的数据是安全的,并且存储在一个提供商上的成本相对较低,而另一个提供商已经完成了训练您的模型的繁重工作。由于它们所在的管道很大,在大型托管服务提供商之间发送数据通常非常快。

如果您只是使用托管服务提供商进行AI推理(即将数据发送到AI模型以由模型进行预测或分析),那么您还应该受到限制,例如限制调用的绝对数量,以及任何限制在给定时间段内调用次数的限制。如果某项功能因为其他用户用完您当天的配额而消失,您的用户将如何反应?

您还需要了解数据的去向以及该司法管辖区的法律如何影响您。您的数据副本是否会存储在外国司法管辖区?您的数据馈送是否会被监控或提供给第三方?来自某人家中的网络摄像头提要可能不是用户或您的应用想要知道的内容被发送到国外进行处理。如果将个人身份数据发送到您所在的国家/地区之外,您甚至可能需要注意法律或保险限制。

优点

  • 快速、强大,您可以访问最新最好的
  • 无需担心AI库或版本
  • 无需担心硬件速度或容量。您的信用卡是您唯一的限制因素。
  • 您可以轻松使用各种型号
  • 你是面向未来的。您将可以访问最新最好的
  • 您的应用程序会更小。无需携带库代码或模型
  • 他们将使用任何可以通过HTTP进行API调用的语言

缺点

  • 您可能需要良好的互联网连接才能使用这些服务
  • 它们可能很昂贵,或者在实际成本方面往往模棱两可或不透明
  • 系统关闭。你无法真正看到窗帘后面发生的事情
  • 您无法控制数据的去向。这可能是隐私和安全问题。
  • 您可能会遇到配额或使用问题

本地人工智能服务

那么,如果您不想为AI编写自己的代码,您想使用您选择的任何语言或平台进行AI分析,您不希望您的数据离开您的本地网络(甚至您的机器)怎么办?并且您不想为您知道免费提供的服务支付未知金额。

本地托管的AI服务(例如CodeProject SenseAI)是两全其美的AI服务的一个很好的例子。您无需担心处理库和版本,任何可以进行HTTP调用的语言都可以与服务交互。

优点

  • 可以在网上找到本地开源AI服务器并免费使用
  • 没有使用限制
  • 您的数据保留在您可以看到的地方。除非您选择,否则不会将任何内容发送到网络之外。
  • 与托管AI服务一样,您无需担心库或版本控制。一切尽在服务范围内
  • 您可以轻松访问多 AI功能,而无需为要执行的每个AI操作安装库或工具包

缺点

  • 该服务的安装程序可能很大,具体取决于所包含的型号和功能。
  • 就像直接使用库一样,您会受到安装服务的机器的能力的限制
  • 同样,就像直接使用库一样,您不会自动获得更新。
  • 提供的AI功能不会像托管服务那么大。但是,单个服务可能会提供来自多个提供商的多个AI操作,所有这些操作都通过统一的API呈现

下一步

AI添加到应用程序可以从根本上扩展应用程序的功能,同时降低复杂性。启发式和硬编码的if-then语句被基于(希望)传统二进制逻辑无法轻易包含的广泛现实世界数据的训练集所取代。

您添加AI的方式具有同样重要的后果,您选择如何执行此操作取决于您的要求、预算以及最终您的情况。

 CodeProject ,我们已经尝试了上述所有方法,将AI添加到我们的系统中。我们的经历从对某些方法的简单性感到惊喜,到对每一步都必须与这些工具作斗争而彻底愤怒。

最后,我们想与尽可能多的开发人员分享我们与AI合作的经验(和乐趣),而不要求他们经历挫折。寻找兼容的库,处理模型、系统工具、路径、操作系统之间的异常以及不同CPU上相同操作系统之间的异常,过去和现在仍然非常耗时。我们构建 SenseAI  Server是为了将这种复杂性封装到一个独立的包中,为您完成所有繁重的工作。安装后,您就可以立即开始在您的应用程序中使用和使用AI

下载安装程序并试一试。

https://www.codeproject.com/Articles/5330374/5-ways-to-add-Artificial-Intelligence-to-an-existi

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值