当前位置:   article > 正文

通义千问的快速开始(其他模型也一样,具体看模型github)_通千问义如何学习git链接

通千问义如何学习git链接
  1. from modelscope import AutoModelForCausalLM, AutoTokenizer
  2. from modelscope import GenerationConfig
  3. from transformers import set_seed
  4. def _get_input() -> str:
  5. while True:
  6. try:
  7. message = input('用户 > ').strip()
  8. except UnicodeDecodeError: # 输入包含无法解码的字符
  9. print('[ERROR] Encoding error in input')
  10. continue
  11. except KeyboardInterrupt: # 按下 Ctrl+C 导致 KeyboardInterrupt 异常
  12. exit(1)
  13. if message: # Not NULL
  14. return message
  15. print('[ERROR] Query is empty')
  16. # 加载预训练模型的tokenizer
  17. tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen-1_8B-Chat", revision='master',trust_remote_code=True)
  18. # 加载预训练的模型Qwen 1.8B
  19. model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-1_8B-Chat",device_map="auto",trust_remote_code=True).eval()
  20. # 从预训练模型“Qwen/Qwen-1_8B-Chat”加载生成任务的配置信息,如最大生成长度、温度控制、top_k采样等
  21. config = GenerationConfig.from_pretrained("Qwen/Qwen-1_8B-Chat", trust_remote_code=True, resume_download=True,)
  22. history, response = [], ''
  23. while True:
  24. query = _get_input()
  25. '''
  26. 可实现输入的功能:
  27. :help / :h Show this help message 显示帮助信息
  28. :exit / :quit / :q Exit the demo 退出Demo
  29. :clear / :cl Clear screen 清屏
  30. :clear-his / :clh Clear history 清除对话历史
  31. :history / :his Show history 显示对话历史
  32. :seed Show current random seed 显示当前随机种子
  33. :seed <N> Set random seed to <N> 设置随机种子
  34. :conf Show current generation config 显示生成配置
  35. :conf <key>=<value> Change generation config 修改生成配置
  36. :reset-conf Reset generation config 重置生成配置
  37. '''
  38. # Run
  39. seed = 1234
  40. set_seed(seed)
  41. # 可以选择或
  42. """
  43. TextIteratorStreamer实现流式输出模块
  44. ...
  45. TextStreamer实现流式输出模块
  46. ...
  47. """
  48. for response in model.chat_stream(tokenizer,query,history=history,generation_config=config):
  49. print(f"\n用户:{query}")
  50. print(f"\n千问:{response}")
  51. history.append((query,response))

代码模块解析

  1. tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen-1_8B-Chat", revision='master',trust_remote_code=True)

    这行代码从Hugging Face Model Hub加载指定的预训练模型“Qwen/Qwen-1_8B-Chat”的tokenizerAutoTokenizer是一个自动下载和初始化相应预训练模型所需tokenizer类的工具。这里的revision='master'表示使用仓库的主分支版本。trust_remote_code=True表示允许执行远程代码(在某些情况下,模型或tokenizer可能包含额外的自定义逻辑)。

  2. model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-1_8B-Chat", device_map="auto", trust_remote_code=True).eval() 这行代码加载了与上述tokenizer配套的预训练模型,该模型是为因果语言建模任务准备的(即可以用于聊天、文本生成等)。AutoModelForCausalLM会根据模型类型自动选择合适的模型类。device_map="auto"意味着它将根据当前环境自动选择GPU/CPU进行模型设备分配。同样地,trust_remote_code=True表明允许执行远程代码.eval()方法将模型设置为评估模式,这意味着模型在后续计算中不会进行反向传播更新权重。

  3. config = GenerationConfig.from_pretrained("Qwen/Qwen-1_8B-Chat", trust_remote_code=True, resume_download=True) 这行代码尝试从预训练模型“Qwen/Qwen-1_8B-Chat”加载生成任务的配置信息,如最大生成长度、温度控制、top_k采样等。resume_download=True表示在下载过程中遇到问题时能够从中断的地方继续下载。

  4. model.chat()返回模型的回答信息并输出,由于是一个一个字返回的,可以选择流式输出,这样反馈好点。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/357416
推荐阅读
相关标签
  

闽ICP备14008679号