LLaMA-Factory 部署与 DeepSeek-R1-Distill-Qwen 模型乱码问题解决全记录

发布时间:2026/8/27 11:36:45

LLaMA-Factory 部署与 DeepSeek-R1-Distill-Qwen 模型乱码问题解决全记录
LLaMA-Factory 部署与 DeepSeek-R1-Distill-Qwen 模型乱码问题解决全记录摘要本文记录了在远程 A100 服务器上部署 LLaMA-Factory并加载 DeepSeek-R1-Distill-Qwen 系列模型时遇到的输出乱码问题。通过强制指定 Qwen2Tokenizer最终完美解决。全过程包括环境配置、CUDA 版本协调、模型下载、问题排查与修复。0、一点小废话请注意AI环境版本迭代很快本文编辑和实验时间2026年7月2日您看到此文章时LLaMA-Factory框架、PyTorch、CUDA版本可能会有变动请以三者官网公布最新的适配版本为准进行配置。一、环境概览本地VSCode Remote-SSH 插件服务器Ubuntu 24.04.3 LTS (NVIDIA A100)目标框架LLaMA-Factory测试模型deepseek-ai/DeepSeek-R1-Distill-Qwen-7B及 1.5B 版本最终稳定模型Qwen/Qwen2.5-1.5B-Instruct验证正常二、LLaMA-Factory 安装步骤1. 克隆仓库gitclone--depth1https://github.com/hiyouga/LLaMA-Factory.gitcdLLaMA-Factory2. 准备 Conda 环境推荐若未安装 Miniconda# 进入你的家目录cd~# 下载最新 Miniconda 安装包Linux x86_64wgethttps://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh# 执行安装按提示操作空格翻页yes 接受协议回车确认安装位置bashMiniconda3-latest-Linux-x86_64.sh# 安装完成后关闭并重新打开终端或者执行source~/.bashrc⚠️ 若为 root 用户建议将 conda 缓存和 envs 目录挂载到数据盘如/root/autodl-tmp/conda避免占满系统盘。参考挂载指令mkdir-p/root/autodl-tmp/conda/pkgs conda config--addpkgs_dirs /root/autodl-tmp/conda/pkgsmkdir-p/root/autodl-tmp/conda/envs conda config--addenvs_dirs /root/autodl-tmp/conda/envs3. 创建虚拟环境conda create-nllama-factorypython3.13.5# 也可换为 3.11conda activate llama-factory4. 安装 LLaMA-Factory 及其依赖pipinstall-e.[torch,metrics]5. 检验安装llamafactory-cli version若无报错则基础安装完成。三、CUDA 与 PyTorch 版本协调重要安装后执行llamafactory-cli version可能出现警告CUDA version mismatch因为默认安装的 PyTorch 编译时使用的 CUDA 版本与系统驱动不一致。服务器 CUDA 版本12.9默认 PyTorch 编译版本13.0不兼容解决方案查看当前 PyTorch 信息python-cimport torch; print(PyTorch version:, torch.__version__); print(CUDA compiled version:, torch.version.cuda)卸载默认 PyTorchpip uninstall-ytorch torchvision torchaudio安装与 CUDA 12.9 兼容的 PyTorch推荐 CUDA 12.6 版本查询PyTorch官网了解到目前适配12大版本CUDA的对应稳定版本是CU126安装指令参考官网的版本pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126出现了三个报错主要是有两个包版本过高需要降级还有torchaudio漏装了下面进行修复若torchaudio未装补装pipinstalltorchaudio --index-url https://download.pytorch.org/whl/cu126降级冲突包如fsspec,pillowpipinstallfsspec2025.3.0pillow11.3.0✅ 也可直接新建 conda 环境先装Python和 PyTorch 全家桶再装 LLaMA-Factory避免依赖冲突然后再把出错的conda环境删掉conda create-nllama-factory-311python3.11-yconda activate llama-factory-311 pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126cd~/LLaMA-Factory pipinstall-e.[torch,metrics]最终验证python-cimport torch; print(torch.cuda.is_available()); print(torch.version.cuda)# 应输出 True 和 12.6别忘了确认llamafactory环境是否正常llamafactory-cli version如下图所示没有出现警告说明安装成功。四、下载 HuggingFace 模型记得先新建一条路径用来存储待会下载的模型可以参考下面的代码1. 设置下载目录与镜像可选如下指令只会在当前会话生效若需要长期生效可以写入配置文件。你的文件路径大概率和我的不同请将下面的路径配置为你自己准备下载模型的路径。exportHF_HOME/your/data/path/Hugging-Face# 请替换为你的实际路径exportHF_ENDPOINThttps://hf-mirror.com# 镜像加速# 下面两条指令用于验证上面的临时环境变量是否配置成功echo$HF_ENDPOINTecho$HF_HOME2. 安装huggingface_hub使用官方的下载器来下载pipinstall-Uhuggingface_hub3. 下载目标模型hf download deepseek-ai/DeepSeek-R1-Distill-Qwen-7B模型会被保存至$HF_HOME/hub/下的 snapshot 目录。上述指令中使用的模型名字可以通过Huggingface官网直接找到你想要的模型后复制完整的名字五、运行llama-factory验证模型是否可用1.启动webuillamafactory-cliwebui2.选择模型名称先选择模型名称为DeepSeek-R1-Distill-Qwen-7B3.替换模型路径找到下载的模型文件快照目录下对应的唯一哈希值命名的文件夹复制该路径4.设置模型路径并加载设置模型路径后在chat页面下选择加载模型等待加载完成5.尝试进行模型对话发现对话中参入了很多乱码六、问题模型输出乱码现象描述在 LLaMA-Factory WebUI 中加载DeepSeek-R1-Distill-Qwen-7B或 1.5B后对话输出出现大量不可读字符例如Hello! How can I assist you today? ðŁĺĬ或出现C\Git、大量G和Ġ等符号。初步尝试更换模型版本7B → 1.5B—— 无效更换 Python 版本3.13 → 3.11—— 无效重装 PyTorch 不同 CUDA 版本 —— 无效手动清理Ġ和Ċ占位符 —— 残留其他乱码如 EMJ根本原因AutoTokenizer默认加载了LlamaTokenizer而非该模型所需的Qwen2Tokenizer。原因是模型目录下的tokenizer_config.json中tokenizer_class缺失或错误导致 Transformers 库回退到错误的分词器造成 token ID 与词表不匹配。七、最终解决方案强制指定 Qwen2Tokenizer1. 编写 Python 脚本测试importtorchfromtransformersimportAutoModelForCausalLM,AutoTokenizer,Qwen2Tokenizer MODEL_PATH/home/xiezhongjun/hugging-face/hub/models--deepseek-ai--DeepSeek-R1-Distill-Qwen-7B/snapshots/916b56a44061fd5cd7d6a8fb632557ed4f724f60print(正在加载模型...)modelAutoModelForCausalLM.from_pretrained(MODEL_PATH,dtypetorch.bfloat16,device_mapauto)# 关键修复强制使用 Qwen2Tokenizer并添加 trust_remote_codeTruetokenizerQwen2Tokenizer.from_pretrained(MODEL_PATH,trust_remote_codeTrue,use_fastTrue# Qwen2 必须用 fast 版本)# 验证是否修复成功打印词表大小Qwen2-7B 应为 151643 左右print(f词表大小验证:{len(tokenizer)})# 如果输出是 32000 或 50000说明加载依然错误print(模型加载完成。输入 quit 退出。)whileTrue:user_inputinput(\n你: )ifuser_input.lower()quit:breakmessages[{role:user,content:user_input}]prompttokenizer.apply_chat_template(messages,tokenizeFalse,add_generation_promptTrue)inputstokenizer(prompt,return_tensorspt).to(model.device)withtorch.no_grad():outputsmodel.generate(**inputs,max_new_tokens512,temperature0.6,top_p0.95,do_sampleTrue,eos_token_idtokenizer.eos_token_id,pad_token_idtokenizer.pad_token_id,)# 获取新生成的 token ids去掉输入部分output_idsoutputs[0][inputs.input_ids.shape[1]:]# 使用标准解码responsetokenizer.decode(output_ids,skip_special_tokensTrue,clean_up_tokenization_spacesTrue# 这一句是关键让分词器自行处理空格)# 手动修复字节级占位符将 Ġ 替换为空格Ċ 替换为换行#response response.replace(Ġ, ).replace(Ċ, \n)# 移除思维链if/thinkinresponse:responseresponse.split(/think)[-1]# 可选压缩多余空白#response \n.join(line.strip() for line in response.splitlines() if line.strip())print(f模型:{response})运行该脚本输出正常无乱码。2. 在 LLaMA-Factory WebUI 中应用WebUI 无法直接修改代码需通过修正模型配置文件来让AutoTokenizer自动选中正确类。操作步骤进入模型 snapshot 目录cd/your/Hugging-Face/hub/models--deepseek-ai--DeepSeek-R1-Distill-Qwen-7B/snapshots/916b56a...查看tokenizer_config.json的tokenizer_class字段将其修改为Qwen2Tokenizer重启 LLaMA-Factory WebUI重新加载模型即可正常对话。llamafactory-cliwebui八、验证与对比模型分词器加载输出结果DeepSeek-R1-Distill-Qwen-7B/1.5B默认LlamaTokenizer错误乱码含 Ġ, Ċ, 特殊字符DeepSeek-R1-Distill-Qwen-7B/1.5B强制 Qwen2TokenizerQwen2Tokenizer正确正常中文/英文Qwen/Qwen2.5-1.5B-InstructAutoTokenizer 自动正确正常无需修改结论该模型本质是基于 Qwen 架构分词器必须使用Qwen2Tokenizer。九、经验总结分词器不匹配是导致解码乱码的常见原因尤其是基于 Qwen 的衍生模型。当AutoTokenizer加载错误时应检查tokenizer_config.json中的tokenizer_class字段。若 WebUI 无法手动指定分词器类可直接修正配置文件或使用脚本方式调用。安装 LLaMA-Factory 时注意 CUDA 与 PyTorch 版本兼容性推荐使用 conda 隔离环境。十、参考资料LLaMA-Factory GitHubHuggingFace 模型下载PyTorch 官网Bilibili堂吉诃德拉曼查的英豪 – – LoRA 算法论文解读 开发人员如何微调大模型并暴露可调用接口最终测试在修复后的环境下DeepSeek-R1-Distill-Qwen-7B/1.5B 以及Qwen/Qwen2.5-1.5B-Instruct均可正常进行中文对话输出流畅、无乱码。问题圆满解决。

相关新闻

AI微调是什么?不懂这个别说你懂AI

AI微调是什么?不懂这个别说你懂AI

2026/8/24 13:51:36

微调到底是什么 微调的英文是 Fine-tuning,字面意思就是「fine tune(精细调节)」。 大模型训练分两个阶段。 第一个阶段叫预训练。给AI喂几百GB的文本,让它学会语言规律、世界知识。这个阶段极贵,几千万到几个亿美金&a…

Eclipse Ditto 物模型搭建

Eclipse Ditto 物模型搭建

2026/8/22 19:55:11

需要知道Eclipse Ditto是什么 、怎么安装就点击下面的链接查阅。 Eclipse Ditto 、 Mosquitto MQTT 、 OpenModelica 开发工具-CSDN博客 Eclipse Ditto 开发环境 搭建-CSDN博客 Eclipse Ditto:开源物联网数字孪生平台技术深度解析 - 东峰叵,com - 博客园 一、主要…

Java工程师资格证?别被忽悠了!个人根本报不了名

Java工程师资格证?别被忽悠了!个人根本报不了名

2026/8/22 7:54:30

什么是 Ja 书, 需要啥条件, 各位学员, 大家好。到 2025 年, 就目前这种状况而言, 个人没办法报考 Ja 工程师证书, 得去询问了解报考 Ja 工程师证书的培训机构, 以及进行报考事宜, 之后由培训机构统一向上报送。然后去参加包括报名、学习、培训等一系列的整个流程。它是经过权威…

从物理动力学到策略优化:自行车运动员能量建模与MATLAB实现

从物理动力学到策略优化:自行车运动员能量建模与MATLAB实现

2026/8/27 11:27:56

1. 从一道赛题到一套方法论:自行车运动员能量特征建模的深度复盘去年带学生备赛美赛,A题“自行车运动员的能量特征”让不少队伍直呼“物理劝退”。题目本身并不复杂,核心是建立一个数学模型,描述运动员在给定功率输出下&#xff0…

三分钟让 Axure RP 全变中文:axure-cn 中文语言包安装、验收与避坑完整指南

三分钟让 Axure RP 全变中文:axure-cn 中文语言包安装、验收与避坑完整指南

2026/8/27 11:27:56

三分钟让 Axure RP 全变中文:axure-cn 中文语言包安装、验收与避坑完整指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-c…

ncmdump 使用教程:拖一个 NCM 文件就能转出 MP3,单首或整张专辑都行

ncmdump 使用教程:拖一个 NCM 文件就能转出 MP3,单首或整张专辑都行

2026/8/27 11:27:56

ncmdump 使用教程:拖一个 NCM 文件就能转出 MP3,单首或整张专辑都行 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你从网易云音乐下载的歌曲,不少是 NCM 格式的——这是网易的加密音频格式&…

Go语言方法值 vs 方法表达式:区别、应用与最佳实践

Go语言方法值 vs 方法表达式:区别、应用与最佳实践

2026/8/27 11:27:56

相信绝大多数 Go 开发者都写过这样的代码:把一个方法赋值给一个变量,然后像普通函数一样调用它。比如 f : obj.Method ,这个 f 在 Go 里叫 方法值(method value) 。但很多人第一次看到 T.Method(obj) 这种写法…

模型评测标准化:告别“跑几个样例”的不确定性

模型评测标准化:告别“跑几个样例”的不确定性

2026/8/27 11:27:56

你在两个模型之间做选型,用同一个测试集各跑了一遍。第一天模型 A 领先,第二天换了个提示词模板,模型 B 反超。你准备把结果写进汇报,但心里清楚,这个结论大概率经不起复测。这个场景很多做过模型评测的人都经历过。问…

信息几何视角下的GFlowNets前向策略训练:自然梯度提升收敛稳定性

信息几何视角下的GFlowNets前向策略训练:自然梯度提升收敛稳定性

2026/8/27 11:17:56

这次我们看一个 GFlowNets 训练方向的新思路:Information-Geometric Forward Policy Training。它要解决的是生成流网络(Generative Flow Networks)中前向策略(forward policy)训练不稳定、分布偏移明显、在复杂离散图…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/27 11:10:02

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/27 7:25:23

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/26 17:50:58

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用

2026/8/27 0:07:12

1. 项目概述:从零构建一个企业级的AI服务网关 最近在帮一个做内容审核的团队做技术架构升级,他们原来的业务里,每天有几十万张图片和短视频需要过审,最初是接了几个开源的AI模型自己部署,但效果和性能一直不太稳定。后…

LeetCode Hot100(51-60)算法精解与面试技巧

LeetCode Hot100(51-60)算法精解与面试技巧

2026/8/27 0:07:12

1. 题目背景与核心价值"hot100(51-60)"这个标题看起来像是某个编程题库或算法练习集中的一组题目编号。在技术社区中,类似命名通常指向LeetCode、牛客网等平台的热门题目集合。作为刷过300题的算法老手,我理解这类题目的核心价值在于&#xff…

CRC校验实战:从模2除法到HJ212协议排错

CRC校验实战:从模2除法到HJ212协议排错

2026/8/27 0:07:12

1. 为什么一个“校验码”能扛住工业现场90%的数据 corruption? 你有没有遇到过这样的场景:嵌入式设备通过RS-485上传温湿度数据,上位机偶尔收到一帧乱码——温度显示成-273℃,湿度跳到999%,但串口波形看起来完全正常&a…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/26 18:07:30

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/26 17:57:52

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…