开源模子应用落地-chatglm3-6b模子小试-入门篇(三)

张裕  金牌会员 | 2024-10-17 03:58:47 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 571|帖子 571|积分 1713

    一、前言

     刚开始打仗AI时,您大概会感到困惑,因为面临众多开源模子的选择,不知道应该选择哪个模子,也不知道如何调用最基本的模子。但是不消担心,我将伴随您一起逐步入门,解决这些标题。
     在信息期间,我们可以轻松地通过互联网获取大量的理论知识和概念。然而,仅仅把握理论知识并不能真正资助我们发展和进步。实践是将理论知识转化为现实技能和经验的关键。
    本章将学习如何在低本钱下,利用transformer设置chatglm3-6b模子参数/System Prompt/历史对话
    qwen模子教程入口:
开源模子应用落地-qwen模子小试-入门篇(三)
    baichuan模子教程入口:
开源模子应用落地-baichuan2模子小试-入门篇(三)

二、术语

2.1. CentOS

    CentOS是一种基于Linux的自由开源操作系统。它是从Red Hat Enterprise Linux(RHEL)衍生出来的,因此与RHEL具有高度的兼容性。CentOS的目标是提供一个稳定、可靠且免费的企业级操作系统,适用于服务器和桌面环境。
2.2. GPU

    是Graphics Processing Unit(图形处理单元)的缩写。它是一种专门设计用于处理图形和图像计算的处理器。与传统的中心处理器(CPU)相比,GPU具有更高的并行计算本领,适用于处理大规模数据并进行复杂的计算任务。

三、前置条件

3.1. linux操作系统

3.2. 下载chatglm3-6b模子

从huggingface下载:https://huggingface.co/THUDM/chatglm3-6b/tree/main


从魔搭下载:魔搭社区汇聚各范畴最先辈的机器学习模子,提供模子探索体验、推理、练习、部署和应用的一站式服务。https://www.modelscope.cn/models/ZhipuAI/chatglm3-6b/fileshttps://www.modelscope.cn/models/ZhipuAI/chatglm3-6b/files

 3.3. 创建虚拟环境&安装依赖

  1. conda create --name chatglm3 python=3.10
  2. conda activate chatglm3
  3. pip install protobuf transformers==4.39.3 cpm_kernels torch>=2.0 sentencepiece accelerate
  4. pip install modelscope
复制代码

四、技能实现

4.1. 利用transformers方式

  1. # -*-  coding = utf-8 -*-
  2. from transformers import AutoTokenizer, AutoModelForCausalLM
  3. import time
  4. import traceback
  5. modelPath = "/model/chatglm3-6b"
  6. def chat(model, tokenizer, message, history, system):
  7.     messages = []
  8.     if system is not None:
  9.         messages.append({"role": "system", "content": system})
  10.     if history is not None:
  11.         for his in history:
  12.             user,assistant = his
  13.             messages.append({"role": "user", "content": user})
  14.             messages.append({"role": "assistant", 'metadata': '', "content": assistant})
  15.     try:
  16.         for response in model.stream_chat(tokenizer,message, messages,  max_length=512, top_p=0.9, temperature=0.45, repetition_penalty=1.1,do_sample=True):
  17.             _answer,_history = response
  18.             yield _answer
  19.     except Exception:
  20.         traceback.print_exc()
  21. def loadTokenizer():
  22.     tokenizer = AutoTokenizer.from_pretrained(modelPath, use_fast=False, trust_remote_code=True)
  23.     return tokenizer
  24. def loadModel():
  25.     model = AutoModelForCausalLM.from_pretrained(modelPath, device_map="auto",  trust_remote_code=True).cuda()
  26.     model = model.eval()
  27.     # print(model)
  28.     return model
  29. if __name__ == '__main__':
  30.     model = loadModel()
  31.     tokenizer = loadTokenizer()
  32.     start_time = time.time()
  33.     message = "我家有什么好玩?"
  34.     history = [('hi,你好', '你好!有什么我可以帮助你的吗?'), ('我家在广州,很好玩哦', '广州是一个美丽的城市,有很多有趣的地方可以去。'), ]
  35.     system = "你是一个人工智能助手,擅长解决人类的问题"
  36.     response = chat(model, tokenizer, message,history,system)
  37.     for answer in response:
  38.         print(answer)
  39.     end_time = time.time()
  40.     print("执行耗时: {:.2f}秒".format(end_time - start_time))
复制代码
调用效果:


4.2. 利用modelscope方式

把AutoModelForCausalLM, AutoTokenizer改为从modelscope导入即可

调用输出

注意:需要安装modelscope库

五、附带说明

5.1. 上下文长度限制

chatglm3-6b的Seq Length只有8k,需要更长文本理解本领的,需要利用对应的模子



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张裕

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表