云服务器内容精选

  • Step2 构建成功的镜像注册到镜像管理模块 将Step1 在Notebook中构建一个新镜像中构建成功的 自定义镜像 注册到镜像管理中,方便后续使用。 登录ModelArts控制台,在左侧导航栏中选择“镜像管理”,单击“注册镜像”,进入注册镜像页面。 输入镜像源地址,选择架构和类型后,单击“立即注册”。 “镜像源”:地址为swr.cn-north-4-myhuaweicloud.com/custom_test/tensorflow2.1:1.0.0。其中custom_test/tensorflow2.1:1.0.0为8镜像构建脚本中设置的镜像地址。 “架构”:选择X86_64 “类型”:选择CPU 图7 注册镜像 注册完成后,可以在镜像管理页面查看到注册成功的镜像。
  • 模型包文件样例 模型包文件model.zip中需要用户自己准备模型文件,此处仅是举例示意说明,以一个手写数字识别模型为例。 Model目录下必须要包含推理脚本文件customize_service.py,目的是为开发者提供模型预处理和后处理的逻辑。 图6 推理模型model目录示意图(需要用户自己准备模型文件) 推理脚本customize_service.py的具体写法要求可以参考模型推理代码编写说明。 本案例中提供的customize_service.py文件具体内容如下: import logging import threading import numpy as np import tensorflow as tf from PIL import Image from model_service.tfserving_model_service import TfServingBaseService class mnist_service(TfServingBaseService): def __init__(self, model_name, model_path): self.model_name = model_name self.model_path = model_path self.model = None self.predict = None # 非阻塞方式加载saved_model模型,防止阻塞超时 thread = threading.Thread(target=self.load_model) thread.start() def load_model(self): # load saved_model 格式的模型 self.model = tf.saved_model.load(self.model_path) signature_defs = self.model.signatures.keys() signature = [] # only one signature allowed for signature_def in signature_defs: signature.append(signature_def) if len(signature) == 1: model_signature = signature[0] else: logging.warning("signatures more than one, use serving_default signature from %s", signature) model_signature = tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY self.predict = self.model.signatures[model_signature] def _preprocess(self, data): images = [] for k, v in data.items(): for file_name, file_content in v.items(): image1 = Image.open(file_content) image1 = np.array(image1, dtype=np.float32) image1.resize((28, 28, 1)) images.append(image1) images = tf.convert_to_tensor(images, dtype=tf.dtypes.float32) preprocessed_data = images return preprocessed_data def _inference(self, data): return self.predict(data) def _postprocess(self, data): return { "result": int(data["output"].numpy()[0].argmax()) }
  • Dockerfile模板 Dockerfile样例,此样例可以直接另存为一个Dockerfile文件使用。此处可以使用的基础镜像列表请参见推理专属预置镜像列表。 FROM swr.cn-north-4.myhuaweicloud.com/atelier/tensorflow_2_1:tensorflow_2.1.0-cuda_10.1-py_3.7-ubuntu_18.04-x86_64-20221121111529-d65d817 # here create a soft link from '/home/ma-user/anaconda/lib/python3.7/site-packages/model_service' to '/home/ma-user/infer/model_service'. It’s the build-in inference framework code dir # if the installed python version of this base image is python3.8, you should create a soft link from '/home/ma-user/anaconda/lib/python3.8/site-packages/model_service' to '/home/ma-user/infer/model_service'. USER root RUN ln -s /home/ma-user/anaconda/lib/python3.7/site-packages/model_service /home/ma-user/infer/model_service USER ma-user # here we supply a demo, you can change it to your own model files ADD model/ /home/ma-user/infer/model/1 USER root RUN chown -R ma-user:ma-group /home/ma-user/infer/model/1 USER ma-user # default MODELARTS_SSL_CLIENT_VERIFY switch is "true". In order to debug, we set it to be "false" ENV MODELARTS_SSL_CLIENT_VERIFY="false" # change your port and protocol here, default is 8443 and https # ENV MODELARTS_SERVICE_PORT=8080 # ENV MODELARTS_SSL_ENABLED="false" # add pip install here # RUN pip install numpy==1.16.4 # RUN pip install -r requirements.txt # default cmd, you can chage it here # CMD sh /home/ma-user/infer/run.sh
  • 场景说明 针对ModelArts目前不支持的AI引擎,您可以通过自定义镜像的方式将编写的模型导入ModelArts,创建为模型。 本文详细介绍如何在ModelArts的开发环境Notebook中使用基础镜像构建一个新的推理镜像,并完成模型的创建,部署为在线服务。本案例仅适用于华为云北京四和上海一站点。 操作流程如下: Step1 在Notebook中构建一个新镜像:在ModelArts的开发环境Notebook中制作自定义镜像,镜像规范可参考创建模型的自定义镜像规范。 Step2 构建成功的镜像注册到镜像管理模块:将构建成功的自定义镜像注册到ModelArts的镜像管理模块中,方便下一步调试。 Step3 在Notebook中变更镜像并调试:在Notebook中调试镜像。 Step4 使用调试成功的镜像用于推理部署:将调试完成的镜像导入ModelArts的模型管理中,并部署上线。