1、嵌入式设备发展
1、第一代:2000年开始 单片机 最简单的电子产品 遥控器,烟雾报警器 裸机编程
RTOS 智能音箱,路由器,摄像头 实时性要求高的操作系统(马上请求,马上响应)
2、第二代:Linux驱动 音视频处理 手机平板 涉及到内核框架
3、第三代:嵌入式AI 机器人,无人车,人脸识别
边缘计算(区别于云端,把人工智能推理训练变成本地完成)
性能落地:根据具体场景定制设备,性价比最大化
2、主流操作系统
1、把常用功能(多进程并发控制,中断处理,文件管理(存储分散,展现集中))封装好,标准化,直接可以用;帮忙做软件隔离,安全性更优,稳定性更强
2、UNIX:mac os
Windows
Linux:安卓 服务器 复杂嵌入式设备(病毒漏洞少)
RTOS:实时操作系统 FreeRTOS RT-Thread Vxworks
3、嵌入式+人工智能
1、小车识别一个人,跟随(CV:目标检测,目标识别,目标追踪(运动轨迹预测))
2、模型落地:模型压缩(剪枝(去掉权重小的部分),蒸馏(大模型中间层提取,小模型基于这个值进行训练),量化(把精度降低)),推理加速(tensorRT),CUDA并发编程(深度定制性优化,数据从flash->内存->cache->ALU运算单元)(GPU处理大量简单运算,CPU分支逻辑等复杂运算)
3、把训练好的模型 放到 具体的产品上面:把任务分配到各个流控制器中,硬件厂商会提供中间框架(TensorRT,帮助进行推理加速,提供标准格式ONNX),不同AI框架下来通过tvm DL编译器进行图优化,算子融合,借鉴编译器思想(LLVM, IR:前端对不同语言的源码解析,后端生成机器码),优化后生成计算图,图再部署到硬件上面,可以适应各种平台
有些算子优化TensorRT做不到,tvm可以,所以 tvm+tensorRT+CUDA 效果好
4、嵌入式AI开发语言
1、Python(胶水)
简易,易学 易用 门槛低
快,开发快,唯快不破,像胶水可快速粘接万物,AI 前端首选
2、C++
后端核心,AI核心 服务器 游戏引擎
快,性能快(跟C一样,可以直接生成机器码,可以直接控制分配底层资源),能驾驭大型项目
难,难学难精,欲戴王冠,必承其重
在性能要求高,复杂的领域,C++应用广泛,如服务器,数据库,游戏引擎,AI高性能计算,嵌入式系统等。像office软件,sql server,浏览器内核,QQ,杀毒软件,端游,人工智能等
C++就像隐藏在背后的大BOSS,如AI的核心的功能由C++写,而前端使用包装成python
3、C语言
底层之王,嵌入式 Linux
少而精,语法少,却精炼高效,能把硬件性能发挥到极致