云社区 博客 博客详情
云社区 博客 博客详情

华为AI开发平台ModelArts本地化部署实操

JH008336 发表于 2020-05-19 19:57:41 05-19 19:57
JH008336 发表于 2020-05-19 19:57:41 2020/05/19
0
1

【摘要】 这篇博客是本人在公司注册的华为云平台中写的,现将此篇博客迁移到个人博客中来,纯原创,只想在个人博客中留个记录。华为AI开发平台ModelArts本地化部署实操准备Linux环境,我的环境是LSB Version: :core-4.1-amd64:core-4.1-noarchDistributor ID: CentOSDescription: CentOS Linux relea...

这篇博客是本人在公司注册的华为云平台中写的,现将此篇博客迁移到个人博客中来,纯原创,只想在个人博客中留个记录。

华为AI开发平台ModelArts本地化部署实操

准备Linux环境,我的环境是


LSB Version:    :core-4.1-amd64:core-4.1-noarch


Distributor ID: CentOS


Description:    CentOS Linux release 7.4.1708 (Core)


Release:        7.4.1708


Codename:       Core


默认是python2.7版本


用yum安装一些必须的软件包


yum install zlib-devel


yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++  openssl-devel libffi-devel python-devel mariadb-devel


去python官网下载python3安装包,我下载的是Python-3.6.2.tgz


解压python3安装包 tar zxvf Python-3.6.2.tgz


创建一个文件夹,用来存放python编译代码


mkdir /usr/local/src/python


将解压的python3安装包移动到下面文件夹中/usr/local/src


进入到python3解压包中,执行以下命令


[root@ Python-3.6.2]# ls


[root@ Python-3.6.2]# ./configure --prefix=/usr/local/src/python --with-ssl


执行安装命令


make && make install


检查


[root@ Python-3.6.2]# /usr/local/src/python/bin/python3 -V


Python 3.6.2


[root@ Python-3.6.2]# /usr/local/src/python/bin/pip3 -V


pip 20.0.2 from /usr/local/src/python/lib/python3.6/site-packages/pip (python 3.6)


进行链接替换,生效python3.6


查看python2和pip安装路径


[root@ Python-3.6.2]# which python


/usr/bin/python


[root@ Python-3.6.2]# which pip


/usr/bin/pip


进行软链接切换


[root@ Python-3.6.2]# ln -s /usr/local/src/python/bin/python3 /usr/bin/python -f


[root@ Python-3.6.2]# ln -s /usr/local/src/python/bin/pip3 /usr/bin/pip -f


[root@ Python-3.6.2]# python -V


Python 3.6.2


[root@ Python-3.6.2]# pip -V


pip 9.0.1 from /usr/local/src/python/lib/python3.6/site-packages (python 3.6)


[root@ bin]# ln -s /usr/local/src/python/bin/easy_install-3.6 /usr/bin/easy_install -f


yum源的影响,因为yum源是用到python2进行下载,因安装了python3,要把yum指定python版本


[root@ bin]# vim /usr/bin/yum


[root@ bin]# vim /usr/libexec/urlgrabber-ext-down


将第一行的#!/usr/bin/python 指向python2   #!/usr/bin/python2


pip安装gunicorn


pip install gunicorn


如果在系统中好不到命令,是因为可执行文件,没有设置软链接,因为python2和python3共存,要手动配置文件


find / -name gunicorn找到对应路径,一般在python安装路径下,设置软链接


ln -s /usr/local/src/python/bin/gunicorn /usr/bin/gunicorn -f


更新pip,如果没有pip,则要下载安装


yum -y install epel-release


yum -y install python-pip


pip -V 查看版本


更新pip


pip install --upgrade pip


[root@ Python-3.6.2]# pip -V


pip 20.0.2 from /usr/local/src/python/lib/python3.6/site-packages/pip (python 3.6)


更改pip源


永久性设置,是在用户根目录(~,而非系统根目录 / )下添加配置~/.pip/pip.conf目录添加可信源,如果目录文件不存在,可直接创建。因国外源下载速度慢,可自行搬梯子,可忽略。。。。。。


[root@localhost ~]# cd 


[root@localhost ~]# mkdir .pip


[root@localhost ~]# cd .pip


[root@localhost .pip]# vim pip.conf


写入如下内容


清华pip源


[global]


index-url = https://pypi.tuna.tsinghua.edu.cn/simple


[install]


trusted-host = https://pypi.tuna.tsinghua.edu.cn


modelArtsSDK下载


下载地址:https://cnnorth1-modelarts-sdk.obs.cn-north-1.myhwclouds.com/modelarts-1.1.3-py2.py3-none-any.whl,用最新版本的SDK


安装SDK


pip install modelarts-1.1.3-py2.py3-none-any.whl


安装完modelArts,需要安装依赖包


pip install certifi >= 14.05.14


pip install six >= 1.10


pip install python_dateutil >= 2.5.3


pip install setuptools >= 21.0.0


pip install urllib3 >= 1.15.1


pip install requests >= 2.19.1


pip install esdk-obs-python == 3.0.5


pip install Flask==1.0.2


pip install Flask-Cors==3.0.4


pip install gunicorn==19.8.1


pip install mxnet-model-server==0.3


pip install psutil==5.4.6


pip install prometheus_client==0.3.1


pip insatll numpy==1.15.0


pip install h5py==2.8.0


pip insatll tensorflow==1.8.0


pip install Pillow==5.2.0


pip insatll scipy==1.2.1


pip insatll audioread==2.1.6


pip install resampy==0.2.1


pip install librosa==0.6.3


pip install scikit-learn==0.19.1


pip install SoundFile==0.10.2


更新setuptools


pip install --upgrade setuptools


配置config.json认证模式


在SDK安装后,“config.json”被放在“<python安装目录>/site-packages/modelarts/config/”目录下,不同操作系统可能略有不同。


我的config是在以下路径中/usr/local/src/python/lib/python3.6/site-packages/modelarts/config


mkdir .modelarts


将文件夹中的config.json存放在home/.modelarts目录中


修改config.json 中的数据,将北京1区,修改成你modelArts所在区。我的是在北京4区,在输入账号名,用户名,密码


{


"contexts": [


{


"name": "default",


"context": {


"cluster": "cn-north-4",


"user": "user1"


}


}


],


"clusters": [


{


"name": "cn-north-4",


"cluster": {


"region": "cn-north-4",


"verify_ssl": "false"


}


}


],


"users": [


{


"name": "user1",


"user": {


"account": "输入账号名",


"username": "输入用户名",


"password": "输入密码"


}


}


]


}


查看是否有报错的那个版本GLIBCXX_3.4.20,CXXABI_1.3.8


strings /usr/lib64/libstdc++.so.6 | grep GLIBC


strings /usr/lib64/libstdc++.so.6 | grep CXXABI


如果没有GLIBCXX_3.4.20,CXXABI_1.3.8这两个版本,就需要执行第15步和第16步


下载gcc高版本


cd /usr/local


wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-6.2.0/gcc-6.2.0.tar.bz2


wget中ftp中的gcc版本可以用gcc-6.2.0版本的


tar jxvf gcc-6.2.0.tar.bz2 -C /usr/local/src


#安装C和C++的静态库


yum install -y glibc-static libstdc++-static


#安装旧版本的gcc、c++编译器


yum install gcc gcc-c++


#转到gcc源程序根目录


cd /usr/local/src/gcc-6.2.0


#下载一些必备的依赖程序


./contrib/download_prerequisites


#跳转到编译后的程序文件存放目录


mkdir /usr/local/build/gcc-6.2.0


cd /usr/local/build/gcc-6.2.0


#调用gcc源程序的configure(后面的参数选项可根据需要自行修改),用于配置gcc


/usr/local/src/gcc-6.2.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib


#编译安装GCC源程序


make && make install


查找libstdc++.so.6路径


find / -name libstdc++.so.6* 


查找到文件路径/usr/local/lib64/libstdc++.so.6.0.22


将libstdc++.so.6.0.22拷贝到/usr/lib64


cp /usr/local/lib64/libstdc++.so.6.0.22 /usr/lib64


删除老的版本


rm -rf /usr/lib64/libstdc++.so.6


设置新的软链接


ln -s /usr/lib64/libstdc++.so.6.0.22 /usr/lib64/libstdc++.so.6


代码测试


先从OBS桶中拉取modelArts训练好的模型


from modelarts.session import Session

#session鉴权,配置config.json认证模式

session = Session(config_file='/home/.modelarts/config.json')

Model.configure_tf_infer_environ(device_type='CPU')

#从OBS下载文件夹,将训练完的数据

#session.download_data(bucket_path="/hpobs/datasetoutput/",path="/home/sdk/")

本地推理预测


from modelarts.session import Session

from modelarts.model import Model

from modelarts.config.model_config import ServiceConfig,Params,Dependencies,Packages

import time

start_time=time.time()

#session鉴权,配置config.json认证模式

session = Session(config_file='/home/.modelarts/config.json')

Model.configure_tf_infer_environ(device_type='CPU')

#从OBS下载文件夹,将训练完的数据

#session.download_data(bucket_path="/hpobs/datasetoutput/",path="/home/sdk/")

#导入模型

model_instance = Model(session,model_id="你自己的模型id")

configs = [ServiceConfig(model_id=model_instance.model_id, weight="100",specification="local",instance_count=1)]

# 部署为本地服务Predictor

predictor_instance = model_instance.deploy_predictor(configs=configs)

# 本地推理预测

predict_result = predictor_instance.predict(data="/home/22.jpg", data_type="images")

print(predict_result)

print('training took %fs!' % (time.time()-start_time))

代码结果:


{"detection_classes": ["no"], "detection_boxes": [[5.624889850616455, 217.21824645996094, 1162.009521484375, 1067.123291015625]], "detection_scores": [0.9998134970664978]}


结束


登录后可下载附件,请登录或者注册

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

评论 (0)


0/1000
评论

登录后可评论,请 登录注册

评论

您还没有写博客的权限!

温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

删除操作无法恢复,请谨慎操作。

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

登录超时或用户已下线,请重新登录!!!

确定
取消