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

网站备案要如何取消专业网站建设公司怎么做

网站备案要如何取消,专业网站建设公司怎么做,打开建设银行网站,前端开发做网站吗前面我们已经通过三篇文章#xff0c;详细介绍了 Qwen2.5 大语言模型在 Transformers 框架中的技术细节#xff0c;包括包和对象加载、模型初始化和分词器技术细节#xff1a; 深入解析 Transformers 框架#xff08;一#xff09;#xff1a;包和对象加载中的设计巧思与…前面我们已经通过三篇文章详细介绍了 Qwen2.5 大语言模型在 Transformers 框架中的技术细节包括包和对象加载、模型初始化和分词器技术细节 深入解析 Transformers 框架一包和对象加载中的设计巧思与实用技巧深入解析 Transformers 框架二AutoModel 初始化及 Qwen2.5 模型加载全流程深入解析 Transformers 框架三Qwen2.5 大模型的 AutoTokenizer 技术细节 在第 3 篇文章中我们简要介绍了 Qwen2.5 使用的 Byte Pair Encoding (BPE) 分词算法并用英文序列 “Hello World.” 举例说明了分词过程。然而这只是 BPE 分词的一部分内容。今天我们将继续深入探讨 Qwen2.5 的分词流程重点介绍 Qwen2.5 如何处理中英文混合的文本序列并解析 BPE 分词算法的具体实现。 一、中英文分词示例与初步分析 为深入理解 Qwen2.5 的分词过程我们以一段中英文混合的文本序列“Transformers分词台风又双叒叕来了”为例进行剖析。以下是相关的代码示例 import osfrom transformers import AutoTokenizer# 初始化分词器从本地文件加载模型 model_dir os.path.join(D:, os.path.sep, ModelSpace, Qwen2.5, Qwen2.5-1.5B-Instruct) tokenizer AutoTokenizer.from_pretrained(model_dir,local_files_onlyTrue, )text Transformers分词台风又双叒叕来了 tokens tokenizer.tokenize(text)print(tokens)# 输出[Transform, ers, åĪĨ, è¯į, ï¼ļ, åı°é£İ, åıĪ, åıĮ, åı, Ĵ, åıķ, æĿ¥äºĨ, ï¼ģ]ids tokenizer.convert_tokens_to_ids(tokens)print(ids)# 输出[8963, 388, 17177, 99689, 5122, 108118, 99518, 99493, 5758, 240, 122378, 101161, 6313]我们先看看tokenizer.convert_tokens_to_ids()方法它的实现比较简单就是从词表中获取Token对应的ID而词表其实就是一个字典即vocab.json文件内容每个 Token 都对应一个数字即 Token ID。 如下随便挑选了上面结果几个 Token在vocab.json文件中都可以找到他们的对应关系 Transform: 8963, åıķ: 122378, æĿ¥äºĨ: 101161,第 1 个问题为什么英文序列分词之后仍可以明确地识别出来而中文分词之后看起来像是乱码呢 实际上这并非真正的乱码而是字节 Byte 的 Unicode 字符表示。这也揭示了 BPE 算法的核心特性——基于 Byte 字节进行分词。无论是英文、中文还是其他任何语言的字符序列在计算机的存储与计算体系中均以字节为基本单元进行处理。这一特性使得 BPE 算法具备了天然的通用性能够跨越不同语言的界限为大语言模型的多语言处理能力奠定了坚实基础。 二、Tokenize 分词流程详解 接下来我们重点聚焦于tokenizer.tokenize()方法深入探究其如何实现分词操作其中 BPE 算法的具体实现过程尤为关键。通过对 Transformers 框架源代码的逐步解读可以将其分词流程分解为以下几个关键步骤 执行PreTrainedTokenizer.tokenize()父类方法在这一初始步骤中借助 Python 内置的unicodedata.normalize()函数对输入的文本序列进行规范化处理。其主要目的在于消除因字符编码差异可能引发的后续处理问题确保文本序列在字符编码层面的一致性与规范性。在当前示例中由于输入的文本序列本身已经是规范化的文本因此该步骤直接返回原文本序列未进行实质性的修改操作。 处理特殊 Token特殊 Token 在分词过程中具有特殊的处理方式它们将直接作为分词结果的一部分被返回无需经过复杂的分词逻辑处理。 执行Qwen2Tokenizer._tokenize()方法这一步骤构成了分词的核心逻辑部分其中 BPE 算法将被实际应用于文本序列的分词操作。从该方法的注释Copied from transformers.models.gpt2.tokenization_gpt2.GPT2Tokenizer._tokenize 可以清晰地看出Qwen2.5 的分词逻辑实现是复制GPT2的实现代码。 第一行代码re.findall(self.pat, text) 通过正则表达式对文本序列进行初步分割(?i:s|t|re|ve|m|ll|d)|[^\r\n\p{L}\p{N}]?\p{L}|\p{N}| ?[^\s\p{L}\p{N}][\r\n]*|\s*[\r\n]|\s(?!\S)|\s该正则表达式从基础语法层面进行初步分割包括英文缩写词、字母数字、空白符和换行符等。 如对于我们的输入序列Transformers分词台风又双叒叕来了会被分割成[Transformers分词, 台风又双叒叕来了, ]三个文本片段。 第二行代码token .join(self.byte_encoder[b] for b in token.encode(utf-8)) 对正则表达式分割的文本片段进行处理 首先通过token.encode(utf-8)方法编码为 UTF-8 格式的字节序列对于 ASCII 字符0-127字符UTF-8 编码与其相同这也是为什么分词结果英文单词我们可以明确识别出来而对于中文等非 ASCII 字符128 及以上UTF-8 会编码使用 2 到 4 个字节如果 BPE 按照字节分词的话一个汉字会被拆分几个部分因此看起来就像是乱码了。如Transformers分词字节序列的 16 进展表示为Transformers\xe5\x88\x86\xe8\xaf\x8d。 然后通过self.byte_encoder[b]字典映射成字符然后把每个 Byte 的字符表示拼接起来。 那么self.byte_encoder字典又是如何实现的呢 寥寥几行代码Qwen2.5 继续复制GPT2的实现代码 对于!到~、¡到¬和®到ÿ这些可见字符字典键就是这些字符值为对应的 Byte 值。 对于其他的非可见字符空白和控制字符字典键为256序号值为对应的 Byte 值。 第 2 个问题为什么可见字符和非可见字符需要分开处理其实原因也比较好理解因为 BPE 代码无法处理的空白和控制字符所以需要特殊处理。 因此第 2 行代码的结果是通过正则表达式初步分割的序列片段把他们的每个字节按照其对应的 Unicode 字符拼接起来了这也是为什么最终结果看起来像乱码的原因了。 第三行代码bpe_tokens.extend(bpe_token for bpe_token in self.bpe(token).split( )) 对于 Unicode 字符串执行 BPE 算法进行分词操作。 BPE 分词算法的核心逻辑都在这个方法里面下面老牛同学进行详细介绍 三、BPE 分词算法核心逻辑解析 bpe()方法作为 BPE 分词算法的核心枢纽其代码实现主要借鉴了 GPT2 的相关代码 在深入探讨其核心代码之前有必要对 BPE 算法的基本思想进行简要回顾可参考本系列文章的第三篇深入解析 Transformers 框架三Qwen2.5 大模型的 AutoTokenizer 技术细节。 首先算法会检查缓存中是否已经存在当前 Unicode 字符串的分词结果。若缓存命中则直接返回缓存中的分词后的 Token 列表从而避免重复计算提高分词效率。 若缓存未命中则进入以下核心逻辑处理流程 第 1 行代码word tuple(token)将输入的 Unicode 字符串拆分为单个 Unicode 字符的元组形式。这一操作将原始字符串打散为最基本的Unicode字符单元为后续基于字符对的合并操作奠定了基础。 第 2 行代码pairs get_pairs(word)该方法同样源自 GPT2 的代码实现其功能是获取给定 Unicode 字符串中所有可能的字符对组合。例如对于“ABCD”这样的 Unicode 字符串其返回的结果将是[(A,B),(B,C),(C,D)]即包含了字符串中相邻两个字符组成的所有字符对。 第 3 行代码bigram min(pairs, keylambda pair: self.bpe_ranks.get(pair, float(inf))) 对于pairsUnicode字符对集合中的每个元素取bpe_ranks的最小值如果不存在则返回float(inf)无限大值。 那么self.bpe_ranks又是什么呢它也是一个字典它的键是merges.txt文件内容去掉第 1 行版本号行后的每一行内容值就是对应的行号。 也就是说bigram的内容是pairs中的所有的 Unicode 字符对从merges.txt匹配到的最先出现的行号即最小值。 第 3 个问题为什么首先合并的 Unicode 字符对要取merges.txt文件中最小行号的字符对 这需要我们理解merges.txt文件中存储的是什么内容它存储的就是 GPT2/Qwen2.5 等大语言模型在预训练时使用 BPE 算法进行分词时 Unicode 字符对的合并顺序。最小行号意味着最先合并的 Unicode 字符对也意味着出现频次最高的字符对。在我们推理时保持同样的合并顺序就可以保证合并结果和预训练时一致同样保证了词表中有我们合并的Token BPE 算法在while True:循环中持续进行字符对的合并操作若在当前循环中成功合并了字符对则将原有的单个 Unicode 字符对从待处理列表中移除并将合并后的结果添加到待合并 Unicode 字符列表中。例如对于初始字符列表[T,r,a,n,s,f,o,r,m,e,r,s]最小行号 Unicode 字符对是(e,r)则在本次循环中会将“er”进行合并下一轮循环时word的内容将更新为[T,r,a,n,s,f,o,r,m,er,s]。循环将持续进行直到无法再找到可合并的字符对或者所有字符对在merges.txt中均无法匹配到有效行号即bigramfloat(inf)时循环终止此时word中的内容即为最终的 Token 列表代表了经过 BPE 算法分词后的结果。 至此Qwen2.5 分词流程和 BPE 分词算法实现逻辑基本完成下面进行简单总结。 总结Qwen2.5 分词流程与 BPE 算法要点 Qwen2.5 的分词流程可以概括为以下几个关键步骤 规范化预处理对输入的文本序列运用规范化处理手段消除因字符编码差异可能带来的干扰因素确保文本序列在进入分词流程前的一致性与规范性。 正则表达式初步分割借助精心设计的正则表达式依据常见的语义和语法规则将文本序列初步分割为多个片段序列为后续的精细化分词操作提供基础框架。 BPE 算法分词针对每个片段序列运用 BPE 算法进行深度分词处理将片段序列进一步分解为 Token 列表从而完成整个文本序列的分词任务。 BPE 分词算法的核心要点包括 文本序列转换将输入的文本序列通过 UTF-8 编码转换为 Byte 字节序列再将每个字节映射为 Unicode 字符实现文本序列在字符表示层面的转换为基于字节的分词操作提供基础数据格式。 预训练阶段字符对合并与记录在 Qwen2.5/GPT2 等大模型的预训练阶段对语料中的 Unicode 字符进行逐对分析与合并操作。按照字符对在语料中出现的频次高低逐步合并出现频次最高的 Unicode 字符对并将每次合并的字符对信息逐行记录到“merges.txt”文件中形成预训练阶段的字符对合并顺序知识库。 推理阶段字符对匹配与合并在模型推理阶段将每个 Unicode 字符转换为字符对形式然后依据“merges.txt”文件中的合并顺序信息每次仅合并最小行号即最先合并的字符对持续进行合并操作直至无法再进行合并为止。最终得到的合并结果即为分词后的 Token 列表完成对输入文本序列的分词任务并确保推理阶段的分词结果与预训练阶段保持高度一致从而为大语言模型在多语言文本处理中的准确性与稳定性提供有力保障。 往期推荐文章 基于 Qwen2.5-Coder 模型和 CrewAI 多智能体框架实现智能编程系统的实战教程 vLLM CPU 和 GPU 模式署和推理 Qwen2 等大语言模型详细教程 基于 Qwen2/Lllama3 等大模型部署团队私有化 RAG 知识库系统的详细教程DockerAnythingLLM 使用 Llama3/Qwen2 等开源大模型部署团队私有化 Code Copilot 和使用教程 基于 Qwen2 大模型微调技术详细教程LoRA 参数高效微调和 SwanLab 可视化监控 ChatTTS 长音频合成和本地部署 2 种方式让你的“儿童绘本”发声的实战教程
http://www.dnsts.com.cn/news/159594.html

相关文章:

  • 城乡建设部网站房产查询网站开发代码无中文
  • 光谷企业网站建设微信开发人
  • 设计好的免费网站建设搜索引擎优化教程
  • icp备案的网站名称成都建设网官方网站
  • 一级做a免费观看视频网站如何优化搜索引擎
  • 贵州网站建设营销公司如何建立属于自己的网站
  • 东莞免费网站建站模板淘宝 网站建设
  • 检测网站开发长春seo排名
  • 做影视网站犯法吗广州品牌网站设计开发
  • 甘肃省建设厅网站首页绿色建筑网站在百度上搜不到
  • 饶阳营销型网站建设费用怎么给企业做网站
  • 优化网站排名怎么样团购网站自个做
  • 汽车技术资料网站建设互助平台网站建设
  • 公司做网站注意什么网络营销课程介绍
  • 网站开发维护人员wordpress 地图html
  • 广州响应式网站咨询建站公司网站 phpwind
  • 个人网站怎样申请icp网站建设以及推广销售客户怎么找
  • 美食网站设计规划书徐州 商城网站设计
  • 电影网站开发需要多少钱seo排名软件价格
  • 网站建设宣传文案简单的网页设计代码记事本
  • 企业策划案例windows优化大师有必要安装吗
  • 做网站必须会编程吗璧山集团网站建设
  • 做网站需要什么图片企业登记
  • 网站建设前的分析wordpress经典编辑器插件
  • 做自己的网站可以赚钱吗有没有公司做农副产品网站的
  • 专业的网站建设公司电话西安官网优化公司
  • 网站添加站长统计代码西安企业查询
  • 网站开发工作需要什么专业百度账号设置
  • 织梦网站安装教程视频教程建筑工程公司注册要求
  • 建行官网网站嵌入式工程师是干嘛的