成为AI架构师的三大能力
AI架构师的定义
“AI 架构师”是以深度学习为代表的第三次AI热潮所催生的新型复合型人才,它的产生最本质的驱动因素是AI产业化落地应用的蓬勃发展对人才的需求,深度学习突出的工程属性也特别需要复合型人才来驾驭。
从字面来看,AI架构师的“AI”对应算法技术,而“架构师”则涉及工程架构和业务把握。AI架构师应该具备把AI技术高效落地业务应用的能力,具体而言,对应三个基本能力:
第一,AI架构师要对AI技术和开发应用流程有整体掌握能力
第二,AI架构师要对上层 业务有充分的理解,有很好的技术抽象能力和技术判 断力
第三,AI架构师要能设计并实现高效合理的AI落地方案
此外,AI架构师还要具备综合素质,即对技术团队有很强的AI技术影响力,能整体上构建以AI为核心的技术体系,来充分发挥AI技术对业务的助力作用。
简言之,AI架构师以工程架构为桥梁实现AI技术和业务应用的对接。整个过程由业务驱动,通过工程架构进行任务分解后由AI算法落地和实现。这三个方面既是AI架构师的定义,也是AI架构师的要求或特征。
成为AI架构师的三大核心能力
成为AI架构师的三大核心能力AI架构师不同于传统的AI算法科研人员,算法科研人员针对的任务往往都是抽象后的、环境变量相对固定的问题,基于这些问题做模型算法层面的研究;AI架构师也不同于一般的架构师,一般的架构人员通常直接按业务需求设计工程实现,没有AI算法这一层从而对技术要求和思考角度有较大不同。AI架构师对AI算法、业务理解和工程实现都有比较高的综合性要求。
掌握AI技术及相关应用、开发流程
AI架构师要对AI技术以及AI开发应用有递进式的理解。如果只是看了具体任务的几篇技术文章、拿来开源代码然后照示例来运行,好像看起来是很高效的上手了。这样做小的项目可能没什么问题,但对于更复杂的项目或者新的任务场景,很可能还是手足无措。所以,对于AI架构师而言,他必须对AI的基础技术和开发应用流程有更本质的理解和系统化的掌握,可以递进式的拆解为如下几个层面:
- 首先,要熟悉机器学习的基本原理、特性,包括其局限性。例如要知道机器学习整体的工作机制,数据、特征、模型之间的关系,训练集、验证集、测试集的作用,模型训练的概要原理,效果怎么评估,拟合、泛化以及正则化等基本概念。
- 第二,要掌握深度学习技术栈。由于现在AI实践多以深度学习为主,AI架构师需要掌握深度学习的基本原理和特性,了解诸如神经网络的基本构造、反向传播和梯度优化等基本训练方法,还要掌握深度学习相关的开发框架、开源工具的使用。
- 第三,要了解主流的模型算法和网络结构。不要求对每个算法领域都非常精通,但AI架构师要整体了解当前最常用的模型算法大概有哪些、各自有什么特点、分别适合解决什么类型的问题,对主流的模型特色和网络结构有较好的把握,也就是说对常用AI算法广度上的要求。
- 第四,要对AI开发应用部署的流程熟悉。前面三点主要聚焦在AI知识层面,而部署流程则是实操层面。在机器学习一般任务中,要对数据处理、特征设计、效果调优、性能优化、部署上线等环节得有比较全面的理解和实操经验,AI技术并不只是静态的算法。
- 此外,最好还需要对AI软硬件协同有一定了解。AI讲究的是效率,而计算特性的发挥需要硬件支持。比如什么任务什么时候运行在CPU上合适、什么时候运行在GPU上合适,要不要分布式训练或推理,分布式时资源怎么做负载均衡和弹性调度等。
以上是对AI技术本身而言,尚未涉及业务。就像超级英雄电影里的情节一样,我们先要拥有某种超能力或者黑科技,这是拯救世界的先决条件。这一层面强调的是目的不是要成为AI技术专家,而是要做到对AI技术有比较宏观和本质的理解把握。需要注意的是,这层能力的掌握需要一个渐进的过程,不能期望一蹴而就,或者说设想先学成AI技术专家再去做业务,最好是结合项目实践不断迭代深入,先宏观再细节,先整体再局部,先黑盒再白盒。
对业务的理解和抽象能力
这里的关键点是要“理解”业务。作为AI架构师,尤其需要重视理解业务的诉求和逻辑,只有抓住业务问题的关键点,才能够做出正确的抽象设计和技术选型,切忌不要只从AI技术出发只是想当然。
- 首先,要把握业务的关键问题和核心逻辑。
比如说要做推荐或者是信息流的产品,核心逻辑是推荐符合用户兴趣的内容,怎么匹配用户的兴趣是解决这个问题的关键;做搜索产品的核心逻辑肯定是排序,排序的关键是语义匹配。这个过程可以称之为横面的抽象⸺首先就抓住了业务的重点、痛点。通常横面抽象可以用传统的方法来解决,但如果开局这一步没有做好,就相当于一个问题要解决的方向不准,后面无论采取什么AI策略都难以发挥效果,对产品或业务而言就成了缘木求鱼。
- 第二,机器学习技术层面的抽象以及对应的技术匹配。
机器学习的基本任务类型包括分类、回归和排序等,我们要看业务关键问题可以抽象为一个什么机器学习问题。有些任务场景虽然复杂但已经有了现成的答案,比如语音识别、人脸识别的问题,可以套用成熟的方案。当然这些方案当初也都经历了对应的机器学习技术抽象的过程。现在看来非常简单的中文分词问题,也是因为首先把它变成一个分类问题后才在机器学习技术下取得了突破。但一些新场景的问题就需要AI架构师去做这一层的抽象,比如前面提到的用户兴趣匹配和语义匹配问题,需要我们进一步的技术抽象,映射成对应的机器学习技术问题。
- 第三,做完技术匹配再往下要做具体的模型选型。
同样是分类的问题这个场景适合选择什么模型或者网络结构?是直接套用某个成熟模型,还是要针对任务特点组装一个新模型?基础网络结构是选择MLP、CNN、LSTM还是选transformer?我们要根据实际任务特性构建模型的结构,比如输入是离散高级特征还是原始信号特征,是序列还是非序列等等,以及应用场景对计算代价的要求等因素也需要考虑。再往后就涉及模型的具体细节、训练的策略、参数的设置等层面了。
以上环节里,需要指出的是,对解决问题效果的影响,越往前面(对业务的理解)越重要,越往后(技术实现方式)影响力越小。如果业务关键问题的把握和大的技术选型不对,具体模型算法的调优只能事倍功半。
同时需要注意到,业务的理解和抽象的一个重点是创造性。对AI的业务落地来说,很多情况下不是说需求已经很明确、直接按照需求做软件就可以了;而是需要根据业务场景构造对AI技术的需求,然后再映射到架构上去⸺创新才是AI能发挥最大效力的关键。另外,有些复杂的问题可能不是一个AI技术能解决的,需要多个AI技术模块协同或者与一些非AI的技术协作才能完成。这时需要我们具备整体的架构能力,而不是简单的生搬硬套。至此,我们确定了要解决的具体问题是什么,基本上做到了兵法里的“知己(AI技术)知彼(业务痛点)”,接下来该如何摆兵布阵了。
高效可落地的工程能力
在工程实践过程中的着眼点要求不但可落地,还要高效。如前所述,解决一个复杂业务问题可能需要不止一个AI技术,我们需要根据业务的实际场景合理选择工具和资源,去进行组合、组装、串联以达到工程实践的要求。此外,由于业务时间要求、成本限制、质量要求等等,我们不可能在最理想态下、不计成本地解决问题。这时我们就要做折中的选择,并尽可能提高技术方案的可扩展性,使之能随着业务的变化而不断演进。对于真正的AI产业应用,这一环节尤为重要。而深度学习对应的“大模型、大数据、大算力”的要求,对工程落地提出了更多的挑战。近年来不止产业界,学术界也开始更多关注AI系统构建的相关技术设计和工程实现问题。
在方案落地的时候,一定会较多地涉及系统构建和部署的问题,AI架构师要对系统的整体设计、部署和硬件环境相关的问题进行深思熟虑,到底硬件资源该怎么选、部署怎么实现、系统怎么运行,等等。最后,要有迭代的意识。常有人用“开着高速换轮胎”来形容快速迭代,一个系统在上线过程中肯定会遇到各种意想不到的问题,例如实际效果低于预期、运行效率不高等等,这时如果没有快速迭代能力,项目便很难继续推进下去。
相关文章:

成为AI架构师的三大能力
AI架构师的定义 “AI 架构师”是以深度学习为代表的第三次AI热潮所催生的新型复合型人才,它的产生最本质的驱动因素是AI产业化落地应用的蓬勃发展对人才的需求,深度学习突出的工程属性也特别需要复合型人才来驾驭。 从字面来看,AI架构师的“…...
博客系统 实现 (前端 + 后端 )代码
文章目录博客系统前端代码 :1. add.html2. blog_detail.html3. blog_edit.html4. blog_list.html5. login.htmlcss 文件1. blog_detail.css2. blog_edit.css3. blog_list.css4. common.css5. login.css6. 分页器使用的 css后端代码1.config 包1.1 AppConfig类1.2 Lo…...
C语言:如何在cmd命令窗口上玩贪吃蛇游戏
最近在重新学习C语言知识,还别说,在这个过程中,我还真的学到了过去很多没有学习到C语言知识,于是就做了这个游戏–贪吃蛇. 运行结果如下: C语言:如何在cmd命令窗口上玩贪吃蛇游戏 文章目录 1. 实现原理2. 实现过程3. 参考代码1. 实现原理 其实,就是利用了人的视觉错觉来…...

Flutter-自定义图标
虽然Flutter有许多内置的icon图标,但是有些特殊功能的话,需要自定义图标或者需要在iconfont 阿里巴巴的图标库里找对应合适的图标。 第一步:在iconfont 阿里巴巴里搜索想要的图标并加入到购物车,点击下载代码后,会生成…...

教学场景应用视频试看预览功能
html5播放器视频预览功能效果 - 视频预览代码示例预播放一小段时间的视频内容,比如3分钟,然后引导用户付费观看或注册会员观看完整视频。原理:视频播放结束,执行s2j_onPlayOver()函数,显示提示信息或对话框,…...

关于进程与进程调度
目录什么是进程进程管理进程的结构体(PCB)里的属性并行与并发什么是进程 一个运行起来的程序就是进程. 比如文件名是以 exe 结尾的就是一可执行文件(程序) 双击QQ.exe文件, 这个程序就跑起来了, 它在系统中形成了一个进程, 那我们怎么看到进程呢? 可以打开任务管理器, 点开进…...

Redis常用命令及数据类型参数
1. 针对于string SET key value / GET key SET k1 v1 GET k1 // v1String是二进制安全的,是可变长度的, 底层类似于ArrayList 是可扩容的,最大存储内存为 512MB。 2. 判断key中是否存在某个内容 EXISTS key SET k1 v1 EXISTS k1 // …...
(七十四)大白话深入探索多表关联的SQL语句到底是如何执行的?(2)
今天咱们就以MySQL单表查询来举例,看看执行计划到底包含哪些内容 其实只要大家跟着专栏一步一步的学习下来,会很轻松的看懂执行计划,但是如果你之前对什么数据页,索引,索引使用规则,这些东西学的不扎实&am…...

销售使用CRM系统集成Excel的五个技巧
销售过程中有很多情况会降低团队的效率。通过正确的实施CRM客户管理系统,可以帮助您的企业自动执行手动任务、减少错误并专注于完成交易。这里有5个技巧,可以帮助您的销售人员通过CRM集成Excel为销售流程赋能并提高他们的整体效率。 技巧1:将…...

过来人告诉你:Java学到什么程度可以找工作?
大部分初次学习Java的同学都非常关注自己学到什么程度可以找工作就业,因为学习的目的一方面在于掌握知识、提高技能,另一方面就是就业谋生。今天笔者就来跟大家聊一聊一下Java学习到什么地步可以面试找工作。任何企业,不论大小,对…...

【Linux】目录结构
Linux世界里,一切皆文件。 /bin:是Binary的缩写,这个目录存放着最经常使用的命令。(常用) /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。 /home:存放普…...

37.Java进阶之实现动态编译
文章目录1. 作为程序员的最高追求2.如何实现动态编译2.1 生成源码2.2 调用编译器API对Test源码文件进行编译生成字节码2.3 调用类加载器对字节码进行加载得到Class对象2.4 使用Class对象创建对象进行使用3. Java编译API学习4. 类加载机制4.1 类加载过程4.2 类加载器的层次结构4…...
【Python百日进阶-Web开发-Vue3】Day549 - Vue3 商城后台 09:Veux4-01基本概念
文章目录 一、Vuex是什么?1.1 Vuex官网1.2 Vuex安装1.3 Vuex概述1.4 核心概念二、Vuex的基本使用2.1 简单使用2.1.1 `src/store/index.js`创建store并导出2.1.2 `main.js`中引入并`use(store)`2.1.3 `src/views/index.vue`首页中使用store2.2 使用`mapState`简化 `$store.stat…...
GitLab 解析:为什么市场正在转向一体化 DevSecOps 平台?(附Forrester完整报告下载)
本文来源:about.gitlab.com 译者:极狐(GitLab) 市场部内容团队 如 GitLab 预测:2023 年企业会将更多的时间和资源投入到持续的安全左移上(详情请戳👉:重磅!GitLab 提出五大预测,洞见…...

ThreadLocal的内部结构和源码探究
目录一. ThreadLocal的内部结构1 常见的误解2 现在的设计3 这样设计的好处二. ThreadLocal的核心方法源码1 set方法2 get方法3 remove方法**4 initialValue方法**三. ThreadLocalMap源码分析1 基本结构2 弱引用和内存泄漏3 hash冲突的解决一. ThreadLocal的内部结构 通过之…...
Linux文件系统(下)
逻辑卷管理如果用标准分区在硬盘上创建了文件系统,为已有文件系统添加额外的空间多少是一种痛苦的体验。你只能在同一个物理硬盘的可用空间范围内调整分区大小。如果硬盘上没有地方了,你就必须弄一个更大的硬盘,然后手动将已有的文件系统移动…...

合并链表相关的练习
目录 一、合并两个有序链表 二、两数相加 一、合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2&…...

FFmpeg介绍及入门知识
1、简介 FFmpeg是一套由c语言编写的,可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,自身采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案,包含了非常先进的音频/视频编解码库libavcodec…...

ASA材料3D打印服务 抗紫外线材料3D打印服务 抗紫外线模型制作-CASAIM中科院广州电子
3D打印技术又称增材制造,通常是采用数字技术材料打印机来实现的,常在模具制造、工业设计等领域被用于制造模型,后逐渐用于一些产品的直接制造。随着 3D 打印逐渐成为主流生产流程的一部分,ASA抗紫外线材料应运而生。中科院广州电子…...

MySQL workbench数据表和数据结构
数据表和数据结构的关系 数据表 学号姓名位置26002351李晓丽126002589张明伟226003214李雪冬326002132汪涵426006541邱明罕526003654李丽6 怎样去描述上面的数据表,用【数据表结构】表示 表头字段名字段类型位数备注学号xuehao整数/字符8 姓名xingming字符4 座…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...