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

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

大鹏展翅 发表于 2020-04-07 17:17:32 04-07 17:17
大鹏展翅 发表于 2020-04-07 17:17:32 2020/04/07
0
4

【摘要】 华为AI开发平台ModelArts本地化部署实操

华为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版本

  1. 用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

  2. 去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

  3. 检查

    [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)

  4. 进行链接替换,生效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

  5. 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

  6. pip安装gunicorn

    pip install gunicorn

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

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

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

  7. 更新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)

  8. 更改pip源

  9. 永久性设置,是在用户根目录(~,而非系统根目录 / )下添加配置~/.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

  10. 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

  11. 安装完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

  12. 更新setuptools

    pip install --upgrade setuptools

  13. 配置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": "输入密码"

    }

    }

    ]

    }

  14. 查看是否有报错的那个版本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步

  15. 下载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

  16. 查找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

  17. 代码测试

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

  18. 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/")

    本地推理预测

  19. 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进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 4
点赞
分享文章到微博
分享文章到朋友圈

评论 (0)


0/1000
评论

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

评论

您还没有写博客的权限!

温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

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

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

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

确定
取消