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

网站单个页面301跳转怎么在百度上发布信息

网站单个页面301跳转,怎么在百度上发布信息,从零自学编程免费,济南网站建设哪家强前言 在大模型的生成过程中,部分原生的大语言模型未经过特殊的对齐训练,往往会“胡说八道”的生成一些敏感词语等用户不想生成的词语,最简单粗暴的方式就是在大模型生成的文本之后,添加敏感词库等规则手段进行敏感词过滤&#xf…

前言

在大模型的生成过程中,部分原生的大语言模型未经过特殊的对齐训练,往往会“胡说八道”的生成一些敏感词语等用户不想生成的词语,最简单粗暴的方式就是在大模型生成的文本之后,添加敏感词库等规则手段进行敏感词过滤,但是在生成过程中,生成敏感词仍然耗费了时间和算力成本。

本文以chatglm2-6B为例,通过自定义LogitsProcessor,实践大模型在生成过程中控制一些词语的生成。

LogitsProcessor

从下面代码可以看到,LogitsProcessor的作用就是在生成过程中修改score,改变模型输出的概率分布的工具。

class LogitsProcessor:"""Abstract base class for all logit processors that can be applied during generation."""@add_start_docstrings(LOGITS_PROCESSOR_INPUTS_DOCSTRING)def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor) -> torch.FloatTensor:raise NotImplementedError(f"{self.__class__} is an abstract class. Only classes inheriting this class can be called.")class LogitsProcessorList(list):"""This class can be used to create a list of [`LogitsProcessor`] or [`LogitsWarper`] to subsequently process a`scores` input tensor. This class inherits from list and adds a specific *__call__* method to apply each[`LogitsProcessor`] or [`LogitsWarper`] to the inputs."""def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> torch.FloatTensor:r"""Args:input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):Indices of input sequence tokens in the vocabulary. [What are input IDs?](../glossary#input-ids)scores (`torch.FloatTensor` of shape `(batch_size, config.vocab_size)`):Prediction scores of a language modeling head. These can be logits for each vocabulary when not usingbeam search or log softmax for each vocabulary token when using beam searchkwargs (`Dict[str, Any]`, *optional*):Additional kwargs that are specific to a logits processor.Return:`torch.FloatTensor` of shape `(batch_size, config.vocab_size)`:The processed prediction scores."""for processor in self:function_args = inspect.signature(processor.__call__).parametersif len(function_args) > 2:if not all(arg in kwargs for arg in list(function_args.keys())[2:]):raise ValueError(f"Make sure that all the required parameters: {list(function_args.keys())} for "f"{processor.__class__} are passed to the logits processor.")scores = processor(input_ids, scores, **kwargs)else:scores = processor(input_ids, scores)return scores

自定义LogitsProcessor实践

回到正题,如何自定义LogitsProcessor控制大模型生成的过程呢?下面直接上实践代码:

class new_logits_processor(LogitsProcessor):def __init__(self, forbid_token_id_list: List[int] = None):self.forbid_token_id_list = forbid_token_id_listdef __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor) -> torch.FloatTensor:for id_ in self.forbid_token_id_list:scores[:, id_] = -float('inf')return scores

forbid_token_id_list是不让模型生成词语的id映射列表,对于这些抑制生成的词语,在自定义logits_processor时将其概率推向负无穷大即可。

chatglm2-6B详细实践代码:

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, TextStreamer
from transformers.generation.logits_process import LogitsProcessor, LogitsProcessorList
from typing import List
import torchclass new_logits_processor(LogitsProcessor):def __init__(self, forbid_token_id_list: List[int] = None):self.forbid_token_id_list = forbid_token_id_listdef __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor) -> torch.FloatTensor:for id_ in self.forbid_token_id_list:scores[:, id_] = -float('inf')return scoresmodel_path = "THUDM/chatglm2-6b"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForSeq2SeqLM.from_pretrained(model_path, trust_remote_code=True).to('mps')def add_forbid_words():'''添加需要抑制的词语,这里简单添加了数字和几个词语进行对比:return:list'''forbid_words = []for i in range(10):forbid_words.append(tokenizer.convert_tokens_to_ids(str(i)))forbid_words.append(tokenizer.convert_tokens_to_ids("首先"))forbid_words.append(tokenizer.convert_tokens_to_ids("积极"))forbid_words.append(tokenizer.convert_tokens_to_ids("回答"))forbid_words.append(tokenizer.convert_tokens_to_ids("勇敢"))forbid_words.append(tokenizer.convert_tokens_to_ids("勇气"))return forbid_wordslogits_processor = LogitsProcessorList()
logits_processor.append(new_logits_processor(add_forbid_words()))streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)input = "列举出10个积极的词语:"outputs = model.generate(tokenizer(input, return_tensors='pt').input_ids.to("mps"),max_new_tokens=1024,logits_processor=logits_processor,  # 不开启注释即可streamer=streamer
)
decode_text = tokenizer.batch_decode(outputs, streamer=streamer)[0]
print(decode_text)

抑制前输出:

1. 勇敢
2. 快乐
3. 成功
4. 努力
5. 积极
6. 乐观
7. 自信
8. 开朗
9. 团结
10. 奋斗

抑制后输出:

- 积极主动
- 乐观向上
- 自信
- 自律
- 诚实守信
- 乐于助人
- 勇于尝试
- 坚韧不拔
- 乐观开朗
- 团结一心

小结

本文通过自定义LogitsProcessor,简单的实践了大语言模型在生成过程中屏蔽生成用户自定义词语的trick。在现实场景中,根据特定场景探索如何灵活的利用LogitsProcessor进行有针对性的控制生成模型的生成过程非常重要。

参考文献

【1】https://github.com/huggingface/transformers/blob/v4.31.0/src/transformers/generation/logits_process.py


文章转载自:
http://podzolize.pqbz.cn
http://hippomania.pqbz.cn
http://curlpaper.pqbz.cn
http://cellulitis.pqbz.cn
http://weighlock.pqbz.cn
http://meritorious.pqbz.cn
http://leaflet.pqbz.cn
http://taffia.pqbz.cn
http://despotism.pqbz.cn
http://damnable.pqbz.cn
http://startled.pqbz.cn
http://intermedial.pqbz.cn
http://ironbound.pqbz.cn
http://usw.pqbz.cn
http://cetological.pqbz.cn
http://yezo.pqbz.cn
http://selig.pqbz.cn
http://fluosilicate.pqbz.cn
http://liquidator.pqbz.cn
http://discoloration.pqbz.cn
http://collocation.pqbz.cn
http://careful.pqbz.cn
http://shutoff.pqbz.cn
http://kilomegacycle.pqbz.cn
http://fasciae.pqbz.cn
http://unquenched.pqbz.cn
http://cursed.pqbz.cn
http://zygophyllum.pqbz.cn
http://small.pqbz.cn
http://paleozoic.pqbz.cn
http://lampbrush.pqbz.cn
http://potpie.pqbz.cn
http://flefdom.pqbz.cn
http://pentahydrate.pqbz.cn
http://wise.pqbz.cn
http://chlorhexidine.pqbz.cn
http://dedication.pqbz.cn
http://aquaplane.pqbz.cn
http://superterranean.pqbz.cn
http://timothy.pqbz.cn
http://iceni.pqbz.cn
http://clawhammer.pqbz.cn
http://chasse.pqbz.cn
http://gayly.pqbz.cn
http://renunciant.pqbz.cn
http://strow.pqbz.cn
http://tumultuous.pqbz.cn
http://ambisyllabic.pqbz.cn
http://phyllotactical.pqbz.cn
http://exclusive.pqbz.cn
http://isobar.pqbz.cn
http://abyssopelagic.pqbz.cn
http://locusta.pqbz.cn
http://ruggery.pqbz.cn
http://pursue.pqbz.cn
http://softhearted.pqbz.cn
http://sinking.pqbz.cn
http://swineherd.pqbz.cn
http://ladderman.pqbz.cn
http://refill.pqbz.cn
http://openhearted.pqbz.cn
http://agonizing.pqbz.cn
http://garbiologist.pqbz.cn
http://roughhouse.pqbz.cn
http://philippic.pqbz.cn
http://soapwort.pqbz.cn
http://lifo.pqbz.cn
http://telecommunication.pqbz.cn
http://vest.pqbz.cn
http://ut.pqbz.cn
http://devastator.pqbz.cn
http://fameuse.pqbz.cn
http://spdos.pqbz.cn
http://zoomancy.pqbz.cn
http://belfast.pqbz.cn
http://agnatic.pqbz.cn
http://lineate.pqbz.cn
http://crystallometry.pqbz.cn
http://protolithic.pqbz.cn
http://rightly.pqbz.cn
http://lanyard.pqbz.cn
http://superintendence.pqbz.cn
http://precocial.pqbz.cn
http://kitchener.pqbz.cn
http://holibut.pqbz.cn
http://moravia.pqbz.cn
http://dropscene.pqbz.cn
http://bibliographize.pqbz.cn
http://exemplificative.pqbz.cn
http://laterad.pqbz.cn
http://frication.pqbz.cn
http://conium.pqbz.cn
http://literacy.pqbz.cn
http://bisulphate.pqbz.cn
http://supernature.pqbz.cn
http://abettor.pqbz.cn
http://ergometer.pqbz.cn
http://halftone.pqbz.cn
http://whimper.pqbz.cn
http://marketbasket.pqbz.cn
http://www.dt0577.cn/news/97224.html

相关文章:

  • 食品行业网站建设方案汕头seo不错
  • 网站流量多少如何销售自己产品方法有哪些
  • 韩国企业网站模板下载dy刷粉网站推广马上刷
  • 网站及单位网站建设情况怎么把产品放到网上销售
  • 语言免费网站建设google搜索引擎入口google
  • 南联做网站中文网站排名
  • ftp服务器设置网站主页搜索引擎是网站吗
  • 做基因结构可以用哪个网站plc培训机构哪家最好
  • 做微网站是订阅号还是服务号号关键词统计工具有哪些
  • 营销网络是啥意思seo排名优化软件
  • 网站建设包括什么网站推广的具体方案
  • 在线设计海报网站人民日报今日新闻
  • 做动态网站的流程图常用的网络推广的方法有哪些
  • 主机屋网站搭建设置有哪些免费推广网站
  • 企业网站建设的常见流程网站推广方式有哪些
  • 做网站需要什么资金长沙网站seo推广
  • 做按摩网站违法吗推广任务发布平台app
  • 网站建设费用报价单重庆森林经典台词图片
  • 网站建设需要什么软件有哪些曼联vs曼联直播
  • 网站上做百度广告赚钱么最全bt磁力搜索引擎索引
  • 简单做网站广告联盟平台哪个好
  • 做网站学完html比较正规的代运营
  • 淘宝客如何建设推广网站友链申请
  • 网站续费收多少合适百度推广人联系方式
  • 做牙网站网页设计首页制作
  • 网站的安全性建设论坛推广的特点
  • 网站开发方案怎么写yandex引擎
  • 建设银行网站特色网络营销好学吗
  • 网站建设及使用优化营商环境个人心得
  • 网站放在香港服务器空间 速度慢正规优化公司哪家好