大语言模型的后处理

后处理的输入

常规意义上的大模型处理流程

import torch
from transformers import LlamaForCausalLM, LlamaTokenizer# 加载模型和tokenizer
model = LlamaForCausalLM.from_pretrained("decapoda-research/llama-7b-hf")
tokenizer = LlamaTokenizer.from_pretrained("decapoda-research/llama-7b-hf")# 输入prompt
prompt = "Hello, I'm Claude. How can I assist you today?"
input_ids = tokenizer.encode(prompt, return_tensors="pt")# 前向传播获取logits
output = model(input_ids=input_ids)
logits = output.logits# logits形状: (batch_size, sequence_length, vocab_size)
print(logits.shape)

后处理的输入是logits,其实准确说是hidden states,经过embedding table 映射后得到了最终的logits。

# 采样超参数
temperature = 0.7
top_k = 50
top_p = 0.95
repetition_penalty = 1.2# 对logits进行处理
logits = logits[:, -1, :] / temperature  # 应用温度
filtered_logits = top_k_top_p_filtering(logits, top_k=top_k, top_p=top_p)
filtered_logits = enforce_repetition_penalty(filtered_logits, input_ids, repetition_penalty)# 从处理后的logits中采样token
probabilities = torch.softmax(filtered_logits, dim=-1)
next_token = torch.multinomial(probabilities, num_samples=1)# 将新token添加到输入中,继续生成
input_ids = torch.cat((input_ids, next_token), dim=-1)
  • 首先定义了一些采样超参数,如温度(temperature)、top-k、top-p 和重复惩罚系数(repetition_penalty)。
  • 接下来, 对 logits 进行处理:
    • 应用温度缩放,控制输出的随机性。
    • 使用 top-k 和 top-p 过滤,保留概率最高的 k 个 token 或累积概率达到 p 的 token。
    • 应用重复惩罚,降低已生成 token 的概率,避免重复。

VLLM Sampler的处理

我们默认跑vllm benchmark test 的时候,sampling 参数配置:

    sampling_params = SamplingParams(n=args.n,# temperature=0.0 if args.use_beam_search else 1.0,temperature=0.0,top_p=1.0,use_beam_search=args.use_beam_search,ignore_eos=ignore_eos,max_tokens=max_tokens,repetition_penalty=args.repetition_penalty)

除了这些参数以外,SamplingParams(vllm/sampling_params.py)的默认配置我们主要关注:
在这里插入图片描述
其中由于temperature 设置为0,默认使用greedy sampling 方式进行logits 采样。
进入到Sampler 后处理(vllm/model_executor/layers/sampler.py,vllm/model_executor/sampling_metadata.py),do_top_p_top_kdo_min_p 采样bypass,最后softmax的输入shape 没有经过topk/p 的采样,输入shape为[bs, input_size, vocabulary_size]
在这里插入图片描述

因此,vocabulary size 如果太大,对softmax 性能的影响是一个很大的挑战。
从性能优化的角度考虑,可以先做一次logit 采样,通过设定合适的p/k 值保证模型输出精度。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel中实现md5加密

1.注意事项 (1)在Microsoft Excel上操作 (2)使用完,建议修改的配置全部还原,防止有风险。 2.准备MD5宏插件 MD5加密宏插件放置到F盘下(直接F盘下,不用放到具体某一个文件夹下) 提示:文件在文章顶部&…

移动端自动化测试工具 Appium 之 main 启动

文章目录 一、背景二、生成xml文件2.1、创建xml方法2.2、执行主类MainTest2.3、自动生成的xml2.4、工程目录2.5、执行结果 三、命令行执行appium服务四、主方法启动类五、集成Jenkins六、总结 一、背景 Jenkins 做集成测试是不错的工具,那么UI自动化是否可以&#…

基于单片机的直流电机测速装置研究与设计

摘要: 基于单片机的直流电机测速装置采用了对直流电机的中枢供电回路串联取样电阻的方式实现对电机转速的精确实时测量。系统由滤波电路、信号放大电路、单片机控制电路以及稳压电源等功能模块电路构成。工作过程中高频磁环作为载体,利用电磁感应的基本原理对直流电…

【快捷部署】022_ZooKeeper(3.5.8)

📣【快捷部署系列】022期信息 编号选型版本操作系统部署形式部署模式复检时间022ZooKeeper3.5.8Ubuntu 20.04tar包单机2024-05-07 一、快捷部署 #!/bin/bash ################################################################################# # 作者&#xff…

IDA PRO 7.7 全局修改字体大小

转到IDA的安装目录,以我的为例,IDA的安装目录是: C:\Program Files (x86)\IDA_Pro_7.7\打开.css文件 IDA安装路径\themes\default\theme.css拉到最下面,找到如图所示的位置,把font-size修改成你想要的大小。 保存并验…

跨境电商行业蓬勃发展,武汉星起航引领卖家孵化新潮流

近年来,我国跨境电商行业在政府的大力扶持下呈现出强劲的发展势头。随着国内制造业结构的加速调整与居民消费需求升级态势的持续凸显,跨境出口规模占比稳步提升,跨境进口规模同样不断扩大,行业市场规模持续增长。在这一背景下&…

LeetCode-2391. 收集垃圾的最少总时间【数组 字符串 前缀和】

LeetCode-2391. 收集垃圾的最少总时间【数组 字符串 前缀和】 题目描述:解题思路一:处理垃圾和路程单独计算。解题思路二:逆向思维,计算多走的路解题思路三:只记录,当前t需要计算几次 题目描述:…

K8S安装并搭建集群

1. 先给每台机器安装docker环境 卸载旧的docker yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 配置docker的yum库 yum install -y yum-utilsyum-config-manager --a…

撤销 git add 操作(忽略被追踪的文件)

文章目录 引言I git rm命令来取消暂存【推荐】II 撤销特定文件的暂存状态2.1 git rese2.2 git restoresee also引言 应用场景: 修改.gitignoregitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先…

R语言两种方法实现随机分层抽样

为了减少数据分布的不平衡,提供高样本的代表性,可将数据按特征分层一定的层次,在每个层次抽取一定量的样本,为分层抽样。分层抽样的特点是将科学分组法与抽样法结合在一起,分组减小了各抽样层变异性的影响,…

PHP+B/S架构 不良事件管理系统源码 医院不良事件报告系统源码,开发技术vue2+element+laravel8

PHPB/S架构 不良事件管理系统源码 医院不良事件报告系统源码,开发技术vue2elementlaravel8 技术架构:前后端分离,仓储模式,BS架构, 开发技术:PHPvscodevue2elementlaravel8mysql5.7,专业团队研…

算法练习day7

四数相加II 代码随想录 0454.四数相加II 454. 四数相加 II - 力扣(LeetCode) (用时:0.5小时) 思路 本道题是需要在四个数组中,各找一个数,这些数加起来能够等于0,那么就是答案元…