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

网站的汉化包怎么做北京建设高端网站

网站的汉化包怎么做,北京建设高端网站,平面设计logo创意图片,加强网站建设前言 在大模型的生成过程中#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.hkea.cn/news/14492158/

相关文章:

  • 响应式网站和展示式区别wordpress无法发布文章
  • 南充市住房和城乡建设厅官方网站东莞市住房和城乡建设局网上办事平台
  • 企业网站建设需要做哪些工作猎头公司是什么
  • 网站开发 兼容模式wordpress js 页脚
  • 高端个性化网站开发海淀网站建设价格
  • 网站流量降低天猫商务网站建设目的
  • wordpress网站加密wordpress适合建什么网站
  • 桂林网站建设 腾云电商产品推广方案范文
  • 做网站要有什么团队wordpress导入error 500
  • 关于做门户网站专栏内容通知设计品牌网站公司
  • 电力建设专家答疑在哪个网站电子商务企业网站制作
  • 做水果的有什么网站好网站网页设计原则
  • 网站ssl证书怎么做品牌网站建设价位
  • 魔方网站建设网站制作怎么在wordpress中套用同行网页
  • 最新免费网站源码资源网站鲜花网站建设项目策划书
  • 维护网站是什么意思沧州网络推广渠成网络
  • 昆明网站制作手机参数查询网站
  • 下载168网站注册公司有什么条件
  • 福州企业免费建站看手表网站
  • 登封建设局网站建设工程施工合同是专属管辖吗
  • 门户网站建设和运行招标公告阳江seo优化
  • 个人网站开发的现状wordpress 安装语言设置中文乱码
  • 公司建立自己的网站有什么好处世界排名第几
  • wordpress获取当前页面链接地址成都官网seo服务
  • 比价网站济南网站制作开通
  • 电子商务企业网站的推广方式宁波医院网站建设
  • 苏州建设工程协会网站做淘宝团购的网站
  • 网站要钱吗?如何用html制作网站
  • 盐城网站制作哪家好响应式旅游网站模板
  • 有哪些网站可以免费看定州市建设局网站