互联网资讯 / 人工智能 · 2023年12月14日

AI工程师的成长之路:工作方法探索

这篇专门讲工作方法, 工程师这个群体中有许多非常聪明的人,他们在工作中会面临许多重复繁琐事宜,如何用工程思维去面对,这几年通过工作学习进行了总结,概括来说主要有以下几个方面。

重复环节自动化

这恐怕是程序员最基础的直觉和认知了。可以从”CV工程师”的角度理解自动化:当你CtRl C+CtRl V复制粘贴第一次时,你应该考虑是不是可以将其抽象成一个组件或工具;当你复制粘贴第二次时,组件的结构和设计应该已经比较清晰。第三次再复制粘贴时,已经可以使用自己的组件或工具了。

自动化不应该只体现在代码层面,可以将它看作一种解决问题的方法,环节重复的都可以用自动化。比如我们写博客时用到图床,一般的流程是:截取并存储图片,上传到图床,获取图片链接。这个过程如果不自动真的会让人只生出死心—恶心死了,但实际上 Mac 下面的 AlfRed WoRkflow 就可以简便实现自动化。再比如我们经常开会,完全可以做一个会议记录的模板,每次开会时复制一下。关键是要想方设法将重复的动作抽象,重要的是要有这个意识。

既然自动化更多的是一种意识,自然地非技术人员也会需要,而且可能更加需要。比如行政人员可能会手动发工资条,运营人员可能会每天下载一次报表,然后针对报表做一些统计或其他处理,这些工作其实都可以自动完成。

自动化并不是高大上,或者必须要会 Python,有时候写代码反而更复杂,比如之前提到过 WoRkflow 图床的例子。对于非技术人员,Excel 很多时候会更加实用,比如统计、去重、切片、过滤等等,在 Excel 里面就点几下鼠标的事。

工具并不重要,只要能让事情 “自动” 完成,那越简单的工具就是越好的工具。

批量化

批量化和自动化可能比较类似,但批量化更加侧重一次完成一类工作,核心是 “批量”,而自动化核心是 “自动”。批量化一般是针对某项具体的工作内容,比如统一查找替换,统一为所有句子添加某个字符、批量下载数据等等。

AI 工程师对此应该非常熟悉,模型训练中的 BATch 其实就是批量化的例子。批量往往具有统一的特点,不仅效率高,而且还能避免一条一条操作可能的错误。比如给定一个若干列的文本文档,要提取出包含数字的行,这时我们可以借助 SubliMeText,利用正则找出所有的数字,然后选中所在行复制出来即可。

批量化时刻关注能否 “一次性” 将事情搞定,很多时候会体现在运筹层面,比如要下楼取快递,可以和外卖一起取;或者将要讨论的议题放在一起开会等等。总之,就是尽量将类似的行为一起完成,提高效率。

还有时间的批量化。即利用一整块时间做一件事。对我个人而言,一般会选择上午作为静默时间,专注需要集中注意力完成的任务,不看消息,也基本上不动。

简单化

这里的简单包含两层含义:第一层就是一般意义的 “简单”,第二层是大道至简的 “简单”。第一层类似简陋,一般作为初始方案或临时方案;第二层的简单则是透过复杂冗繁的表象直达本质,整个系统层面的清晰和优美,往往是不断演化改进的产物。这里以AI工程师的业务角度说两个方面。

产品设计

一个产品在设计阶段,能够满足需要的前提下,应该选择简单的不断优化。具体说明一下怎样的设计我认为是 “简单” 的:一方面,有不同的模块,每个模块有单一、不同且不可或缺的功能;另一方面,每个模型的核心功能符合对其基本假设。其中要注意,模块不应该有一些仅适用于部分情况的特殊设计。

拿AI工程师举个例子,Google 的东西往往符合 “简单” 标准,比如 Doc2vec,BERT,但大部分魔改后的论文都是将其复杂化。作为工业界的工程师,其实重点关注 GF的前沿研究成果就差不多了,其他的只是作为一个思路参考,贪多嚼不烂。

产品架构

架构设计本身是很复杂的一件事,看起来好像是将已有的功能各种组合在一起,但难就难在这个选择上面。简洁架构更多是从整体复杂度的角度考虑的,模块与模块、组件与组件之间交互简单。要做到这点,一定要从实际出发,选择当下最适合的架构,略微做一定的扩展性考虑,接下来就是随着系统不断演化。

需要特别注意三个点:第一,过度设计。好的架构往往是演化出来的,而不是一开始就设计的那么好。第二,追求新技术。这本身是个好事,但作为架构设计者必须要综合考虑多种因素,抛开技术层面,新的技术是否稳定、团队能否 hold 住、所有者对未来的规划等等都是很重要的因素。第三,想一步到位。事实上,架构的调整往往是逐步进行的,有可能先调整某个模块,再下一个,有时候更是需要全部推翻重新设计。架构设计不是一锤子买卖。

边际收益最大化

在经济学中,边际收益是指增加一单位的投入所能获取的收益。边际收益具有递减性,比如很饿的时候,第一个包子最香,吃着吃着越觉得不好吃。在工作中,我们应该优先做边际收益最大化的工作,通俗点的说法就是 2-8 法则:用 20% 的资源做能够起 80% 效果的事。

优先解决人工部分

长期来看,几乎所有企业都会面临 AI 化,就像十几年前的电子商务,这并不是 “有些” 企业的专属。关于这点,我比较认同吴恩达的观点—将 AI 比作电力。即便从客观角度看,AI 技术确实能在许多方面提升企业效率,比如客服机器人、搜索、推荐等等,区别只是做的深浅程度。即便是已经部分 AI 化的企业,也未必没有优化的空间,我们只需知道技术的存在就是为了提升整体效率,剩下的便是一点点去优化。

重视新技术

无论原因是什么,都不是不使用新技术的理由。尤其AI领域,深度学习的有效性已经不容置疑,在很多场景下都可以替换传统方法,或者进一步提升已有的效果。作为行业的一员,出现新的方法和技术,即便没效果我们也该去了解,更不用提效果这么好了。

综合使用不同方法的核心部分

不同的方法、不同的模型效果可能不一样,因为它们各自侧重的点不一样。在实际中,我们往往没办法一套方法走天下,即便是最新最好的也不行。这里想表达的是,正是因为不同方法侧重点不一样,我们反而需要利用这点,选择多种方法组合,这类似于利用了每种方法的最大收益。

 

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.

登录免费注册