鲲鹏+昇腾(910B4芯片)部署Embedding和rerank模型连接Dify

配置

Atlas800I A2(910B4 8*32G)
系统:openEuler 22.03-LTS
驱动:24.rc3
参考文章:https://www.hiascend.com/developer/ascendhub/detail/07a016975cc341f3a5ae131f2b52399d
在这里插入图片描述

准备好模型使能镜像

mindie_docker_images/800IA2-mis-tei-6.0.RC3.tar

embedding-rerank-models

docker load -i mindie_docker_images/800IA2-mis-tei-6.0.RC3.tar //加载镜像

rar -xvf BAAI.tar  //解压在你想放的目录下,我放在/www/down

在这里插入图片描述
我这次部署是:bge-large-zh-v1.5 和 bge-reranker-large

部署

我是分别两个模型进行容器创建:

docker run -u root -e ASCEND_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 -itd --name=tei-reranker --net=host \
-e HOME=/home/HwHiAiUser \
--privileged=true  \
-v /www/down/:/home/HwHiAiUser/model \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
--entrypoint /home/HwHiAiUser/start.sh \
swr.cn-south-1.myhuaweicloud.com/ascendhub/mis-tei:6.0.0-800I-A2-aarch64 \
BAAI/bge-reranker-large 127.0.0.1 8085 
docker run -u root -e ASCEND_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 -itd --name=tei-large --net=host \
-e HOME=/home/HwHiAiUser \
--privileged=true  \
-v /www/down/:/home/HwHiAiUser/model \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
--entrypoint /home/HwHiAiUser/start.sh \
swr.cn-south-1.myhuaweicloud.com/ascendhub/mis-tei:6.0.0-800I-A2-aarch64 \
BAAI/bge-large-zh-v1.5  127.0.0.1 8086

可以查看docker logs 镜像ID判断是否启动成功,最后出现ready就成功了
在这里插入图片描述

测试接口

rerank模型测试:
curl 127.0.0.1:8085/rerank \
    -X POST \
    -d '{"query":"What is Deep Learning?", "texts": ["Deep Learning is not...", "Deep learning is..."]}' \
    -H 'Content-Type: application/json'
embedding模型测试:
curl 127.0.0.1:8086/embed \
    -X POST \
    -d '{"inputs":"What is Deep Learning?"}' \
    -H 'Content-Type: application/json'

在这里插入图片描述
在这里插入图片描述

连接dify

bge-reranker-large模型API:http://IP:8085/rerank ,API key随便填
bge-large-zh-v1.5模型API:http://IP:8086/embed,API key随便填

在这里插入图片描述

### 部署大型模型Ascend 310P #### 环境准备 为了确保能够在Ascend 310P处理器上顺利部署大型模型,环境配置至关重要。这包括但不限于安装必要的软件包以及设置运行时参数来优化性能表现。对于特定硬件的支持,通常需要依赖厂商提供的驱动程序支持库[^1]。 #### 安装框架与工具链 针对Ascend系列芯片,华为提供了MindSpore作为主要的人工智能计算框架之一。通过该框架可以实现神经网络的设计、训练及推理过程。因此,在目标平台上执行如下命令以完成MindSpore及相关组件的安装: ```bash pip install mindspore-ascend==1.x.x ``` 这里`1.x.x`代表具体的版本号,请依据实际情况调整。此外还需要注意Python解释器版本兼容性问题。 #### 转换并加载预训练权重 当拥有已经在其他平台(如GPU)上预先训练好的模型文件时,则需将其转换成适用于当前架构的形式。假设原始模型保存为`.ckpt`格式,那么可以通过以下方式导入至MindSpore环境中: ```python import numpy as np from mindspore import Tensor, load_checkpoint, load_param_into_net param_dict = load_checkpoint("model.ckpt") # 加载checkpoint文件中的参数表 new_params = {} # 创建新的参数字典用于存储适配后的参数值 for key in param_dict.keys(): new_key = "net." + key # 假设原key前缀不符合要求则添加自定义前缀"net." new_tensor = Tensor(param_dict[key].asnumpy()) # 将Parameter对象转为Tensor类型 new_params[new_key] = new_tensor # 更新到新字典中 load_param_into_net(your_model_instance, new_params) # 将更新过的参数应用回网络实例 ``` 此段代码展示了如何读取外部checkpoints并将其中的内容映射给指定的对象结构。需要注意的是实际操作过程中可能涉及到更多细节处理,比如名称空间差异等。 #### 执行推理任务 一旦完成了上述准备工作之后就可以着手编写具体的应用逻辑了。下面给出一段简单的预测流程示意代码片段: ```python import time import os from PIL import Image from mindspore.dataset.vision.py_transforms import Decode, Resize, CenterCrop, ToTensor, Normalize from mindspore.train.serialization import load_checkpoint, load_param_into_net def preprocess(image_path): img = Image.open(image_path).convert('RGB') transforms_list = [ Decode(), Resize(256), CenterCrop(224), ToTensor(), Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ] transform = Compose(transforms_list) return transform(img) if __name__ == '__main__': model_ckpt = 'your_pretrained_model.ckpt' image_dir = './images/' result_file = open('./results.txt', 'w') net = YourModelClass() # 初始化网络结构体 param_dict = load_checkpoint(model_ckpt) # 导入已有的权值数据 load_param_into_net(net, param_dict) # 合并两者形成完整的可执行个体 start_time = time.time() for filename in os.listdir(image_dir): if not filename.lower().endswith(('png', 'jpg')): continue try: input_data = preprocess(os.path.join(image_dir, filename)) output = net(input_data.unsqueeze_(0)) # 进行一次正向传播运算得到分类得分矩阵 pred_label = int(output.argmax(dim=1)[0]) # 获取最高分对应的类别索引 line = f'{filename}: {pred_label}\n' # 构造输出记录字符串 print(line.strip()) result_file.write(line) except Exception as e: print(f"Error processing {filename}: ", str(e)) elapsed_time = time.time() - start_time avg_inference_speed = len([f for f in os.listdir(image_dir)]) / elapsed_time print(f'\nAverage inference speed: %.2f images/sec\n' % (avg_inference_speed,)) result_file.close() ``` 这段脚本实现了批量图像识别的功能,并统计平均推断速度。当然这只是非常基础的例子,真实场景下往往更加复杂多变,涉及更多的业务需求技术挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值