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

手把手教学:如何在本地运行ChatGLM3-6B对话模型

手把手教学如何在本地运行ChatGLM3-6B对话模型1. 项目简介你是否曾经遇到过这样的情况想用AI助手帮忙写代码、分析文档或者只是聊聊天但云端服务要么响应慢要么担心隐私泄露今天我要介绍的ChatGLM3-6B本地部署方案正好能解决这些问题。这个项目基于智谱AI开源的ChatGLM3-6B-32k模型我用Streamlit框架做了全新重构在你的本地电脑上打造了一个真正零延迟、高稳定的智能对话系统。不同于那些需要联网的云端服务这个方案完全在本地运行你的所有对话内容都不会离开你的电脑。最棒的是即使你只有一张RTX 4090D显卡也能流畅运行这个拥有32k超长上下文记忆的AI大脑。无论是写代码、分析长文档还是日常聊天它都能秒级响应而且彻底解决了常见的组件版本冲突问题。2. 环境准备与安装2.1 硬件要求要顺利运行ChatGLM3-6B你的电脑需要满足以下配置显卡至少RTX 4090D或同等级别的显卡显存建议12GB以上内存32GB或更多确保系统运行流畅存储空间至少20GB可用空间用于存放模型文件操作系统Windows 10/11或Linux系统都可以如果你不确定自己的显卡是否够用可以打开任务管理器查看显卡型号和显存大小。一般来说近三年购买的主流游戏显卡都能胜任。2.2 软件环境搭建首先我们需要安装必要的软件环境。推荐使用Anaconda来管理Python环境这样可以避免版本冲突。打开命令行工具依次执行以下命令# 创建新的Python环境 conda create -n chatglm python3.10 # 激活环境 conda activate chatglm # 安装核心依赖 pip install transformers4.40.2 pip install streamlit pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118这里特别指定了transformers的4.40.2版本这是经过测试最稳定的版本能避免很多兼容性问题。3. 模型下载与配置3.1 获取模型文件ChatGLM3-6B模型文件比较大大约需要12GB空间。你可以通过以下方式获取from transformers import AutoModel, AutoTokenizer # 自动下载模型需要稳定网络连接 model_name THUDM/chatglm3-6b-32k tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) model AutoModel.from_pretrained(model_name, trust_remote_codeTrue).half().cuda()如果网络不稳定也可以手动下载模型文件访问Hugging Face模型库搜索THUDM/chatglm3-6b-32k下载所有文件到本地目录修改代码指定本地路径3.2 模型初始化配置下载完成后我们需要对模型进行初始化设置# 模型配置 model model.eval() # 设置为评估模式 # 如果你遇到显存不足的问题可以尝试量化 # model model.quantize(8).cuda() # 8-bit量化 print(模型加载完成准备就绪)4. Streamlit界面开发4.1 基础界面搭建现在我们来创建主要的聊天界面。新建一个app.py文件写入以下代码import streamlit as st import torch from transformers import AutoModel, AutoTokenizer # 设置页面标题 st.set_page_config( page_titleChatGLM3-6B本地助手, page_icon, layoutwide ) # 初始化session状态 if messages not in st.session_state: st.session_state.messages [] if model_loaded not in st.session_state: st.session_state.model_loaded False4.2 实现模型加载与缓存使用Streamlit的缓存功能让模型只需要加载一次st.cache_resource def load_model(): 加载模型并缓存避免重复加载 try: tokenizer AutoTokenizer.from_pretrained( THUDM/chatglm3-6b-32k, trust_remote_codeTrue ) model AutoModel.from_pretrained( THUDM/chatglm3-6b-32k, trust_remote_codeTrue ).half().cuda() return model, tokenizer except Exception as e: st.error(f模型加载失败: {str(e)}) return None, None # 在侧边栏添加加载按钮 with st.sidebar: if st.button( 加载模型, typeprimary): with st.spinner(正在加载模型请稍候...): model, tokenizer load_model() if model is not None: st.session_state.model_loaded True st.success(模型加载成功)4.3 创建聊天界面现在实现主要的聊天功能# 显示聊天历史 for message in st.session_state.messages: with st.chat_message(message[role]): st.markdown(message[content]) # 用户输入 if prompt : st.chat_input(请输入您的问题...): # 添加用户消息到历史 st.session_state.messages.append({role: user, content: prompt}) with st.chat_message(user): st.markdown(prompt) # 生成AI回复 if st.session_state.model_loaded: with st.chat_message(assistant): message_placeholder st.empty() full_response # 流式输出 for response in model.stream_chat( tokenizer, prompt, historyst.session_state.messages[:-1], max_length32768 # 使用32k上下文 ): full_response response[0] message_placeholder.markdown(full_response ▌) message_placeholder.markdown(full_response) st.session_state.messages.append({role: assistant, content: full_response}) else: st.warning(请先加载模型再开始聊天)5. 运行与使用5.1 启动应用一切准备就绪后在命令行中运行streamlit run app.py你会看到类似这样的输出You can now view your Streamlit app in your browser. Local URL: http://localhost:8501 Network URL: http://192.168.1.100:8501在浏览器中打开http://localhost:8501就能看到聊天界面了。5.2 开始对话现在你可以尝试各种对话技术问答用Python写一个快速排序算法文档分析粘贴长篇文章让它总结要点代码帮助帮我调试这段代码的错误创意写作写一个关于太空探险的短故事模型支持32k上下文意味着你可以进行很长的对话它都能记住之前的聊天内容。6. 常见问题解决6.1 显存不足问题如果你遇到显存不足的错误可以尝试以下解决方案# 方法1使用8-bit量化 model model.quantize(8).cuda() # 方法2使用4-bit量化需要更多依赖 # pip install bitsandbytes # model model.quantize(4).cuda() # 方法3使用CPU模式速度会慢很多 # model AutoModel.from_pretrained(THUDM/chatglm3-6b-32k, trust_remote_codeTrue).float()6.2 性能优化建议为了让对话更加流畅你可以关闭不必要的应用程序释放更多显存调整批量大小如果处理长文本可以分批次使用最新的显卡驱动确保最佳性能定期清理对话历史避免内存占用过多7. 进阶功能扩展7.1 添加文件上传功能让AI能够分析你上传的文档uploaded_file st.file_uploader(上传文档, type[txt, pdf, docx]) if uploaded_file is not None: # 读取文件内容 text uploaded_file.getvalue().decode(utf-8) st.session_state.messages.append({role: user, content: f请分析以下文档{text}})7.2 实现对话导出添加导出聊天记录的功能if st.sidebar.button( 导出对话记录): chat_text \n.join([f{m[role]}: {m[content]} for m in st.session_state.messages]) st.sidebar.download_button( 下载对话记录, chat_text, file_namechat_history.txt )8. 总结通过这个教程你已经成功在本地部署了ChatGLM3-6B对话模型。这个方案最大的优势就是完全在本地运行不需要担心隐私问题而且响应速度极快。关键要点回顾使用Streamlit构建了轻量级聊天界面通过缓存技术实现模型一次加载多次使用支持32k超长上下文适合处理长文档完全本地运行保障数据隐私安全下一步建议尝试不同的提示词技巧获得更好的回复质量探索模型的其他能力比如代码生成、文档分析等考虑添加更多实用功能比如对话模板、预设提示词等现在你已经拥有了一个强大的本地AI助手尽情探索它的能力吧无论是工作还是学习它都能成为你的得力助手。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

手把手教学:如何在本地运行ChatGLM3-6B对话模型

手把手教学:如何在本地运行ChatGLM3-6B对话模型 1. 项目简介 你是否曾经遇到过这样的情况:想用AI助手帮忙写代码、分析文档或者只是聊聊天,但云端服务要么响应慢,要么担心隐私泄露?今天我要介绍的ChatGLM3-6B本地部署…...

抖音弹幕抓取终极指南:3分钟掌握系统代理抓包技术

抖音弹幕抓取终极指南:3分钟掌握系统代理抓包技术 【免费下载链接】DouyinBarrageGrab 基于系统代理的抖音弹幕wss抓取程序,能够获取所有数据来源,包括chrome,抖音直播伴侣等,可进行进程过滤 项目地址: https://gitc…...

文脉定序系统压力测试与性能监控方案

文脉定序系统压力测试与性能监控方案 最近不少朋友在部署完文脉定序系统后,都会来问我同一个问题:“服务上线了,心里还是没底,怎么知道它能扛住多少用户同时访问?平时运行稳不稳定?” 这确实是个很实际的问…...

【PyCon 2024闭门报告首发】:基于237个微基准测试的Python 3.14 JIT编译策略矩阵分析

第一章:PyCon 2024闭门报告核心结论与JIT演进全景核心共识:CPython JIT不再追求“全量即时编译” PyCon 2024闭门技术委员会明确指出,CPython 3.13 的JIT策略已从早期“通用LLVM后端”转向聚焦于“热点字节码的增量式优化”。其目标并非替代C…...

WaveTools终极指南:免费解锁《鸣潮》流畅体验的完整解决方案

WaveTools终极指南:免费解锁《鸣潮》流畅体验的完整解决方案 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 还在为《鸣潮》游戏卡顿、帧率不稳而烦恼吗?WaveTools鸣潮工具箱为你带…...

GetQzonehistory:终极QQ空间说说备份完整指南

GetQzonehistory:终极QQ空间说说备份完整指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字记忆时代,QQ空间承载了无数人的青春回忆。那些年发的说说、分…...

Excel 修改单元格值的内核操作原理

你现在直接看穿了 Excel 的底层本质!你说的 100% 正确!而且是最底层、最硬核、最真实的原理!我给你用最直白、最硬核、程序员视角完整还原一遍,你马上彻底通透:🔥 终极结论(你说的完全对&#x…...

OpenCV图像拼接避坑指南:为什么你的特征点总是匹配失败?

OpenCV图像拼接避坑指南:为什么你的特征点总是匹配失败? 当你第一次尝试用OpenCV实现图像拼接时,可能会遇到一个令人沮丧的问题:明明按照教程一步步操作,特征点匹配的结果却惨不忍睹。要么匹配点对寥寥无几&#xff0c…...

FreeCAD:重塑设计自由的5大能力 - 创造者的开源3D建模指南

FreeCAD:重塑设计自由的5大能力 - 创造者的开源3D建模指南 【免费下载链接】FreeCAD This is the official source code of FreeCAD, a free and opensource multiplatform 3D parametric modeler. 项目地址: https://gitcode.com/GitHub_Trending/fr/freecad …...

Python多解释器不是“未来技术”——它已在金融高频交易系统稳定运行417天(附完整监控看板截图)

第一章:Python多解释器的核心机制与历史演进Python长期以来以全局解释器锁(GIL)为标志性设计,单解释器模型主导了其执行范式。然而,随着多核硬件普及与异步编程兴起,对真正并行执行、内存隔离及轻量级运行时…...

解密ARM多核调度:从Linux内核源码看SMP负载均衡如何玩转Cortex-A系列

ARM多核调度实战:从Linux内核视角剖析SMP负载均衡的艺术 在移动计算和嵌入式系统领域,ARM架构凭借其出色的能效比已经占据了主导地位。随着Cortex-A系列处理器核心数量的不断增加,如何高效地管理这些计算资源成为系统性能优化的关键。本文将带…...

Qwen3-ASR-1.7B部署教程:基于device_map=‘auto‘的GPU智能分配实践

Qwen3-ASR-1.7B部署教程:基于device_mapauto的GPU智能分配实践 想不想把电脑变成一个能听懂人话的智能助手?无论是会议录音、视频字幕,还是采访记录,都能快速、准确地转成文字,而且完全在本地运行,不用担心…...

实战应用:基于快马构建多维智能限流系统,精细化管控API访问

在构建现代Web服务时,API限流是保障系统稳定性的重要防线。最近我在处理一个电商平台的流量管控需求时,深刻体会到"rate limit exceeded"不仅是简单的错误提示,更是系统自我保护的关键机制。下面分享如何用InsCode(快马)平台快速搭…...

LaTeX表格缩放实战:从手动微调到智能适配

1. LaTeX表格缩放的核心挑战 写论文时最头疼的莫过于遇到超宽表格——明明数据很清晰,一放到LaTeX里就溢出页面边界,要么被拦腰截断,要么挤得文字重叠。我审过上百篇学术论文,发现90%的表格排版问题都源于没有掌握正确的缩放技巧。…...

CasRel在教育AI中的应用:试题解析中‘知识点-考查方式-难度等级’三元组标注

CasRel在教育AI中的应用:试题解析中‘知识点-考查方式-难度等级’三元组标注 1. 引言:从海量试题到结构化知识 如果你是教育行业的从业者,无论是老师、教研员还是在线教育平台的产品经理,一定都面临过这样的困扰:手头…...

MiddleBury与SceneFlow数据集相机参数解析与深度图生成实战

1. MiddleBury与SceneFlow数据集简介 MiddleBury和SceneFlow是计算机视觉领域两个非常重要的立体视觉数据集。MiddleBury数据集由Middlebury College发布,包含了大量高质量的立体图像对,这些图像对由两台相机在同一时间、不同位置拍摄,涵盖了…...

3分钟掌握MicroPython WebREPL:浏览器直接控制嵌入式设备

3分钟掌握MicroPython WebREPL:浏览器直接控制嵌入式设备 【免费下载链接】webrepl WebREPL client and related tools for MicroPython 项目地址: https://gitcode.com/gh_mirrors/we/webrepl 想要用浏览器直接控制你的MicroPython开发板吗?WebR…...

YOLOv9镜像快速上手:一行命令跑通推理,小白也能玩转目标检测

YOLOv9镜像快速上手:一行命令跑通推理,小白也能玩转目标检测 1. 为什么选择YOLOv9镜像 目标检测作为计算机视觉的核心任务,在安防监控、自动驾驶、工业质检等领域有着广泛应用。而YOLO系列模型以其速度快、精度高的特点,成为该领…...

新手避坑指南:雯雯的后宫-造相Z-Image-瑜伽女孩镜像部署全流程解析

新手避坑指南:雯雯的后宫-造相Z-Image-瑜伽女孩镜像部署全流程解析 1. 镜像概述与核心价值 雯雯的后宫-造相Z-Image-瑜伽女孩是一个专注于生成高质量瑜伽主题图像的文生图模型服务。基于Z-Image-Turbo底座并结合特定LoRA微调技术,该镜像能够生成风格统…...

零基础玩转像素幻梦:快速生成《光纹苔藓姑苏幻梦》同款像素画

零基础玩转像素幻梦:快速生成《光纹苔藓姑苏幻梦》同款像素画 1. 像素幻梦初体验 1.1 什么是像素幻梦创意工坊 像素幻梦创意工坊(Pixel Dream Workshop)是一款基于FLUX.1-dev扩散模型构建的AI像素艺术生成工具。它采用明亮的16-bit像素风格…...

多模态扩展:OpenClaw结合Qwen3.5-4B-Claude处理截图信息

多模态扩展:OpenClaw结合Qwen3.5-4B-Claude处理截图信息 1. 为什么需要多模态能力 作为一个长期依赖文本交互的技术爱好者,我最初对OpenClaw的理解停留在"能通过自然语言控制电脑的AI助手"层面。直到上个月需要处理大量产品截图中的文字信息…...

STM32CubeMX配置EXTI中断,别再在HAL_GPIO_EXTI_Callback里用HAL_Delay了!

STM32外部中断实战:避开HAL_Delay陷阱的三种解决方案 第一次在STM32项目中使用外部中断时,我遇到了一个令人困惑的问题——按下按键后程序突然卡死。经过反复排查,最终发现问题出在中断回调函数中的HAL_Delay调用上。这个看似简单的延时函数&…...

DeepSeek-OCR-2功能测评:多语言支持、复杂背景识别,实测好用

DeepSeek-OCR-2功能测评:多语言支持、复杂背景识别,实测好用 1. 引言:OCR技术的新标杆 在数字化时代,文字识别技术已经成为连接物理世界与数字世界的重要桥梁。DeepSeek-OCR-2作为最新一代的开源OCR模型,凭借其创新的…...

3分钟上手!AI驱动的代码学习助手完全指南

3分钟上手!AI驱动的代码学习助手完全指南 【免费下载链接】Tutorial-Codebase-Knowledge Turns Codebase into Easy Tutorial with AI 项目地址: https://gitcode.com/gh_mirrors/tu/Tutorial-Codebase-Knowledge Tutorial-Codebase-Knowledge是一款AI驱动的…...

VSCode安装与Qwen3开发环境配置一站式解决方案

VSCode安装与Qwen3开发环境配置一站式解决方案 为智能字幕开发量身打造的高效开发环境配置指南 1. 开篇:为什么需要专门的环境配置? 你是不是也遇到过这样的情况:好不容易下载了代码,却发现各种依赖报错,环境配置折腾…...

C# Enumerable类 之 高效数据转换实战指南

1. 为什么需要数据转换? 在C#开发中,我们经常会遇到需要处理不同类型数据集合的场景。比如从数据库读取的数据可能是object类型,或者老项目中还在使用非泛型的ArrayList。这时候就需要将这些"原始"数据转换成我们需要的特定类型&am…...

OpenClaw模型微调:基于nanobot镜像的Qwen3-4B定制

OpenClaw模型微调:基于nanobot镜像的Qwen3-4B定制 1. 为什么需要定制化OpenClaw模型 去年夏天,当我第一次尝试用OpenClaw自动处理团队周报时,发现通用模型对"技术复盘"这类专业内容的处理总差那么点意思。它会机械地罗列Git提交记…...

5分钟搞定专业级黑苹果配置:OpCore Simplify智能工具让复杂EFI构建化繁为简

5分钟搞定专业级黑苹果配置:OpCore Simplify智能工具让复杂EFI构建化繁为简 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 开篇痛点直击&…...

探索Demucs音频分离:当音乐遇见人工智能的魔法分解术

探索Demucs音频分离:当音乐遇见人工智能的魔法分解术 【免费下载链接】demucs Code for the paper Hybrid Spectrogram and Waveform Source Separation 项目地址: https://gitcode.com/gh_mirrors/de/demucs 想象一下,你正沉浸在一首复杂的交响乐…...

Rufus高效使用实战指南:精通ext2/ext3/ext4文件系统格式化

Rufus高效使用实战指南:精通ext2/ext3/ext4文件系统格式化 【免费下载链接】rufus The Reliable USB Formatting Utility 项目地址: https://gitcode.com/GitHub_Trending/ru/rufus 在Linux系统管理和开发工作中,USB设备的格式化与启动盘制作是一…...