前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >香橙派AIpro开发板评测:香橙派AIpro也能MindSpore+Jupyter Notebook开发呀和Qwen2-0.5B-Instruct-GGUF部署

香橙派AIpro开发板评测:香橙派AIpro也能MindSpore+Jupyter Notebook开发呀和Qwen2-0.5B-Instruct-GGUF部署

作者头像
秋名山码神
发布2024-07-21 08:06:31
2550
发布2024-07-21 08:06:31
举报
文章被收录于专栏:码神随笔

香橙派AIpro开发板评测:香橙派AIpro也能MindSpore+Jupyter Notebook开发呀和Qwen2-0.5B-Instruct-GGUF部署

前言

以前就是用华为云的昇腾卡训练模型,今天看到香橙派推出一款 Orange Ai Pro 的板子,他们的口号是:为AI而生,采用昇腾AI技术路线,8T算力,迫不及待的下单入手体验一把,中国芯的家族又迎来了一位重量级嘉宾。点赞!点赞!点赞!

硬件介绍

硬件配置参考图

硬件配置参考图给的超级详细,拨码开关这种小细节,都给出了,对新手小白极其友好

硬件实物图

我选择tf卡启动,所以将拨码开关滑动到右边

固件烧录

固件下载

可以到官网

(orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-AIpro.html)直接下载对应的固件

烧录固件

最常规的烧录方式,tf卡插入读卡器,用balenaEtcher工具烧录,等待Success即可

初步体验

登陆

我是通过Micro USB串口调试口登陆的,启动过程需要等待一段时间

用户名: HwHiAiUser,密码:Mind@123,后面需要超级用户时候,也可以root登陆,密码依然是:Mind@123,或者用sudo也可以

基本信息

可以看到存储容量32G,内存8G,aarch64架构

网络信息

可以直接把wan口接到路由器,会自动给eth0分配IP,网络环境准备OK

MindSpore测试

昇思MindSpore是由华为于2019年8月推出的新一代全场景AI框架,2020年3月28日,华为宣布昇思MindSpore正式开源。昇思MindSpore是一个全场景AI框架,旨在实现易开发、高效执行、全场景统一部署三大目标。

MindSpore是和PyTorch、TensorFlow同等地位的深度学习框架,同时相比后2者,MindSpore的出发点就是旨在支持从边缘设备到云端的全场景部署,这点对我们嵌入式端更友好。

而且香橙派AIpro采用昇腾技术路线,在底层就支持了CANN框架,和NVIDIA的CUDA框架是同等地位。CANN(Compute Architecture for Neural Networks)是华为为昇腾(Ascend)系列AI处理器设计的全栈AI软硬件协同计算框架,它提供了对昇腾AI处理器的底层访问,CANN 中的算子库(Operator Library)提供了大量预优化的AI算子,可以加速模型的训练和推理过程。

因为深度学习涉及到的模型参数少则千万,多则数以亿计,如果在底层算子方面没有工业级别的优化,会非常浪费内存、计算资源

这也是香橙派AIpro的精华所在,华为MindSpore可以直接部署在上面

执行下面代码,导入Mindspore环境

代码语言:javascript
复制
python -c \
"import mindspore;mindspore.set_context(device_target='Ascend');mindspore.run_check()"

看到如下输出,[Ascend] successfully!,则说明能正常使用

启动 Jupyter Lab

进入samples目录

代码语言:javascript
复制
cd samples

启动对应服务,192.168.123.119这个IP是我的香橙派AIpro获取的IP地址

代码语言:javascript
复制
 ./start_notebook.sh 192.168.123.119
网页访问

这个时候,保证我的电脑和香橙派AIpro在同一个局域网内,则输入对应的ip:192.168.123.119:8888,带上对应token,则可网页访问

体验OCR

现在已经进入Jupyter Lab的环境了,熟悉Jupyter Lab根本不会察觉到现在是在香橙派AIpro还是云端,接下来就是鼠标点点点,愉快的体验MindSpore的强大了

还是蛮快的,7ms就完成了,在香橙派AIpro实现ocr不仅仅能避免因为网络延时影响,而且对用户的隐私更有保障,一些私有的数据不必上云

OCR代码分析

导入一些基础的库,重点是最后2行,是用于加载和运行在Ascend芯片上部署的机器学习模型, 管理Ascend芯片上的资源,如内存分配、设备初始化等

代码语言:javascript
复制
import os
import time
import argparse
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
from acllite_model import AclLiteModel as Model
from acllite_resource import AclLiteResource as AclResource

模型导入和处理,定义CTCLabelConverter类,用于文本和数据编码,这个类使用了CTC(Connectionist Temporal Classification)损失函数的特性

代码语言:javascript
复制
# om模型和图片的位置
MODEL_PATH = './cnnctc.om'
IMAGE_PATH = './predict.png'
# 初始化acl资源
acl_resource = AclResource()
acl_resource.init()
#导入本地om模型
print('load model....')
model = Model(MODEL_PATH)
print('load model finished....')
# 文本与数据编码
class CTCLabelConverter():
    def __init__(self, character):
        dict_character = list(character)
        self.dict = {}
        for i, char in enumerate(dict_character):
            self.dict[char] = i + 1
        self.character = ['[blank]'] + dict_character
        self.dict['[blank]'] = 0
    #将文本转换为数字编码
    def encode(self, text):
        length = [len(s) for s in text]
        text = ''.join(text)
        text = [self.dict[char] for char in text]
        return np.array(text), np.array(length)
    # 将数字编码转换为文本
    def decode(self, text_index, length):
        texts = []
        index = 0
        for l in length:
            t = text_index[index:index + l]
            char_list = []
            for i in range(l):
                if t[i] != self.dict['[blank]'] and (
                        not (i > 0 and t[i - 1] == t[i])):
                    char_list.append(self.character[t[i]])
            text = ''.join(char_list)
            texts.append(text)
            index += l
        return texts

这里就是包含了图像预处理、模型推理、以及结果解码的部分

代码语言:javascript
复制
# 导入和处理目标图片
img_PIL = Image.open(IMAGE_PATH).convert('RGB')
img = img_PIL.resize((100, 32), resample=3)
img = np.array(img, dtype=np.float32)
img = np.expand_dims(img, axis=0)
img = np.transpose(img, [0, 3, 1, 2])
# 定义推理的时间
start = time.time()
model_predict = model.execute([img])[0]
end = time.time()
print(f'infer use time:{(end-start)*1000}ms')
# 初始化文本编码函数
character = '0123456789abcdefghijklmnopqrstuvwxyz'
converter = CTCLabelConverter(character)
# 推理过程
preds_size = np.array([model_predict.shape[1]])
preds_index = np.argmax(model_predict, 2)
preds_index = np.reshape(preds_index, [-1])
preds_str = converter.decode(preds_index, preds_size)
print('Predict: ', preds_str)
体验曝光增强

在分辨率为512 * 512 的情况下,266ms完成,效果很明显,图片效果好了很多

npu实时信息

Qwen-GGUF部署

除了昇腾芯片,本身香橙派AIpro也足够强,成功把Qwen0.5B的gguf格式文件的大模型部署

下载llama.cpp

执行命令

代码语言:javascript
复制
git clone https://github.com/ggerganov/llama.cpp.git

进入llama.cpp,执行命令,需要等待一段时间,执行命令的时间比较长

代码语言:javascript
复制
make
下载大模型
代码语言:javascript
复制
from modelscope import snapshot_download 
model_dir = snapshot_download('qwen/Qwen2-0.5B-Instruct-GGUF')

用 llama-server 工具启动对应的服务 调用对应的服务,在0.5B大模型的情况下,Qwen模型还是可以通过深圳关联到大梅沙、莲花山,效果还是值得认可的

使用总结

1、第一次在香橙派AIpro使用Jupyter Lab,这种集成环境确实让我惊艳到了,以前都是阿里云PAI上使用,但是这次在香橙派AIpro使用,没有感到区别,这种集成环境的搭建,必须给香橙派AIpro点赞;

2、Micro USB 接口的调试串口,非常利于调试,以前那种杜邦线收发地三个口,不仅容易掉,而且容易插错,这种调试接口,不仅常见,而且易于使用

3、里面提供的基于MindSpore的例子,很容易上手,代码结构也很清晰;

4、感觉美中不足的,虽然8+32已经很大了,但是想要体验一些大模型,还是不够,需要使用swap;

Orange Pi论坛(http://forum.orangepi.cn/)、昇腾社区(hiascend.com)上面也有很多好玩的模型,后面会继续尝试把模型部署到香橙派上,再与大家分享,也希望大家多多给一些建议。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 香橙派AIpro开发板评测:香橙派AIpro也能MindSpore+Jupyter Notebook开发呀和Qwen2-0.5B-Instruct-GGUF部署
    • 前言
      • 硬件介绍
        • 硬件配置参考图
        • 硬件实物图
      • 固件烧录
        • 固件下载
      • 烧录固件
        • 初步体验
          • 登陆
          • 基本信息
          • 网络信息
        • MindSpore测试
          • 启动 Jupyter Lab
          • 网页访问
          • 体验OCR
          • OCR代码分析
          • 体验曝光增强
        • Qwen-GGUF部署
          • 下载llama.cpp
          • 下载大模型
        • 使用总结
        相关产品与服务
        腾讯云代码分析
        腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档