基于昇腾D910B 推理bge-reranker-base

举报
昇腾适配 发表于 2024/12/06 15:11:26 2024/12/06
【摘要】 本文将介绍在昇腾910B平台上如何推理bge-reranker-base模型

/**************************如有任何问题和疑问,请评论区留言*********************************/


0.前提条件

0.1 登录机器

机器已开通,密码已获取,能通过ssh登录

0.2 检查NPU设备

NPU设备检查:运行npu-smi info命令,返回如下设备npu设备信息。NPU设备型号(Name)910B系列

0.3 docker安装

#检查docker是否安装:docker -v,如如尚未安装,运行以下命令进行docker安装
yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64

#配置IP转发,用于容器内的网络访问:
sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf
sysctl -p | grep net.ipv4.ip_forward

0.4 获取镜像

docker pull swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc3-py_3.9-hce_2.0.2409-aarch64-snt9b-20241112192643-c45ac6b

0.5 启动镜像

启动容器镜像。启动前请先按照参数说明修改${}中的参数。

docker run -it --net=host \ 
--device=/dev/davinci0 \ 
--device=/dev/davinci1 \ 
--device=/dev/davinci2 \ 
--device=/dev/davinci3 \ 
--device=/dev/davinci4 \ 
--device=/dev/davinci5 \ 
--device=/dev/davinci6 \ 
--device=/dev/davinci7 \ 
--device=/dev/davinci_manager \ 
--device=/dev/devmm_svm \ 
--device=/dev/hisi_hdc \ 
--shm-size=32g \ 
-v /usr/local/dcmi:/usr/local/dcmi \ 
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ 
-v /var/log/npu/:/usr/slog \ 
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ 
-v ${work_dir}:${container_work_dir} \ 
--name ${container_name} \ 
${image_id}  \ 
/bin/bash
参数说明:
device=/dev/davinci0,..., --device=/dev/davinci7:挂载NPU设备,示例中挂载了8张卡davinci0~davinci7,可根据需要选择挂载卡数。
${work_dir}:${container_work_dir} 代表需要在容器中挂载宿主机的目录。宿主机和容器使用不同的文件系统,work_dir为宿主机中工作目录,目录下存放着训练所需代码、数据等文件。container_dir为要挂载到的容器中的目录。为方便两个地址可以相同。
shm-size:共享内存大小。
${container_name}:容器名称,进入容器时会用到,此处可以自己定义一个容器名称。
${image_id}:镜像ID,通过docker images查看刚拉取的镜像ID。
 
注意
容器不能挂载到/home/ma-user目录,此目录为ma-user用户家目录。如果容器挂载到/home/ma-user下,拉起容器时会与基础镜像冲突,导致基础镜像不可用。
driver及npu-smi需同时挂载至容器。
不要将多个容器绑到同一个NPU上,会导致后续的容器无法正常使用NPU功能。

1. 推理验证

在容器工作目录container_work_dir下执行以下操作

1.1 下载模型文件

下载链接: https://huggingface.co/BAAI/bge-reranker-base/tree/main (下载全部文件)

1.2 安装 FlagEmbedding

pip install FlagEmbedding

1.3 推理验证

 推理demo代码

from FlagEmbedding import FlagReranker
import torch
import torch_npu
import time

def main():
    reranker = FlagReranker('model', use_fp16=True, devices="npu:0") # Setting use_fp16 to True speeds up computation with a slight performance degradation

    queries1 = ['what is panda?', 'The giant panda (Ailuropoda melanoleuca), sometimes called a panda bear or simply panda, is a bear species endemic to China.']
    score = reranker.compute_score(queries1)
    print("score: ", score)

    queries_all = [queries1 for _ in range(100)]
    start_time = time.time()
    scores = reranker.compute_score(queries_all)
    print("infer time(s): ", time.time() - start_time)

if __name__ == "__main__":
   torch_npu.npu.config.allow_internal_format = False 
   torch.npu.set_compile_mode(jit_compile=False)
   main()

推理结果,

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。