本地运行DeepSeek模型时权重转换报错AssertionError的问题排查及相关疑问
本地运行DeepSeek模型时权重转换报错AssertionError的问题排查及相关疑问
看起来你遇到的核心问题是模型系列不匹配导致的转换脚本断言失败,另外关于Ollama的疑问我也一起给你梳理清楚:
一、AssertionError报错的原因及解决办法
你现在的问题出在用了DeepSeek-V3的转换脚本去处理DeepSeek-R1系列的模型权重,这两个是不同的模型分支,权重的命名规则、内部结构完全不一样,所以转换脚本里的权重映射(mapping)找不到对应的key,就触发了断言错误。
从你调试打印的缺失key(embed_tokens、input_layernorm等)来看,这些都是Qwen/DeepSeek-R1系列模型的标准权重命名,而DeepSeek-V3的转换脚本里的mapping是针对V3模型的权重设计的,两者不匹配,自然会报错。
具体解决方向:
如果目标是运行DeepSeek-V3模型:
- 你需要下载DeepSeek-V3对应的模型权重,而不是当前的DeepSeek-R1-Distill-Qwen-1.5B。
- 重新按照官方文档的步骤,用V3的权重来执行转换脚本,这样权重key就能和脚本里的
mapping对应上。
如果目标是运行你下载的DeepSeek-R1模型:
- 完全不需要用DeepSeek-V3的转换脚本!R1系列是基于Qwen的蒸馏模型,可以直接用Hugging Face的
transformers库加载运行,不需要额外的转换步骤。比如直接用以下代码加载:from transformers import AutoModelForCausalLM, AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("你的模型路径") model = AutoModelForCausalLM.from_pretrained("你的模型路径") - 如果你还是想用官方的Docker环境,只需要安装
transformers、torch等依赖,直接加载模型即可,跳过转换步骤。
- 完全不需要用DeepSeek-V3的转换脚本!R1系列是基于Qwen的蒸馏模型,可以直接用Hugging Face的
另外,你提到这些缺失的key在model.safetensors里存在,这很正常——它们确实存在,但转换脚本找的是V3模型的key名称,和R1的不一样,所以才会断言失败。
二、关于Ollama的疑问
- Ollama不是必须的:官方文档里的本地运行方式是完全独立的,不需要依赖Ollama。YouTube上的视频用Ollama是另一种便捷部署方案,Ollama把模型打包成了自己的格式,一键就能启动,适合快速体验,但不是官方原生运行的必要条件。
- 你完全可以按照官方文档的方式运行:只要用对对应系列的模型和脚本,不需要Ollama也能成功运行。
备注:内容来源于stack exchange,提问作者Zlelik




