昇腾npu上构建modelbox webUI开发容器教程

官方提供了modelbox webUI教程,但是,该教程有以下缺点:

  1. 在容器刚启动时,配置中的访问控制列表没有包含本地PC的IP,这导致如果想从本地PC访问远程服务器上容器的webUI,需要登入容器修改配置文件,再重启modelbox,费时费力。
  2. 新增项目对宿主机不可见。新增项目会保存在容器内,如果不手动复制的话,宿主机无法看到。
  3. ssh登陆麻烦。官方教程会让你登陆到容器,但有时你只想登陆到宿主机开发。可是,让新增项目对宿主机可见是一个问题。
  4. 重启命令冗长。单纯执行modelbox restart会导致报错,所以需要复制输入整个路径$HOME/modelbox-service/modelbox restart才能重启。

为了能开箱即用,本文稍微调整了Dockerfile,并附加了脚本,便于使用。

基础构建脚本

首先,为modelbox开发容器编写Dockerfile:

FROM registry-cbu.huawei.com/modelbox/euler/modelbox-develop-mindspore_2.1.0-cann_6.3.2-d910b-euler-aarch64:latest

# install ytorch and npu plugin
COPY torch-1.11.0-cp37-cp37m-linux_aarch64.whl /root/torch-1.11.0-cp37-cp37m-linux_aarch64.whl
COPY torch_npu-1.11.0.post1-cp37-cp37m-linux_aarch64.whl /root/torch_npu-1.11.0.post1-cp37-cp37m-linux_aarch64.whl

RUN pip install /root/torch-1.11.0-cp37-cp37m-linux_aarch64.whl
RUN pip install /root/torch_npu-1.11.0.post1-cp37-cp37m-linux_aarch64.whl

# edit conf file
COPY ./res/add_acl.py /root/add_acl.py
COPY ./res/restart_modelbox.sh /root/restart_modelbox.sh
RUN pip install toml

RUN modelbox-tool develop -s \
  && python add_acl.py \
  && $HOME/modelbox-service/modelbox restart

其中:

  • 在Dockerfile内需要先执行modelbox-tool develop -s,这之后才会生成modelbox的配置文件,然后才能修改ACL属性。
  • res/add_acl.py用于替换conf文件里的acl配置项,添加本地PC IP,读者可以替换成自己的PC IP。

在当前目录创建res目录,创建add_acl.py脚本

import toml
import os

home = os.environ['HOME']


# 读取文件
with open(f'{
     home}/modelbox-service/conf/modelbox.conf') as file:
    config = toml.load(file)

# 获取[acl]的值
acl = config['acl']

# 添加新元素
acl['allow'].append('10.78.8.148')  # 将这个替换成你的本地PC IP

# 将修改后的值写回文件
with open(f'{
     home}/modelbox-service/conf/modelbox.conf', 'w') as file:
    toml.dump(config, file)

然后添加res/restart_modelbox.sh,内容简洁如下,是用于快速重启modelbox的。

$HOME/modelbox-service/modelbox restart

然后启动脚本start.sh如下,

sudo docker build -t modelbox_dev:latest .
sudo docker run --rm -it -v ./projects:/root/projects -e ASCEND_VISIBLE_DEVICES=2-3 --net=host modelbox_dev:latest /bin/bash

其中:

  • -v ./projects:/root/projects会把宿主机的projects目录挂到容器内,这样在容器里可以新建项目,在宿主机可以用vscode+ssh修改项目。
  • -e ASCEND_VISIBLE_DEVICES=2-3是用于挂载npu的2和3号卡。
  • --net=host会同步宿主机和容器的网络,便于登陆访问容器web UI的1104端口

使用方法

使用方式很简单:

  1. 在Dockerfile所在目录执行bash start.sh,就会启动modelbox容器。
  2. 在容器内执行bash restart_modelbox.sh确保modelbox重启并生效配置。
  3. 访问webUI的1104端口,新建项目,之后在宿主机的projects目录可见

相关推荐

  1. npu构建modelbox webUI开发容器教程

    2023-12-10 02:06:02       46 阅读
  2. 多卡通信教程【配置网络检测对象IP】

    2023-12-10 02:06:02       36 阅读
  3. 解读神秘的华为910

    2023-12-10 02:06:02       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-10 02:06:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-10 02:06:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-10 02:06:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-10 02:06:02       20 阅读

热门阅读

  1. LightDB to_char 三入参函数支持

    2023-12-10 02:06:02       38 阅读
  2. 固定区间存在重复元素算法(leetcode第219题)

    2023-12-10 02:06:02       39 阅读
  3. qt treeview 控制节点收缩

    2023-12-10 02:06:02       40 阅读
  4. 【Python】 Python 中实现单例模式?

    2023-12-10 02:06:02       35 阅读
  5. Android 使用aapt工具获取apk信息

    2023-12-10 02:06:02       39 阅读
  6. 工业IC是什么

    2023-12-10 02:06:02       37 阅读
  7. 文件服务器搭建

    2023-12-10 02:06:02       38 阅读
  8. 类欧几里得算法

    2023-12-10 02:06:02       28 阅读
  9. openssl生成nginx ssl证书的简单方法

    2023-12-10 02:06:02       32 阅读