当前位置: 首页 > news >正文

tiktoken学习

1.tiktoken是OpenAI编写的进行高效分词操作的库文件。

2.操作过程:

enc = tiktoken.get_encoding("gpt2")
train_ids = enc.encode_ordinary(train_data)
val_ids = enc.encode_ordinary(val_data)

以这段代码为例,get_encoding是创建了一个Encoding对象,结构如下:

{"name": "gpt2",    #Encoding的名称"pat_str": r"""'s|'t|'re|'ve|'m|'ll|'d| ?\p{L}+| ?\p{N}+| ?[^\s\p{L}\p{N}]+|\s+(?!\S)|\s+""",  #分词正则表达式"mergeable_ranks": {b"!": 0, b"\"": 1, ...},  # 50,000+ 条目  #存储预加载的分词表"special_tokens": {"<|endoftext|>": 50256},   #特殊分词"explicit_n_vocab": 50257  #增加的特殊分词
}

encode_ordinary是利用BPE合并来对输入的train_data进行编码。

BPE合并:利用预加载的mergeable_ranks字典,通过最大前缀匹配查找最大字词映射对train_data编码。

while current_byte in mergeable_ranks:find next byte that forms existing tokenmerge if found in ranks

3.为什么说tiktoken高效?

使用高性能语言Rust实现

避免Python解释器开销;直接操作字节数组,避免Python对象的创建开销;并行处理。

基于Trie树的高效查找

struct TrieNode {children: HashMap<u8, TrieNode>,token_id: Option<u32>,  // 匹配成功时返回 token ID
}

优化:Aho-Corasick 自动机,可以通过增加失败指针fail来避免每次失败从头遍历。就相当于这条路走不通,但是不会从头走,而是会走附近的分岔路看看有没有可以走的。

BPE合并的增量处理

fn encode_bytes(bytes: &[u8], trie: &Trie) -> Vec<u32> {let mut tokens = Vec::new();let mut start = 0;while start < bytes.len() {let (end, token_id) = trie.longest_match(&bytes[start..]);tokens.push(token_id);start += end;}tokens
}

单次遍历:在扫描过程中同时完成匹配和合并

贪心最长匹配:总是选择可能的最长token

预加载mergeable_ranks

不需要实时建立,提高效率

相关文章:

  • 【通关文件操作(下)】--文件的顺序读写(续),sprintf和sscanf函数,文件的随机读写,文件缓冲区,更新文件
  • 第4讲、Odoo 18 模块系统源码全解与架构深度剖析【modules】
  • Parsel深度解析:从入门到高阶的网页数据抓取艺术
  • Spring Boot整活指南:从Helo World到“真香”定律
  • KeePass安装与KeePass设置中文教程
  • 自扶正救生艇,乘风破浪,守护生命
  • 差分互连的串扰-信号与电源完整性
  • Linux---系统守护systemd(System Daemon)
  • IAR无法跳转定义,IARstm8跳转显示路径出错,系统库文件文件名后有[RO]
  • SOC-ESP32S3部分:17-I2C驱动实例-EEPROM温湿度传感器
  • Java开发经验——阿里巴巴编码规范实践解析6
  • Rust使用Cargo构建项目
  • 常见的分词算法
  • SAP BASIS常用事务代码ST06 操作系统监控
  • @ModelAttribute、@RequestBody、@RequestParam、@PathVariable 注解对比
  • VUE3+ts 实践记录
  • 【AI面试秘籍】| 第24期:Transformers / LLM的词表应该选多大?
  • 从本地到云端:Code App+SSH协议在iPad开发中的性能优化实战
  • pyinstaller 使用 控制台闪退解决办法
  • 文本预处理
  • 专业做传奇网站解析/个人如何做seo推广
  • 网站源码授权/网络推广专员岗位职责
  • wordpress工具栏条/最好的关键词排名优化软件
  • 建设企业网站多少钱/有实力的网站排名优化软件
  • 高质量的南京网站建设/seo学习
  • 怎么制作微信小程序商城/北京seo优化wyhseo