跳至主要內容
pptg

pptg

费大厨辣椒炒肉真是太好吃了!

ppNginx
nginx命令行工具 by Golang
youi
个人todo软件 by Flutter
ppMenu
个人Mac的便捷菜单栏 by Swift
ppBlog
个人主页
lookAtMe
悬浮提醒桌面小助手
pp宇宙
无聊画画
FuserLab(AI发布、评估、观测平台)

Why Fuser

为什么在开源方案漫天飞的情况下选择自己做

  1. 开源项目没有绝对银弹,像 25 年比较火爆的 Dify、Coze,到了 26 年已经是智能体的天下了,热度明显降低
  2. AI Coding 崛起,产研成本大幅降低,想法落地的时间大幅缩减

Fuser 本身的意思是融合,即融合市面上的解决方案,取其精华。

背景

我是 25 年中,因为部门专门做 AI 的大姐姐走了,也算是临危受命,把我从集团抽回来负责 AI 相关的工作。


pptg大约 8 分钟
LLM推理-PD分离

为什么要做PD分离?

大模型推理过程,可以分为两个阶段,预填充阶段(prefill stage)解码阶段(decode stage)预填充阶段是计算密集型解码阶段为内存密集型两个阶段分别具有不同的推理特性。 如果把两个阶段放在同一个计算设备上,会导致两阶段优化目标SLOs冲突,而且耦合了两个阶段的部署策略。

如果不做PD分离的话,因为Prefill的推理时间更长,所以会导致同一批次进行的Decode任务延迟很大(必需等待Prefill完成)。


pptg大约 3 分钟
LLM推理过程

最近真是高产,其实这些东西也断断续续的学了很久了

直到最近一周,才有一种连点成线的感觉

LLM推理过程

先看上面古诗接龙的例子,LLM其实就是一轮一轮的猜下一个词

Tokenize: 把文本切分为token序列

经过这一步之后,文本将被拆分为token序列,用于后续的向量查找

文本在预处理阶段,经过tokenize(分词)和embedding(嵌入),转为机器可以理解、计算的向量:


pptg大约 3 分钟
vLLM核心机制

vLLM是加州伯克利开源的LLM推理框架,核心目标是最大化推理吞吐量、降低延迟, 其核心优化机制为: PagedAttentionPrefix CacheContinuous Batching

1. PagedAttention: 分页注意力

在Transformer解码时,每个token的生成,都需要和之前所有token的KV做注意力计算,如果不缓存,每次都需要重新计算整个序列,效率极低。KV Cache通过存储所有历史token的键值对,实现了空间换时间,最终复杂度从降低到了


pptg大约 5 分钟
Transformer

2017 年提出的 Transformer 完全摒弃了 RNN,仅依靠注意力机制来实现Seq2Seq,成为当前主流(如 BERT、GPT 等模型的基础)

序列到序列(Seq2Seq)

Seq2Seq(Sequence-to-Sequence,序列到序列)是一种深度学习模型架构,主要用于将一个输入序列转换为另一个输出序列。它最初被广泛应用于机器翻译任务(例如将英文句子翻译成中文)。主要由两个部分组成:

  • 编码器(Encoder)
    • 接收输入序列(如文本向量)
    • 使用神经网络,将输入序列转换为语义信息,生成固定长度的上下文向量(context vector)
  • 解码器(Decoder)
    • 以解码器生成的上下文向量作为初始状态
    • 逐步预测下一个输出元素

pptg大约 3 分钟
25年度 One One

25年的工作结束了,最近进行了年度述职,也争取到了和大领导一对一述职的机会。跟领导讨论了一些AI、业务和个人成长方面的问题。

这一年我给自己的述职标题是:拓宽边界,回归本质。 25年的经历实在是太丰富了,上半年还在做产品经理,下半年摇身一变就成了AI研发。再后来开始慢慢的牵头整个大部门的AI技术。 回想起来我来这家公司的第一个岗位还是安卓研发呢.

成长 & 反思


pptg大约 1 分钟
词向量的演进过程

在NLP任务中,文本是没有办法直接参与数学计算的,因此首先要考将文本转换为数字,也就是文本向量。

分词器: 文本的拆分方法

分词器的目的是将连续的文本序列切分成有意义的、可供模型处理的基本单元(Token)。 这个“基本单元”的定义,随着计算能力、数据规模和任务需求的变化而演变。 其发展主线是:从追求人类可理解的“词”,转向追求模型高效处理的“子词”

基于规则(字典)的分词

  • 原理:维护一个词典。分词时,采用匹配策略在文本中查找最长能匹配的字符串。
  • 经典算法
    • 正向/反向/双向最大匹配法:从左到右(或从右到左)扫描句子,每次尝试匹配当前位置开始的最长词典词。
    • 例子:句子“我爱北京天安门”。
      • 词典包含 {“我”, “爱”, “北京”, “天安门”, “天安”}。
      • 正向最大匹配结果为 “我 / 爱 / 北京 / 天安门”(而不是“天安 / 门”)。
  • 优点:简单、快速、对于词典内的词准确率高。
  • 缺点
    • 未登录词(OOV)问题:无法识别词典外的新闻、专名、网络用语等。
    • 歧义切分问题:如“羽毛球拍卖完了”,可切为“羽毛/球拍/卖完/了”或“羽毛球/拍卖/完/了”。
    • 依赖高质量词典:不同领域需要定制词典,维护成本高。

pptg大约 9 分钟
动手学深度学习

跟沐神学 吼吼吼,上学不跟沐神好好学,上班之后来换债了

原文里的conda,这里会换成uv,如果遇到问题再说吧,uv实在是太快了

1. 深度学习基础

1.1 环境安装

这里推荐是用GPU,我用的MAC,所以先用CPU顶一下,后面遇到需要GPU的地方再去租云GPU吧

# 新建项目
mkdir ml_learn
cd ml_learn

# uv初始化
uv init

# 添加环境
uv add jupyter
uv add torch
uv add pandas
uv add matplotlib
uv add d2l
uv add torchvision


# 下载D2L
curl https://zh-v2.d2l.ai/d2l-zh-2.0.0.zip -o d2l-zh.zip
unzip d2l-zh.zip && rm d2l-zh.zip

pptg大约 3 分钟
进程管理

1. 进程和线程

1.1 进程

代码经过编译后,会生成可执行文件。当执行这个可执行文件时,它会被加载到内存中,接着CPU会执行程序中的指令。这个运行中的程序,就称之为进程(Process)

在一个进程运行过程中,难免会去读磁盘、网络的IO,这个时间相对是比较长的。此时,CPU 不需要阻塞等待数据的返回,而是去执行另外的进程。当硬盘数据返回时,CPU 会收到个中断,于是 CPU 再继续运行这个进程。

1.1.1 进程的状态

进程不是一直运行的,一个进程至少具备五种基本状态,即创建状态、运行状态、就绪状态、阻塞状态、结束状态


pptg大约 6 分钟
大模型幻觉

1. 什么是大模型幻觉

大模型幻觉是指大型语言模型(LLMs)生成的内容与现实世界事实或用户输入不一致的现象。这种现象可以分为两大类:

  • 事实性幻觉:模型生成的内容与可验证的现实世界事实不一致。
  • 忠实性幻觉:模型生成的内容与用户的指令或上下文不一致。

2. 产生幻觉的原因

  • 训练数据问题
    • 数据质量低:数据中可能包含错误、噪声或矛盾信息,导致模型学习到不准确的模式
    • 数据覆盖不足:模型可能缺乏足够的上下文或领域知识, 导致在生成内容时出现不准确或不一致的情况
    • 数据时效性:模型无法回答最新事件的问题,因为训练数据可能已经过时
  • 模型架构问题
    • 架构缺陷:比如可能无法处理长距离的依赖关系
    • 训练目标不对齐:LLM的训练过程大多数是基于Next Token Prediction的方式进行预训练, 因此,它只能保证文本生成的流畅性,而无法辨别所遇到的信息是否真实或准确。
  • 推理问题:上下文质量差、不充分

pptg大约 1 分钟