云服务器内容精选

  • 模型包文件样例 模型包文件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()) }
  • 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 注册镜像 注册完成后,可以在镜像管理页面查看到注册成功的镜像。
  • 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的模型管理中,并部署上线。
  • Flexus X实例支持哪些镜像? Flexus X实例支持使用公共镜像、私有镜像、共享镜像。 公共镜像支持: Windows Server、Huawei Cloud EulerOS、CentOS、SUSE、Ubuntu、EulerOS、Debian、OpenSUSE、Fedora、AlmaLinux、Rocky Linux、CentOS Stream、CoreOS、openEuler、FreeBSD、SUSESAP。 共享镜像、私有镜像支持系统盘镜像、数据盘镜像和整机镜像。同时私有镜像、共享镜像有如下限制: 镜像是一种区域性资源,Flexus X实例仅支持使用同区域的私有镜像。 Flexus X实例仅支持使用X86架构的私有镜像,不支持ARM架构的私有镜像。 对于Windows系统私有镜像,Flexus X实例目前仅支持镜像源为华为云商店Windows Server 2022/2019/2016/2012 R2 标准版、数据中心版,以及自带许可的Windows系统私有镜像。 在您购买Flexus X实例选择私有镜像或切换到私有镜像时,请确保当前云服务器实例规格(vCPU、内存、系统盘容量)满足私有镜像使用,否则无法使用该私有镜像。 不支持使用性能模式下创建的整机镜像发放云服务器,请在非性能模式下创建整机镜像。 父主题: 操作系统/镜像
  • URI GET /v3/{project_id}/vpc/traffic-mirror-filter-rules/{traffic_mirror_filter_rule_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。 获取方式请参见获取项目ID。 traffic_mirror_filter_rule_id 是 String 流量镜像筛选规则ID
  • 响应示例 状态码: 200 OK { "traffic_mirror_filter_rule" : { "created_at" : "2023-02-23T16:08:45.000+00:00", "updated_at" : "2023-02-23T16:17:12.000+00:00", "id" : "2230d5a2-1868-4264-b917-0e06fa132898", "project_id" : "7365fcd452924e398ec4cc1fe39c0d12", "description" : 123, "traffic_mirror_filter_id" : "417d7317-6c17-4428-a0f3-997d3e2293a0", "direction" : "ingress", "protocol" : "TCP", "ethertype" : "IPv4", "source_cidr_block" : "8.8.8.8/32", "destination_cidr_block" : "9.9.9.9/32", "destination_port_range" : "10-65535", "action" : "accept", "priority" : 20 }, "request_id" : "ca9682cf-0680-469f-bb04-5b0f17b075d0" }
  • URI GET /v3/{project_id}/vpc/traffic-mirror-filters 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。 获取方式请参见获取项目ID。 表2 Query参数 参数 是否必选 参数类型 描述 id 否 String 使用ID过滤查询或排序 name 否 String 使用name过滤或排序 description 否 String 使用description过滤查询 created_at 否 String 使用创建时间戳排序 updated_at 否 String 使用更新时间戳排序
  • 响应示例 状态码: 200 OK { "request_id" : "05e4a009-74aa-47cb-8055-c3da26a51737", "traffic_mirror_filters" : [ { "id" : "59d2b2e7-0d35-41f7-a12e-f7699366cd21", "project_id" : "49a42f378df747bf8b8f6a70e25b63fb", "name" : "test1", "description" : "new_filter", "ingress_rules" : [ ], "egress_rules" : [ ], "created_at" : "2022-08-29T06:22:01.000+00:00", "updated_at" : "2022-08-29T06:22:01.000+00:00" } ], "page_info" : { "previous_marker" : "180edd76-ab7e-4039-acc2-239ff89243e8", "current_count" : 1 } }
  • 响应示例 状态码: 200 OK { "request_id" : "f87354b7-eecd-4b64-87f6-bfd6430e33bd", "traffic_mirror_sessions" : [ { "name" : "test-session", "created_at" : "2023-03-14T08:44:12.000+00:00", "updated_at" : "2023-03-14T08:44:12.000+00:00", "id" : "6cc12480-5a92-4aed-99fb-07c52cc98961", "project_id" : "7365fcd452924e398ec4cc1fe39c0d12", "description" : "", "traffic_mirror_filter_id" : "b765ba87-c0b4-4f1a-9ec3-d5b1d1ddb137", "traffic_mirror_sources" : [ "6134900d-31a6-4b71-8453-dbca7f26982a" ], "traffic_mirror_target_id" : "029ab12b-dc38-4228-b146-44975bf55250", "traffic_mirror_target_type" : "eni", "virtual_network_id" : 1, "packet_length" : 96, "priority" : 9, "enabled" : true, "type" : "eni" } ], "page_info" : { "previous_marker" : "6cc12480-5a92-4aed-99fb-07c52cc98961", "current_count" : 1 } }
  • URI GET /v3/{project_id}/vpc/traffic-mirror-sessions 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID。 获取方式请参见获取项目ID。 表2 Query参数 参数 是否必选 参数类型 描述 id 否 String 使用镜像会话ID过滤或排序 name 否 String 使用镜像会话名称过滤或排序 description 否 String 使用镜像会话描述过滤 enabled 否 String 使用enabled过滤 packet_length 否 String 使用最大传输单元MTU过滤 priority 否 String 使用镜像会话优先级过滤 traffic_mirror_filter_id 否 String 使用筛选条件ID过滤 traffic_mirror_target_type 否 String 使用镜像目的类型过滤 traffic_mirror_target_id 否 String 使用镜像目的ID过滤 type 否 String 使用镜像源类型过滤 virtual_network_id 否 String 使用VNI过滤 created_at 否 String 使用创建时间戳排序 updated_at 否 String 使用更新时间戳排序
  • 其他限制 云服务器因欠费而处于冻结状态,此时无法创建私有镜像,您必须先续费,解冻资源后再进行创建。 通过x86 CPU架构的云服务器创建的私有镜像,不能用于创建鲲鹏CPU架构的云服务器,也不能在鲲鹏CPU架构云服务器切换操作系统时使用。 通过外部镜像文件创建私有镜像时,若架构类型选择“x86”,则该私有镜像不能用于创建鲲鹏CPU架构的云服务器,也不能在鲲鹏CPU架构云服务器切换操作系统时使用。 32位操作系统的私有镜像不能创建超过4G内存规格的云服务器。因为32位系统的内存寻址空间最大为4GB。
  • 响应示例 状态码: 200 查询OpenStack环境中的镜像响应。 { "total_count" : 1, "images" : [ { "id" : "d6b368bc-a24d-4fb5-a8fb-727356a53f33", "image_type" : "gold", "os_type" : "Linux", "os_version" : "EulerOS 2.2 64bit", "disk_format" : "qcow2", "name" : "Euler_Online_Tenant_vAG", "min_ram" : 0, "min_disk" : 50 }, { "id" : "bef99a44-2b6a-4ef9-b1a2-204a4910e374", "image_type" : "gold", "os_type" : "Linux", "os_version" : "EulerOS 2.5 64bit", "disk_format" : "qcow2", "name" : "FA-LZ-x86vAG-801temp", "min_ram" : 0, "min_disk" : 60 } ] }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 images Array of ImageInfo objects 云桌面 支持的产品镜像列表。 total_count Integer 对象总数。 表5 ImageInfo 参数 参数类型 描述 id String 镜像ID。 image_type String 镜像类型,目前支持以下类型: 公共镜像:gold 私有镜像:private。 os_type String 操作系统类型,目前取值Linux, Windows,Other。 architecture String 操作系统架构,目前取值arm,x86。 os_version String 操作系统具体版本。 disk_format String 镜像格式,目前支持vhd,raw,qcow2,zvhd2格式。 name String 镜像名称。 min_ram Integer 镜像运行需要的最小内存,单位为MB。参数取值依据弹性云服务器的规格限制,一般设置为0。 min_disk Integer 镜像运行需要的最小磁盘,单位为GB 。取值为40~1024GB。 product_code String 镜像的产品编码。 created_at String 创建时间。格式为UTC时间。 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 encoded_authorization_message String 加密后的详细拒绝原因,用户可以自行调用STS服务的decode-authorization-message接口进行解密。 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 encoded_authorization_message String 加密后的详细拒绝原因,用户可以自行调用STS服务的decode-authorization-message接口进行解密。 状态码: 403 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 encoded_authorization_message String 加密后的详细拒绝原因,用户可以自行调用STS服务的decode-authorization-message接口进行解密。 状态码: 404 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 encoded_authorization_message String 加密后的详细拒绝原因,用户可以自行调用STS服务的decode-authorization-message接口进行解密。 状态码: 405 表10 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 encoded_authorization_message String 加密后的详细拒绝原因,用户可以自行调用STS服务的decode-authorization-message接口进行解密。 状态码: 500 表11 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 encoded_authorization_message String 加密后的详细拒绝原因,用户可以自行调用STS服务的decode-authorization-message接口进行解密。 状态码: 503 表12 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 encoded_authorization_message String 加密后的详细拒绝原因,用户可以自行调用STS服务的decode-authorization-message接口进行解密。
  • URI GET /v2/{project_id}/images 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目id。 表2 Query参数 参数 是否必选 参数类型 描述 os_type 否 String 产品镜像的操作系统类型,如Windows。 image_type 否 String 镜像类型。 -gold 公共镜像 -private 私有镜像 platform 否 String 镜像系统类型,如Windows。 architecture 否 String 镜像架构:x86。 package_type 否 String 套餐系列。 image_id 否 String 镜像Id。 limit 否 Integer 每页数量,范围0-100,默认100。 offset 否 Integer 偏移量,默认0。 sort_field 否 String 用于排序,表示按照哪个字段排序。取值为镜像属性name、created_at字段,默认为name。 sort_type 否 String 用于排序,表示升序还是降序,取值为asc和desc。与sort_field一起组合使用,默认为升序asc。