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

深圳建设网站哪里好网页制作的公司有哪些

深圳建设网站哪里好,网页制作的公司有哪些,中国人去菲律宾做网站赌钱会抓吗,团员登录系统智慧团建CP03大语言模型ChatGLM3-6B特性代码解读#xff08;1#xff09; 文章目录 CP03大语言模型ChatGLM3-6B特性代码解读#xff08;1#xff09;总述提示词及UI交互基础conversation.py提示词相关角色Role的处理对话内容字符里的提示词处理 对话基础client.py模型路径等参数设置…CP03大语言模型ChatGLM3-6B特性代码解读1 文章目录 CP03大语言模型ChatGLM3-6B特性代码解读1总述提示词及UI交互基础conversation.py提示词相关角色Role的处理对话内容字符里的提示词处理 对话基础client.py模型路径等参数设置创建processor并定义EOS token定义stream_chat对话函数相关参数备查 补充知识辅助理解上述stream_chat实现 总述 对话模式、工具模式、代码解释器模式例程阅读理解。 ChatGLM3-6B已经进行了中文场景的训练可以直接运用于中文场景。本次学习的示例提供了三种模式。包括 Chat: 对话模式在此模式下可以与模型进行对话Tool: 工具模式模型除了对话外还可以通过工具进行其他操作Code Interpreter: 代码解释器模式模型可以在一个 Jupyter 环境中执行代码并获取结果以完成复杂任务。 对话模式下可以直接修改 top_p, temperature, System Prompt 等参数来调整模型的行为工具模式下可以通过在 tool_registry.py 中注册新的工具来增强模型的能力代码解释器模式下模型能够执行更为复杂的任务例如绘制图表、执行符号运算等等。 本示例代码包括以下7个 conversation.py demo_ci.py main.py client.py demo_chat.py demo_tool.py tool_registry.py 受篇幅影响本文先解读client.py和conversation.py。 提示词及UI交互基础conversation.py 在conversation.py中处理streamlit相关以及prompt提示词处理相关的内容。使之符合本次demo的逻辑和结构。 提示词相关角色Role的处理 在之前的文章中介绍过LLM的提示词角色一般包括system、user、assistant、obervation。以下代码是例程中的条件处理 # Get the message block for the given roledef get_message(self):# Compare by value here, because the enum object in the session state# is not the same as the enum cases here, due to streamlits rerunning# behavior.match self.value:case Role.SYSTEM.value:returncase Role.USER.value:return st.chat_message(nameuser, avataruser)case Role.ASSISTANT.value:return st.chat_message(nameassistant, avatarassistant)case Role.TOOL.value:return st.chat_message(nametool, avatarassistant)case Role.INTERPRETER.value:return st.chat_message(nameinterpreter, avatarassistant)case Role.OBSERVATION.value:return st.chat_message(nameobservation, avataruser)case _:st.error(fUnexpected role: {self})对话内容字符里的提示词处理 对包含system、user、assistant、obervation等字符的处理 def preprocess_text(system: str | None,tools: list[dict] | None,history: list[Conversation], ) - str:if tools:tools json.dumps(tools, indent4, ensure_asciiFalse)prompt f{Role.SYSTEM}\nprompt system if not tools else TOOL_PROMPTif tools:tools json.loads(tools)prompt json.dumps(tools, ensure_asciiFalse)for conversation in history:prompt f{conversation}prompt f{Role.ASSISTANT}\nreturn prompt对话基础client.py 在client.py中import transformers相关接口包括AutoModel, AutoTokenizer, AutoConfigLogitsProcessorLogitsProcessorList等。 模型路径等参数设置 MODEL_PATH os.environ.get(MODEL_PATH, THUDM/chatglm3-6b) PT_PATH os.environ.get(PT_PATH, None) PRE_SEQ_LEN int(os.environ.get(PRE_SEQ_LEN, 128)) TOKENIZER_PATH os.environ.get(TOKENIZER_PATH, MODEL_PATH)创建processor并定义EOS token LogitsProcessor的作用就是在生成过程中修改score改变模型输出的概率分布的工具。 if logits_processor is None: logits_processor LogitsProcessorList() logits_processor.append(InvalidScoreLogitsProcessor()) eos_token_id [tokenizer.eos_token_id, tokenizer.get_command(|user|), tokenizer.get_command(|observation|)]定义stream_chat对话函数 此方法其实就是ChatGLM3-6B的model.stream_chat实现。不太理解为什么挪到一个demo里使用。参考 ChatGLM3/THUDM/chatglm3-6b/modeling_chatglm.py def stream_chat(self, tokenizer, query: str,history: list[tuple[str, str]] None,role: str user,past_key_valuesNone,max_new_tokens: int 256,do_sampleTrue, top_p0.8,temperature0.8,repetition_penalty1.0,length_penalty1.0, num_beams1,logits_processorNone,return_past_key_valuesFalse,**kwargs ):在该方法中调用的方法不是之前的model.chat、model.streamchat而是tokenizer.build_chat_input等更底层的方法 处理输入 if past_key_values is None:inputs tokenizer.build_chat_input(query, historyhistory, rolerole)else:inputs tokenizer.build_chat_input(query, rolerole)处理输出 for outputs in self.stream_generate(**inputs, past_key_valuespast_key_values,eos_token_ideos_token_id, return_past_key_valuesreturn_past_key_values,**gen_kwargs):if return_past_key_values:outputs, past_key_values outputsoutputs outputs.tolist()[0][len(inputs[input_ids][0]):]response tokenizer.decode(outputs)if response and response[-1] ! :new_history historyif return_past_key_values:yield response, new_history, past_key_valueselse:yield response, new_history相关参数备查 inputs (torch.Tensor of varying shape depending on the modalityoptional): 生成使用的序列或模型输入到编码器。如果None方法将它初始化为bos_token_id和一个大小为1的批次大小。对于只包含解码器的模型inputs应该以input_ids的形式输入。对于编码器-解码器模型inputs可以代表input_idsinput_valuesinput_features或pixel_values的任何一种。 generation_config (~generation.GenerationConfigoptional): 用于生成的基参数化。如果generation_config不可用则默认值将使用模型配置中的默认值。如果提供的参数与generation_config中的参数匹配则将使用这些参数。如果不提供generation_config则将使用以下加载顺序1从generation_config.json模型文件中获取2从模型配置中获取。请注意未指定的参数将继承~generation.GenerationConfig的默认值其文档应该用于参数化生成。 logits_processor (LogitsProcessorListoptional): 用于补充默认logits处理器的自定义logits处理器。如果提供的logits处理器已经使用了相同的参数或生成配置则会引发错误。此功能旨在为高级用户提供便利。 stopping_criteria (StoppingCriteriaListoptional): 用于补充默认停止准则的自定义停止准则。如果提供的停止准则已经使用了相同的参数或生成配置则会引发错误。此功能旨在为高级用户提供便利。 prefix_allowed_tokens_fn (Callable[[int, torch.Tensor], List[int]]optional): 如果提供则此函数仅约束搜索到的令牌。如果未提供则不应用任何约束。此函数需要两个参数批次IDbatch_id和input_ids。它应该返回一个条件为batch_id和以前生成的令牌inputs_ids的令牌列表。此功能可用于约束带前缀的生成如自回归实体检索中所述。 synced_gpus (bool*optional默认为False): 是否继续运行循环直到最大长度需要ZeRO阶段3 kwargs 随机参数化generate_config和/或特定于模型的补充知识辅助理解上述stream_chat实现 导入模型并合并 from transformers import AutoTokenizer, AutoModel from peft import LoraConfig, PeftModel, get_peft_modeltokenizer AutoTokenizer.from_pretrained(./chatglm3-6b-base, trust_remote_codeTrue) model AutoModel.from_pretrained(./chatglm3-6b-base, trust_remote_codeTrue).half().cuda()peft_model_id ./trained_model/checkpoint-35 model PeftModel.from_pretrained(model, peft_model_id)LLM的文本续写步骤 history [] query 你是谁 role user inputs tokenizer.build_chat_input(query, historyhistory, rolerole) inputs inputs.to(cuda) eos_token_id [tokenizer.eos_token_id, tokenizer.get_command(|user|),tokenizer.get_command(|observation|)] gen_kwargs {max_length: 500, num_beams: 1, do_sample: True, top_p: 0.8,temperature: 0.8} outputs model.generate(**inputs, **gen_kwargs, eos_token_ideos_token_id) outputs outputs.tolist()[0][len(inputs[input_ids][0]):-1] response tokenizer.decode(outputs) history [] history.append({role: user, content: 你是谁}) response, history model.process_response(response, history) print(response)继续问答 query 你能干什么 role user inputs tokenizer.build_chat_input(query, historyhistory, rolerole) inputs inputs.to(cuda) outputs model.generate(**inputs, **gen_kwargs, eos_token_ideos_token_id) outputs outputs.tolist()[0][len(inputs[input_ids][0]):-1] response tokenizer.decode(outputs) history.append({role: role, content: query}) response, history model.process_response(response, history) print(response)
http://www.zqtcl.cn/news/390877/

相关文章:

  • 企业网站要怎么做wordpress w3
  • 网站备案帐号找回密码seo优化工作有哪些
  • 美橙网站建设教程网站建站系统
  • 湖北网站建设公司哪家好重庆建站模板平台
  • 青岛企业建站最新上线的手游
  • 织梦网站wap精品下载
  • 专业做包装的电商网站搜索推广图片
  • 淘客网站佣金建设怎么制作网站页面
  • 网站数据库 mysql如何构建wordpress
  • 牙克石网站建设宁波pc营销型网站制作
  • 具有营销价值好的网站深圳工程建设服务网
  • 全flash网站源码app软件开发公司员工守则
  • 曹鹏wordpress建站seo视频本溪做网站的公司
  • 提示网站有风险老电脑做网站服务器
  • 怎么做网站导航外链出入青岛最新通知今天
  • 济宁房产网站建设海外电商怎么做如何从零开始
  • 网站优化插件中国建设银采购发文网站
  • 重庆企业网站的推广电力建设集团网站
  • 长沙制作网站词条有哪些网站可以做
  • 网站 网页区别简单的网页设计作品
  • 济南做网站推广有哪些公司天津建设工程信息网官方
  • 番禺市桥网站建设有关网站建设的知识
  • 信用中国 网站 支持建设怎么做网站美工
  • 做网站怎么样引流郑州最好的妇科医院排行
  • 云软件网站建设做仓单的网站
  • 邯郸做移动网站报价注册公司流程流程图
  • linux部署wordpress福州短视频seo推荐
  • 做地推的网站做网站感觉挣不到钱啊
  • 网站建设公司哪家好 搜搜磐石网络营销网站建设免费
  • 如何改网站的内容源码买卖网站