「前沿探索」浅聊Web端智能

传统上,AI 的训练和推理通常在云端进行,而边缘设备只是作为数据的收集和传输节点。

然而,随着边缘计算的兴起和边缘设备的计算能力的提升,越来越多的智能任务可以在边缘设备上进行处理,即实现端智能。

今天我们就来了解下 端智能Web 端智能,希望能带给大家一些启发。

端智能

介绍

一个典型 AI 应用的开发流程如下:

  • 数据的采集与预处理
  • 模型的选取与训练
  • 模型的评估
  • 模型服务部署

模型训练的中间产物为一个模型文件,通过加载模型文件,部署为可调用的服务,然后就可以调用进行推理预测了。

在传统流程中,模型服务会部署在高性能的服务器上,由客户端发起请求,由服务器端进行推理,将预测结果返回给客户端,而端智能则是在客户端上完成推理的过程。

优势

  • 低延时:实时的计算节省了网络请求的时间。对于高帧率要求的应用,比如美颜相机每秒都要请求服务器,高延迟绝对是用户所不能接受的。而对于高频交互场景,比如游戏,低延时变得更为重要。
  • 低服务成本:本地的计算节省了服务器资源,现在的新手机发布都会强调手机芯片的 AI 计算能力,越来越强的终端性能让更多的端上 AI 应用成为了可能。
  • 保护隐私:数据隐私的话题在今天变得越来越重要。通过在端侧进行模型的推理,用户数据不需要上传到服务器,保证了用户隐私的安全。

局限

端智能有一个最明显的局限,就是低算力,虽然端侧的性能越来越强,但是和服务器相比还是相差甚远。为了在有限的资源里做复杂的算法,就需要对硬件平台进行适配,做指令级的优化,让模型能够在终端设备中跑起来,同时,需要对模型进行压缩,在时间和空间上减少消耗。

Web 端智能

Web 端上可以呈现(并在用户允许的情况下捕获)文本、图像、音频和视频数据,这些数据类型正是机器学习/深度学习流行应用所需的数据,如:图像和视频中的分类、对象检测、语音转录、语言翻译、文本内容分析,因此 Web 端是具备了部署机器学习模型的基本条件。

Web 端同样拥有端侧 AI 的优势与局限。此外,Web 端的好处还包括:

  • 即时 WebGL/WebGPU 加速:随着 WebGPU 标准的成熟,Web 端侧也可以利用到媲美本地的 GPU 加速算力。
  • 即时访问:在浏览器中运行的应用程序具有“零安装”的自然优势,这就避免了任何潜在的繁琐和容易出错的安装步骤,以及安装新软件时可能存在的风险访问控制。

框架

2018 年开始涌现了非常多的JS的机器学习、深度学习框架。如 Tensorflow.js 、Synaptic 、Brain.js 、Mind、Keras.js 、WebDNN 等,其中 Tensorflow.js 以其全面的深度学习能力、强大的生态系统成为最受欢迎、广泛使用的库。

为了在不同的环境下实现运行,Tensorflow.js 支持了不同的后端,会根据设备条件自动选择相应的后端 ,当然也支持手动更改。

有了框架之后,开发一个 Web 端上的 AI 应用,流程仍然较为复杂:

  • 针对特定场景设计算法、训练模型
  • 对模型进行压缩
  • 转换为推理引擎所需要的格式
  • 加载模型进行推理预测

一些工具/平台的出现,简化了上述流程,让开发 Web AI 应用变得更加简单。

工具

MediaPipe

Google 的 MediaPipe 基于 TensorFlow Lite,目前支持 Android、Web、Python,即将支持 iOS。

  • 将设备端机器学习的复杂环节进行了封装抽象,提供开箱即用的解决方案。
  • 提供了 MediaPipe Studio 这一基于 Web 的工具,支持低代码/无代码开发。
  • 通过 MediaPipe Model Maker 支持自定义解决方案,目前需要编写 Python 代码,未来将支持无代码定制。
  • 未来计划支持大模型解决方案,将大模型压缩为可在端侧运行的模型,实现诸如生成风格化头像、文生图、文本对话等能力。

下面是一个可以检测识别到图片和视频流中的对象(狗)的 Web 应用的关键代码:

import { ObjectDetector, FilesetResolver, ObjectDetectorOptions, ObjectDetectorResult } from '@mediapipe/tasks-vision';

let objectDetector: ObjectDetector;
let runningMode: ObjectDetectorOptions["runningMode"] = "IMAGE";

// 初始化对象检测器
async function initializeObjectDetector({
  const visionFilesetResolver = await FilesetResolver.forVisionTasks(
    import.meta.env.BASE_URL + "mediapipe/tasks-vision/wasm"
  );
  objectDetector = await ObjectDetector.createFromOptions(visionFilesetResolver, {
    baseOptions: {
      modelAssetPath: "https://storage.googleapis.com/mediapipe-assets/dogs.tflite"
    },
    scoreThreshold: 0.3,
    runningMode,
  });
}
initializeObjectDetector();

// ...
  if (runningMode === "VIDEO") {
    runningMode = "IMAGE";
    await objectDetector.setOptions({ runningMode: runningMode });
  }
  // 运行对象检测
  const detections = objectDetector.detect(target);

  // 根据返回的检测结果在页面进行展示
  displayImageDetections(detections, target);
// ...

MediaPipe 提供的解决方案包括:

  • 视频分析:MediaPipe 提供了用于视频分析的工具和库。它可以进行人脸检测和识别、姿势估计、手势识别、目标跟踪等任务。这些功能可以应用于视频编辑、人机交互、增强现实等领域。
  • 智能手机和嵌入式设备:MediaPipe 可以在智能手机和其他嵌入式设备上运行,提供低延迟的实时处理。它可以用于人脸滤镜、实时美颜、手势控制等应用。
  • AR 和 VR 应用:MediaPipe 提供了增强现实(AR)和虚拟现实(VR)应用程序开发的工具和库。它可以进行实时的物体跟踪、平面检测、SLAM(同时定位与地图构建)等任务,为 AR 和 VR 应用提供高精度的感知功能。
  • 3D 物体检测和跟踪:MediaPipe 提供了用于 3D 物体检测和跟踪的解决方案。它可以通过摄像头捕捉的视频流进行实时的 3D 物体检测和姿势估计,可应用于游戏、安防、机器人等领域。
  • 声音处理:MediaPipe 还提供了声音处理的解决方案,包括声音增强、音频过滤、实时语音识别等功能。这些功能可以应用于语音助手、语音识别、音频编辑等应用。

大模型

AIGC 热潮带火了 LLM,开始有很多将 LLM 运行于端侧的尝试。

Web LLM

Web LLM 项目将大语言模型对话引入了 Web 浏览器。完全在浏览器端运行,不需要服务端支持,使用了 WebGPU 加速。Demo 链接:https://mlc.ai/web-llm/

该开源组织还将 Stable Diffusion 引入了 Web 端(Web Stable Diffusion)。Demo 链接:https://mlc.ai/web-stable-diffusion/#text-to-image-generation-demo。

Web LLM 架构:

其关键技术是机器学习编译(MLC)。基于开源生态构建,包括 Hugging Face、LLaMa 和 Vicuna 的模型变种、wasm 和 WebGPU。主流程基于 Apache TVM Unity 构建。

机器学习编译 (machine learning compilation, MLC) 是指,将机器学习算法从开发阶段,通过变换和优化算法,使其变成部署状态。

开发形式 是指我们在开发机器学习模型时使用的形式。典型的开发形式包括用 PyTorch、TensorFlow 或 JAX 等通用框架编写的模型描述,以及与之相关的权重。

部署形式 是指执行机器学习应用程序所需的形式。它通常涉及机器学习模型的每个步骤的支撑代码、管理资源(例如内存)的控制器,以及与应用程序开发环境的接口(例如用于 android 应用程序的 java API)。

最后

再给我们的就业辅导服务打下广告,目前有面试全流程辅导简历指导模拟面试零基础辅导付费咨询等增值服务,感兴趣的伙伴可以联系小助手(微信号:interview-fe)了解详情哦~