大模型tokenizer流式响应解决词句连贯性问题

news2024/11/24 13:51:02

在这里插入图片描述

大模型tokenizer词句连贯性问题

现象

from transformers import LlamaTokenizerFast
import numpy as np

tokenizer = LlamaTokenizerFast.from_pretrained("heilerich/llama-tokenizer-fast")
origin_prompt = "Hi, I'm Minwoo Park from seoul, korea."
ids = tokenizer.encode(origin_prompt)
print("转换token ids", ids)


def run(num=7):
    print("=" * 20)
    print(f"此时token 被分为 {num}组")
    ids_list = np.array_split(ids, num)
    result_str = ""
    for ids_ in ids_list:
        id_str = tokenizer.decode(ids_)
        print("id: str ", ids_, id_str)
        result_str += id_str
    print("最终结果", result_str)
    print("原始数据", origin_prompt)


run(4)
run(7)
run(10)


  • 结果
转换token ids [1, 6324, 29892, 306, 29915, 29885, 3080, 827, 29877, 4815, 515, 409, 5059, 29892, 413, 487, 29874, 29889]
====================                                  
此时token 被分为 4组                                  
id: str  [    1  6324 29892   306 29915] <s> Hi, I'   
id: str  [29885  3080   827 29877  4815] m Minwoo Park
id: str  [  515   409  5059 29892] from seoul,        
id: str  [  413   487 29874 29889] korea.             
最终结果 <s> Hi, I'm Minwoo Parkfrom seoul,korea.     
原始数据 Hi, I'm Minwoo Park from seoul, korea.       
====================                                  
此时token 被分为 7组                                  
id: str  [    1  6324 29892] <s> Hi,                  
id: str  [  306 29915 29885] I'm                      
id: str  [ 3080   827 29877] Minwoo                   
id: str  [4815  515  409] Park from se                
id: str  [ 5059 29892] oul,                           
id: str  [413 487] kore                               
id: str  [29874 29889] a.                             
最终结果 <s> Hi,I'mMinwooPark from seoul,korea.       
原始数据 Hi, I'm Minwoo Park from seoul, korea.
====================
此时token 被分为 10组
id: str  [   1 6324] <s> Hi
id: str  [29892   306] , I
id: str  [29915 29885] 'm
id: str  [3080  827] Minwo
id: str  [29877  4815] o Park
id: str  [515 409] from se
id: str  [ 5059 29892] oul,
id: str  [413 487] kore
id: str  [29874] a
id: str  [29889] .
最终结果 <s> Hi, I'mMinwoo Parkfrom seoul,korea.
原始数据 Hi, I'm Minwoo Park from seoul, korea.

解决办法

from transformers import LlamaTokenizerFast
import numpy as np

tokenizer = LlamaTokenizerFast.from_pretrained("heilerich/llama-tokenizer-fast")
origin_prompt = "Hi, I'm Minwoo Park from seoul, korea."
ids = tokenizer.encode(origin_prompt)[1:]
print("转换token ids", ids)


def run1(num=7):
    print("=" * 20)
    print(f"此时token 被分为 {num}组")
    ids_list = np.array_split(ids, num)
    result_str = ""
    tmp_ids = []
    for ids_ in ids_list:
        tmp_ids.extend(ids_)
        id_str = tokenizer.decode(tmp_ids).replace(result_str, "")
        print("id: str ", ids_, id_str)
        result_str += id_str
    print("最终结果", result_str)
    print("原始数据", origin_prompt)


run1(4)
run1(7)
run1(10)

  • 结果
转换token ids [6324, 29892, 306, 29915, 29885, 3080, 827, 29877, 4815, 515, 409, 5059, 29892, 413, 487, 29874, 29889]
====================
此时token 被分为 4组
id: str  [ 6324 29892   306 29915 29885] Hi, I'm
id: str  [ 3080   827 29877  4815]  Minwoo Park
id: str  [  515   409  5059 29892]  from seoul,
id: str  [  413   487 29874 29889]  korea.     
最终结果 Hi, I'm Minwoo Park from seoul, korea.
原始数据 Hi, I'm Minwoo Park from seoul, korea.
====================
此时token 被分为 7组
id: str  [ 6324 29892   306] Hi, I
id: str  [29915 29885  3080] 'm Min
id: str  [  827 29877  4815] woo Park
id: str  [515 409]  from se
id: str  [ 5059 29892] oul,
id: str  [413 487]  kore
id: str  [29874 29889] a.
最终结果 Hi, I'm Minwoo Park from seoul, korea.
原始数据 Hi, I'm Minwoo Park from seoul, korea.
====================
此时token 被分为 10组
id: str  [ 6324 29892] Hi,
id: str  [  306 29915]  I'
id: str  [29885  3080] m Min
id: str  [  827 29877] woo
id: str  [4815  515]  Park from
id: str  [ 409 5059]  seoul
id: str  [29892   413] , k
id: str  [487] ore
id: str  [29874] a
id: str  [29889] .
最终结果 Hi, I'm Minwoo Park from seoul, korea.
原始数据 Hi, I'm Minwoo Park from seoul, korea.
 
  • 中文效果
    在这里插入图片描述
  • 一个哦字对应3个token,但是被拆开了,所以为了不影响后面数据转换,需要对这部分之前的数据进行修复,修复完成后即可保证后面的数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/995130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 multiprocessing 多进程处理批量数据

示例代码 import multiprocessingdef process_data(data):# 这里是处理单个数据的过程return data * 2# 待处理的数据 data [1, 2, 3, 4, 5]def normal_func():# 普通处理方式result []for obj in data:result.append(process_data(obj)return resultdef parallel_func():# …

JavaScript编程语法作业

目录 目录 前言 思维导图 1&#xff0c;作业资源 2&#xff0c;if语句练习 2.1代码解读: 2.2,结果展示: 3&#xff0c;switch语句练习 3.1,代码解读: 3.2,结果展示: 4.while循环练习 4.1,代码解读: 4.2.结果展示: 5.do-while循环练习 5.1,代码解读: 5.2,结果展…

STM32 CAN/CANFD软件快速配置(HAL库版本)

STM32 CAN/CANFD软件快速配置&#xff08;HAL库版本&#xff09; 目录 STM32 CAN/CANFD软件快速配置&#xff08;HAL库版本&#xff09;前言1 软件编程1.1 建立工程1.2 初始化1.2.1 引脚设置1.2.2 CAN基本参数设置1.2.3 CAN收发初始化设置1.2.4 中断设置 1.3 CAN发送1.4 CAN接收…

自定义Dynamics 365实施和发布业务解决方案 3. 开箱即用自定义

在本章中,您将开始开发SBMA会员应用程序。在开发的最初阶段,主要关注开箱即用的定制。在第2章中,我们讨论了如何创建基本解决方案的细节,在本章中,将创建作为解决方案补丁的基本自定义,并展示将解决方案添加到源代码管理和目标环境的步骤。 表单自定义 若要开始表单自定…

连续 3 年 40% 增长 续费率近 110%:纷享销客增长的底层逻辑

经营管理没有一招鲜&#xff0c;持续增长的底层逻辑&#xff0c;就是持续稳定的建设&#xff0c;不被外界所干扰。 笔记整理 | 张保文 SaaS 增长&#xff0c;比拼的是战略、组织、人才、市场、销售、客户成功等全价值链的基本功。连续 3 年 40% 增长&#xff0c;续费率近 110%…

【图解RabbitMQ-5】RabbitMQ Web管控台图文介绍

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;CSDN实力新星&#xff0c;后端开发两年经验&#xff0c;曾担任甲方技术代表&#xff0c;业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…

C++ 结构体

前文 C中的结构体是一种非常有用的数据类型&#xff0c;它允许我们将不同的变量组合在一起&#xff0c;形成一个自定义的数据结构。 结构体在C中的应用非常广泛&#xff0c;它可以用来表示和管理各种实体、对象或数据的属性。比如&#xff0c;在一个学生管理系统中&#xff0c…

2.2 Java中的变量

1. 变量与赋值 在程序运行期间&#xff0c;随时可能产生一些临时数据&#xff0c;应用程序会将这些数据保存在内存单元中&#xff0c;每个内存单元都用一个标识符标识&#xff0c;这些用于标识内存单元的标识符就称为变量&#xff0c;内存单元中存储的数据就是变量的值。 下面…

C++day1---9.6

思维导图&#xff1a; 1.使用cout完成输出斐波那契前20项的内容 #include <iostream>using namespace std;int main() {int a 1;int b 0;int sum 1;int arr[20] {0};for(int i0; i<20; i){arr[i] sum; //存放最新值sum ab; //更新sumb a; …

windows mysql弹出黑框处理

现象 处理方式 点击禁用即可 以后就不会再出现了

【Arduino30】DS1302时钟芯片模拟值实验

硬件准备 DS1302芯片&#xff1a;1片 32.768kHz晶振&#xff1a;1个 面包板&#xff1a;1个 杜邦线&#xff1a;若干 硬件连线 软件程序 #include <DS1302.h> //头文件//定义引脚 const int rst_pin 5; const int date_pin 6; const int sclk_pin 7;//将DS1302实…

ARTS 2023.8.21-2023.8.27 (第一周)

ARTS 2023.8.21-2023.8.27 &#xff08;第一周&#xff09; &#x1f4a1;ARTS&#xff1a; A&#xff1a;至少每周完成一道Leecode的算法题&#xff1b; R&#xff1a;阅读并点评至少一篇英文技术文章&#xff1b; T&#xff1a;学习至少一个技术技巧&#xff1b; S&#xff…

Tina Ti 计算电路中的参数

如图所示 计算每个节点的参数 通过这个工具&#xff0c;就算你不知道电路的原理&#xff0c;电路网络分析&#xff0c;你都可以计算出理论值是多少。

PTA作业笔记——简单的输入输出

PTA前十题 7-2 输入输出整数7-3 输入输出单精度实数7-4 输入输出双精度实数7-5 输入输出字符7-6 整数的各种形式输出7-7 混合无间隔输入输出7-8 日期格式化7-9 区位码输入法 写在前面&#xff1a;不是很难的题目直接放上代码&#xff0c;只作为记录 初学C语言的时候涉及到的输入…

c++day3---9.8

1> 自行封装一个栈的类&#xff0c;包含私有成员属性&#xff1a;栈的数组、记录栈顶的变量 成员函数完成&#xff1a;构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小 头文件&#xff1a; #ifndef Z_H #define Z_H #inclu…

NV12数据格式转H265编码格式实现过程

一、需求 在视频处理和传输应用中&#xff0c;将视频数据编码为高效的格式是非常重要的。H.265&#xff08;也称为HEVC&#xff09;是一种先进的视频编码标准&#xff0c;具有更好的压缩性能和图像质量&#xff0c;相比于传统的编码标准&#xff08;如H.264&#xff09;&#…

ARTS 2023.8.28-2023.9.03 (第二周)

ARTS 2023.8.28-2023.9.03 &#xff08;第二周&#xff09; &#x1f4a1;ARTS&#xff1a; A&#xff1a;至少每周完成一道Leecode的算法题&#xff1b; R&#xff1a;阅读并点评至少一篇英文技术文章&#xff1b; T&#xff1a;学习至少一个技术技巧&#xff1b; S&#xff…

【计算机基础知识4】网络通信协议:TCP、UDP、WebSockets

目录 一、TCP&#xff08;传输控制协议&#xff09; 1. TCP的特点 2. TCP的连接建立和终止 3. TCP的可靠性机制 4. TCP的流量控制 二、UDP&#xff08;用户数据报协议&#xff09; 1. UDP的特点 2. UDP的使用场景 三、WebSockets 1. WebSockets协议的特点 2. WebSock…

二分搜索树深度优先遍历(Java 实例代码)

目录 二分搜索树深度优先遍历 Java 实例代码 src/runoob/binary/Traverse.java 文件代码&#xff1a; 二分搜索树深度优先遍历 二分搜索树遍历分为两大类&#xff0c;深度优先遍历和层序遍历。 深度优先遍历分为三种&#xff1a;先序遍历&#xff08;preorder tree walk&am…

严选算法模型质量保障

在算法模型整个生命周期**&#xff08;算法模型生命周期&#xff1a;初始训练数据 --> 模型训练 --> 模型评估 --> 模型预估 --> 训练数据&#xff09;**中&#xff0c;任何环节的问题引入都可能导致算法模型质量问题。所以我们在做模型质量保障的过程中&#xff0…