以技术为基石,拥抱AI浪潮的工程进阶之路

2022年11月, ChatGPT发布,在全球互联网行业中引发了剧烈的震动,爆发出AI惊人的能量,引爆全球AI浪潮。众多的公司与技术开发人员都涌入了AIGC这一条赛道,期望从中搏杀,探索出AI赋能互联网企业的新道路。

而这样的巨变,在软件行业,至少发生过三次。第一次发生在互联网蓬勃发展的时代,新的技术与商业模式的涌现,给予传统软件行业巨大的冲击,同时也为整个行业带来了前所未有的机遇与挑战。第二次发生在移动互联网时代,智能手机和移动互联网的普及,推动了行业格局的再次重构。第三次则是发生在云时代,云计算技术的广泛应用,使得数据处理和存储变得更加高效便捷。

如今,我们正身处于AI浪潮之中。7月5日,在2024世界人工智能大会上,金山办公在现场发布WPS AI 2.0,包含WPS AI办公助手、WPS AI政务版等应用,标志着金山办公在 AI 时代的信念与决心。

在这里插入图片描述

回溯历史,在计算机软件时代,十二万两千行代码的WPS在深圳蔡屋围酒店501房间横空出世,求伯君以一己之力,抗衡整个微软,被称为中国第一程序员。这是金山的技术底力,金山是一家从一开始就充满传奇色彩的公司,技术立业的思想,已经在此刻融入了金山的血液。因此,在移动互联网时代,金山抓住移动互联网的风口,积极拥抱移动互联网,完成了自我在移动浪潮下的革新之路。以及在后来的云时代,金山办公将战略修改为ALL IN CLOUD,实现了从传统办公软件向云服务的转型升级。在如今的AI时代,金山办公作为AI时代中大模型最大的应用方,积极拥抱AI时代的新机遇,不断拓展其在AI领域的应用场景和业务范围,为实现企业的长远发展奠定了坚实的基础。

在漫长的岁月里,金山办公面对新的挑战与新的局势,始终保持着对技术的热爱和追求。这种在技术上不断进取、面对新的环境勇于挑战的精神,让金山办公在技术的道路上不断前行、不断成长。这对于每一位程序员的成长来说,有着莫大的借鉴意义。那对于个人,如何主动地拥抱AI浪潮呢?

通过借鉴金山办公的过去,不难发现,对于每一位程序员来说,扎实的基础是立业的根基。计算机世界中,一部分诸如AI技术,在迅猛发展。而计算机并非无源之水,无本之木,有其飞速变化的部分,亦有其变化较慢的部分。

一方面,诸如一些经典的算法思想,如经典排序算法,提出于1946年至1960年不等;动态规划算法思想,提出于1950年;最短路径算法,提出于1959年。着眼于当前大热的AI算法,其基石——反向传播算法,提出于1974年;卷积神经网络,提出于1980年;循环神经网络,提出于1986年;长短期记忆网络,提出于1997年;在优化算法中,梯度下降,提出于1847年;随机梯度下降,提出于1951年;Adam 优化算法,提出于2014年。这些算法,即使经历了漫长的岁月,如今仍是AI技术的基石。

另一方面,则是计算机体系结构与操作系统中底层的部分,如指令集架构,x86 架构于1978年推出;ARM 架构于1985年推出。虽然不断有新指令和扩展被添加,但核心架构保持相对稳定。而存储器层次结构中,自1980年代起,三级缓存(L1、L2、L3)成为现代处理器的标准后,尽管缓存的大小和速度有所提升,但是这一结构在数十年间并没有发生根本性变化。此外,虚拟内存的基本概念和实现方式自1961年首次引入以来,近60年来,虚拟内存的实现,在操作系统中几乎没有改变。

正是这些内在的灵魂,支撑着技术的发展和应用的创新。但是,了解底层的应用,对上层应用的设计有帮助吗?

让我们来看一个简单的例子:

我们都知道在C++中,std::vector是非关联式容器,采用顺序存储;而std::map是关联式容器,底层采用红黑树进行存储,而红黑树又采用指针进行存储。根据直观的想法,使用std::vector进行查找的开销为O(n),而使用std::map进行查找的开销为O(logn),直观上看来,在查找较多的应用上无脑使用std::map是一个合理的选择。

但是让我们进一步看看两个容器底层的操作:std::map底层使用的是红黑树,势必存在左右指针以及指向父节点的指针,每个节点都存在三个指针的开销。而std::vector通常不包含冗余的内存开销(除了std::vector容器预留的空间,但是这部分空间可以通过swap技巧清除)。现在我们假设存在一个 Widget 类,每个 Widget 对象占用 12 个字节。一个指针大小为 4 字节,而一个页面可以容纳 4096 个字节(4KB),那么对于std::map而言,每个页面可以存储约 170 个 Widget 对象,而使用 std::vector 则可以存储约 341 个 Widget。

在这种情况下,使用std::map造成了比使用std::vector接近两倍的开销,当数据量很大时,如果操作系统使用了虚拟内存,由于std::map底层使用的树结构中,节点通常是分散的,因此导致遍历或访问容器时,会访问到更多不同的内存页面。此外,当程序使用的内存超过了可用的物理内存,或者std::map中分散的内存访问模式导致更频繁的页面缓存失效时,操作系统将会将一些不常用的内存页面换出到磁盘上的交换空间中,这部分内存不再驻留在物理内存中,而是存在于磁盘上。程序访问这部分内存时将会触发页面错误,操作系统通过暂停当前进程、找到需要的页面,从磁盘读入该页面到物理内存、更新页表,恢复进程这三个步骤,从而将它们重新加载到物理内存中,这些步骤会带来额外的开销,尤其是从磁盘读取页面的时间会显著影响性能。因此对于大数据量的应用程序,频繁的页面错误处理会导致系统显著变慢。

而这仅仅是性能方面的影响。当我们面对更加复杂的问题时,一旦涉及到底层,诸如未知代码的踩踏或是CPU分支指令预测逻辑错误,会导致直观上难以理解的bug,常规调试工具提供的线索在此时非常有限,由于存在编译器优化,工具本身的结果也不一定正确,此时反汇编在这种场景往往会发挥巨大的作用,通过汇编与程序直接的映射关系,才能更加理解编译优化对代码产生的影响,以及造成问题发生的根本原因。因此,理解计算机系统底层,对应用的优化、调试甚至架构设计上,都会有更高层次的俯视。

2023年,ChatGPT带来办公软件革命性的升级,微软、金山办公开启了智能化办公的新纪元,新的技术正在不断重构办公软件的价值天花板。作为个人,在不断完善基础理论与熟练使用语言工具及工程方法的同时,逐步深入到深度学习的领域,积极拥抱现有主流方法与技术。与学术方向不同,工程方向则考虑得更多的是新兴方法应该如何惠及千万用户,是否适合现有的用户场景。无论是多端是否适配,还是模型的性能与效果要如何取舍,都是需要考虑的问题。

旧时代的船无法前往新的世界。深入研究深度学习领域的最新进展,跟踪前沿技术应成为日常。无论是卷积神经网络(CNN)、循环神经网络(RNN)、生成对抗网络(GAN),还是新兴的自监督学习、迁移学习、强化学习等,需要在理论上进行了解,但最重要的仍是实践中积极应用。技术是解决现有问题的工具,应积极考虑用新兴方法解决旧疑难杂症。具体到目标检测领域,则需要考虑如YOLO、Faster R-CNN等主流方法。如果是自然语言处理相关方向,那如何利用大语言模型+微调的方式解决传统问题,或带来革命性的用户体验,则是需要考虑的问题。

在这里插入图片描述

再者,工程化的实施需要考虑多个方面的问题。可移植性是其中一个重要因素,模型不仅要在开发环境中运行良好,还要能够顺利迁移到生产环境,这在实际的开发环境下。移动端适配则要求模型在资源受限的设备上同样表现良好,这涉及到模型的剪枝、量化等技术。此外,模型的性能与效果如何取舍也是工程化中的一个关键问题,需要在精度、速度、资源消耗等多个维度进行权衡,以找到最佳的解决方案。

在互联网AI革命中,金山办公积极拥抱AI浪潮,成为AI大模型应用的领头羊、探路者、先驱者。章总在接受财经杂志专访时说:“过去大家还有贸工技、技工贸的分歧,还有市场换技术的幻想。但今天大家有共识,没有幻想,所有人都在选择核心技术研发”。曾经,企业的护城河是品牌、是专利,或是经营规模等。 而互联网每一次巨变,带来的都是全新的技术,全新的模式,以及全新的挑战。如今,随着时代的迅猛发展,我们必须使我们的技术栈与时代的要求保持一致,这促使我们必须不断奔跑,跑得比所有人都快,而不断奔跑的能力,本身就是企业的护城河,也是你我的护城河。

希望通过我的分享,能够帮助更多技术爱好者在AI浪潮之中,在深度学习以及 AI 工程开发道路上不断前行,实现技术立业的梦想。

最后,借用雷总的一段话,与君共勉:

在一个网站就能成名的门户网站时代,我勤奋的能写出像诗一样的代码;在建立一个平台就可以功成名就的BAT时代,我辛苦写代码,996了十多年,怎么就做不出让用尖叫的产品?在群雄逐鹿,做一个APP都能融资上亿的时代,我还要错过什么?勤奋我有、技术我有、智慧我有、人脉我有、资本我有,唯独用户,我没有。我需要用户,但这个事情必须要做成用户需要我,需要我的产品和服务;一切围绕用户需求展开,努力做到“专注、极致、口碑、快

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cloudeeeee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值