
CharacterGLM-6B Transformers 部署调用实战从 AutoDL 环境搭建到角色对话生成【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调全参数/Lora、部署国内外开源大模型LLM/多模态大模型MLLM教程项目地址: https://gitcode.com/GitHub_Trending/se/self-llm本文基于《开源大模型食用指南》仓库 models/CharacterGLM/01-CharacterGLM-6B Transformer部署调用.md 整理成文完整讲解在 AutoDL 平台上以 24G 显存显卡如 RTX 3090租用机器、配置 PyTorch 环境、通过 ModelScope 下载 CharacterGLM-6B 权重并基于 Transformers 实现多轮角色扮演对话的全流程。读完本文你将能够独立完成 CharacterGLM-6B 的本地化部署与调用并理解角色设定session_meta、对话历史history等关键机制。一、CharacterGLM-6B 是什么CharacterGLM-6B 是聆心智能和清华大学 CoAI 实验室联合发布的新一代对话预训练模型依据 models/CharacterGLM/readme.md主打角色化对话能力通过为模型提供明确的角色信息用户是谁、机器人是谁、双方的关系与语气让模型以特定人格进行多轮对话。在《开源大模型食用指南》仓库中CharacterGLM 的完整流程由四篇文档组成见 support_model.md文档内容01-CharacterGLM-6B Transformer部署调用.md本文主体基于 Transformers 的对话生成部署调用02-CharacterGLM-6B FastApi部署调用.md基于 FastAPI 封装 HTTP 接口03-CharacterGLM-6B-chat.mdStreamlit 网页 Demo 与 CLI 交互04-CharacterGLM-6B Lora微调.md基于 PEFT 的角色模型 LoRA 微调本文聚焦第一份文档讲解下载即用的推理部署路径其余文档可作为进阶参考。二、环境准备租用 24G 显存机器并选择镜像2.1 租用机器在 AutoDL 平台租用一台 RTX 309024G 显存等规格的显卡机器。CharacterGLM-6B 为 6B 参数规模的模型加载时需要较大显存24G 显存足以容纳权重并稳定进行推理。2.2 镜像选择租用机器时镜像选择按如下组合配置框架FrameworkPyTorch框架版本Version2.0.0Python 版本3.8ubuntu20.04CUDA 版本11.8说明该镜像组合是文档验证过的环境基线包含了兼容的 PyTorch 2.0.0 与 CUDA 11.8可满足 transformers 加载与 GPU 推理需求。租用完成后打开服务器的JupyterLab在其内置终端中进行后续的环境配置、模型下载和 Demo 运行。2.3 pip 换源与依赖安装在终端中依次执行以下命令先升级 pip、切换为国内镜像源加速安装再安装三个核心依赖包# 升级pip python -m pip install --upgrade pip # 更换 pypi 源加速库的安装 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip install modelscope pip install transformers pip install sentencepiece各依赖包的作用包名作用modelscope提供snapshot_download等模型下载接口用于拉取模型权重transformersHugging Face 生态的模型加载与推理框架负责AutoTokenizer、AutoModelForCausalLM的加载sentencepiece分词器底层依赖的分词库CharacterGLM 使用的 tokenizer 依赖它完成文本切分关于换源的更多细节如临时镜像源、conda 换源可参考仓库通用文档 models/General-Setting/01-pip、conda换源.md。三、模型下载使用 ModelScope 拉取权重CharacterGLM-6B 模型权重通过 ModelScope 平台的snapshot_download函数下载。该函数第一个参数为模型名称参数cache_dir指定模型在本地磁盘的下载路径参数revision指定分支版本。在/root/autodl-tmp路径下新建download.py文件写入以下内容import torch from modelscope import snapshot_download, AutoModel, AutoTokenizer import os model_dir snapshot_download(THUCoAI/CharacterGLM-6B, cache_dir/root/autodl-tmp, revisionmaster)保存后执行下载命令python /root/autodl-tmp/download.py下载规模参考模型大小约 12 GB受网络环境影响下载大概需要 10~15 分钟。执行完成后权重会存放在/root/autodl-tmp/THUCoAI/CharacterGLM-6B目录下后续代码将直接以该本地路径加载模型避免重复联网下载。四、代码准备加载模型并开启角色对话在/root/autodl-tmp路径下新建trans.py写入完整推理代码。下文按逻辑分段讲解注释保留原文档语义并补充关键点。4.1 加载 tokenizer 与模型from transformers import AutoTokenizer, AutoModelForCausalLM import torch # 使用模型下载到的本地路径以加载 model_dir /root/autodl-tmp/THUCoAI/CharacterGLM-6B # 分词器的加载本地加载trust_remote_codeTrue 允许执行模型配套的自定义代码 tokenizer AutoTokenizer.from_pretrained(model_dir, trust_remote_codeTrue) # 模型加载本地加载使用 AutoModelForCausalLM 类 model AutoModelForCausalLM.from_pretrained(model_dir, trust_remote_codeTrue) # 将模型移动到GPU上进行加速如果有GPU的话 device torch.device(cuda if torch.cuda.is_available() else cpu) model.to(device) # 使用模型的评估模式来产生对话 model.eval()关键点说明trust_remote_codeTrue是必须项CharacterGLM 这类带自定义模型结构的开源模型需要执行其仓库自带的 modeling 代码才能正确加载该参数即授权 transformers 加载并执行这些远程代码仓库微调文档 04-CharacterGLM-6B Lora微调.md 中也同样强调对于自定义的模型一定要指定 trust_remote_code 参数为 True。AutoModelForCausalLM用于加载自回归因果语言模型CharacterGLM-6B 属于该类型。model.eval()切换到推理模式关闭 Dropout 等训练期行为保证生成稳定。4.2 设定角色信息session_metaCharacterGLM 的核心特色在于角色设定session_meta。这是一个 Python 字典包含四个字段字段含义user_info用户的身份与背景描述bot_info机器人扮演角色的身份、性格、经历描述bot_name机器人的名字user_name用户的名字以下示例来自原文档设定用户为导演陆星辰、机器人为歌手兼演员苏梦远构建了一段完整的娱乐圈合作关系背景session_meta { user_info: 我是陆星辰是一个男性是一位知名导演也是苏梦远的合作导演。我擅长拍摄音乐题材的电影。苏梦远对我的态度是尊敬的并视我为良师益友。, bot_info: 苏梦远本名苏远心是一位当红的国内女歌手及演员。在参加选秀节目后凭借独特的嗓音及出众的舞台魅力迅速成名进入娱乐圈。她外表美丽动人但真正的魅力在于她的才华和勤奋。苏梦远是音乐学院毕业的优秀生善于创作拥有多首热门原创歌曲。除了音乐方面的成就她还热衷于慈善事业积极参加公益活动用实际行动传递正能量。在工作中她对待工作非常敬业拍戏时总是全身心投入角色赢得了业内人士的赞誉和粉丝的喜爱。虽然在娱乐圈但她始终保持低调、谦逊的态度深得同行尊重。在表达时苏梦远喜欢使用我们和一起强调团队精神。, bot_name: 苏梦远, user_name: 陆星辰 }可见bot_info写得越具体模型越容易进入角色输出的语气、用词越贴合设定。4.3 多轮对话model.chat 与 historyCharacterGLM 提供model.chat(tokenizer, session_meta, query, history[])接口返回(response, history)二元组。每一轮对话都必须把上一轮返回的 history 传回模型才能拥有完整的对话上下文实现连续的多轮交流# 第一轮对话 response, history model.chat(tokenizer, session_meta, 你好呀小苏, history[]) print(response) # 第二轮对话 response, history model.chat(tokenizer, session_meta, 最近对音乐有什么新的想法吗, historyhistory) print(response) # 第三轮对话 response, history model.chat(tokenizer, session_meta, 那我们商量一下下一部音乐电影的拍摄好嘛, historyhistory) print(response)可以推断history以列表形式累积每一轮的用户问题模型回答对model.chat在内部将其与session_meta一起拼装成完整 prompt 送入模型生成。这种接口设计让开发者无需手动拼接对话模板调用成本很低。五、部署运行执行 trans.py 观察加载与对话在终端中输入以下命令运行trans.pycd /root/autodl-tmp python trans.py运行时的观察要点命令行中出现loading checkpoint字样表示模型权重正在加载此时需要耐心等待模型加载完成后终端会依次打印三轮对话的回复结果即可验证部署成功。预期效果模型会以苏梦远的角色身份、结合设定中使用我们和一起强调团队精神的说话习惯进行回应这正是角色化对话模型与普通 Chat 模型的区别所在。六、源码级深挖从同仓库文档与代码看底层机制6.1 chat 接口的默认采样参数虽然原文档的model.chat调用未显式传采样参数但同仓库 02-CharacterGLM-6B FastApi部署调用.md 中给出了这些参数的默认取值可直接反哺本场景的调用理解response, history model.chat( tokenizer, session_meta, prompt, historyhistory, max_lengthmax_length if max_length else 2048, # 最大生成长度默认 2048 top_ptop_p if top_p else 0.7, # nucleus sampling默认 0.7 temperaturetemperature if temperature else 0.95 # 温度系数默认 0.95 )参数默认值作用max_length2048控制生成序列的最大长度兼顾上下文与回复top_p0.7核采样阈值值越小输出越保守temperature0.95采样温度值越大输出越发散多样在trans.py中如果需要调节角色回复的多样性与长度可在model.chat中显式传入这些参数。6.2 半精度加载降低显存占用仓库微调文档 04-CharacterGLM-6B Lora微调.md 展示了另一种加载方式在显存紧张时可通过torch_dtypetorch.halffp16或新卡使用torch.bfloat16半精度加载model AutoModelForCausalLM.from_pretrained( /root/autodl-tmp/THUCoAI/CharacterGLM-6B, trust_remote_codeTrue, torch_dtypetorch.half, device_mapauto )6B 规模的模型以半精度加载可将权重显存占用降低约一半配合 24G 显存可稳定运行文档同时提醒若显存仍不足可考虑low_cpu_mem_usageTrue降低 CPU 内存峰值。这为 Transformers 推理部署提供了直接的显存优化手段。6.3 数据格式模板对话 prompt 的构成如果想理解model.chat背后拼接的 prompt 格式可以参考同仓库 LoRA 微调脚本 04-CharacterGLM-6B-Lora微调.py 中的数据格式化逻辑其展示了训练阶段模型的对话模板instruction tokenizer.encode(text\n.join([用户:/n, 现在你要扮演皇帝身边的女人--甄嬛。, example[instruction] example[input]]).strip() \n, add_special_tokensTrue, truncationTrue, max_lengthMAX_LENGTH) response tokenizer.encode(textCharacterGLM-6B:\n: example[output], add_special_tokensFalse, ...)由此可以推断CharacterGLM-6B 的对话模板以用户:引导用户输入、以CharacterGLM-6B:引导模型回复推理时的session_meta与history同样会被组织进这一模板体系。理解了模板结构无论是排查生成异常还是自定义角色都能做到心中有数。七、常见问题与进阶指引7.1 常见问题排查现象可能原因与处理下载慢或超时确认已执行pip config set global.index-url换源下载 12GB 权重约需 10~15 分钟加载时报远程代码错误检查trust_remote_codeTrue是否传入 tokenizer 与 model 的加载调用显存不足OOM改用torch_dtypetorch.half半精度加载或参考 Lora 微调文档中的低资源策略回复与角色设定不符丰富bot_info描述适当调低temperature如 0.7~0.8使输出更稳定7.2 进阶路线需要对外提供 HTTP 接口参考 02-CharacterGLM-6B FastApi部署调用.md基于 FastAPI Uvicorn 在 6006 端口提供服务支持 curl 与 requests 两种调用方式需要网页交互界面参考 03-CharacterGLM-6B-chat.md运行 Streamlit WebDemo需要打造专属角色如模拟甄嬛参考 04-CharacterGLM-6B Lora微调.md 与 04-CharacterGLM-6B-Lora微调.py结合 dataset/huanhuan.json 指令集进行 LoRA 微调再通过PeftModel合并权重完成角色定制。八、总结本教程走通了 CharacterGLM-6B 从环境准备、权重下载到 Transformers 推理部署的完整链路AutoDL 24G 显存机器 PyTorch 2.0.0/Python 3.8/CUDA 11.8 镜像为基线ModelScopesnapshot_download拉取 12GB 权重AutoModelForCausalLM本地加载后通过session_meta注入角色设定、借助history维护多轮上下文即可获得高质量的角色扮演对话体验。在此基础上仓库同目录下的 FastAPI、Streamlit 与 LoRA 微调文档为生产化接口、可视化交互与角色深度定制提供了完整进阶路径。【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调全参数/Lora、部署国内外开源大模型LLM/多模态大模型MLLM教程项目地址: https://gitcode.com/GitHub_Trending/se/self-llm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考