【最后203篇系列】001 - 2024回顾

news2024/12/24 13:26:47

说明

最早在CSDN上写文章有两个目的:

  • 1 自己梳理知识,以备日后查用
  • 2 曾经从别人的文章中得到过帮助,所以也希望能给人帮助

所以在这个过程中,我的文章基本上完全是原创,也非常强调落地与工程化。在不断写作的过程中,我也得到了许多好处,教学相长的感觉。

不过,万事都有个尽头,我给自己一个小目标:1000篇博客。在接下来的1~2年内,我会完成这个目标。

内容,还是以我自己的体会、实践为主,如果有人觉得有用固然好,自己写写也挺享受的。

内容

快到年底了,又是一年。完结篇从一个年度回顾开始吧。

大概围绕:架构、大模型应用、算法与量化展开。

1 架构

我大约是从2020年开始,决定搞这方面的。最初的动力是来自于需求无法被满足。我所设想的算法世界很有趣,但是似乎找不到可以支撑的结构,我碰到的很多项目都是传统项目,过于古老而简陋。

于是我从装机器、装系统、布服务一点点搞,差不多4年时间,我觉得终于可以告一段落了。架构的世界也很大,我不是高手,只是觉得到这里基本结构可以了,我的兴趣还是在算法。

顺着时间线,5月份之前的记忆有点模糊了,忘了搞了什么。

1.1 ClickHouse - 6月

这是一个很棒的列式数据库,非常适合做备份、快速统计等,以前在我的数据库里缺了这一块。

1.2 ORM - 7月

原来我比较排斥ORM,觉得效率不够高。这大概是我过去经常是做块状数据操作,而且交互量也不大的原因。后来突然发现,世界是有两极的,批量操作和单条操作是不可能互相取代的,各有用武之地。

所以我把SQLAlchemy捡了起来,然后做了大量的对接工作:MySQL、Postgres、Clickhouse、SQLite 等一系列的对接,将使用习惯扭转过来。感觉好极了。

之后用MongoEngine 做了和Mongo的对接。

1.3 异步并发 - 8月

因为要调用大模型,所以对线程和协程异步并发也重新拉出来Review,然后算是成熟应用了。踩了一些坑,比如协程最好在脚本里只调一次run之类的。

1.4 Pydantic - 9 月

很早就像对数据的接口做规范。这次终于发现这个宝藏包,挺好的。

1.5 InfluxDB - 10 月

突然发现,我一直少了一块数据库:时序数据库。这次也补上了,未来可以用来做事件的存储分析,特别是量化的数据。

1.6 FastAPI - 10月

之前是有点偷懒的,想着既然掌握了Flask、Tornado 是不是也就够了。后来发现FastAPI还是很有必要的,特别是天然的异步可以结合异步包进行单条的数据库操作。

1.7 Prefect - 11月

在调度这块,我一直是比较缺失的。我基于Celery、FlastAPScheduler等其实已经自研了80%左右,还缺前端。但是Prefect可以更快让我动起来,我还可以借鉴一些成熟的做法,这样也几乎补上了这块短板。

1.8 队列 - 6-11月

前前后后,我尝试了RabbitMQ、Redis Stream、Kafka 三种队列。今年主要把Kafka弄好了,这个的作用比较大。当然,我又发现这几种队列又是没法互相取代的(轻、重队列)。

1.9 MatterMost -12 月

搭建了自己的服务,方便之后使用大模型加持:比如整理知识、自动安排提醒以及消息推送等。

1.10 Milvus 11月

以前做过实验性的,终于在生产上用起了Milvus。

1.11 Neo4j 10月

以前做过实验性的,终于在生产上用起了Neo4j。

1.12 DogPile 11月

开始在生产上用了Cache

其他

还有一些是零零散散做的,比如

  • 1 日志。以前一直没有记日志的习惯,大部分时候是提供一个足够好的无状态服务。
  • 2 Ansible。用于自动化部署。
  • 3 Grafana。用于展示数据。
  • 4 Telegraf。 和InfluxDB搭配的收集和解析指标工具。
  • 5 Logstash。另一个生态ELK下的组件。
  • 6 Nginx。开始用带健康检测的方式实现AB服务的部署。
  • 7 Mysql 升到了8。
  • 8 Mongo升到了8。

除了这些工具性的东西,我还做了大量的与之适配的开发。总之,今年可以说从程序设计、程序调度、IO并发以及存储等多个方面都有了大提升,够我实现一些基础算法能力了。

比较可惜的是,今年还是没有时间 把Dask和Ray搞好,得要2025年了。

2 大模型应用

今年应该算是大模型应用元年。

2.1 智谱时间(3、4月)

早些时候,智谱还是最好的选择。那时候我还手工部署和使用过glm2,glm3,还用自己的显卡实现过一些简单的项目。后来调他们的官方接口也做过一些任务。

2.2 Ollama时间(5、6月)

那时还是以自己搞小模型为主,当时出了Llama2啥的,性能有了提升,但还没太大用。

2.3 LangChain-ChatChat(7月)

虽然还是一个基于小模型的工具,但是从前台到后台,把RAG的东西展示清楚了,也触发了我去搞Agent、Function-Calling的想法。

2.4 DeepSeek(8、9月)

从这里开始是一个分水岭。DeepSeek重新定义了大模型的价格,以及效果。很快还退出了缓存技术,这都是很大的进步,让我们的项目可以以更大的规模去使用大模型。

2.5 豆包(10,11月)

如果说DeepSeek是ToC的,那么豆包就是ToB的。同级别的效果,更大的并发和更低的价格。我们的应用量更大了。

到现在,我们非常明确,大模型对于产品和业务,应该怎么去配合,以及发挥价值。(外在)

对我来说,更重要的还是RAG、Agent和Function-Calling。从现在的评估来看,大模型的能力基本没有问题了,工具也基本查探和准备好了,下一步就可以结合我的工作方式 丰富,并在实际的业务中发挥很大作用。(内在)

大模型白热化竞争以及飞速迭代的背后,让我更加肯定一些模糊的想法。既要顺着主流,把大模型用好 ,当下就产生巨大推力;另外,也要看到未来发展的趋势,有些是必然的,比如机器换人。还有一些是现在主流技术的盲区,但随着大模型的影响力,这些盲区可能会被打开。

总之,现在更专注与加速是最正确的决定。

3 算法

算法是目前我最“亏欠”的一块

我最初是搞算法的,这是我最感兴趣的一块。中间因为建设架构的原因,很大一部分精力都不在算法。然而这才是价值实现的最关键步骤。

我的算法最终目标是模拟+推演。

如果说传统机器学习是基于解析法的,我所要研究的方向就是近似法。在模拟和推演的基础上,可以进行发现,也可以进行博弈。

3.1 实体识别重构(3-5月)

最早有一版实体识别,但是比较早了。后来需要进行迭代,里面的从打标、训练到输出,整个流水线很长。所以我对整个模型的流水线进行了重构。
感觉更多的还是“炒冷饭”,但是为了业务也没办法。

3.2 实体识别及匹配(7-8月)

这个更多是奔着业务去的,但是在这个过程中有方法性的收获。

  • 1 信息角度。向量法对于特别短的文本效果是不好的,这时候熵太大了。所以不能用向量,而是要用类似词袋的方法。所以这是一个两极问题。
  • 2 层次。先模式识别,再模型处理。一个基本的总分结构是要有的。

3.3 开启强化学习(9-10月)

有了一个完整的开始,也完成了一些入门级实验。

  • 1 强化学习的基本概念。
  • 2 QLearning的再次剖析,后续打算以这个为抓手重新切入。

3.4 语义向量的使用(8-11)

这也算是炒冷饭吧,好歹也用上了。效果如预期,不错。

3+个应用点,都是用向量去重。

诶,就是这些。感觉自己都很丢脸,一点深度都没有。明年开始要改变了,期待在未来的4年内,算法再上一个台阶,量化为证。

我大致把算法分为以下几部分:

  • 1 判别算法。包含聚类和分类算法,主要的目的是将数据归为某类,并给出量化的度量。这模拟人类的基础判别逻辑,归纳和演绎。
  • 2 遗传算法。主要的目的是进行探索,找到更合适的解。与之相关的是线性规划,一种更简单的优化方法。
  • 3 推理算法。目前还不明确,但应该是以图为基础的算法。模拟人的链式推理。
  • 4 强化学习。主要目的也是进行探索,但与遗传算法不同,强化学习的目标是更泛化的通用目标,更接近人的学习方式。
  • 5 时间序列模型。特别强调在时间序列上的特征计算与判别,比较有代表性的是HMM的隐含序列。
  • 6 推荐算法。从时间和空间两个大的维度进行推荐。

一些比较明确的想法:

  • 1 LR、GBDT、XGBoost差不多是判别模型的代表。
  • 2 KMeans, DBScan是聚类的代表。
  • 3 图的聚类,或者说子图分割是一个重要的切入点。
  • 4 遗传算法+LR+矩阵计算可以产生很强大的应用,我称为MPLR(Matrix Parralel LR)
  • 5 QLearning可以视为是强化学习的LR。

4 量化

产生了一些新的想法,更新了认知,也有了新的工具准备。

认知1: 中国的股市完全不同于美国股市(但不意味着无价值,只是方法不同)
认识2: 投资债券可能是更好的方式
认知3: 简单技术路子是行不通的,虽然能比一般的固收高,但肯定不划算
认知4: 模式+模型是对的方式
认知5: 先实现成熟的策略,再进行变体,是对的方式

工具1:Numba。极大加速了数值型For循环的效率。
工具2:Pybroker。可以用来进行参照和对比。

我希望明年一月份可以完成V2版的第一次迭代,V1版要准备退出舞台了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2264745.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

圣诞快乐(h5 css js(圣诞树))

一,整体设计思路 圣诞树h5(简易) 1.页面布局与样式: 页面使用了全屏的黑色背景,中央显示圣诞树,树形由三层绿色的三角形组成,每一层的大小逐渐变小。树干是一个棕色的矩形,位于三角…

行业观察|西门子收购Altair:从多学科仿真到工业元宇宙

在当今数字化时代,工业领域正经历着深刻的变革。而CAE软件作为工业领域关键工具,在产品设计、验证和优化等环节发挥着越来越重要的作用。 11月,西门子宣布收购Altair的新闻屠版了整个朋友圈,无疑验证了CAE在制造业的核心地位。对A…

【Verilog】UDP用户原语

User-defined primitives 概述基本语法组合逻辑的UDP时序逻辑的UDPUDP 符号表 Verilog HDL(简称 Verilog )是一种硬件描述语言,用于数字电路的系统设计。可对算法级、门级、开关级等多种抽象设计层次进行建模。 Verilog 不仅定义了语法&…

计算机网络压缩版

计算机网络到现在零零散散也算过了三遍,一些协议大概了解,但总是模模糊糊的印象,现在把自己的整体认识总结一下,(本来想去起名叫《看这一篇就够了》,但是发现网上好的文章太多了,还是看这篇吧&a…

单元测试使用记录

什么是单元测试 简单来说就是对一个类中的方法进行测试,对输出的结果检查判断是否符合预期结果 但是在多年的工作中,从来没有哪个项目中真正系统的用到了单元测试,因此对它还是很陌生的,也就造成更加不会在项目中区使用它。 如何…

bridge between Lua world and the .NET

一、新建项目&#xff1a;luademo 安装包&#xff1a;<PackageReference Include"NLua" Version"1.7.3" /> using NLua; using System;namespace luademo {internal class Program{static void Main(string[] args){Lua state new Lua();for (int …

路径规划之启发式算法之二十三:免疫算法(Immune Algorithm,IA)

免疫算法(Immune Algorithm,IA)是基于人工免疫系统的理论,受生物免疫系统的启发而推出的一种新型的智能搜索算法。通过模拟生物免疫系统的工作原理来解决优化问题。 一、定义与原理 免疫算法是以人工免疫系统的理论为基础,实现了类似于生物免疫系统的抗原识别、细胞分化、…

2.5.1 文件管理基本概念

文章目录 文件文件系统文件分类 文件 文件&#xff1a;具有符号名&#xff0c;逻辑上有完整意义的一组相关信息的集合。 文件包含文件体、文件说明两部分。文件体存储文件的真实内容&#xff0c;文件说明存放操作系统管理文件所用的信息。 文件说明包含文件名、内部标识、类型、…

C#调用WebService的方法

一、前言 在日常工作中&#xff0c;如果涉及到与第三方进行接口对接&#xff0c;有的会使用WebService的方式&#xff0c;这篇文章主要讲解在.NET Framework中如何调用WebService。 1.创建WebService &#xff08;1&#xff09;新建项目——模板选择ASP.NET Web 应用程序 &a…

(免费源码)基于springboot的电影院订票系统设计与实现 计算机毕业设计 P10089

项目说明 本号所发布的项目均由我部署运行验证&#xff0c;可保证项目系统正常运行&#xff0c;以及提供完整源码。 如需要远程部署/定制/讲解系统&#xff0c;可以联系我。定制项目未经同意不会上传&#xff01; 项目源码获取方式放在文章末尾处 注&#xff1a;项目仅供学…

python 定时任务管理封装

主逻辑代码 # -*- coding: utf-8 -*- # import apscheduler import pandas as pd from datetime import datetime # 导入调度器&#xff0c;此处使用BackgroundScheduler阻塞调度器 from apscheduler.schedulers.background import BackgroundScheduler # 导入触发器&#xf…

国标GB28181协议平台Liveweb:搭建建筑工地无线视频联网监控系统方案

随着科技高速发展&#xff0c;视频信号经过数字压缩&#xff0c;通过互联网宽带或者移动4G网络传递&#xff0c;可实现远程视频监控功能。将这一功能运用于施工现场安全管理&#xff0c;势必会大大提高管理效率&#xff0c;提升监管层次。而这些&#xff0c;通过Liveweb监控系统…

C++----------函数的调用机制

栈帧的创建与销毁 栈帧创建过程 当一个函数被调用时&#xff0c;系统会在程序的栈空间中为该函数创建一个栈帧。首先&#xff0c;会将函数的返回地址&#xff08;即调用该函数的下一条指令的地址&#xff09;压入栈中&#xff0c;这确保函数执行完后能回到正确的位置继续执行后…

【Leetcode】855. 考场就座

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517; 在考场里&#xff0c;有 n n n 个座位排成一行&#xff0c;编号为 0 0 0 到 n − 1 n - 1 n−1。 当学生进入考场后&#xff0c;他必须坐在离最近的人最远的座位上。如果有多个…

Unity引擎学习总结------动画控件

左侧窗格可以在参数视图和图层视图之间切换。参数视图允许您创建、查看和编辑动画控制器参数。这些是您定义的变量&#xff0c;用作状态机的输入。要添加参数&#xff0c;请单击加号图标并从弹出菜单中选择参数类型。要删除参数&#xff0c;请在列表中选择该参数并按删除键&…

UE4_用户控件_1_滑块控制图像颜色的变化

祝愿大美兰陵越来越好&#xff0c;祝愿祖国繁荣昌盛&#xff0c;祝愿人民幸福安康&#xff01; 一、样式展示&#xff1a; 效果&#xff0c;当角色靠近物体&#xff08;只有一个胶囊碰撞体&#xff09;时显示用户控件&#xff0c;调整控件中的滑块值&#xff0c;可以改变UE4lo…

网络编程 02:IP 地址,IP 地址的作用、分类,通过 Java 实现 IP 地址的信息获取

一、概述 记录时间 [2024-12-18] 前置文章&#xff1a;网络编程 01&#xff1a;计算机网络概述&#xff0c;网络的作用&#xff0c;网络通信的要素&#xff0c;以及网络通信协议与分层模型 本文讲述网络编程相关知识——IP 地址&#xff0c;包括 IP 地址的作用、分类&#xff…

【pycharm】远程服务器之后如何打开终端

【pycharm】远程服务器之后如何打开终端 在pycharm中&#xff0c;我们通过远程连接服务器&#xff0c;此时如果我们需要在终端运行的话&#xff0c;并不能直接在本地终端运行&#xff0c;而是需要连接到服务器终端才能运行命令 设置如下&#xff1a; 输入服务器的ip、端口、…

C#+OpenCv深度学习开发(常用模型汇总)

在使用 OpenCvSharp 结合深度学习进行机器视觉开发时&#xff0c;有许多现成的模型可以使用。以下是一些常用的深度学习模型&#xff0c;适用于不同的机器视觉任务&#xff0c;包括物体检测、图像分类和分割等。 使用示例 在 OpenCvSharp 中加载和使用这些模型的基本示例&…

dolphinscheduler服务注册中心源码解析(三)RPC提供者服务整合注册中心注册服务实现源码

RPC提供者服务整合注册中心注册服务实现源码 1.概述2.源码解读思路3.实现2.1.应用服务的RPC服务接口定义2.1.1.MasterServer应用中提供的RPC接口服务2.1.2.WorkerServer应用中提供的RPC接口服务2.2.应用服务的RPC服务接口实现2.2.1.MasterServer应用中提供的RPC接口服务实现类2…