传统上,AI 的训练和推理通常在云端进行,而边缘设备只是作为数据的收集和传输节点。
然而,随着边缘计算的兴起和边缘设备的计算能力的提升,越来越多的智能任务可以在边缘设备上进行处理,即实现端智能。
今天我们就来了解下 端智能
和 Web 端智能
,希望能带给大家一些启发。
一个典型 AI 应用的开发流程如下:
模型训练的中间产物为一个模型文件,通过加载模型文件,部署为可调用的服务,然后就可以调用进行推理预测了。
在传统流程中,模型服务会部署在高性能的服务器上,由客户端发起请求,由服务器端进行推理,将预测结果返回给客户端,而端智能则是在客户端上完成推理的过程。
端智能有一个最明显的局限,就是低算力,虽然端侧的性能越来越强,但是和服务器相比还是相差甚远。为了在有限的资源里做复杂的算法,就需要对硬件平台进行适配,做指令级的优化,让模型能够在终端设备中跑起来,同时,需要对模型进行压缩,在时间和空间上减少消耗。
Web 端上可以呈现(并在用户允许的情况下捕获)文本、图像、音频和视频数据,这些数据类型正是机器学习/深度学习流行应用所需的数据,如:图像和视频中的分类、对象检测、语音转录、语言翻译、文本内容分析,因此 Web 端是具备了部署机器学习模型的基本条件。
Web 端同样拥有端侧 AI 的优势与局限。此外,Web 端的好处还包括:
2018 年开始涌现了非常多的JS的机器学习、深度学习框架。如 Tensorflow.js 、Synaptic 、Brain.js 、Mind、Keras.js 、WebDNN
等,其中 Tensorflow.js
以其全面的深度学习能力、强大的生态系统成为最受欢迎、广泛使用的库。
为了在不同的环境下实现运行,Tensorflow.js
支持了不同的后端,会根据设备条件自动选择相应的后端 ,当然也支持手动更改。
有了框架之后,开发一个 Web 端上的 AI 应用,流程仍然较为复杂:
一些工具/平台的出现,简化了上述流程,让开发 Web AI 应用变得更加简单。
Google 的 MediaPipe
基于 TensorFlow Lite,目前支持 Android、Web、Python,即将支持 iOS。
下面是一个可以检测识别到图片和视频流中的对象(狗)的 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 提供的解决方案包括:
AIGC
热潮带火了 LLM
,开始有很多将 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)了解详情哦~