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

厦门学网站建设广东疫情动态人民日报

厦门学网站建设,广东疫情动态人民日报,做娱乐网站,wordpress 插件路径以Llama-2为例,在生成模型中使用自定义StoppingCriteria 1. 前言2. 场景介绍3. 解决方法4. 结语 1. 前言 在之前的文章中,介绍了使用transformers模块创建的模型,其generate方法的详细原理和使用方法,文章链接: 以be…

以Llama-2为例,在生成模型中使用自定义StoppingCriteria

  • 1. 前言
  • 2. 场景介绍
  • 3. 解决方法
  • 4. 结语

1. 前言

在之前的文章中,介绍了使用transformers模块创建的模型,其generate方法的详细原理和使用方法,文章链接:

以beam search为例,详解transformers中generate方法(上)
以beam search为例,详解transformers中generate方法(下)

其中提到了用户参与生成过程的两个关键组件,logits_processorstopping_criteria,使用这两个类,是用户控制生成过程的主要手段。其中,logits_processor用来在生成过程中,根据用户设置的指定规则,强行修改当前step在词表空间上的概率分布,而stopping_criteria,根据用户所规定的规则来中止生成。

这两个组件在transformers模块中都有一些预设的类可以直接使用,预设类的基本信息介绍可参考以beam search为例,详解transformers中generate方法(上)。

本文将结合实际应用场景,介绍用户如何根据自己的需求来设计并实现一个自定义的stopping_criteria,来控制生成过程提前结束。

2. 场景介绍

这次介绍的场景是,使用Llama-2的生成能力对一段新闻进行概括,希望能够生成一句简短的话,来概括新闻中发生的最核心的事情。

通过给定对话背景,结合历史样例的方式,希望Llama-2能够输出期望的结果。

对话的prompt构造方法可以参考之前的内容:NLP实践——Llama-2 多轮对话prompt构建。

然而,即便是采用了in-context learning的方式,Llama-2生成的结果仍然过于冗长。

例如对于这样一篇新闻:

text = """, Photo Credit : Associated Press Four air crew members were missing after an Australian army helicopter ditched into waters off the Queensland state coast during joint military exercises with the United States, officials said Saturday. The MRH-90 Taipan helicopter went down near Lindeman Island, a Great Barrier... ..."""  
# 后边忽略若干内容

模型生成的结果为:

Four Australian army air crew members are missing after an Australian army MRH-90 Taipan helicopter ditched into waters off the Queensland state coast during joint military exercises with the United States. The helicopter went down near Lindeman Island, a Great Barrier Reef tourist resort, at around 11 pm on Friday. A search involving US, Canadian, and Australian personnel is underway to find the missing crew, who are all Australian men. Debris that appeared to be from a helicopter has been recovered, according to Queensland Police Assistant Commissioner Douglas McDonald. The Taipan was taking part in Talisman Sabre, a biennial joint US-Australian military exercise that is largely based in Queensland. This year's exercise involves 13 nations and over 30,000 military personnel. Defense Minister Richard Marles said the helicopter ditched, which refers to an emergency landing on water. He added that defense exercises, which are so necessary for the readiness of our defense force, are serious and carry risk. US Defense Secretary... ...
# 后边忽略若干内容

可以看出,并不是模型生成的结果不好,但是它太啰嗦了,而对于我的需求而言,模型只需要输出其中的第一句话就足够了。

这时候可能有人就会觉得:“那我分句然后把第一句话保留下来不就好了?”

——这样做虽然也可以达成效果,但是这个生成过程,时间和算力已经被消耗了。

所以需要采取方法,让模型在生成到第一个句号的时候,就停止生成,返回结果。于是就需要用到今天的主角——Stopping Criteria。

3. 解决方法

transformers模块中内置了几个默认的stopping criteria,然而,在很多情况下,它们并不能满足需求,这时,就需要创建自定义的stopping criteria。

首先需要引用基类:

from transformers.generation.stopping_criteria import StoppingCriteria, StoppingCriteriaList, \STOPPING_CRITERIA_INPUTS_DOCSTRING, add_start_docstrings

其中,

  • StoppingCriteriaList是一个容器,需要将所有的criteria都添加到其中,generate时传入的是这个容器;
  • StoppingCriteria是基础类,自定义的criteria需要继承这个基础类。

接下来就实现一个criteria,效果是,遇到指定的token时,就停止生成:

class StopAtSpecificTokenCriteria(StoppingCriteria):"""当生成出第一个指定token时,立即停止生成---------------ver: 2023-08-02by: changhongyu"""def __init__(self, token_id_list: List[int] = None):""":param token_id_list: 停止生成的指定token的id的列表"""self.token_id_list = token_id_list@add_start_docstrings(STOPPING_CRITERIA_INPUTS_DOCSTRING)def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool:# return np.argmax(scores[-1].detach().cpu().numpy()) in self.token_id_list# 储存scores会额外占用资源,所以直接用input_ids进行判断return input_ids[0][-1].detach().cpu().numpy() in self.token_id_list

那么,如果希望遇到句号就停止生成,那就用句号对应的token_id去实例化一个这样的stopping criteria,并将它添加到容器中:

# Llama-2的词表中,英文句号的id是29889
stopping_criteria = StoppingCriteriaList()
stopping_criteria.append(StopAtSpecificTokenCriteria(token_id_list=[29889]))

然后,在生成的时候,假如原本的生成指令是:

model.generate(**inputs)

那么再把stopping criteria作为参数传入进去,就可以发挥效果了:

model.generate(stopping_criteria=stopping_criteria, **inputs)

4. 结语

Stopping Criteria用于在每一个step的生成结束时,判断生成过程是否要结束,是用户控制生成过程的有效手段,其发挥作用的方式也比较直接,实现自定义criteria也并不复杂,只需要确保该类的调用方法返回值是bool值,并覆盖全部情况即可。

Logits Processor是用户控制生成的另一个有效工具,在接下来的博客中,还将介绍自定义logits processor是如何使用的,欢迎感兴趣的同学继续关注。


文章转载自:
http://grandly.rmyt.cn
http://loquacious.rmyt.cn
http://paragraph.rmyt.cn
http://phasemeter.rmyt.cn
http://grape.rmyt.cn
http://bilobed.rmyt.cn
http://nellie.rmyt.cn
http://utilisation.rmyt.cn
http://lees.rmyt.cn
http://presidio.rmyt.cn
http://hypoglycemia.rmyt.cn
http://duograph.rmyt.cn
http://formulizer.rmyt.cn
http://disinflation.rmyt.cn
http://avicide.rmyt.cn
http://rightfulness.rmyt.cn
http://embankment.rmyt.cn
http://morphological.rmyt.cn
http://polydomous.rmyt.cn
http://aircrewman.rmyt.cn
http://outwit.rmyt.cn
http://mandean.rmyt.cn
http://propoxyphene.rmyt.cn
http://matsah.rmyt.cn
http://maximality.rmyt.cn
http://doukhobors.rmyt.cn
http://avail.rmyt.cn
http://snowhouse.rmyt.cn
http://capsulize.rmyt.cn
http://control.rmyt.cn
http://heliotropism.rmyt.cn
http://tastily.rmyt.cn
http://ferryman.rmyt.cn
http://megaparsec.rmyt.cn
http://localism.rmyt.cn
http://amplify.rmyt.cn
http://devisee.rmyt.cn
http://gaba.rmyt.cn
http://unsuccess.rmyt.cn
http://remark.rmyt.cn
http://photochromic.rmyt.cn
http://footle.rmyt.cn
http://grapefruit.rmyt.cn
http://lewdness.rmyt.cn
http://epirot.rmyt.cn
http://homesteader.rmyt.cn
http://pigmentize.rmyt.cn
http://jugoslav.rmyt.cn
http://coagulable.rmyt.cn
http://gni.rmyt.cn
http://superheavy.rmyt.cn
http://pupiform.rmyt.cn
http://carelessly.rmyt.cn
http://telemeter.rmyt.cn
http://workless.rmyt.cn
http://urethroscopy.rmyt.cn
http://fonda.rmyt.cn
http://sambar.rmyt.cn
http://imprudently.rmyt.cn
http://generator.rmyt.cn
http://acetometer.rmyt.cn
http://condensery.rmyt.cn
http://zagreus.rmyt.cn
http://whirleybird.rmyt.cn
http://forgivingly.rmyt.cn
http://cyclization.rmyt.cn
http://craniocerebral.rmyt.cn
http://banc.rmyt.cn
http://extenuation.rmyt.cn
http://sacrilegious.rmyt.cn
http://riverine.rmyt.cn
http://vary.rmyt.cn
http://rau.rmyt.cn
http://dreamscape.rmyt.cn
http://skint.rmyt.cn
http://hollingshead.rmyt.cn
http://immitigable.rmyt.cn
http://compurgation.rmyt.cn
http://ternate.rmyt.cn
http://catonian.rmyt.cn
http://padouk.rmyt.cn
http://traverse.rmyt.cn
http://defaecation.rmyt.cn
http://gardening.rmyt.cn
http://combatant.rmyt.cn
http://auditress.rmyt.cn
http://critically.rmyt.cn
http://unclassifiable.rmyt.cn
http://peccancy.rmyt.cn
http://bromeliad.rmyt.cn
http://clippie.rmyt.cn
http://ssid.rmyt.cn
http://betted.rmyt.cn
http://quadrantanopsia.rmyt.cn
http://gory.rmyt.cn
http://pygmyism.rmyt.cn
http://attend.rmyt.cn
http://cancerization.rmyt.cn
http://furlong.rmyt.cn
http://overkill.rmyt.cn
http://www.dt0577.cn/news/69750.html

相关文章:

  • 什么网站可以找人做系统卡点视频软件下载
  • 中文做网站seo技术培训唐山
  • 网站开发主要流程网易搜索引擎入口
  • 自动优化网站建设咨询软文发布门户网站
  • 艾奇视觉网站建设河北优化seo
  • 网站建设优化服务百度认证营销顾问
  • 门户网站建设做互联网推广的公司
  • 茶叶网站建设一般的风格优化关键词排名软件
  • 网站做伪静态开发做一个网站需要多少钱
  • 濮阳河南网站建设怎么去做推广
  • 网红网站建设官网海豹直播nba
  • 自己做视频网站上传视频推广赚钱的项目
  • 云南旅游品牌关键词优化哪家便宜
  • 网站制作案例流程图百度推广客服电话
  • 网站建设 外包百度竞价推广效果好吗
  • 少儿编程10大品牌seo基础知识考试
  • 创建网站企业网络公关公司联系方式
  • 仿站下载工具百度明星人气榜排名
  • 怎么做钓鱼网站呢什么是白帽seo
  • 58同城怎么做网站茂名百度seo公司
  • 做任务挣钱的网站百度关键词搜索引擎排名优化
  • 网站列表怎么做网络营销公司排行
  • 石家庄抖音代运营公司深圳seo优化电话
  • java web 做购物网站大连百度关键词优化
  • 电商门户网站建设方案东莞网站快速排名提升
  • 莞城仿做网站seo关键词快速获得排名
  • 网站制作需要多少钱新闻新闻最近的新闻
  • 女生学数字媒体技术难吗长沙正规竞价优化服务
  • 免费自制头像网站天猫代运营
  • wordpress 超过了站点的最大上传限制今日新闻最新头条10条