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

玩转大模型(二)启动一个大模型

写这篇文章是几个月前了,现在模型和框架已经更新了好几轮了,但不影响吧,后面会把这几个月的发展专门用一篇文章补上。

在上一篇中,硬件全都准备好了,软件也已经安装完成,相应的配置都已经做完,终于要开始使用大模型了,后面这些天,我们会从最最基础的开始,一步一步来玩转大模型,目前各种各样的傻瓜教程都已经很多了,不管是本地模型部署还是API形式调用openAI,都有很多教程,从大模型的部署,使用,langchain使用,微调模型等等方方面面,都有很多教程,也有以一个例子,比如如何做一个自己的私人知识库这种来讲解大模型的。

既然已经有了硬件和软件,那么我们也来整一个开胃菜吧,首先,不管怎么样,先得跑起来一个大模型吧,然后和他对对话之类的,也算对大模型的使用有个初步的了解吧,OK,啥也不说了,开始干。

选择模型

在模型的选择上,我们没有选llama这种最流行的,一是它比较大,难以下载,二是不是一般人的电脑都能跑起来的,三是原生的llama不支持中文,还需要找已经完成中文微调的模型。所以,为了简便,我们选择清华大学的ChatGLM2-6B这个模型,顾名思义,他有60亿个参数,用来玩已经足够了。

首先,找到模型所在的位置:

  • huggingface : huggingface.co/THUDM/chatg…

直接git clone 下来就好,没有必要安装git lfs,因为huggingface的速度实在是太慢了,使用git把这个十几GB的模型拖下来太慢了,有两种方式,一是找到模型地址使用迅雷下载,再覆盖掉。 image.png 另外,也可以到这里cloud.tsinghua.edu.cn/d/674208019… 来下载,这是清华的官网,速度会快很多,也可以使用迅雷。

全部下下来以后,我们的目录大概长这样子,红框部分是单独下下来的文件: image.png 好了,代码已经准备好了,接下来就可以开始尝试加载模型了。

加载模型

准备工作

使用conda命令,新建一个python环境,来专门做chatGLM的加载和使用

conda create -c glm conda activate glm

查看一下python版本,如果此环境中没有python,可以使用conda安装一个,默认会安装一个3.11.X的版本

conda install python

接下来,需要安装必要的包,在huggingface上已经写明了需要哪些包

pip3 install protobuf transformers==4.30.2 cpm_kernels torch>=2.0 gradio mdtex2html sentencepiece accelerate

实际上这些包中transformers和torch我们已经安装好了,只需要安装其他的对应包就可以了。

代码编写

代码编写相对比较简单,由于transformers非常好的封装性,我们只需要几行代码就可以完成模型的加载

from transformers import AutoTokenizer, AutoModel

# 加载分词器
tokenizer = AutoTokenizer.from_pretrained("/your/path/chatglm2-6b", trust_remote_code=True)
# 加载模型,注意最后调用的to()方法
# 如果你有显卡那么可以写.to("cuda")
# 如果只有CPU的话,写flaot()
# 如果是mac的m1/m2芯片的话,写to("mps"),我的就是这种情况
model = AutoModel.from_pretrained("/your/path/chatglm2-6b", trust_remote_code=True).half().to('mps')
# 执行模型
model = model.eval()

这里简单说一下第二行: 我这里是.to(‘mps’) 表示我使用的是mac的m芯片,如果你有nv显卡的话,这里可以改成.cuda(),如果你只有CPU的话,可以改成.float() 经过几秒钟的加载,完成了,完成以后就可以开始推理对话了 image.png

推理对话

推理对话也非常简单,两行的事:

response, history = model.chat(tokenizer, "你好", history=[])
print(response)


其中history是对话历史,每次对话都会返回一个history,可以放到下一次对话中变成整个对话的上下文,避免chatGLM自己跑题了。response就是chatGLM的回复了。 image.png 好了,至此大模型已经完成加载完了并且你也可以和他进行对话了,是不是非常简单,其实只要你机器资源够(如果有显卡的话最好,显存至少需要8GB,没有显卡也没关系,只要你的内存足够大,最好32GB以上),那么很轻松就可以加载出来,然后就可以愉快的和他玩耍了。

干点别的?

既然大模型已经加载上了并且可以进行对话了,那么接下来我们就可以根据已有的能力在上面添砖加瓦了,比如:

  • 建立一个web服务器,可以在网页上和他对话了
  • 对接到微信公众号或者钉钉机器人上,就可以在微信上和他聊天了
  • 按照LangChain框架,可以给他加上向量搜索和上下文提示,完成更为强大的功能,甚至通过插件方式让他具备联网能力,就可以回答一些实时的问题了

这里,我用他给我女儿写了一篇暑假作业。。。 image.png 总的来说,还行吧,自己再润色润色,修改修改也可以交了,你也可以试试别的,我觉得虽然说没有chatGPT3.5或者chatGPT4那么惊艳,但一般的废话文学也差不多够了,毕竟免费的,还要啥自行车。

尾声

今天通过简单的几行代码,就加载了一个大模型并且还用他为女儿写了个暑假作业,整体感觉非常简单,现在写代码已经完全不像之前了,很多东西前人都帮你搞好了,你只要像搭积木一样搭起来就可以了,这是程序员的幸福还是悲哀呢?



http://www.kler.cn/news/356702.html

相关文章:

  • 怎样将pdf转换成ppt?关于几种PDF转PPT的方法介绍
  • web端使用高德地图逆地理编码
  • GOT-OCR-2-GUI - 一个强大的AI文本识别模型 OCR文字识别 图片文字识别 本地一键整合包下载
  • 【ROS2实操五】通信机制补充
  • 2024年诺贝尔物理学奖揭晓:AI背后的“造梦者”是谁?
  • Thread的基本用法
  • MySQL 中utfmb3和utfmb4字符集区别
  • 算法——python实现归并排序
  • 中小型企业网络的设计与实现
  • 基于语音识别的停车共享小程序(lw+演示+源码+运行)
  • 桂林旅游助手:一个SpringBoot开发的平台
  • 【JavaEE】——四次挥手,TCP状态转换,滑动窗口,流量控制
  • URP学习四
  • 关于串口中断时的一些问题
  • “一篇长文教你进行全方位的使用appium“
  • 使用开源的 Vue 移动端表单设计器创建表单
  • Flink Kubernetes Operator
  • 【实战指南】Vue.js 介绍组件数据绑定路由构建高效前端应用
  • JDK 1.5主要特性
  • v-model双向绑定组件通信