Azure Notebook运行Falcon-7B模型无输出求助
解决Azure Notebook CPU实例运行Falcon-7B无输出问题
你的Standard_E4ds_v4是纯CPU实例(无GPU),Falcon-7B有70亿参数,纯CPU推理速度极慢,10分钟无法出结果是正常现象。以下是针对性优化方案:
一、清理冗余环境配置
代码里存在无效的环境安装步骤,先删掉这些冗余操作:
- 去掉
%pip install conda和import conda,conda是包管理器,无需通过pip安装 - 去掉
%conda install cudatoolkit,没有GPU的情况下安装CUDA工具包完全没用
二、模型加载优化(关键)
纯CPU不支持torch.bfloat16,且大模型必须量化才能在32GB内存里高效运行:
- 使用
load_in_8bit=True开启8位量化,大幅降低内存占用并提升推理速度 - 明确指定
device='cpu'避免device_map自动分配的问题 - 改用
torch.float32作为数据类型(如果8位量化报错的话)
三、生成参数调优
减少生成长度、改用更快的解码策略:
- 把
max_length从2000降到200以内(纯CPU生成2000 token可能需要数小时) - 关闭采样(
do_sample=False)改用贪心解码,速度会快很多;如果需要采样,降低top_k值 - 移除手动生成的
attention_mask,由tokenizer自动生成即可
修改后的完整代码
!source activate llm_env # 只保留必要的依赖安装 %pip install torch einops accelerate transformers==4.27.4 huggingface-hub chardet cchardet from transformers import AutoTokenizer, AutoModelForCausalLM import torch model = "tiiuae/falcon-7b" # 开启8位量化,指定CPU设备 rrmodel = AutoModelForCausalLM.from_pretrained( model, torch_dtype=torch.float32, trust_remote_code=True, load_in_8bit=True, device_map="cpu", ) tokenizer = AutoTokenizer.from_pretrained(model) input_text = "What is a giraffe?" # 让tokenizer自动生成attention_mask inputs = tokenizer(input_text, return_tensors='pt') # 优化生成参数 output = rrmodel.generate( **inputs, max_length=150, # 大幅减少生成长度 do_sample=False, # 贪心解码更快 pad_token_id=tokenizer.eos_token_id, eos_token_id=tokenizer.eos_token_id, ) print(f"Got output: {output}") output_text = tokenizer.decode(output[0], skip_special_tokens=True) print(output_text)
额外建议
如果需要更快的推理速度,建议切换到带GPU的Azure计算实例(比如Standard_NC6s_v3及以上),GPU推理Falcon-7B的速度会比CPU快几十倍。
内容的提问来源于stack exchange,提问作者Yassin Sameh
相关产品推荐
相关产品推荐

