2025 年 AI 趋势分析

一、AI 大模型还会是拼算力和数据吗?

Deepseek 用创新的训练方法,以极低的算力,实现了比肩 OpenAI o1 的性能。科技圈在狂抛 Nvidia 的股票,一天跌 17%。

接下来,大模型是会进入算法创新的精耕细作时代,还是继续拼算力和数据?小孩子才做选择题,对于拼得起的大厂,当然是两者都要。

除非 DeepSeek 过去没有利用任何大模型,否则就只是证明 Scaling Law 还能更有效。
除非他们未来的的 R-x 能超越 OpenAI o3 的模型,否则只是在给已有方案做降本增效。

当现在他们和 OpenAI 一样走到技术的最前沿之后,也不会反过身来给自己的方案再进一步降本,而是拿着更多的资源大步往前走。

但他们的工作,仍然具有一个非常重要的现实意义,以及一个非常重要的启示意义。

现实意义在于,极大降低了 AI 的使用成本。这轮 AI 目前最大的问题在于高昂的算力成本和贫瘠的 AI 应用。
而降低的算力成本,必将进一步刺激 AI 应用的的开发。AI 应用开发和需求会互相激励,并反过来刺激大模型和算力的需求。

启示意义在于,倾注全力的追赶永远不会超越,算力和数据仍然很重要,更重要的是自发性和原创性。

二、AI 应用会开始涌现吗?

AI 应用必然涌现。因为算力成本更低,而开发者也接受了 2 年的教育。

但最出彩的那些 AI 应用不会是在大厂中出现。原因有 2 个:

  1. 不管是 OpenAI 还是 DeepSeek,都说明了一点,原创性的创新,必然是自发的,而不是提拔的。提拔只能用于追赶。
  2. 有价值的应用,其开发者本身必然是该应用的深度用户,也必然是最激进的 AI 追逐者。而这种人,不会是大厂氛围中的职业人。

所以,这波涌现的 AI 应用,会让大家认识很多新的面孔。

三、如何参与?

  1. 做自己喜欢的应用

只有忠于自己,才能实现弯道超车。否则就是在玩追赶游戏,追赶游戏,连大厂都玩不过。

  1. 以完成为第一目的

完成了才能迭代和学习。

  1. 应用 Scaling Law

这波 AI 浪潮的核心驱动力即为 Scaling Law。为抓住这一机遇,我们应更彻底地应用这一原则:

  • 利用 AI 工具 :在开发和运营中给予 AI 更大的信任,充分使用各种 AI 工具来提高效率。
  • 应用规模化策略 :避免在局部追求 100% 完美,而是在大规模数据基础上追求整体达标率。
  1. 可以开始寻求一些帮助

AI 应用将要涌现将会成为共识,会面临比较宽松的融资环境。
需要注意积累公司产品形象,并开始寻求一些帮助和投资。

关于 Python AI 程序加密

AI 程序一般至少包含 AI 模型和推理逻辑。
如果涉及到加密场景,则还要实现模型加密、模型解密以及调用计数加密。

1
2
3
AI 程序 = AI 模型 + 推理逻辑
AI 程序 = 加密模型 + 解密模型 + 推理逻辑 + 计数逻辑
AI 程序 = 加密模型 + 加密“解密模型” + (加密)推理逻辑 + 加密计数逻辑

本文从软件工程的角度对常见 Python AI 程序加密的方法做一些代码攻防演示,并做出以下结论:

  • 在 Python 代码内做软件加密意义不大,因为 Python Interpreter 很容易被拦截
  • PyArmor 结合 C/C++ 是一个兼顾开发成本和保护力度的可行方案,适合早期的项目推动
  • 软件加密不是万能的,任何加密都可以被破解,难度取决于运行时机器对 Hacker 的透明度

Read More

Qt5 疑难杂症:QGraphicsScene 鼠标单击不触发自定义 QGraphicsItem 的 shape 方法

QGraphicsScene::items and QGraphicsScene::itemAt does not return clicked item of customized class class Item: public QGraphicsTextItem even thought Item::shape and Item::boundingRect method has been overriden properly and Item::mouseHoverEnter works with customized shape.

今天又遇到一个 Qt5.12.12 的坑: QGraphicsScene::itemsAt(event->scenePos(), QTransform()) 死活不能正确检测到被点击的 class Item: public QGraphicsTextItem 元素。

一般而言,这类问题都是因为没有正确使用 event->scenePos 或者没有正确 override 自定义 Item 的 shape 方法。
之所以叫疑难杂症,就是因为以上一般方法都没用。

Read More

使用 Docker Compose 部署 Gitlab Runner

本文目标:

  • 一台主机部署多个 Gitlab Runner
  • 实现互相隔离且互不影响的 Gitlab Runner 环境
  • 使用 compose.yaml 持久化配置和数据,快速复制部署
  • 在 Gitlab Runner 中使用 docker, helm 以及 kubectl

前置要求:

  • 宿主机上安装了 dockerdocker compose
  • 【可选】宿主机上安装了 kubectlhelm

方案限制:

  • 只能使用 shell 作为 Gitlab Executor
    • 由于 Gitlab Runner 本身运行在 docker container 中,所以几乎没有影响

Read More

开源软件协议 QA

在开始阅读前,可以先尝试这道选择题,测试自己对开源协议的理解😊。
答案在文章最后。

【选择题】以下受开源软件协议约束的场景包括:

  • [ ] A. 包含某个开源软件库,开发一个安卓程序并上架应用商城
  • [ ] B. 包含某个开源软件库,搭建一个后端服务程序并封装为 SaaS 对外服务
  • [ ] C. 包含开源软件库,开发浏览器前端界面并部署上线给用户使用
  • [ ] D. 使用一个开源脚手架工具构建项目并上线应用商城
  • [ ] E. 包含某个开源软件库,开发一个后端服务程序,提供私有化部署
  • [ ] F. 基于某开源编程语言开发的软件,进行分发
  • [ ] G. 基于某个开源编程语言编译器定制开发语言编译器,实现定制编程语言并进行分发
  • [ ] H. 包含某个自己贡献了代码的开源库,开发一个软件并进行分发

Read More

C++对象数据布局(一)——数据对齐的陷阱

C++ Class 对象的数据布局和 C Struct 数据布局遵循同样的原则,按顺序排布并考虑内存对齐的要求。
但是 C++ Class 对象相比于 C Struct 有其创新之处。C++ Class 添加了两个新的 access section,支持在类内声明函数,最重要的是,添加了“继承”的特性。
这其中有什么可怕的陷阱吗?直接公布答案有什么意思,你得自己一步一步趟过去才行。
小心,别中招了!

Read More