跳至主要內容
pptg

pptg

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

ppNginx
nginx命令行工具 by Golang
youi
个人todo软件 by Flutter
ppMenu
个人Mac的便捷菜单栏 by Swift
ppBlog
个人主页
lookAtMe
悬浮提醒桌面小助手
pp宇宙
无聊画画
LLM推理过程

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

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

Tokenize: 把文本切分为token序列

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

  1. 加载tokenizer,格式如下(Base64编码):
X24= 1107
aWdo= 1108
IHRoYW4= 1109

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 分钟
python异步编程

1. 关键字 async、await

python中,asyncawait两个关键字用于定义异步操作。

  • async: 定义异步函数,表明该函数是协程,可以在其中使用await来等待其他异步操作完成。异步函数的执行不会阻塞事件循环,而是会立即返回一个协程对昂。
  • await: 用于在异步函数内等待其他协程执行完成/。遇到await时,事件循环会挂起当前的协程,并执行其它任务,直到协程完成后再恢复。

pptg大约 7 分钟
python 字典原理

1. Python字典

Python字典(dict)是一种可变容器模型,用于存储键值对(key-value)映射关系。它是Python中最重要、最常用的数据结构之一。

主要特性:

  • 无序性(Python 3.7+开始保持插入顺序)
  • 键必须是可哈希的不可变类型
  • 值可以是任意Python对象
  • 动态扩容,自动调整大小
  • 提供快速的查找、插入和删除操作

2. 实现原理

  • 计算哈希值:对键调用hash()函数得到哈希值
  • 计算索引:index = hash(key) & (mask),其中mask = table_size - 1
  • 处理冲突:使用开放定址法中的伪随机探测
  • 插入/查找:在计算的位置开始探测,直到找到空槽或匹配的键

pptg大约 3 分钟