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

举报
JH008336 发表于 2020/05/19 19:57:41 2020/05/19
9.9k+ 0 2
【摘要】 这篇博客是本人在公司注册的华为云平台中写的,现将此篇博客迁移到个人博客中来,纯原创,只想在个人博客中留个记录。华为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]}

结束

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

热门文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。