当前位置:   article > 正文

开源模型应用落地-qwen模型小试-入门篇(一)_qwen model.chat_stream

qwen model.chat_stream

一、前言

     刚开始接触AI时,您可能会感到困惑,因为面对众多开源模型的选择,不知道应该选择哪个模型,也不知道如何调用最基本的模型。但是不用担心,我将陪伴您一起逐步入门,解决这些问题。

     在信息时代,我们可以轻松地通过互联网获取大量的理论知识和概念。然而,仅仅掌握理论知识并不能真正帮助我们成长和进步。实践是将理论知识转化为实际技能和经验的关键。


二、术语

2.1. Hugging Face

    是一个知名的开源社区和平台,专注于自然语言处理(NLP)技术和人工智能模型的开发和共享。该社区致力于提供易于使用的工具和资源,帮助研究人员、开发者和数据科学家在NLP领域进行创新和应用。

   Hugging Face最著名的贡献是其开源软件库,其中包括了许多流行的NLP模型的实现和预训练模型的集合,如BERT、GPT、RoBERTa等。这些模型在各种NLP任务,如文本分类、命名实体识别、情感分析等方面取得了很好的表现,并被广泛应用于学术界和工业界。

2.2. Transformers

    Hugging Face的Transformer是一个流行的开源Python库,用于自然语言处理(NLP)任务和模型开发。它提供了一系列易于使用的API和工具,用于加载、训练和部署各种预训练的NLP模型,如BERT、GPT、RoBERTa等。

2.3. ModelScope魔搭社区

    旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单。

2.4. Qwen

    是一个全能的语言模型系列,包含各种参数量的模型,如Qwen(基础预训练语言模型,即基座模型)和Qwen-Chat(聊天模型,该模型采用人类对齐技术进行微调)。


三、前置条件

3.1. windows操作系统

3.2. 下载Qwen-1_8B-Chat模型

从huggingface下载:https://huggingface.co/Qwen/Qwen-1_8B-Chat/tree/main

从魔搭下载:https://modelscope.cn/models/qwen/Qwen-1_8B-Chat/files


四、技术实现

4.1. 本地推理

#Tokenizer加载

  1. def loadTokenizer():
  2. tokenizer = AutoTokenizer.from_pretrained(modelPath, trust_remote_code=True)
  3. return tokenizer

#Model加载

  1. def loadModel():
  2. model = AutoModelForCausalLM.from_pretrained(modelPath, device_map="cpu", trust_remote_code=True).eval()
  3. return model

#直接调用

  1. def generate(model,tokenizer,message):
  2. try:
  3. inputs = tokenizer(message, return_tensors='pt')
  4. pred = model.generate(**inputs)
  5. return tokenizer.decode(pred.cpu()[0], skip_special_tokens=True)
  6. except Exception:
  7. traceback.print_exc()

执行结果如下:

#流式调用

  1. def chat(model,tokenizer,message):
  2. position = 0
  3. result = []
  4. try:
  5. for response in model.chat_stream(tokenizer, message, system='你是一个乐于助人的助手,为人类解决各种问题。',history=None):
  6. result.append(response[position:])
  7. position = len(response)
  8. yield "".join(result)
  9. except Exception:
  10. traceback.print_exc()

执行结果如下:

4.2. 完整代码

  1. import traceback
  2. from transformers import AutoTokenizer, AutoModelForCausalLM
  3. import time
  4. modelPath = "E:\\pycharm\\gpt\\model\\qwen-1_8b-chat"
  5. def chat(model,tokenizer,message):
  6. position = 0
  7. result = []
  8. try:
  9. for response in model.chat_stream(tokenizer, message ,history=None):
  10. result.append(response[position:])
  11. position = len(response)
  12. yield "".join(result)
  13. except Exception:
  14. traceback.print_exc()
  15. def generate(model,tokenizer,message):
  16. try:
  17. inputs = tokenizer(message, return_tensors='pt')
  18. pred = model.generate(**inputs)
  19. return tokenizer.decode(pred.cpu()[0], skip_special_tokens=True)
  20. except Exception:
  21. traceback.print_exc()
  22. def loadTokenizer():
  23. tokenizer = AutoTokenizer.from_pretrained(modelPath, trust_remote_code=True)
  24. return tokenizer
  25. def loadModel():
  26. model = AutoModelForCausalLM.from_pretrained(modelPath, device_map="cpu", trust_remote_code=True).eval()
  27. return model
  28. if __name__ == '__main__':
  29. model = loadModel()
  30. tokenizer = loadTokenizer()
  31. start_time = time.time()
  32. message = "广东的省会是哪里?"
  33. response = generate(model,tokenizer,message)
  34. print(response)
  35. response = chat(model,tokenizer,message)
  36. for r in response:
  37. print(r)
  38. end_time = time.time()
  39. print("执行耗时: {:.2f}秒".format(end_time-start_time))

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

闽ICP备14008679号