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

Transformers中不同的generation strategies生成策略

Transformers中不同的generation strategies生成策略

  • Basic decoding methods
    • Greedy search
    • Sampling
    • Beam search
  • Advanced decoding methods
    • Speculative decoding

Basic decoding methods

Greedy search

贪心策略是一个默认的解码方式,其操作就是每次选择distribution中概率最大的内容,对于短文本生成任务,并且创造性不优先考虑的情况下,会考虑使用贪心解码,但是当文本开始变长后使用这种方法会重复生成一些内容。

Sampling

这种方法是按照next-token distribution从整个词表中采样,这代表词表中概率不为0的词都有机会被选中,Sampling的方法会减少重复的情况,同时生成的内容更加具有创造性和变化性。

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from accelerate import Acceleratordevice = Accelerator().devicetokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-hf")
inputs = tokenizer("Hugging Face is an open-source company", return_tensors="pt").to(device)model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf", dtype=torch.float16).to(device)
# explicitly set to 100 because Llama2 generation length is 4096
outputs = model.generate(**inputs, max_new_tokens=50, do_sample=True, num_beams=1)
tokenizer.batch_decode(outputs, skip_special_tokens=True)
'Hugging Face is an open-source company 🤗\nWe are open-source and believe that open-source is the best way to build technology. Our mission is to make AI accessible to everyone, and we believe that open-source is the best way to achieve that.'

Beam search

束搜索会在每个时间步追踪多个生成序列 (beams)

  • 在生成一定长度后,它会选择整体概率最高的序列作为最终输出,和贪心不同的是,束搜索具有一定的前瞻性,即使初始token的概率低,也可能选择一个整体概率更高的序列。
  • 在transformers库中,通过num_beams这个参数来开启
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from accelerate import Acceleratordevice = Accelerator().devicetokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-hf")
inputs = tokenizer("Hugging Face is an open-source company", return_tensors="pt").to(device)model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf", dtype=torch.float16).to(device)
# explicitly set to 100 because Llama2 generation length is 4096
outputs = model.generate(**inputs, max_new_tokens=50, num_beams=2)
tokenizer.batch_decode(outputs, skip_special_tokens=True)
"['Hugging Face is an open-source company that develops and maintains the Hugging Face platform, which is a collection of tools and libraries for building and deploying natural language processing (NLP) models. Hugging Face was founded in 2018 by Thomas Wolf']"

Advanced decoding methods

Speculative decoding

投机采样不是search或sampling strategy,而是额外增加一个小模型去生成候选candidate tokens,main model通过一次forward pass去验证生成的结果,从而整体上加速。
需要注意的一点是transformers库中的投机采样是不支持batch的
在这里插入图片描述
transformers库是通过一个assistant_model的参数启动的

from transformers import AutoModelForCausalLM, AutoTokenizertokenizer = AutoTokenizer.from_pretrained("HuggingFaceTB/SmolLM-1.7B")
model = AutoModelForCausalLM.from_pretrained("HuggingFaceTB/SmolLM-1.7B")
assistant_model = AutoModelForCausalLM.from_pretrained("HuggingFaceTB/SmolLM-135M")
inputs = tokenizer("Hugging Face is an open-source company", return_tensors="pt")outputs = model.generate(**inputs, assistant_model=assistant_model)
tokenizer.batch_decode(outputs, skip_special_tokens=True)
'Hugging Face is an open-source company that provides a platform for developers to build and deploy machine'
http://www.dtcms.com/a/508561.html

相关文章:

  • 网站标题psdwordpress商城 微信支付宝
  • Spring MVC文件上传与下载全面详解:从原理到实战
  • 广州网站建设 乐云seo营销策划方案模板
  • 学院网站信息化建设总结朝阳住房和城乡建设官方网站
  • 【Android Gradle学习笔记】第八天:NDK的使用
  • OpenCV(十三):通道的分离与合并
  • 【猿辅导-注册安全分析报告-无验证方式导致安全隐患】
  • 基于YOLOv8与SCConv的轻量化目标检测模型-协同优化空间与通道特征重构
  • 卫计网站建设工作计划怎么做网页商城
  • 攻略做的比较好的网站邯郸电商设计
  • 青海某公路水渠自动化监测服务项目
  • 大厂级企业后端:配置变更与缓存失效的自动化处理方案
  • 打破协议壁垒:耐达讯自动化Modbus转Profinet网关实现光伏逆变器全数据采集
  • 深圳创新网站建设适合穷人的18个创业项目投资小
  • Docker部署RocketMQ时Broker IP地址问题及解决方案
  • 生产环境定时器陷阱:CLOCK_REALTIME与CLOCK_MONOTONIC的生死抉择
  • 建设电子商务网站流程网站改版汇报
  • 长清网站建设费用长椿街网站建设
  • 算法学习——技巧小结7(回溯:排列、组合、子集)
  • Qt Designer 中实现布局比例的方法和简单实例
  • 黄埔网站建设(信科网络)找工程项目上哪个平台好呢
  • 想要提高网站排名应该怎么做直播系统开发
  • Doris专题22- 数据更新-概述
  • 立创EDA专业版使用技巧——按TAB暂停修改
  • 伊犁网站建设公司网页设计与制作实训步骤
  • 深圳网站建设外贸公司软件公司简介内容怎么写
  • 亚太稀土产链
  • 【源码+文档+调试讲解】基于SpringBoot + Vue的知识产权管理系统 041
  • 建设银行信用卡管理中心网站首页网站不换域名换空间
  • 小型企业做网站的价格图片主题wordpress