关于新闻管理的网站建设报告wordpress怎么用二级域名
关于新闻管理的网站建设报告,wordpress怎么用二级域名,网络营销方案分析整理,微信开放平台创建小程序本文详细解析了大语言模型(LLM)中的token概念和BPE(字节对编码)技术#xff0c;重点介绍了在C#中实现的高效LumTokenizer项目。通过对比SharpToken和TiktokenSharp库#xff0c;展示了LumTokenizer在处理中文、英文和混合文本时的优越性能。文章还详细讲解了Tokenizer的架构设…本文详细解析了大语言模型(LLM)中的token概念和BPE(字节对编码)技术重点介绍了在C#中实现的高效LumTokenizer项目。通过对比SharpToken和TiktokenSharp库展示了LumTokenizer在处理中文、英文和混合文本时的优越性能。文章还详细讲解了Tokenizer的架构设计、特殊token处理、缓存机制等关键技术并提供了完善的单元测试。项目已开源为C#开发者进入LLM领域提供了实用工具和参考。一、前言: token是什么LLM只做一个事情就是吃掉token吐出tokentoken是LLM大语言模型的基本元素。token与LLM的关系相当于乐高积木与乐高工厂我的世界方块与我的世界游戏。那么token到底是什么呢有人翻译成令牌有人翻译成词源。我们不妨换个概念理解token就是最小操作、最小信息单元的意思。这个最小是相对于LLM要处理的原始文本来说的。举个栗子当一个句子文本输入到电脑中天然就就具有字符级别的切分。如果不打算继续拆分或组合我们可以通过一个映射关系将现有这些字符转换为整数数组称为编码过程。编码后数组内的元素就是token元素取值就等于token取值。LLM可以吃掉这个token数组并吐出新数组。对这个新数组按前前述的映射进行逆转换称为解码过程。解码后我们就能得到人类可以理解的文本了。// 原句子 我有一个 apple. // 句子拆分 [我,有,一,个, ,a,p,p,l,e,.,\0] // 编码为整数数组 [1,2,3,4,5,6,7,7,8,9,10,11]从实际应用看主流LLM几乎不用纯字符级级别切分而是为了更好效果使用BPE/WordPiece/SentencePiece等子词sub-word算法。此时hello大概率是1个或2个token而不是5个。对于中文来说“我有一个” 可能切成了 “我/有/一/个”也可能是我有/一个取决于词表。在字词算法中单个token拎出来会存在不可解释性因为是打散的词根。但是无论怎么处理LLM传入传出的都是一个整数数组数组元素的数量就是token数量也是LLM服务的计费标准。再从实际应用看主流LLM几乎都采用BPE或BBPE方式进行Tokenizer。我们接下来继续了解BPE。二、BPE(字节对编码)字节对编码 是一种简单的数据压缩形式这种方法用数据中不存的一个字节表示最常出现的连续字节数据。这样的替换需要重建全部原始数据。编码过程如下// wiki的BPE案例 aaabdaaabac: aaZ //“aa”出现次数最多用中没有出现的“Z”替换 ZabdZabac: aaZ, ZaY //同上更新替换表 YbdYbac: aaZ, ZaY, YbX //同上更新替换表 XdXac:aaZ, ZaY, YbX // 无可用替换我们将aaabdaaabac通过BPE方式编码成了XdXac。解码时只需要对附带的 替换表(“aa”“Z”, “Za”“Y”, “Yb”“X”)按顺序逆向操作就能得到原信息。BPE 用“比字符大、比单词小”的子词当积木之所以能流行主要是因为其编码后的token数量适中处于单字符切分全词切分之间。相对与全词切分BPE是子词切分不仅可以控制上限避免词库膨胀还能最小可退到字节/字符最大可保留整词粒度随频率动态伸缩。就算遇见新的词组也无所谓不存在未登录词的问题。而且一套算法与英语、阿拉伯语语言无关都是一套处理方式。还具有词表可读性好在一定效果下计算成本低等特点。三、BPE Tokenizer一个BPE Tokenizer主要功能可分为1.训练处理得到词表2.编解码。词表的训练上面已经做了示意接下来我们主要针对编解码部分。训练好的BPE的数据主要包括三个部分vocab.json符号 → id 的字典merges.txt按合并顺序排列的“信息对”tokenizer_config.json预处理规则(regex文本)、特殊标记。另外常见的还有tokenizer.json文件他是Hugging Face 生态把“原本分散的三份文件”压进一个JSON文件。典型的结构如下在不同版本中merges可能会有字符串和数组两种对象存储方式解析时候需要注意// cl100k_base { version: 1.0, truncation: null, padding: null, added_tokens: [ //特殊token { id: 100257, content: |endoftext|, single_word: false, lstrip: false, rstrip: false, normalized: false, special: true } ], normalizer: null, pre_tokenizer: { // 有的有有的没有因此regex需要预先硬编码 type: Sequence, pretokenizers: [ { type: Split, // 预处理分割“防呆尺” pattern: { Regex: (?i:s|t|re|ve|m|ll|d)|[^\\r\\n\\p{L}\\p{N}]?\\p{L}|\\p{N}{1,3}| ?[^\\s\\p{L}\\p{N}][\\r\\n]*|\\s*[\\r\\n]|\\s(?!\\S)|\\s }, behavior: Removed, //一般默认写死命中正则的片段保留没命中的扔掉与invert 配合。 invert: true //一般默认写死把“命中/没命中”反转——最终只保留上面正则抓到的那些片段其余全部丢弃。 }, { type: ByteLevel, add_prefix_space: false, trim_offsets: true, use_regex: false } ] }, post_processor: null, decoder: { type: ByteLevel, add_prefix_space: true, trim_offsets: true, use_regex: true }, model: { type: BPE, dropout: null, unk_token: null, continuing_subword_prefix: , end_of_word_suffix: , fuse_unk: false, byte_fallback: false, vocab: { !: 0, |endofprompt|: 100276 }, merges: [ ĠCon veyor // 或 [Ġp,ain] ] } }通过读取预先的数据BPE Tokenizer就可以用了其核心的功能就是编码和解码即Encode和Decode。四、Tokenizer的C# 实现在python中可以直接用AutoTokenizer载入本地权重。在C# 中我们可以拉取SharpToken (2.0.4)和 TiktokenSharp(1.2.0)计算Token。但是如果我们要自己在C# 开发LLM尽管很少有人这么干一个好的Tokenizer就很重要了需要更多自定义的功能如支持huggingFac的tokenizer.json数据并灵活的处理special token充分优化。于是就有了LumTokenizer这个项目。主要功能实现如下读取tokenizer.json数据如果没有regex内置了3种pretoken的regexRegex50KBase≈GPT-2 的 5 万级别基础词表RegexCl100KBase≈OpenAI CLIP / GPT-3.5 / GPT-4 使用的 10 万级别 CL-100K 词表RegexO200KBase≈Meta LLaMA、Mistral 等开源模型偏好的 20 万级别 O-200K 词表高效的特殊token切分如果是模型训练用tokenizer需要单独高效处理特殊token。因为特殊token的目的是正文出现越少越好因此一般不会出现在词表中需要通过单独切分的机制进行识别和切分高效的缓存机制LumTokenizer 在分词阶段定制了一套SpanDictionary, 为了实现高效的切片搜索也就是说一个stirng可以基于NET的Span特性切成多个Slice而SpanDictionary可以直接基于Span执行Key的匹配Span无法作为传统Dictionary的泛型极大节省了子串string转换的开销。Benchmark测试如下在含有中文这种多字节字符的长文500字符左右处理时具有很好的性能。MethodtextMeanRatioGen0AllocatedSharpToken_cl100k_baseChinese122.99 us5.710.73249.1 KBTiktokenSharp_cl100k_baseChinese96.00 us4.450.48836.34 KBLumTokenizer_cl100k_baseChinese21.56 us1.000.61047.63 KBSharpToken_cl100k_baseEnglish26.77 us1.020.67148.38 KBTiktokenSharp_cl100k_baseEnglish20.21 us0.770.42725.51 KBLumTokenizer_cl100k_baseEnglish26.13 us1.000.915511.31 KBSharpToken_cl100k_baseMixed90.97 us3.780.854510.9 KBTiktokenSharp_cl100k_baseMixed63.85 us2.650.48836.74 KBLumTokenizer_cl100k_baseMixed24.08 us1.000.70198.83 KB具体可以去仓库看Benchmark代码。五、单元测试现在单元测试可以说是越来越重要了因为只有具有了完善的单元测试才能放心的让ai去优化修改已有代码。本文这个BPE Tokenizer项目单元测试分了5类。P0_BasicTest基础测试测试编解码数据读取词表完善性等主要功能P1_RobustnessTests鲁棒性测试针对边缘条件如仅空字符、仅特殊字符、超长文本、越界id等情况P2_VocabBpeTests编解码准确性要求正确的对原文进行分割并准确编码通过几种特定情况下的案例进行兜底。P3_ChineseSubwordTests中文字符测试其中也包含了token压缩率的检验。主要是考虑在代码编写过程中可能导致部分尾字节或特殊混编情况下不能准确字节合并的bug。P4_EnglishSubwordTests英文字符测试目的同上部分bug出现时尽管decode正常但encode编码也可能未达到预期忽略了某些合并环节导致压缩率过高。六、最后LumTokenizer这个项目现在版本是1.0.6.1整体效果较好很快速稳定现在自己训练模型就在用它尽管目前某些常用习惯写死了但大家需要的可自行适配和扩展。MiniGPT和MiniMind都是很好的LLM学习入门python项目但C#基本没有。Tokenier是C#开发LLM的重要环节奈何.Net生态还是差很多资料也少现在AI生成的内容都千篇一律很多现有库更新的又很慢。真要用C#来干LLM真是难上加难估计也没人这么干。如果您觉得有收获的话请多多支持本系列。再次感谢您的阅读本案例及更加完整丰富的机器学习模型案例的代码已全部开源新朋友们可以关注公众号回复Tokenizer查看仓库地址获取全部完整代码实现。如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限很多互联网行业朋友无法获得正确的资料得到学习提升故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…学习是一个过程只要学习就会有挑战。天道酬勤你越努力就会成为越优秀的自己。如果你能在15天内完成所有的任务那你堪称天才。然而如果你能完成 60-70% 的内容你就已经开始具备成为一名大模型 AI 的正确特征了。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】