ChatGLM3模型介绍
ChatGLM3-6B 是 ChatGLM 系列最新一代的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性:
- 更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,ChatGLM3-6B-Base 具有在 10B 以下的预训练模型中最强的性能。
- 更完整的功能支持: ChatGLM3-6B 采用了全新设计的 Prompt 格式,除正常的多轮对话外。同时原生支持工具调用(Function Call)、代码执行(Code Interpreter)和 Agent 任务等复杂场景。
- 更全面的开源序列: 除了对话模型 ChatGLM3-6B 外,还开源了基础模型 ChatGLM-6B-Base、长文本对话模型 ChatGLM3-6B-32K。以上所有权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用。
本地部署ChatGLM3模型
使用chatglm.cpp部署模型
下载chatglm.cpp
git clone --recursive https://github.com/li-plus/chatglm.cpp.git && cd chatglm.cpp
编译chatglm.cpp
cmake -B build
cmake --build build -j 16 --config Release
下载chatglm3-6b模型文件
当前chatglm3是开源的最高版本。我们可以选择从huggingface或openi下载模型
从huggingface下载
安装huggingface:
pip install -U huggingface_hub
下载模型
创建models目录,到目录里下载chatglm3-6b模型到chatglm3目录里。命令:
huggingface-cli download --resume-download THUDM/chatglm3-6b --local-dir chatglm3
使用openi下载模型
首先安装库:pip install openi
然后登录账户:
openi login
按照提示输入token 。token可以从openi官网应用栏目创建。 Sign In - OpenI - 启智AI开源社区提供普惠算力!
登录之后,就可以使用openi命令下载模型了
openi model download -r Zhipu.AI/ChatGLM3 -m chatglm3-6b -p chatglm3-6b
转换模型文件到ggml
先安装需要的库
python3 -m pip install -U pip
python3 -m pip install tabulate tqdm transformers accelerate sentencepiece
# pip install sentencepiece
转换模型还需要安装torch,这个可以到官网获取安装命令,这里就不具体说明了。
开始转换:
# cd chatglm.cpp
python3 chatglm_cpp/convert.py -i ~/models/chatglm3-6b -t q4_0 -o ~/models/chatglm3-6b/chatglm3-ggml.bin
部署完成的测试
执行下面命令:
./build/bin/main -m ~/models/chatglm3-6b/chatglm3-ggml.bin -p 你好,最好的大模型是哪一款?
看这个回答,情商不错啊
./build/bin/main -m ~/models/chatglm3-6b/chatglm3-ggml.bin -p 你好,最好的大模型是哪一 款?您好!关于“最好的大模型”,这其实是一个因应用场景而异的问题。在不同的领域和任务中,最适合的大模型可能有所不同。在自然语言处理领域,清华大学 KEG 实验室和智谱 AI 共同训练的 GLM3-6B 模型在许多 NLP 任务中表现优秀。在计算机视觉领域,OpenAI 的 DALL-E 和特斯拉的 GPT-3 都是目前表现出众的大模型。在音频处理领域,Google 的 Wavenet 和 Facebook 的 GLA 的表现较好。因此,要确定哪一款大模型是“最好的”,需要根据您的具体需求和应用场景来判断。
实战ChatGLM3
与ChatGLM3交互
./build/bin/main -m ~/models/chatglm3-6b/chatglm3-ggml.bin -i
效果还是不错的:
./build/bin/main -m ~/models/chatglm3-6b/chatglm3-ggml.bin -i________ __ ________ __ ___ / ____/ /_ ____ _/ /_/ ____/ / / |/ /_________ ____ / / / __ \/ __ `/ __/ / __/ / / /|_/ // ___/ __ \/ __ \ / /___/ / / / /_/ / /_/ /_/ / /___/ / / // /__/ /_/ / /_/ / \____/_/ /_/\__,_/\__/\____/_____/_/ /_(_)___/ .___/ .___/ /_/ /_/ Welcome to ChatGLM.cpp! Ask whatever you want. Type 'clear' to clear context. Type 'stop' to exit.Prompt > 你好
ChatGLM3 > 你好👋!我是人工智能助手 ChatGLM3-6B,很高兴见到你,欢迎问我任何问题。
Prompt > 如果小朋友一直刷手机,应该怎么引导?
ChatGLM3 > 小朋友一直刷手机可能会对他们的身心健康和发展产生负面影响。以下是一些建议,可以帮助引导孩子减少手机使用时间:1. 设定规则:家长可以和孩子一起制定一些规则,例如在规定的时间内使用手机,例如晚餐后、睡觉前。严格遵守这些规则可以帮助孩子养成良好的习惯。2. 互动交流:家长可以和孩子一起进行其他活动,例如阅读、玩游戏或进行户外活动等,以减少孩子对手机的依赖。3. 激发兴趣:家长可以鼓励孩子培养其他兴趣爱好,例如绘画、音乐、运动等,这样孩子可以更有效地利用时间,而不是一直在手机上。4. 教育应用:家长可以和孩子一起学习如何使用手机,例如使用教育应用、导航等,让孩子更加积极地使用手机。5. 关注孩子的情绪:孩子过度使用手机可能是因为他们感到无聊、孤独或其他情绪问题。家长可以关注孩子的情绪,尝试了解他们的需求,并帮助他们应对这些情绪问题。6. 做出榜样:家长是孩子的榜样,因此家长的行为会对孩子产生影响。家长可以减少自己的手机使用时间,并和孩子一起度过更多 quality time。总之,家长可以通过制定规则、互动交流、激发兴趣、教育应用、关注情绪和做出榜样等方式,引导孩子减少手机使用时间,并帮助他们养成良好的习惯。
Prompt > 如何用大模型做一个有趣的项目?
ChatGLM3 > 用大模型做一个有趣的项目可以参考以下步骤:1. 确定项目目标:首先确定项目的目标和主题,例如你想用大模型制作一个对话机器人、一个文本生成器或者一个图像生成器等。2. 收集数据:根据项目目标,收集相关的数据,例如文本数据、图像数据、语音数据等。3. 数据预处理:对收集的数据进行预处理,例如清洗、标注、归一化等,以便于大模型进行处理。4. 选择大模型:根据项目需求,选择合适的大模型,例如ChatGPT、ChatGLM、LLaMA等。5. 训练模型:使用收集的数据对大模型进行训练,并根据项目需求进行优化和调整。6. 测试模型:在模型训练完成后,进行测试和评估,以确保模型的性能和质量符合预期。7. 应用和展示:将训练好的模型应用到项目中,例如构建一个对话机器人或者一个文本生成器,并进行展示和分享。总之,用大模型做一个有趣的项目需要首先确定项目目标,然后收集数据,进行数据预处理,选择大模型进行训练,测试模型并进行应用和展示。
Prompt >
当然还有我们著名的打鸟的脑筋急转弯:
Prompt > 树上8只鸟,打死3只,还有几只?
ChatGLM3 > 如果树上有8只鸟,打死3只后,树上将剩下5只鸟。
Prompt > 再想想
ChatGLM3 > 非常抱歉,我的回答有误。如果树上有8只鸟,打死3只后,树上将剩下0只鸟。
调式
Huggingface下载模型慢,使用镜像:
HF-Mirror - Huggingface 镜像站
即使用了镜像,还是慢。解决方法:从openi网站OpenI - 启智AI开源社区提供普惠算力!下模型。可以用浏览器下载,也可以用python或命令行来下载。
openi下载报错
FileNotFoundError: ❌ 本机尚未登录OpenI,请参考 https://openi.pcl.ac.cn/docs/index.html#/api/cli/login.
使用openi login 登录,后面输入token即可。
具体见openi官网:OpenI
chatglm.cpp转换模型报错
File "/home/skywalk/github/chatglm.cpp/chatglm_cpp/convert.py", line 577, in main
with open(args.save_path, "wb") as f:
FileNotFoundError: [Errno 2] No such file or directory: '/home/skywalk/models/chatglm3/chatglm3-ggml.bin'
是因为没有那个目录,换成chatglme3-6b目录。后来发现是硬盘空间不够了,清理出足够硬盘空间,搞定。