CUDA out of memory错误表示GPU显存不足,需检查显存占用、启用量化加载、降低batch_size,并用--gpu-memory-utilization限制显存分配。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您在本地部署大模型时遇到报错信息,但无法快速定位原因,则可能是由于环境依赖、硬件资源、配置参数或模型文件完整性等问题引发。以下是针对高频报错代码的速查与对应排查路径:
一、CUDA out of memory
该错误表示GPU显存不足,常见于加载大模型(如LLaMA-3-70B、Qwen2-72B)或批量推理时显存被耗尽。需检查当前GPU可用显存、模型量化级别及推理批次大小。
1、运行 nvidia-smi 查看GPU显存占用与剩余容量。
2、确认模型是否已使用 AWQ 或 GGUF 量化格式加载,避免FP16全精度加载。
3、在推理脚本中将 max_new_tokens 设为不超过512,batch_size 设为1进行单样本测试。
4、若使用vLLM,添加启动参数 --gpu-memory-utilization 0.8 限制显存分配比例。
二、OSError: Unable to load weights from pytorch checkpoint
该错误表明模型权重文件缺失、路径错误或格式不兼容,常见于Hugging Face Transformers加载时找不到bin/safetensors文件,或文件损坏。
1、进入模型目录,执行 ls -l pytorch_model*.bin 或 ls -l model.safetensors 确认权重文件是否存在。
2、检查 config.json 中的 architectures 字段是否与实际加载代码中指定的类名一致(如 Qwen2ForCausalLM vs LlamaForCausalLM)。
3、若从Hugging Face Hub下载,改用 git lfs install && git clone 完整拉取大文件,避免因网络中断导致safetensors文件截断。
4、对疑似损坏的safetensors文件,运行 python -c "from safetensors import safe_open; safe_open('./model.safetensors', framework='pt')" 验证可读性。
三、ModuleNotFoundError: No module named 'vllm'
该错误说明Python环境中未安装vLLM库,或安装版本与CUDA驱动不匹配,也可能因多Python环境导致pip安装位置错误。
1、确认CUDA版本:执行 nvcc --version,输出应为11.8、12.1或12.4。
2、根据CUDA版本选择安装命令,例如CUDA 12.1时执行:pip install vllm --extra-index-url https://download.pytorch.org/whl/cu121。
3、检查当前Python解释器路径:which python,确保pip与python指向同一环境(如均为/miniconda3/envs/llm/bin/python)。
4、若使用conda环境,优先尝试:conda install -c conda-forge vllm,避免wheel编译冲突。
四、ValueError: Expected all tensors to be on the same device
该错误表明模型权重、输入张量或KV缓存位于不同设备(如模型在cuda:0而input_ids在cpu),通常由手动device转移遗漏或AutoTokenizer返回张量未.to(device)引起。
1、在调用model.generate()前,对所有输入张量显式迁移:inputs = {k: v.to(model.device) for k, v in inputs.items()}。
2、若使用transformers pipeline,初始化时强制指定设备:pipeline(..., device_map="cuda:0") 或 device=0。
3、检查自定义数据预处理函数,确认tokenizer输出的 input_ids 和 attention_mask 未被意外转回CPU。
4、当启用flash_attention_2时,确保模型配置中 attn_implementation="flash_attention_2" 且对应版本支持当前GPU架构(如A10/A100需启用)。
五、RuntimeError: Input type (torch.FloatTensor) and weight type (torch.cuda.HalfTensor) should be the same
该错误源于输入张量精度(如float32)与模型权重精度(如float16)不一致,常见于未对输入执行dtype转换,或混合使用AMP与手动half()操作。
1、加载模型后立即执行:model = model.half(),并确保所有输入张量同步转为half:input_ids = input_ids.half()。
2、若使用torch.compile,禁用自动精度推导:model = torch.compile(model, dynamic=True, options={"mode": "default"}),避免编译期插入不兼容cast。
3、在tokenizer调用中显式指定输出类型:tokenizer(..., return_tensors="pt", dtype=torch.float16)(需transformers>=4.39)。
4、检查梯度检查点(gradient checkpointing)是否启用,若启用需配合 model.gradient_checkpointing_enable(gradient_checkpointing_kwargs={"use_reentrant": False}) 防止dtype重置。


















