基于昇腾的大模型部署


本文主要说一下遇到的坑,可以配上官方教程一起服用。

部署环境

本主机的硬件环境是intel+ascend910pro,官网说了最好用ubuntu20,内核为5.4.0。如果在服务器重启后更改了内核的话会发现显卡无法使用。

确定驱动和固件软件版本

在昇腾的设备商需要安装驱动和对应的固件,具体安装什么版本是与一些库支持,比如打算使用mindformers1.0,那么驱动是23.0.rc3+7.0.0.5.242。tips,如果一开始主机就装了驱动和固件,如果版本足够新久没必要换,直接拉对应镜像即可使用。

安装驱动和固件

下面的是从官网教程截图的驱动和固件对应版本。
https://www.hiascend.com/document/detail/zh/ModelZoo/pytorchframework/ptes/ptes_00003.html
驱动与固件

由于torch是需要与python对应的,链接为
https://www.hiascend.com/document/detail/zh/canncommercial/70RC1/envdeployment/instg/instg_0083.html
torch版本对应
cann与torch版本对应关系
安装好了驱动和固件就可以去拉镜像了,https://ascendhub.huawei.com/#/index
那么在容器里面如果cann版本不对,可以重新安装,并且可以使用anaconda来管理环境。如果是要重新安装torch的环境,有的软件需要重新编译后安装,一定要先卸载而不要想覆盖的方式安装python的包。

mindformers

midnformers是专门用于大模型训练和推理的框架。注意mindformers的版本在主页已经写清楚了,与cann版本是有对应的,否则跑起来报错。

RANK_TABLE_FILE

首先要在物理机上面生成网络通信的json文件RANK_TABLE_FILE。
RANK_TABLE_FILE需要访问/etc/hccn.conf。
本来是有hccl命令来生成的hccn.conf文件的,如果无法生成可以手动建立。
address_0=192.1.77.127
netmask_0=255.255.0.0
address_1=192.2.179.212
netmask_1=255.255.0.0
address_2=192.3.139.150
netmask_2=255.255.0.0
address_3=192.4.101.253
netmask_3=255.255.0.0
address_4=192.1.21.184
netmask_4=255.255.0.0
address_5=192.2.29.155
netmask_5=255.255.0.0
address_6=192.3.153.208
netmask_6=255.255.0.0
address_7=192.4.167.143
netmask_7=255.255.0.0
然后使用python ./mindformers/tools/hccl_tools.py --device_num "[0,8)"即可生成。链接为https://gitee.com/mindspore/mindformers/blob/r1.0/research/qwen1_5/qwen1_5.md

模型转换

将torch模型转换到mindformer可以读取的格式

--torch_ckpt_dir <torch_ckpt_dir> \
--mindspore_ckpt_path <mindspore_ckpt_path>
# 参数说明:
# torch_ckpt_dir: 预训练权重文件所在的目录,此参数必须。
# mindspore_ckpt_path: 转换后的输出文件存放路径。可选,如果不给出,默认为`./transform.ckpt`

此处针对特大模型需要在多张卡上运行,需要对模型切分,而且并不需要专门去切分,直接使用多卡推理,配置yaml参数即可。
load_checkpoint:填入整个ckpt的完整路径即可。启动推理,然后就自动切分了,切分后的模型放在output/transformed_checkpoint。

cd mindformers/research
# 推理命令中参数会覆盖yaml文件中的相同参数
bash run_singlenode.sh \
"python qwen1_5/run_qwen1_5.py \
--config qwen1_5/run_qwen1_5_72b_infer.yaml \
--run_mode predict \
--use_parallel True \
--load_checkpoint /path/model_dir \
--auto_trans_ckpt True \
--predict_data 帮助我制定一份去上海的旅游攻略" \
RANK_TABLE_FILE [0,8] 8

# 帮助我制定一份去上海的旅游攻略,包括景点、美食、住宿等信息……

然后切分的模型就会在research下建立out文件夹,存放切分好的模型。
但是现在还没发使用这个推理接口,因为这里用linux-shell执行的多进程,如果要接入到python,肯定很麻烦,midnformers已经做好了。
tips:切分后的模型就与对应的卡绑定了,根据相关回应和试验,切分后的模型不能动态选择推理卡,只能选择当时切分是所选的卡。

模型部署

在这里使用mindformers的web-chat,这里面就是纯python了,直接从predict_process.py文件中接到自己的服务中即可。那么对应yaml的load_checkpoint路径则是output/transformed_checkpoint/模型名,这个路径了,直接加载切分后的模型。
https://gitee.com/mindspore/mindformers/blob/r1.1.0/docs/feature_cards/Chat_Web.md

总结

本博基本从物理机到部署上线流程全走了一遍,回顾一下所有的坑包括,驱动与cann不对应(当时天真的以为会像nvidia一样版本向下兼容),linux内核不对应,升级torch版本(由于没有先卸载干净就安装一些python包),当时以为只能使用系统自带的python3.7.5,后来试了才知道可以使用anaconda管理多个python环境,于是进行升级配和mindformers,然后生成RANK_TABLE_FILE时hccl_tool命令无法使用,于是后来才发现可以手动设置。然后就是不知道模型切分的事,模型手动切分和自动切分其实都是传入的一个转换后的总的ckpt文件,在web-chat里面才用的切分后的模型。再后来就是切分后的模型不能更改推理的显卡,在切分是就已经绑定。

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
华为升腾平台支持运行 YOLOv5 目标检测模型,以下是一个简单的 YOLOv5 案例代码示例: ```python import numpy as np from PIL import Image from atlasutil import ai from atlasutil import camera # 加载模型 model = ai.Model("yolov5s.om") # 打开摄像头 camera.open() while True: # 获取摄像头采集的图像 image = camera.capture() # 图像预处理 image = Image.fromarray(np.uint8(image)) image = image.resize((640, 640)) image_data = np.array(image) # 图像推理 output = model.infer([image_data]) # 解析推理结果 output = output[0] boxes, confidences, class_ids = output['boxes'], output['confidences'], output['class_ids'] # 在图像上绘制检测框 for i in range(len(boxes)): box = boxes[i] confidence = confidences[i] class_id = class_ids[i] if confidence > 0.5: x, y, w, h = box left, top, right, bottom = int(x - w / 2), int(y - h / 2), int(x + w / 2), int(y + h / 2) cv2.rectangle(image_data, (left, top), (right, bottom), (0, 255, 0), 2) cv2.putText(image_data, f"{class_id}", (left, top - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2) # 显示图像 cv2.imshow('Object Detection', image_data) if cv2.waitKey(1) & 0xFF == ord('q'): break # 关闭摄像头 camera.close() ``` 这段代码使用华为升腾平台的 YOLOv5 模型进行实时目标检测,并在图像上绘制检测框和类别标签。请确保已安装好华为升腾平台的开发套件和相关依赖库,并参考华为开发者社区的文档进行模型部署和推理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值