我为什么在这里?

        我是Duke,是在IBM工作了十几年的“代码老鸟”一枚,进过很多项目,开发过很多产品,写过很多代码。 一直在琢磨着,得把我那些业余时间里的胡思乱想和瞎折腾给整理出来。 说不定能搞出一个特酷的的开源平台,或者是一个让人眼前一亮的神奇小软件, 再不济也能写写让人觉得有用的文章,拍拍让人眼前一黑的IT段子视频。 就算是个突发奇想吧,也得让它在我的世界里留下点儿痕迹,万一哪天就火了呢,对吧?哈哈!

        曾在微博的海洋里遨游,也在CSDN的技术浪潮中冲浪,如今也准备向头条、抖音、小红书和哔哩哔哩的热闹世界发起挑战。 但每次穿越这些五彩斑斓的社交平台,都感觉像个游牧民族,东奔西跑,却没有一个固定的家园。 能不能有个“宇宙中心”,把这些精彩瞬间、灵感火花、技术心得和生活点滴,全都一股脑儿地塞进去呢?

        最终,我决定回归Web时代的“初心”,搭建一个“个人”网站,把这些都装进这里。至于为啥我要给“个人”这俩字打上引号呢? 那是因为我给网站起了个还算炫酷的名字——Nextbool!看起来便不太像个人网站,但它确实是。 这里“next”象征着无限可能和未来探索,而“bool”则是对数字IT的热爱,以及生活中那些让人纠结不已的“是”与“否”的抉择。 对,就是这么有深度!

        以上文字通过大模型润色,写作风格按照指令(Prompt)生成, 点击这里试试这个Prompt

IT人的心声

A I
AI 领域的探索之旅

最早接触AI要从IBM Watson开始了. 很多年前年IBM发布了Watson 认知计算一系列产品, 那时候开始从Watson API了解AI是什么,如何使用它。还为此开发了一个基于 淘宝或者亚马逊产品评论的自然语言分析应用。(点《使用Watson API分析淘宝或亚马逊用户评论》可以参观下这个应用是个干啥的玩意)

之后开始学习机器学习,我学习的第一个机器学习模型是逻辑回归,显示翻阅资料和学习在线课程, 又去重新读了线性代数,还用Java写了一些向量矩阵运算函数,只因为我想尝试用Java做个小应用。 当然如果是现在,我会毫不犹豫的选择Python。最后,把学习的内容和做的小应用 ,写成几篇文章,发表到IBM Developer,也算是让这个学习更有价值了. 这些文章是 《使用线性回归预测水泥质量》《如何疾病预测中使用逻辑回归》等。

接下来是深度学习,开始学习神经网络以及Tensorflow开发工具。 最后将学习的内容和自己的体会内容结合,写了个比较长的 《Tensorflow 2.0 基础教程》, 不过惭愧,这个教程虽然按照自己的体会和理解写的文字,但总体结构还是以官方文章为基石的。

参与开发产品 IBM Machine Learning Accelerator, 顾名思义,它是针对深度学习训练和推理的加速系统。 使用Pytorch做了一些如卷积神经网络模型的事情, 更重要的是开始使用React这个UI利器,感觉比之前使用的AngularJS更强大, 这个项目之后,我一直使用React作为UI框架。

这期间还做了件我认为有意义的事情,就是参加IBM高校活动,作为校园大使加入教师队伍, 连续6年在全国几十所大学向学生介绍人工智能、机器学习、深度学习、TensorFlow和IBM的技术与产品。 为同学们讲授了人工智能课程,例如: 《解锁深度学习和TensorFlow实战》、 《开发认知计算应用程序》、 《使用IBM CPD疾病预测》、 《自动化建模预测客户购买》、 《从深度学习到大模型原理与应用实践》等。

然后参与了若干与AI、知识图谱和大模型有关的产品研发或项目实施。主要是做一些神经网络、CV,NLP、知识图谱应用、以及LLM相关的事情,如LLM模型部署、RAG,LlamaIndex等等吧。

关于 LLM RAG,搭建企业知识问答平台,安装ChatGLM-6b、LLama2、Mistral-7b等 大语言模型,然后结合向量知识库构建平台。最大的核心问题是回答的准确率,这是关键。如何解决呢,经过过一段 时期研究和探索,有了些想法,结合LlamaIndex, 以及数据蒸馏等方式,让AI系统更加懂问题,更加靠近答案。后面我会搭建一个在线演示,这个演示会连接LLM。

以上是我在AI领域一路的探索与实践,写的有点啰嗦。用LLM帮我归纳了要点:

  1. 最早通过IBM Watson了解AI,并开发了基于淘宝或亚马逊产品评论的自然语言分析应用。
  2. 学习了机器学习,特别是逻辑回归,并编写了相关文章发表在IBM Developer。
  3. 深入学习了深度学习,特别是神经网络和Tensorflow,并编写了《Tensorflow 2.0 基础教程》。
  4. 参与IBM Machine Learning Accelerator开发,使用Pytorch和React进行深度学习训练和UI开发。
  5. 连续6年作为IBM校园大使,在全国多所大学讲授人工智能、机器学习等课程。
  6. 参与与AI、知识图谱和大模型相关的产品研发或项目实施,包括神经网络、CV、NLP和LLM的应用。
  7. 专注于解决企业知识问答平台的准确率问题,通过LlamaIndex和数据蒸馏等方法提升AI系统的理解能力

Skill
技术之路

踏入IT这个行业开始,就从UI开始,那时候有个叫PaintShop的软件完的特遛, HTML、CSS和JavaScript代码在Windows记事本里也是疯狂的敲击。 开始的时候前后台代码都是在一起的,ASP和JSP, 在页面里面各种代码全部堆的和杂货铺一样。 ( Nextbool是JSP写的,因为它简单呀,对这个网站而言足矣)

然后开始前后端分离的方式开发系统,前端是指视图,后端是指控制器与模型,即经典的MVC架构。 开始使用Java,Struts2, Spring MVC这些东西。 在这期间在IBM技术部做了很多项目,技术服务嘛,就是用所能用的IT技术为客户带来价值。 软件+方法论+服务,应该是其核心。各个大客户现场实施咨询或者软件实施, 四大行、各省农信,移动,宝马东风,最大的锻炼就是快速理解客户需求, 快速响应设计和打造满足客户的软件或者POC。 后端Java,SQL,前端Web,各种方法论,甚至PM的活也必须要玩得转呀:)

数据库也是必须用的,从Access,到SQL Server、Oracle、DB2、My SQL, 写了一大堆SQL、触发器、存储过程,前几年最流行的就是这些,数据集市,数据仓库,ETL这些, 还使用水晶报表,IBM Cognos等做了一大堆可视化报表。

再接下来就是功能组件层面的独立模式,虽然使用jQuery也实现了Web和数据的分离, 但这次是从整体架构上实现了突破。微服务,Spring Boot,React,Vue这些技术, 使得微服务架构的设计和开发变得更容易。在这个阶段,我在IBM实验室参与了很多相关项目, 基于微服务架构,设计开发各种REST,IBM Liberty 和 Spring Boot都是很好的基础开发框架。 前台以React为主,其最大的特点是动态数据绑定,State驱动组件级的Render等强大特性, 所以现在我基本都用React,前台的整体设计和开发效率都有很大提升。如今基于React的Next.js 更加简化了开发的配置。

关于云K8S,从第一个基于K8S项目开始,到现在似乎每个项目都离不开Docker或K8S的话题。 无论开源软件,还是产品开发,都要考虑和设计容器,镜像,毕竟微服务于K8S是天然共生的, 微服务在K8S的Pod副本、自动扩容、滚动更新、部署、服务这些功能组件的管理加持下才能发挥最大价值。

参与过的项目

一路走来,做过很多项目或产品,这里简单总结几个

Illustration
IBM 数据和AI产品开发

期间参与了知识图谱搜索、数据治理,数据管理等软件开发。 使用如Watson Studio、SPSS Modeler设计开发常用 机器学习模型(决策树、回归、贝叶斯等)、AI自动生成最佳模型等。 也参与了数据治理流程,帮助某服装产业客户进行数据治理。 在相关项目中,实践数据科学家的工作流程, 以及使用Python完成数据分析、建模代码开发等。

Illustration
IBM Platform系列软件开发

参与前后端REST和UI开发、作业脚本、基于IBM Liberty和Java搭建REST服务和服务集成。 使用Java,Spring等开发后台服务。以及产品的K8S容器化, 基于Kubernetes将各个组件重新拆分设计,组织与定义Pod、Deployment、存储卷等, 集成Kubernetes的调度机制,升级优化原有的调度方法以适应在Kubernetes中灵活调度Spark作业。

Illustration
WMLA 深度学习平台

Watson Machine Learning Accelerator 为深度学习模型训练与管理监控系统。 设计开发REST微服务(基于Spring Boot)、深度学习模型工作节点Docker Image、 神经网络模型在K8S中的启动与监控收集日志结果、部分深度学习图像分类模型的适用性改造。 使用基本的自然语言和图像分类模型,如卷积神经网络、循环神经网络,YOLO等。

Illustration
银行ITSM监控与分析平台

根据企业IT管理方法论、最佳实践和数据分析软件,帮助多家银行设计数据流程,归类和分析数据、 发现当前存在的问题并且设计更加优化的流程和数据监控方法, 善于帮助用户通过数据分析和发现问题,如通过将数据转化为大量分析图趋势图等, 完成业务观测与报告。 数据期间使用Cognos,水晶报表、IBM相关软件、 以及现场开发基于Java和Web的数据分析和展示系统等来完成项目的实施。

Illustration
人工智能大学项目

参加IBM校园大使教师队伍,连续6年在全国几十所大学向学生介绍人工智能、 深度学习、TensorFlow和IBM WMLA等技术与产品。 为同学们讲授了一些人工智能等短课程,例如:
《解锁深度学习和TensorFlow实战》、
《开发认知计算应用程序》、
《使用IBM CPD疾病预测》、
《自动化建模预测客户购买》、
《从深度学习到大模型原理与应用实践》

Illustration
大模型和RAG项目

参与了几个企业的大模型项目。 开始在该项目中主要参与模型数据前期分析,数据导入模型、模型优化等工作, 实际在GPU节点部署如ChatGLM、Llama等开源大模型、接口开发、以及开发检索增强生成(如RAG)系统。 在后期的项目中,开始有针对性的研究了如何优化RAG的命中率和准确率的方法。 集成LlamaIndex,优化LlamaIndex的底层代码,以及数据蒸馏等手段提高了RAG的准确率。

Illustration
知识图谱应用开发

使用知识图谱建立客户数据图数据库,基于Java和ES存储和检索图数据, 实现精准的图数据查询。设计开发后端微服务,如图数据库接口,图数据增强索引, 消息队列、以及相关模块的微服务在Kubernetes上的创建。 后期开始使用LLM,AI的方式处理和建立知识图谱,开发基于大模型引擎的知识图谱系统。 这时期主要通过Python和集成开源软件来实现这些功能。

Illustration
AI类相关项目

使用机器学习或深度学习模型帮助客户,使用情感分类、商品评论分析、风险分析、 客户预测、物体识别等。如使用IBM Watson API分析了某商城客户对商品的评论信息, 包括语义、感情色彩、语气等、丰富了客户对商品的评价切入点; 如本地部署物体识别模型(如YOLU、Resnet等)连接摄像头捕捉画面, 并且优化Python代码使得识别速度更快。

Illustration
AI模型训练监控与部署

对模型的训练进行管理和监控,包括模型上传、训练、存储、训练输出监控, 训练模型验证等,以及模型的部署推理。 首先实现了模型与数据的快速集成,快速开始业务尝试,反馈新业务模型的结果。 其次,通过管理模型在TenserRT上的部署, 以及基于英伟达Triton Server的接口让模型的部署和管理更简单。 最后,将一切无缝集成,快速形成AI端到端的能力。