使用Transformers加载大模型时程序无输出的问题求助
问题分析与解决方法
核心原因
你的设备(Lenovo Yoga C-930 13IKB)硬件资源不足以加载9B级别的大模型:这类模型全精度加载需约36GB显存(按4字节/参数计算),即便用CPU加载也需要至少20GB以上内存,而笔记本的内存/显存大概率达不到标准,导致程序因内存耗尽直接终止,无任何输出。
解决步骤
1. 用模型量化降低资源占用
通过4bit或8bit量化,可将模型内存占用降低75%或50%,让9B模型能在普通笔记本上运行:
- 先安装
bitsandbytes库:pip install bitsandbytes - 修改代码,手动加载模型并启用量化:
from flask import Flask, request, jsonify from flask_cors import CORS from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline import torch app = Flask(__name__) CORS(app) # 加载分词器 tokenizer = AutoTokenizer.from_pretrained("MBZUAI-Paris/Atlas-Chat-9B") # 启用4bit量化加载模型 model = AutoModelForCausalLM.from_pretrained( "MBZUAI-Paris/Atlas-Chat-9B", load_in_4bit=True, device_map="auto", bnb_4bit_use_double_quant=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.bfloat16 ) generator = pipeline("text-generation", model=model, tokenizer=tokenizer) @app.route('/generate', methods=['POST']) def generate(): data = request.json user_input = data.get("input", "") response = generator(user_input, max_length=1000) return jsonify({"output": response[0]['generated_text']}) if __name__ == '__main__': app.run(port=5000)
2. 优化系统资源配置
- 若使用Windows,将虚拟内存(页面文件)增大至20GB以上,避免内存耗尽时程序直接崩溃;
- 关闭其他占用大量内存的程序,为模型加载预留足够资源。
3. 添加日志定位加载节点
在代码中添加打印语句,确认模型加载到哪一步终止,方便精准排查:
print("开始加载模型...") model = AutoModelForCausalLM.from_pretrained(...) print("模型加载完成")
内容的提问来源于stack exchange,提问作者Milos Cecaric
相关产品推荐
相关产品推荐

