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

徐州建站网站模板企业形象网站用什么语言开发

徐州建站网站模板,企业形象网站用什么语言开发,网页制作模板dw,wordpress菜单调用前言 在大模型的生成过程中#xff0c;部分原生的大语言模型未经过特殊的对齐训练#xff0c;往往会“胡说八道”的生成一些敏感词语等用户不想生成的词语#xff0c;最简单粗暴的方式就是在大模型生成的文本之后#xff0c;添加敏感词库等规则手段进行敏感词过滤#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 ascores 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:rArgs: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(fMake 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 scoresforbid_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_codeTrue) model AutoModelForSeq2SeqLM.from_pretrained(model_path, trust_remote_codeTrue).to(mps)def add_forbid_words():添加需要抑制的词语这里简单添加了数字和几个词语进行对比:return:listforbid_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_promptTrue, skip_special_tokensTrue)input 列举出10个积极的词语outputs model.generate(tokenizer(input, return_tensorspt).input_ids.to(mps),max_new_tokens1024,logits_processorlogits_processor, # 不开启注释即可streamerstreamer ) decode_text tokenizer.batch_decode(outputs, streamerstreamer)[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://www.dnsts.com.cn/news/39478.html

相关文章:

  • 无锡市滨湖区建设局网站优秀设计师的个人网站
  • php租车网站wordpress如何设置字体大小
  • 西安网站挂标智库建设网站
  • 知名网站定制公司电话手机网站开源
  • 网站建设电子商务wordpress slider设置
  • 合肥网站设计服网站开发整体制作流程
  • 企业网站 优秀重庆怎么站seo
  • 广州网站建设便宜山西网络广告推广
  • 淘宝客必须做网站app制作程序
  • asp.net做三个网站怎样把网站做的更好
  • 网站建设后需要交费吗北京网站报价
  • 电商运营的网站网站建设外包 排名
  • 佛山建站佛山网页设计腾讯企点下载安装
  • 外贸网站适合用数字域名吗怎么制作网站生成图片
  • 全国注册室内设计师网中英文网站用一个域名还是两个域名利于优化
  • wordpress 网站上传怎样能在百度上搜索到自己的店铺
  • 做网站的劣势遵义网站开发公司
  • 合肥企业网站建设工作室佛山市外贸网站建设
  • 如何创建网站制作平台互联网营销渠道有哪些
  • 怎么自己做网站加盟通用cms网站
  • 外贸网站搭建vps 网站打不开
  • 在线制作公司网站厦门建设局投诉电话
  • 如何向百度提交网站wordpress+dux+高亮
  • 房产如何做网站破解wordpress加密文章
  • 做网站建设多少钱佛山网站建设4-win方维
  • 如何建设一个子网站做网站要多
  • 顺德做网站推广哪家好服务器上怎做网站
  • wordpress 找站点wordpress调用优酷视频
  • 房产信息门户网站建设方案优化方案英语答案
  • 广州网站建设那家好塘沽网