You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法将TheBloke/Mistral-7B-v0.1-GGUF模型加载至GPU的求助

问题:GGUF模型无法加载到GPU,始终运行在CPU

我尝试用以下代码将TheBloke/Mistral-7B-v0.1-GGUF模型加载到GPU,但模型始终处于CPU环境:

from ctransformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained("TheBloke/Mistral-7B-v0.1-GGUF", model_file='mistral-7b-v0.1.Q4_K_M.gguf', model_type='mistral', hf=True)
tokenizer = AutoTokenizer.from_pretrained(model)
device = 'cuda:0'

prompt = 'text'
model_inputs = tokenizer(prompt, return_tensors="pt")
model_inputs.to(device)
model.to(device)

我还试过两种调整,问题依旧:

  • model = model.to(device)
  • device = torch.device('cuda')
解决方法

ctransformers库底层基于llama.cpp,不支持用PyTorch的.to(device)方法切换GPU,必须在模型初始化时配置GPU参数:

from ctransformers import AutoModelForCausalLM, AutoTokenizer

# 初始化时通过gpu_layers参数指定GPU加载的层数
model = AutoModelForCausalLM.from_pretrained(
    "TheBloke/Mistral-7B-v0.1-GGUF",
    model_file='mistral-7b-v0.1.Q4_K_M.gguf',
    model_type='mistral',
    hf=True,
    gpu_layers=20  # 根据GPU显存调整,显存充足可设更高,比如35
)
# 直接用模型ID加载tokenizer,比传入model对象更稳定
tokenizer = AutoTokenizer.from_pretrained("TheBloke/Mistral-7B-v0.1-GGUF")

prompt = 'text'
model_inputs = tokenizer(prompt, return_tensors="pt")
# ctransformers会自动处理输入的设备,无需手动移到GPU
output = model.generate(**model_inputs)
print(tokenizer.decode(output[0]))

重要提示

  • gpu_layers是核心参数:数值越大,越多模型层加载到GPU,推理速度越快,但显存占用越高。如果显存不足,可逐步降低数值(比如10、5)。
  • 不要用PyTorch的设备切换方法,ctransformers不兼容这种操作,GPU加速必须在初始化时配置。
  • tokenizer直接用Hugging Face模型ID加载,避免因传入model对象导致的潜在问题。

内容的提问来源于stack exchange,提问作者Katerina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:42:46