/mleap-controller

为公司更方便调用mleap接口所写的项目

Primary LanguageJava

安装

1.1.0及以后

  1. 安装docker,docker-compose和harbor,不懂请咨询我
  2. 将文件拷贝到服务器的/opt/docker/mleap文件夹中,它们分别是start.shstop.shclear.shconfig.txtmleap-controller-1.1.0.jarREADME.md
  3. 阅读README.md进行相应操作

1.1.0以前

  1. 确保安装了docker,使用docker --version查看是否已经安装docker,如果没有安装,请参考 https://docs.docker.com/install/linux/docker-ce/centos/ 安装docker 具体步骤是运行

    yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2
    

    再运行

    yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
    

    再运行

    yum install docker-ce docker-ce-cli containerd.io
    

    再运行

    systemctl start docker
    systemctl enable docker
    

    此外要确保防火墙已经关闭,SELinux已经关闭

    systemctl stop firewalld
    systemctl disable firewalld
    
    # 编辑/etc/selinux/config,设置SELINUX=disabled
    

    最后运行docker run hello-world,如果正常输出表示docker安装成功

    如果出现linux内核报错的话,则需要升级一下内核,参考文档https://www.cnblogs.com/sexiaoshuai/p/8399599.html

  2. 确保安装了docker-compose工具,使用docker-compose --version查看是否已经安装了docker-compose,如果没有安装,请参考 https://docs.docker.com/compose/install/ 安装docker-compose 具体步骤是运行curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose,然后再运行chmod +x /usr/local/bin/docker-compose

  3. 首先在服务器192.168.2.149上面修改/etc/docker/daemon.json文件,将其内容更改为{"insecure-registries": ["192.168.2.150"]},使用systemctl restart docker重启服务,这样做的目的是能够通过http协议从harbor服务器上面拉取镜像。 在服务器192.168.2.149的/opt/docker目录下新建一个文件夹mleap,然后在文件夹下面新建一个docker-compose.yml文件,内容为

    version: '3'
    
    services:
    
      mleap1:
        image: 192.168.2.150/zrar/mleap-serving:0.9.0-SNAPSHOT
        restart: unless-stopped
        volumes:
          - /opt/models:/models
        networks:
          - my-bridge
    
      mleap2:
        image: 192.168.2.150/zrar/mleap-serving:0.9.0-SNAPSHOT
        restart: unless-stopped
        volumes:
          - /opt/models:/models
        networks:
          - my-bridge
    
      mleap3:
        image: 192.168.2.150/zrar/mleap-serving:0.9.0-SNAPSHOT
        restart: unless-stopped
        volumes:
          - /opt/models:/models
        networks:
          - my-bridge
    
      mleap4:
        image: 192.168.2.150/zrar/mleap-serving:0.9.0-SNAPSHOT
        restart: unless-stopped
        volumes:
          - /opt/models:/models
        networks:
          - my-bridge
    
      mleap5:
        image: 192.168.2.150/zrar/mleap-serving:0.9.0-SNAPSHOT
        restart: unless-stopped
        volumes:
          - /opt/models:/models
        networks:
          - my-bridge
    
      mleap-controller:
        image: 192.168.2.150/zrar/mleap-controller:1.0.5
        restart: unless-stopped
        ports:
          - 8083:8080
        volumes:
          - /opt/models:/models
        networks:
          - my-bridge
        environment:
          - TZ=Asia/Shanghai
    
    networks:
      my-bridge:
        driver: bridge
        ipam:
          driver: default
          config:
            - subnet: 10.1.1.48/28
    
    

    这个文件中只能同时使用5个模型,需要使用更多请自行在docker-compose.yml后面增加mleap6、mleap7……

  4. 使用docker-compose up -d开启容器,如果遇到端口冲突,修改docker-compose.yml文件中的8081端口为任意未被占用的端口。使用docker-compose down删除容器。

使用

通过Web界面使用(1.1.0及以后)

访问[ip]:8081

添加模型

点击添加按钮,在最下方会出现一行,输入模型名称、模型描述、分词方式,点击保存即可完成添加模型

删除模型

点击删除按钮,然后再点击保存按钮,即可完成模型删除

上线模型

在你想要上传的模型那行,点击上线模型链接,之后选择要上传的文件并确定,文件会自动上传到服务器。模型上线成功之后,会更新模型的MD5值。

下线模型

在你想要下线的模型那行,点击下线模型链接,服务器会自动下线模型,并删除模型。成功删除模型之后会删除该模型的MD5值

测试模型

在你想要测试的模型那行,点击测试模型链接,然后会弹出一个对话框,输入你想要测试的文本,点击测试按钮。测试的结果会显示在下面几个文本框中。

下载模型

在你想要下载的模型那行,点击下载按钮,即可将服务器上的模型文件下载到本地

通过Web界面使用(1.0.4 - 1.0.6)

访问[ip]:8081

上传模型

首先选择模型文件,然后点击上线,上线成功之后会有提示

预测模型

将待预测的文本写到输入框中,点击测试,之后会有测试结果

下线模型

点击下线按钮

通过Postman使用(1.0.0 - 1.0.3)

RestTemplate代码实现参见test包下面的SwModelTestYythModelTest

上传模型

注意:上传的时候可能会失败,如果失败了请删除服务器上面/opt/models下面的模型,重新上传一边

目前在test/resources下面有三个模型,它们分别是

模型名称 模型含义
swModel.zip 税务模型
yythModel.zip 语音通话
qgfxModel.zip 情感分析
QaSatClassification.zip 税种分类模型

查看模型对应的路径

访问http://192.168.2.149:8081/h2,修改JDBC URLjdbc:h2:file:/app/mleap,修改User Nameroot,修改Password123456,点击连接

然后在SQL执行窗口中输入SELECT * FROM MLEAP_ENTITY ,点击Run,之后即可查看模型对应的路径

预测模型

注意,上传模型使用的url,需要和预测模型使用的url保持一致。例如上传时用了mleap1,那么预测的时候也要使用mleap1

有词性

无词性

程序源码

mleap-controllermleap-bridge

源码部署到docker

想要源码部署到docker首先需要做以下两步

  1. 自己电脑,DOCKER_HOST设置为tcp://192.168.56.111:2376,将192.168.56.111设置为自己的虚拟机IP地址

  2. 进入192.168.56.111,编辑/etc/systemd/system/multi-user.target.wants/docker.service,改成ExecStart=/usr/bin/dockerd,然后编辑/etc/docker/daemon.json,修改为

    {
      "hosts": ["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
      "insecure-registries": ["192.168.2.150"]
    }
    

之后就能在自己的IDEA里面使用下面命令构造和上传docker镜像了

mvn clean install,将工程打包,构造docker镜像,并上传到虚拟机192.168.56.111的docker仓库中

mvn clean deploy,将工程打包,构造docker镜像,并上传到docker研发中心仓库192.168.2.150中

程序组织结构图

Harbor仓库相关

上传镜像到Harbor仓库

其实通过mvn clean install已经能够将mleap-controller的镜像上传到研发中心的docker仓库了,下面介绍手动上传的办法。

harbor位于192.168.2.150上面,我们先在192.168.2.150上面登录以便后续能够上传

docker login 192.168.2.150

确保192.168.2.150上面有需要发布的镜像

docker pull combustml/mleap-serving:0.9.0-SNAPSHOT
docker pull hellozjf/mleap-controller:1.0.4

给需要发布的镜像打tag,并上传到harbor

docker tag combustml/mleap-serving:0.9.0-SNAPSHOT 192.168.2.150/zrar/mleap-serving:0.9.0-SNAPSHOT
docker tag hellozjf/mleap-controller:1.0.4 192.168.2.150/zrar/mleap-controller:1.0.4
docker push 192.168.2.150/zrar/mleap-serving:0.9.0-SNAPSHOT
docker push 192.168.2.150/zrar/mleap-controller:1.0.4

从仓库中下载镜像

拉取前确保/etc/docker/daemon.json文件的内容为{"insecure-registries": ["192.168.2.150"]}

docker pull 192.168.2.150/zrar/mleap-serving:0.9.0-SNAPSHOT
docker pull 192.168.2.150/zrar/mleap-controller:1.0.5

版本说明

版本 内容
1.1.0 实现动态添加/删除模型,界面美化
1.0.6 增加税种分类模型
1.0.5 纠正mleap_controller的时区,docker-compose.yml规定网段,数据库文件存外部
1.0.4 增加了上线、测试、下线模型的界面
1.0.3 增加了数据库,以便重启后能自动加载模型,同时更新了qgfxModel.zip
1.0.2 修复一个bug,predict既要返回分类序号,也要返回分类名称
1.0.1 补充代码,调通陈晓曦的模型yythModel.zip
1.0.0 初始版本,调通林镇杰的模型swModel.zip