【爱克斯开发板试用】Intel Open Model Zoo英特尔训练模型库验证与Open5GS网元部署

作者:徐万腾 周峰 费颖超 公司:东方通信股份有限公司
一、前言
本次使用的开发板型号为AIxBoard-N5105,开发公司为蓝蛙智能。蓝蛙智能作为英特尔OpenVINO官方技术伙伴,在2023年推出英特尔数字化开发套件爱克斯板AIxBoard-N5105。作为入门级人工智能应用和边缘智能设备,爱克斯板能完美胜人工智能学习、开发、实训、应用等不同应用场景。
二、产品开箱展示
三、Intel Open Model Zoo英特尔训练模型库验证
本次首选Intel Open Model Zoo英特尔训练模型库(部署流程可参考:https://github.com/openvinotoolkit/open_model_zoo),挑选部分实验进行验证,测试开发板在人工智能入门学习场景下的应用;
3.1 speech_recognition_quartznet_demo(语音识别实验)
该实验读取标准化音频信号,输出解码的文本。使用Wav2Vec 模型(轻量型)适合边缘计算,运行命令如下:
python3 speech_recognition_quartznet_demo.py -m ./public/quartznet-15x5-en/FP16/quartznet-15x5-en.xml -i clean007.wav
语音识别实验效果如图(红框为语音转文字内容):
3.2 face_recognition_demo(人脸识别演示)
该实验检测输入的视频或图像中的人脸,并可通过构建数据库,判断是谁,人脸识别技术广泛用于门禁系统、刷脸支付、无人超市等场景中。运行命令如下:
python face_recognition_demo.py -i head-pose-face-detection-female-and-male.mp4 -m_fd ./intel/face-detection-retail-0004/FP16/face-detection-retail-0004.xml -m_lm ./intel/landmarks-regression-retail-0009/FP16/landmarks-regression-retail-0009.xml -m_reid ./intel/face-reidentification-retail-0095/FP16/face-reidentification-retail-0095.xml
3.3 machine_translation_demo(机器翻译演示)
程序输入为原始语言文本,翻译成目标国家语言的文本。运行命令如下:
#以下为英语翻译为德语
python3 machine_translation_demo.py -d CPU -i "a sample english text" -m ./intel/machine-translation-nar-en-de-0002/FP16/machine-translation-nar-en-de-0002.xml --tokenizer-src ./intel/machine-translation-nar-en-de-0002/tokenizer_src/ --tokenizer-tgt ./intel/machine-translation-nar-en-de-0002/tokenizer_tgt/
#以下为英语翻译为俄语
python3 machine_translation_demo.py -d CPU -i "a sample english text" -m ./intel/machine-translation-nar-en-ru-0002/FP16/machine-translation-nar-en-ru-0002.xml --tokenizer-src ./intel/machine-translation-nar-en-ru-0002/tokenizer_src/ --tokenizer-tgt ./intel/machine-translation-nar-en-ru-0002/tokenizer_tgt/
英文翻译为俄文结果演示:
英文翻译为德文结果演示:
3.4 sound_classification_demo(声音分类演示)
根据实验加载模型的label,对源声音数据进行分类,查找对应匹配的label,每秒检查推理出声音的类型Class。运行命令如下:
python3 sound_classification_demo.py -i clean007.wav -m ./public/aclnet/FP16/aclnet.xml -d CPU --sample_rate 16000
python3 sound_classification_demo.py -i clean007.wav -m ./public/aclnet/FP16/aclnet.xml -d CPU --sample_rate 16000
3.5 其他验证实验说明
除了上述实验,我们还在该开发板上部署了近期非常流行的对话模型:ChatGPT2和清华ChatGLM。其中清华ChatGLM最小需要6G以上显存,暂时无法启动;ChatGPT2 117M模型文件需要内存4G以上,可以正常运行。从实验案例验证来看,AIxBoard(爱克斯板)很适合作为个人开发,及入门的边缘计算项目。
四、Open5GS网元部署
部署前准备:k8s dashboard版本为v2.5.1;
4.1 NFV+5GC组网架构
NFV+5GC组网架构图如下:
1.以容器方式运行的采用绿色。以K8S运行的采用淡绿色,以进程方式运行的采用黄色;
2. UDMA首次启动会通过ODBC连接网管MySQL,后续通过UDR访问MySQL;
3.Mysql通过物理机IP和UDR容器(物理机IP)进行通信,Redis雷同;
4.业务Pod都是以Macvlan方式运行;
5.RAN和DN目前是固定172网段,故跟192网段不同网段;
6.验证在开发板上部署open5gs各网元;
4.2 新建命名空间open5gs
在左边下拉框中找到命名空间,然后点击右上角的“+”号进入创建操作:
点击后进入以下界面:
选择输入并创建选项,输入namespace配置,点击上传,命名空间创建完成。
选择刚刚创建的open5gs命名空间,后续操作都在该命名空间下操作。
点击下图红框处。
以下部署网元也是进入到此页面,不再赘述,各网元所需yaml文件已提供模板,下文只讲各网元可配的地方。
4.3 部署mongodb
deploy-mongodb.yaml文件内容及详细说明如下:
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: open5g***ongodb
spec:
#pod 网络配置
config: '{
"cniVersion": "0.3.0",
"type": "macvlan",
"master": "enp3s0f0",
"mode": "bridge",
"ipam": {
"type": "host-local",
"subnet": "10.8.62.0/24",
"rangeStart": "10.8.62.120",
"rangeEnd": "10.8.62.120",
"routes": [],
"gateway": "10.8.62.1"
}
}'
---
#用于webui访问的service
apiVersion: v1
kind: Service
metadata:
name: open5g***ongodb
spec:
ports:
- port: 27017
protocol: TCP
targetPort: 27017
selector:
k8s-app: open5g***ongodb
type: ClusterIP
---
#api版本
apiVersion: v1
#资源类型
kind: Pod
#资源元数据
metadata:
#注释信息,关联上面的网卡配置
annotations:
k8s.v1.cni.cncf.io/networks: open5g***ongodb
#pod标签,与上面资源选择器的匹配标签对应
labels:
k8s-app: open5g***ongodb
#pod名
name: open5g***ongodb
#pod规格
spec:
#重启策略
restartPolicy: Always
#容器列表
containers:
#- image: 10.8.52.202/open5g***ongo
- image: 10.8.52.202/open5g***ongo
#容器端口
ports:
- containerPort: 27017
protocol: TCP
#容器名
name: open5g***ongodb
#计算资源
resources:
#资源限制
limits:
cpu: 300m
memory: 300Mi
#资源请求
requests:
cpu: 300m
memory: 300Mi
#volume挂载
volumeMounts:
#被挂载的volume名
- name: config-volume
#挂载至容器的目录
mountPath: /data/db
#volume列表
volumes:
#volume名
- name: config-volume
#volume类型,这里暂时使用宿主机目录
hostPath:
#指定宿主机目录,若宿主机没这个目录,k8s会新建这个目录
path: /root/open5gs-k8***ongodb
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: open5g***ongodb
spec:
#pod 网络配置
config: '{
"cniVersion": "0.3.0",
"type": "macvlan",
"master": "enp3s0f0",
"mode": "bridge",
"ipam": {
"type": "host-local",
"subnet": "10.8.62.0/24",
"rangeStart": "10.8.62.120",
"rangeEnd": "10.8.62.120",
"routes": [],
"gateway": "10.8.62.1"
}
}'
---
#用于webui访问的service
apiVersion: v1
kind: Service
metadata:
name: open5g***ongodb
spec:
ports:
- port: 27017
protocol: TCP
targetPort: 27017
selector:
k8s-app: open5g***ongodb
type: ClusterIP
---
#api版本
apiVersion: v1
#资源类型
kind: Pod
#资源元数据
metadata:
#注释信息,关联上面的网卡配置
annotations:
k8s.v1.cni.cncf.io/networks: open5g***ongodb
#pod标签,与上面资源选择器的匹配标签对应
labels:
k8s-app: open5g***ongodb
#pod名
name: open5g***ongodb
#pod规格
spec:
#重启策略
restartPolicy: Always
#容器列表
containers:
#- image: 10.8.52.202/open5g***ongo
- image: 10.8.52.202/open5g***ongo
#容器端口
ports:
- containerPort: 27017
protocol: TCP
#容器名
name: open5g***ongodb
#计算资源
resources:
#资源限制
limits:
cpu: 300m
memory: 300Mi
#资源请求
requests:
cpu: 300m
memory: 300Mi
#volume挂载
volumeMounts:
#被挂载的volume名
- name: config-volume
#挂载至容器的目录
mountPath: /data/db
#volume列表
volumes:
#volume名
- name: config-volume
#volume类型,这里暂时使用宿主机目录
hostPath:
#指定宿主机目录,若宿主机没这个目录,k8s会新建这个目录
path: /root/open5gs-k8***ongodb
把以上yaml文件内容**到dashboard中,如下:
然后点击上传即可。
4.4 部署open5gs各网元
首先以amf为例,创建configmap,作为amf的配置文件,创建方法与上面相同,配置文件如下:
apiVersion: v1
kind: ConfigMap
metadata:
name: amf-conf
namespace: open5gs
data:
amf.yaml: |-
level: trace
logger:
file: /var/log/open5gs/amf.log
amf:
**i:
- addr: 10.8.62.102
port: 7777
ngap:
- addr: 10.8.62.102
guami:
- plmn_id:
mcc: 901
mnc: 70
amf_id:
region: 2
set: 1
tai:
- plmn_id:
mcc: 901
mnc: 70
tac: 1
plmn_support:
- plmn_id:
mcc: 901
mnc: 70
s_nssai:
- sst: 1
security:
integrity_order : [ NIA2, NIA1, NIA0 ]
ciphering_order : [ NEA0, NEA1, NEA2 ]
network_name:
full: Open5GS
amf_name: open5gs-amf0
nrf:
**i:
- addr:
- 10.8.62.106
port: 7777
parameter:
max:
pool:
time:
apiVersion: v1
kind: ConfigMap
metadata:
name: amf-conf
namespace: open5gs
data:
amf.yaml: |-
level: trace
logger:
file: /var/log/open5gs/amf.log
amf:
**i:
- addr: 10.8.62.102
port: 7777
ngap:
- addr: 10.8.62.102
guami:
- plmn_id:
mcc: 901
mnc: 70
amf_id:
region: 2
set: 1
tai:
- plmn_id:
mcc: 901
mnc: 70
tac: 1
plmn_support:
- plmn_id:
mcc: 901
mnc: 70
s_nssai:
- sst: 1
security:
integrity_order : [ NIA2, NIA1, NIA0 ]
ciphering_order : [ NEA0, NEA1, NEA2 ]
network_name:
full: Open5GS
amf_name: open5gs-amf0
nrf:
**i:
- addr:
- 10.8.62.106
port: 7777
parameter:
max:
pool:
time:
滚动至下面可以查看到刚刚创建的configmap。
然后再部署amf网元,配置如下:
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: open5gs-amf
spec:
#pod 网络配置
config: '{
"cniVersion": "0.3.0",
"type": "macvlan",
"master": "enp3s0f0",
"mode": "bridge",
"ipam": {
"type": "host-local",
"subnet": "10.8.62.0/24",
"rangeStart": "10.8.62.102",
"rangeEnd": "10.8.62.102",
"routes": [],
"gateway": "10.8.62.1"
}
}'
---
apiVersion: v1
kind: Pod
metadata:
annotations:
k8s.v1.cni.cncf.io/networks: open5gs-amf
name: open5gs-amf
labels:
app: open5gs-amf
spec:
restartPolicy: Always
#由于网络方案未定,手动配ip需要时间,init容器用于等待ip配置
initContainers:
- image: 10.8.52.202/library/busybox
name: wait-network
command: ['sh', '-c', 'while true; do ping 10.8.62.102 -c 1 -W 2;a=$?;if \[\[ $a == 0 \]\];then break; fi; done;']
containers:
- image: 10.8.52.202/open5gs/open5gs-amf
name: open5gs-amf
resources:
limits:
cpu: 200m
memory: 200Mi
requests:
cpu: 200m
memory: 200Mi
volumeMounts:
- name: config-volume
mountPath: /open5gs-config
volumes:
- name: config-volume
#volume类型为configMap
configMap:
#configMap名
name: amf-conf
dashboard上显示如下:
后续其他网元操作类似,不再赘述。
4.5 增加用户
打开浏览器,在地址栏中输入IP:port,登录后可在Subscribe菜单页上进行开户操作:
IMSI号填ue配置文件中的supi项中的号码即可。
4.6 运行模拟基站
首先修改模拟基站配置文件open5gs-gnb.yaml:
其中linkIp,ngapIp,gtpIp都改为模拟基站所在服务器ip。amfConfigs下的addresst填amf的ip。配置完成后,启动模拟基站。
4.7 运行模拟ue
首先也是修改配置,如下图红框处所示,填写基站地址即可。
配置完成后,启动模拟ue。如下图所示,注册成功。
五、总结
从实验结论来看,AIxBoard(爱克斯板)适合作为个人开发,及入门的边缘计算项目;同时可以快速的移植x86架构下应用程序,为公司5G融合边缘计算项目加速落地提供支持,具有实时完成移动网络边缘的业务处理;适配服务器边缘计算小型硬件组网的要求,可进行便捷部署,支持统一管理接口和主流的服务器操作系统。
另一方面,开发板存在GPU性能不足的问题,导致部分显存需求实验存在压力。介绍上主要接口与Jetson Nano(带GPU)载板兼容,但还需进行实验探索。若开发板后期能够增加性价比高的GPU组件,将会对边缘计算,图像处理功能提供强大的助力。