求助:使用accelerate的Transformer Pipeline未调用GPU问题
问题排查与解决步骤
1. 验证bitsandbytes的CUDA兼容性
bitsandbytes需与CUDA版本匹配,你使用的是cu121,需确保bitsandbytes适配CUDA 12.x。运行以下代码检查:
import bitsandbytes print(bitsandbytes.cuda_setup.is_available())
若输出False,重新安装适配cu121的版本:
pip install bitsandbytes==0.42.0 --extra-index-url=https://download.pytorch.org/whl/cu121
2. 显式指定GPU设备
尽管设置了device_map="auto",可尝试直接指定GPU设备:
chatbot = pipeline( "conversational", model="BramVanroy/GEITje-7B-ultra", model_kwargs={"load_in_8bit": True}, device=0 # 指定第一块GPU,多GPU场景可调整序号 )
打印模型所在设备确认:
print(chatbot.model.device)
3. 初始化accelerate配置
accelerate需正确配置GPU环境,运行命令生成配置文件:
accelerate config
按提示选择对应GPU配置(单GPU/多GPU、CUDA等),完成后重启Python环境再执行代码。
4. 手动加载模型排查设备分配
替代pipeline方式手动加载模型,查看设备分配细节:
from transformers import AutoTokenizer, AutoModelForCausalLM import torch tokenizer = AutoTokenizer.from_pretrained("BramVanroy/GEITje-7B-ultra") model = AutoModelForCausalLM.from_pretrained( "BramVanroy/GEITje-7B-ultra", load_in_8bit=True, device_map="auto", torch_dtype=torch.float16 ) print(model.hf_device_map) # 查看模型各层的设备分配情况
若输出显示设备为CPU,说明模型加载未正确识别GPU,需重新检查bitsandbytes与accelerate的安装。
5. 检查CUDA环境变量
确认CUDA相关环境变量配置正确:
echo $CUDA_HOME echo $PATH | grep cuda
CUDA_HOME需指向CUDA 12.1的安装目录,PATH中需包含CUDA的bin目录。
内容的提问来源于stack exchange,提问作者Rob Audenaerde
相关产品推荐
相关产品推荐

