开发者社区 > ModelScope模型即服务 > 计算机视觉 > 正文

ModelScope使用qwen/Qwen-7B-Chat,查询自定义文本向量的时候报这个错误?

ModelScope使用qwen/Qwen-7B-Chat,查询自定义文本向量的时候报这个错误?

RuntimeError: "addmm_implcpu" not implemented for 'Half'model = AutoModelForCausalLM.from_pretrained(
"qwen/Qwen-7B-Chat",
revision = 'v1.0.5',
device_map="auto",
trust_remote_code=True,
offload_folder=r"D:/modelscope/tmp",
fp16=True).eval()

展开
收起
真的很搞笑 2024-01-02 20:00:18 114 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    这个错误是因为在使用半精度浮点数(fp16)时,addmm_implcpu函数没有实现。你可以尝试将模型转换为全精度浮点数(fp32),然后再进行查询自定义文本向量的操作。修改后的代码如下:

    model = AutoModelForCausalLM.from_pretrained(
        "qwen/Qwen-7B-Chat",
        revision='v1.0.5',
        device_map="auto",
        trust_remote_code=True,
        offload_folder=r"D:/modelscope/tmp",
        fp16=False).  # 将fp16改为False
    

    这样应该可以解决你遇到的问题。

    2024-01-03 14:13:17
    赞同 展开评论 打赏
  • 这个错误是因为你在使用半精度浮点数(fp16)进行模型推理时,addmm_implcpu函数没有实现半精度浮点数的计算。你可以尝试将模型切换回单精度浮点数(fp32)进行推理,或者使用支持半精度浮点数的库(如NVIDIA的Apex)来解决这个问题。

    解决方案:

    1. 将模型切换回单精度浮点数(fp32):
    model = AutoModelForCausalLM.from_pretrained(
        "qwen/Qwen-7B-Chat",
        revision='v1.0.5',
        device_map="auto",
        trust_remote_code=True,
        offload_folder=r"D:/modelscope/tmp",
        fp16=False).
    
    1. 使用支持半精度浮点数的库(如NVIDIA的Apex):

    首先,安装Apex库:

    git clone https://github.com/NVIDIA/apex
    cd apex
    pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
    

    然后,在代码中使用Apex库进行模型推理:

    import torch
    from transformers import AutoModelForCausalLM, AutoTokenizer
    from apex import amp
    
    tokenizer = AutoTokenizer.from_pretrained("qwen/Qwen-7B-Chat")
    model = AutoModelForCausalLM.from_pretrained("qwen/Qwen-7B-Chat", revision='v1.0.5', device_map="auto", trust_remote_code=True, offload_folder=r"D:/modelscope/tmp")
    
    # 使用Apex库进行模型推理
    with amp.initialize():
        input_ids = tokenizer.encode("你好,世界!", return_tensors="pt").to("cuda")
        outputs = model.generate(input_ids)
        response = tokenizer.decode(outputs[0], skip_special_tokens=True)
        print(response)
    

    这样,你就可以使用半精度浮点数进行模型推理了。

    2024-01-03 10:06:44
    赞同 展开评论 打赏
  • 模型卡片上您找一下,示例代码中有cpu的。 ,此回答整理自钉群“魔搭ModelScope开发者联盟群 ①”

    2024-01-02 22:06:09
    赞同 展开评论 打赏

包含图像分类、图像生成、人体人脸识别、动作识别、目标分割、视频生成、卡通画、视觉评价、三维视觉等多个领域

相关电子书

更多
视觉AI能力的开放现状及ModelScope实战 立即下载
ModelScope助力语音AI模型创新与应用 立即下载
低代码开发师(初级)实战教程 立即下载