云服务器内容精选
-
响应示例 { "id": "ea011e01-2eb5-453f-87bf-874e4a855abe", "name": "dev-env", "description": "develop environment", "project_id": "bf8523d898b64e4eb956e3be3555ca16", "enterprise_project_id": "0", "deploy_mode": "virtualmachine", "vpc_id": "234241234124xxvasf2342xxxxxxxxxxx", "resources": [ { "id": "329b135e-7b31-4ea6-afb9-b69017bd0a80", "type": "ecs", "name": "ecs-test" } ], "creator": "ss-test", "create_time": 1578984198394, "update_time": 1578984198394, "labels": null }
-
请求消息 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 消息体的类型(格式),默认取值为“application/json;charset=utf8”。 X-Auth-Token 是 String 调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值。Token获取方式,请参考获取用户Token。
-
响应消息 表3 响应参数 参数 参数类型 描述 id String 环境ID。 name String 环境名称。 description String 环境描述。 project_id String 项目ID。 enterprise_project_id String 企业项目ID。 deploy_mode String 环境类型。 vpc_id String 虚拟私有云ID。 creator String 环境创建人。 create_time Integer 环境创建时间。 update_time Integer 环境修改时间。 labels Array of objects 标签,可使用标签管理服务通过标签过滤资源,请参考表4。 resources Array of objects 资源,请参考表5。 表4 labels 参数 参数类型 描述 key String 标签名称。 value String 标签值。 表5 resources 参数 参数类型 描述 id String 资源ID。 name String 资源名称。 type String 资源类型。 vpc,虚拟私有云。 eip,弹性公网IP。 elb,弹性负载均衡。 cce,云容器引擎。 ecs,弹性云服务器。 as,弹性伸缩组。 cse,微服务引擎。 dcs,分布式缓存服务。 rds,云数据库。
-
前提条件 根据实际需要创建需纳管的基础资源: 已创建环境待纳管的状态为运行中的弹性 云服务器ECS ,E CS 和环境所在的VPC需要一致,且不能被其他环境纳管。 弹性云服务器ECS用于“虚拟机”类型环境下部署和运行组件。创建弹性云服务器ECS,请参考自定义购买ECS。 已创建环境待纳管的弹性伸缩组AS,AS和环境所在的VPC需要一致,且不能被其他环境纳管。且AS中已包含弹性云服务器。 弹性伸缩组AS用于“虚拟机”类型环境下部署和运行组件。创建弹性伸缩组AS,请参考创建伸缩组。 已创建环境待纳管的弹性负载均衡ELB,ELB和环境所在的VPC需要一致。 用于支持通过绑定了弹性公网IP的ELB以公网 域名 方式访问组件提供的服务,或者通过ELB灰度发布升级容器部署方式部署的组件。请参考下表根据实际应用场景创建弹性负载均衡ELB。 使用场景 参考章节 使用域名访问应用 购买共享型负载均衡器 参考购买独享型负载均衡器创建“规格”为“应用型”的ELB ELB灰度发布 容器部署方式部署的组件适用。 参考购买独享型负载均衡器创建“规格”为“应用型”的ELB 已创建环境待纳管的弹性IP。 弹性IP用于通过弹性IP访问方式访问组件提供的服务。创建弹性IP,请参考申请弹性公网IP。 已创建环境待纳管的 虚拟私有云VPC 。虚拟私有云VPC提供了逻辑隔离的、由您自主配置和管理的虚拟网络环境,旨在提升您的云资源安全性,简化您的网络部署。 创建虚拟私有云VPC,请参考创建虚拟私有云和子网。 已创建环境待纳管的虚拟私有云子网。虚拟私有云子网是VPC中的一个网段,属于三层网络,一个VPC可以创建多个子网,用来分类管理有不同业务需求的云资源。 创建虚拟私有云子网,请参考创建虚拟私有云和子网。 已创建环境待纳管的网络ACL,用于为与其关联了的子网提供安全防护。 创建网络ACL,请参考创建网络ACL。 已创建环境待纳管的分布式缓存DCS,DCS和环境所在的VPC需要一致。 分布式缓存DCS用于在应用运行时读取环境变量来获取分布式缓存的相关信息。创建分布式缓存DCS,请参考购买Redis实例。 已创建环境待纳管的MySQL数据库引擎的云数据库RDS实例,RDS和环境所在的VPC需要一致。 云数据库RDS用于应用数据持久化存储。创建云数据库RDS,请参考购买RDS for MySQ L实例 。 已创建环境待纳管的ServiceComb引擎(即微服务引擎,请参见微服务引擎概述),如果微服务引擎与环境所在VPC不一致,需正确配置VPC连通。 微服务引擎用于将运行在环境下的微服务接入引擎,实现微服务注册发现、服务治理和配置管理。创建微服务引擎,请参考创建微服务引擎。 已创建环境待纳管的注册配置中心。如果注册配置中心与环境所在VPC不一致,需正确配置VPC连通。 注册配置中心用于将运行在环境下的微服务接入引擎,实现微服务注册发现和配置管理。创建注册配置中心,请参考创建注册配置中心。
-
纳管基础资源 登录ServiceStage控制台。 选择“环境管理”,进入“环境管理”页面。 单击待操作环境名称,进入环境“概览”页面。 参考下表纳管需要纳管到环境下的基础资源。 资源类型 资源名称 操作方法 计算 云容器引擎 CCE 请参考绑定CCE集群。 Kubernetes类型的环境支持绑定CCE集群资源。如需管理环境下的CCE集群资源,请参考管理CCE资源。 弹性云服务器 ECS 选择“计算”资源下的“弹性云服务器 ECS”。 单击“纳管资源”。 勾选待纳管的ECS资源。 单击“确定”。 虚拟机类型的环境支持纳管ECS资源。 同一VPC下,已被其他环境纳管的ECS资源,不支持被再次纳管。 如果纳管的ECS资源Agent状态为“缺少Agent,请先安装”,请参考安装虚拟机Agent完成Agent安装。 弹性伸缩组 AS 选择“计算”资源下的“弹性伸缩组 AS”。 单击“纳管资源”。 勾选待纳管的AS资源。 单击“确定”。 虚拟机类型的环境支持纳管AS资源。 同一VPC下,已被其他环境纳管的AS资源,不支持被再次纳管。 如果纳管的AS资源下选择的ECS Agent状态为“缺少Agent,请先安装”,请参考安装虚拟机Agent完成Agent安装。 网络 弹性负载均衡 ELB 选择“网络”资源下的“弹性负载均衡 ELB”。 单击“纳管资源”。 勾选待纳管的ELB资源。 单击“确定”。 弹性IP EIP 选择“网络”资源下的“弹性IP EIP”。 单击“纳管资源”。 勾选待纳管的EIP资源。 单击“确定”。 虚拟私有云 VPC 选择“网络”资源下的“虚拟私有云 VPC”。 单击“纳管资源”。 勾选待纳管的VPC资源。 单击“确定”。 子网 Subnet 选择“网络”资源下的“子网 Subnet”。 单击“纳管资源”。 勾选待纳管的VPC子网资源。 单击“确定”。 网络 ACL 选择“网络”资源下的“网络 ACL”。 单击“纳管资源”。 勾选待纳管ACL资源。 单击“确定”。 中间件 分布式缓存 DCS 选择“中间件”资源下的“分布式缓存 DCS”。 单击“纳管资源”。 勾选待纳管的DCS资源。 单击“确定”。 ServiceComb引擎 选择“中间件”资源下的“ServiceComb引擎”。 单击“纳管资源”。 选择待纳管的ServiceComb资源。 单击“确定”。 注册配置中心 选择“中间件”资源下的“注册配置中心”。 单击“纳管资源”。 勾选待纳管的注册配置中心资源。 单击“确定”。 云数据库 RDS 选择“中间件”资源下的“云数据库 RDS”。 单击“纳管资源”。 勾选待纳管的RDS资源。 单击“确定”。
-
注意事项 本文旨在指导如何在Snt9b裸金属服务器上,进行磁盘合并挂载、安装docker等环境配置。在配置前请注意如下事项: 首次装机时需要配置存储、固件、驱动、网络访问等基础内容,这部分配置尽量稳定减少变化。 裸机上的开发形式建议开发者启动独立的Docker容器作为个人开发环境。Snt9b的裸机包含8卡算力资源,一般来说多人可以共用这个裸机完成开发与调测工作。多人使用为了避免冲突,建议各自在自己的docker容器中进行独立开发,并提前规划好每个人使用的具体卡号,避免相互影响。 ModelArts提供了标准化基础容器镜像,在容器镜像中已经预置了基础MindSpore或PyTorch框架和开发调测工具链,推荐用户直接使用该镜像,用户也可以使用自己的业务镜像或昇腾AscendHub提供的镜像。如果镜像中预置的软件版本不是您期望的版本,可以自行安装替换。 开发形式推荐通过容器中暴露的SSH端口以远程开发的模式(VSCode SSH Remote、 Xshell)连接到容器中进行开发,可以在容器中挂载宿主机的个人存储目录,用于存放代码和数据。 当前指导中很多操作步骤在最新发放的Snt9b裸机环境中已经预置,无需用户再手动配置,用户在操作中如发现某个步骤已有预置配置可直接跳过该步骤。
-
请求示例 如下以创建名为“notebook-instance”,配置ID为“Python3-gpu”的实例为例。 请求示例 { "name": "notebook-instance", "description": "", "profile_id": "Multi-Engine 1.0 (python3)-gpu", "flavor": "modelarts.bm.gpu.v100NV32", "spec": { "storage": { "location": { "volume_size": 5 }, "type": "evs" }, "auto_stop": { "enable": true, "duration": 3600 } }, "workspace": { "id": "0" }}
-
响应示例 成功响应示例 { "ai_project": { "id": "default-ai-project" }, "creation_timestamp": "1594887749962", "description": "", "flavor": "modelarts.bm.gpu.v100NV32", "flavor_details": { "name": "modelarts.bm.gpu.v100NV32", "params": { "CPU": 8, "GPU": 1, "gpu_type": "v100NV32", "memory": "64GiB" }, "status": "onSale", "type": "GPU" }, "id": "DE-7d558ef8-c73d-11ea-964c-0255ac100033", "latest_update_timestamp": "1594887749962", "name": "notebook-c6fd", "profile": { "de_type": "Notebook", "description": "multi engine, gpu, python 3.6 for notebook", "flavor_type": "GPU", "id": "Multi-Engine 1.0 (python3)-gpu", "name": "Multi-Engine 1.0 (python3)-gpu", "provision": { "spec": { "engine": "CCE", "params": { "image_name": "mul-kernel-gpu-cuda-cp36", "image_tag": "2.0.5-B003", "namespace": "atelier" } }, "type": "Docker" } }, "spec": { "annotations": { "target_domain": "https://modelarts-notebook-2.xxxx.com", "url": "" }, "auto_stop": { "duration": 3600, "enable": true, "prompt": true }, "storage": { "location": { "path": "/home/ma-user/work", "volume_size": 5 }, "type": "evs" } }, "status": "CREATING", "user": { "id": "15dda26361214ca2a5953917d2f48ffb", "name": "ops_dev_env" }, "workspace": { "id": "0" }} 失败响应示例 { "error_message": "The param path needs to end with /.", "error_code": "ModelArts.6318"}
-
响应示例 状态码:200 OK { "arch" : "x86_64", "create_at" : 1671786468811, "description" : "notebook2.0 20200816", "dev_services" : [ "SSH", "NOTEBOOK" ], "id" : "4e0d1854-63e5-4517-b683-a0ee97a692a1", "name" : "pytorch1_4", "namespace" : "atelier-auto", "origin" : "IMAGE_SAVE", "resource_categories" : [ "CPU", "GPU" ], "service_type" : "TRAIN", "status" : "INIT", "swr_path" : "swr.xxxxx.com/atelier-auto/pytorch1_4:20221223", "tag" : "20221223", "type" : "DEDICATED", "update_at" : 1671786468811, "visibility" : "PRIVATE", "workspace_id" : "0"}
-
响应参数 状态码:200 表3 响应Body参数 参数 参数类型 描述 arch String 该镜像所支持处理器架构类型。枚举值如下: X86_64:x86处理器架构。 AARCH64:ARM体系架构。 create_at Long 镜像创建的时间,UTC毫秒。 description String 该镜像所对应的描述信息,长度限制512个字符。 dev_services Array of strings 镜像支持的服务。枚举值如下: NOTEBOOK:镜像支持通过https协议访问Notebook。 SSH:镜像支持本地IDE通过SSH协议远程连接Notebook。 id String 待创建Notebook实例的镜像,需要指定镜像ID,ID格式为通用唯一识别码(Universally Unique Identifier,简称UUID)。预置镜像的ID参考查询支持的镜像列表获取。 name String 镜像名称,长度限制512个字符,支持小写字母、数字、中划线、下划线和点。 namespace String 镜像所属组织,可以在SWR控制台“组织管理”创建和查看。 origin String 指定镜像来源,可选项,默认自定义构建镜像为CUSTOMIZE。枚举值如下: CUSTOMIZE:用户自定义构建镜像。 IMAGE_SAVE:Notebook实例保存镜像。 resource_categories Array of strings 镜像支持的规格。枚举值如下: CPU GPU ASCEND service_type String 镜像支持服务类型。枚举值如下: COMMON:通用镜像。 INFERENCE: 建议仅在推理部署场景使用。 TRAIN: 建议仅在训练任务场景使用。 DEV: 建议仅在开发调测场景使用。 UNKNOWN: 未明确设置的镜像支持的服务类型。 size Long 镜像大小(单位KB)。 status String 镜像状态。枚举值如下: INIT:初始化。 CREATING:镜像保存中,此时Notebook不可用。 CREATE_FAILED:镜像保存失败。 ERROR:错误。 DELETED:已删除。 ACTIVE:镜像保存成功,保存的镜像可以在SWR控制台查看,同时可以基于保存的镜像创建Notebook实例。 status_message String 镜像保存操作过程中,构建信息展示。 support_res_categories Array of strings 镜像支持的规格。 枚举值如下: CPU GPU ASCEND swr_path String SWR镜像地址。 tag String 镜像Tag。 type String 镜像类型。枚举值如下: BUILD_IN:系统内置镜像。 DEDICATED:用户保存的镜像。 update_at Long 镜像最后更新的时间,UTC毫秒。 visibility String 镜像可见度。枚举值如下: PRIVATE:私有镜像。 PUBLIC: 所有用户可以根据ImageId来进行只读使用。 workspace_id String 工作空间ID。未创建工作空间时默认值为“0”,存在创建并使用的工作空间,以实际取值为准。
-
请求示例 将运行的实例可以保存成容器镜像。设置镜像名称为“pytorch1_4”,镜像所属组织为“atelier-auto”。 { "name" : "pytorch1_4", "namespace" : "atelier-auto", "tag" : "20221223", "description" : "save from notebook-x21d", "workspace_id" : "0"}
-
请求参数 表2 请求Body参数 参数 是否必选 参数类型 描述 description 否 String 该镜像所对应的描述信息,长度限制512个字符。 name 否 String 镜像名称,长度限制512个字符,支持小写字母、数字、中划线、下划线和点。 namespace 否 String 镜像所属组织,可以在SWR控制台“组织管理”创建和查看。 tag 否 String 镜像tag,长度限制64个字符,支持大小写字母、数字、中划线、下划线和点。 workspace_id 否 String 工作空间ID。获取方法请参见查询工作空间列表。未创建工作空间时默认值为“0”,存在创建并使用的工作空间,以实际取值为准。
-
响应示例 状态码: 200 权限数据,list类型数据 [ { "region" : "region", "id" : 99213234, "name" : "环境创建者", "role_id" : "0", "devuc_role_id_list" : null, "environment_id" : "be3e9690d6f64b23b54e79cd02c4b156", "can_view" : true, "can_edit" : true, "can_delete" : true, "can_deploy" : true, "can_manage" : true, "create_time" : "2024-06-21 17:23:55.0", "update_time" : "2024-06-21 17:23:55.0", "role_type" : "environment-creator"}, { "region" : "region", "id" : 99213235, "name" : "项目管理员", "role_id" : "a2e65d2647574f8491cac659a0249d24", "devuc_role_id_list" : null, "environment_id" : "be3e9690d6f64b23b54e79cd02c4b156", "can_view" : true, "can_edit" : true, "can_delete" : true, "can_deploy" : true, "can_manage" : true, "create_time" : "2024-06-21 17:23:55.0", "update_time" : "2024-06-21 17:23:55.0", "role_type" : "project"} ]
-
应用场景 Notebook等线上开发工具工程化开发体验不如IDE,但是本地开发服务器等资源有限,运行和调试环境大多使用团队公共搭建的CPU或GPU服务器,并且是多人共用,这带来一定的环境搭建和维护成本。因此使用本地IDE+远程Notebook结合的方式,可以同时享受IDE工程化开发和云上资源的即开即用,优势互补,满足开发者需求。 VS Code在Python项目开发中提供了优秀的代码编辑、调试、远程连接和同步能力,在开发者中广受欢迎。本文以Ascend Model Zoo为例,介绍如何通过VS Code插件及ModelArts Notebook进行云端数据调试及模型开发。
-
步骤5:使用SDK提交训练作业 本地调测完成后可以提交训练作业。因为数据在Notebook中,设置InputData中“is_local_source”的参数为“True”,会自动将本地数据同步上传到OBS中。 步骤如下: 在“/home/ma-user/work/models/official/cv/resnet/”下创建train_notebook.py, 复制代码至train_notebook.py, 运行train_notebook.py,进行训练作业提交。 # train_notebook.py# 导入ModelArts SDK的依赖,并初始化Session,此处的ak、sk、project_id、region_name请替换成用户自己的信息from modelarts.train_params import TrainingFilesfrom modelarts.train_params import OutputDatafrom modelarts.train_params import InputDatafrom modelarts.estimatorV2 import Estimatorfrom modelarts.session import Session# 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;# 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。__AK = os.environ["HUAWEICLOUD_SDK_AK"]__SK = os.environ["HUAWEICLOUD_SDK_SK"]# 如果进行了加密还需要进行解密操作session = Session(access_key=__AK,secret_key=__SK, project_id='***', region_name='***')# 样例中为了方便默认创建一个OBS桶,推荐将调测所需要传输的文件统一放到`${default_bucket}/intermidiate`目录下,也可以按照注释代码自行指定obs_bucket = session.obs.get_default_bucket()print("Default bucket name: ", obs_bucket)default_obs_dir = f"{obs_bucket}/intermidiate"#default_obs_dir = "obs://your-bucket-name/folder-name"# 本地的工程代码文件夹路径code_dir_local = "/home/ma-user/work/models/official/cv/resnet/" #@param {type:"string"}# 代码的启动文件名称boot_file = "train.py" #@param {type:"string"}train_file = TrainingFiles(code_dir=code_dir_local, boot_file=boot_file)# 本地数据集路径local_data_path = "/home/ma-user/work/models/dataset/flower_photos" #@param {type:"string"}# 模型输出保存路径output_local = "/home/ma-user/work/models/official/cv/resnet/output" #@param {type:"string"}# 模拟训练过程中模型输出回传至指定OBS的路径,需要以"/"结尾obs_output_path = f"{default_obs_dir}/mindspore_model/output/"# 指定一个obs路径用于存储输出结果output = [OutputData(local_path=output_local, obs_path=obs_output_path, name="output")]# 模拟训练过程中模训练日志回传至指定OBS的路径,需要以"/"结尾log_obs_path = f"{default_obs_dir}/mindspore_model/logs/"# 训练所需的代码路径,代码会自动从本地上传至OBScode_obs_path = f"{default_obs_dir}/mindspore_model/"data_obs_path = f"{default_obs_dir}/dataset/flower_photos/"# sdk会将代码自动上传至OBS,并同步到训练环境train_file = TrainingFiles(code_dir=code_dir_local, boot_file=boot_file, obs_path=code_obs_path)# 指定OBS中的数据集路径,会自动将local_path数据上传至obs_path,用户可以在代码中通过 --data_url接收这个数据集路径input_data = InputData(local_path=local_data_path, obs_path=data_obs_path, is_local_source=True, name="data_url")from modelarts.service import SWRManagementimage_organization = SWRManagement(session).get_default_namespace()# image_organization = "your-swr-namespace-name"print("Default image_organization:", image_organization)image_name = "mindspore-image-models-image" #@param {type:"string"}image_tag = "1.0.0" #@param {type:"string"}import osENV_NAME=os.getenv('ENV_NAME')# 启动训练作业:使用user_command(shell命令)方式启动训练作业# 注意:训练启动默认的工作路径为"/home/ma-user/modelarts/user-job-dir",而代码上传路径为"./resnet/${code_dir}"下# --enable_modelarts=True 该代码仓已适配ModelArtsestimator = Estimator(session=session, training_files=train_file, outputs=output, user_image_url=f"{image_organization}/{image_name}:{image_tag}", # 自定义镜像 swr地址,由镜像仓库组织/镜像名称:镜像tag组成 user_command=f'cd /home/ma-user/modelarts/user-job-dir/ && /home/ma-user/anaconda3/envs/MindSpore/bin/python ./resnet/train.py --net_name=resnet50 --dataset=imagenet2012 --enable_modelarts=True --class_num=5 --config_path=./resnet/config/resnet50_imagenet2012_config.yaml --epoch_size=10 --device_target="Ascend" --enable_modelarts=True', # 执行训练命令 train_instance_type="modelarts.p3.large.public", # 虚拟资源规格,不同region的资源规格可能不同,请参考“Estimator参数说明”表下的说明查询修改 train_instance_count=1, # 节点数,适用于多机分布式训练,默认是1 #pool_id='若指定专属池,替换为页面上查到的poolId',同时修改资源规格为专属池专用的虚拟子规格 log_url=log_obs_path )# job_name是可选参数,可不填随机生成工作名job_instance = estimator.fit(inputs=[input_data], job_name="modelarts_training_job_with_sdk_by_command_v01") 表1 Estimator参数说明 参数名称 参数说明 session modelarts session training_files 训练代码的路径和启动文件 user_image_url 自定义镜像swr地址,由镜像仓库组织/镜像名称:镜像tag组成 user_command 执行训练命令 train_instance_type 本地调测'local'或云端资源规格。每个region的资源规格可能是不同的,可以通过下述说明查询对应的资源规格信息。 train_instance_count 节点数 log_url 日志输出路径 job_name 作业名称,不可以重复 train_instance_type表示训练的资源规格,每个region的资源规格可能是不同的。通过如下方法查询资源规格: 公共资源池执行如下命令查询 from modelarts.session import Sessionfrom modelarts.estimatorV2 import Estimatorfrom pprint import pprint# 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;# 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。__AK = os.environ["HUAWEICLOUD_SDK_AK"]__SK = os.environ["HUAWEICLOUD_SDK_SK"]# 如果进行了加密还需要进行解密操作session = Session(access_key=__AK,secret_key=__SK, project_id='***', region_name='***')info = Estimator.get_train_instance_types(session=session)pprint(info) 专属池规格 ModelArts专属资源池统一使用虚拟子规格,不区分GPU和Ascend。资源规格参考表2查询。 表2 专属资源池虚拟规格的说明 train_instance_type 说明 modelarts.pool.visual.xlarge 1卡 modelarts.pool.visual.2xlarge 2卡 modelarts.pool.visual.4xlarge 4卡 modelarts.pool.visual.8xlarge 8卡
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格