华为云用户手册

  • 内存优化型M2 概述 M2型弹性云服务器使用2690-V4 CPU,针对内存优化型应用程序进行了优化。 使用须知 为了提高M2型实例的网络性能,可以将网卡的MTU值设置为MTU=8888。 适用场景 高性能数据库 内存数据库 分布式内存缓存 数据分析和挖掘 Hadoop/Spark集群以及其他企业应用程序 规格 表8 M2型弹性云服务器的规格 规格名称 vCPU 内存 (GiB) 最大带宽/基准带宽 (Gbps) 最大收发包能力 (万PPS) 网卡多队列数 虚拟化类型 m2.large.8 2 16 1.5/0.5 10 1 KVM m2.xlarge.8 4 32 3/1 15 1 KVM m2.2xlarge.8 8 64 5/2 30 2 KVM m2.4xlarge.8 16 128 8/4 40 4 KVM m2.8xlarge.8 32 256 13/8 60 8 KVM
  • 内存优化型M3ne 概述 M3ne型弹性云服务器擅长应对大型内存数据集和高网络场景,搭载英特尔® 至强® 可扩展处理器,配套Hi1822智能高速网卡,提供更高的网络性能,提供最大512GiB基于DDR4的内存实例,适用于高内存、高网络应用。 适用场景 高性能数据库 内存数据库 分布式内存缓存 数据分析和挖掘 Hadoop/Spark集群以及其他企业应用程序 规格 表6 M3ne型弹性云服务器的规格 规格名称 vCPU 内存 (GiB) 最大带宽/基准带宽 (Gbps) 最大收发包能力 (万PPS) 网卡多队列数 网卡个数上限 虚拟化类型 m3ne.large.8 2 16 4/1.3 40 2 2 KVM m3ne.xlarge.8 4 32 8/2.5 80 2 3 KVM m3ne.2xlarge.8 8 64 15/5 150 4 4 KVM m3ne.3xlarge.8 12 96 17/8 200 4 6 KVM m3ne.4xlarge.8 16 128 20/10 280 8 8 KVM m3ne.6xlarge.8 24 192 25/16 400 8 8 KVM m3ne.8xlarge.8 32 256 30/20 550 16 8 KVM m3ne.15xlarge.8 60 512 40/40 1000 32 8 KVM
  • 内存优化型M3 概述 M3型弹性云服务器基于KVM虚拟化平台,特别适合处理内存中的大型数据集,搭载英特尔® 至强® 可扩展处理器,同时搭载全新网络加速引擎,以及DPDK(Data Plane Development Kit)快速报文处理机制,提供更高的网络性能,提供最大512GiB基于DDR4的内存实例,适用于高内存计算应用。 使用须知 M3型弹性云服务器没有IB网卡和SSD卡。 M3型弹性云服务器支持同类型云服务器之间的规格变更。 适用场景 高性能数据库 内存数据库 分布式内存缓存 数据分析和挖掘 Hadoop/Spark集群以及其他企业应用程序 规格 表7 M3型弹性云服务器的规格 规格名称 vCPU 内存 (GiB) 最大带宽/基准带宽 (Gbps) 云硬盘基础带宽 (Gbps) 最大收发包能力 (万PPS) 网卡多队列数 云硬盘基础带宽 (Gbps) 虚拟化类型 m3.large.8 2 16 1.5/0.6 1 30 2 1 KVM m3.xlarge.8 4 32 3/1.1 1.5 50 2 1.5 KVM m3.2xlarge.8 8 64 5/2 2 90 4 2 KVM m3.3xlarge.8 12 96 8/3.5 2.5 110 4 2.5 KVM m3.4xlarge.8 16 128 10/4.5 3 130 4 3 KVM m3.6xlarge.8 24 192 12/6.5 3.5 200 8 3.5 KVM m3.8xlarge.8 32 256 15/9 4 260 8 4 KVM m3.15xlarge.8 60 512 17/17 8 500 16 8 KVM
  • 内存优化型M6 概述 M6型弹性云服务器搭载第二代英特尔® 至强® 可扩展处理器 ,多项技术优化,计算性能强劲稳定。配套25GE智能高速网卡,提供超高网络带宽和PPS收发包能力;提供最大512GiB基于DDR4的内存实例,适用于高内存计算应用。 适用场景 大规模并行处理 (MPP) 数据仓库 MapReduce和Hadoop分布式计算 分布式文件系统 网络文件系统、日志或数据处理应用 规格 表5 M6型弹性云服务器的规格 规格名称 vCPU 内存 (GiB) 最大带宽/基准带宽 (Gbps) 最大收发包能力 (万PPS) 网络连接数 (万) 网卡多队列数 网卡个数上限 云硬盘基础带宽/突发带宽 (Gbps) 虚拟化类型 m6.large.8 2 16 4/1.2 40 50 2 2 1/5 KVM m6.xlarge.8 4 32 8/2.4 80 50 2 3 1.5/5 KVM m6.2xlarge.8 8 64 15/4.5 150 100 4 4 2/5 KVM m6.3xlarge.8 12 96 17/7 200 150 4 6 2.5/5 KVM m6.4xlarge.8 16 128 20/9 280 150 8 8 3.5/5 KVM m6.6xlarge.8 24 192 25/14 400 200 8 8 4/5 KVM m6.8xlarge.8 32 256 30/18 550 300 16 8 7/10 KVM m6.12xlarge.8 48 384 35/27 750 400 16 8 10/15 KVM m6.16xlarge.8 64 512 40/36 1000 500 32 8 20/无 KVM m6.22xlarge.8.physical 88 768 40/40 1000 1000 16 33 20/无 裸金属
  • 内存优化型M7n M7n型弹性云服务器搭载第三代英特尔® 至强® 可扩展处理器,在性能、安全、稳定性等方面全面升级,最大核数升级至96U,内存频率升级至3200MHz;提供安全可信的云上环境,适用于高内存计算应用。 适用场景 大规模并行处理 (MPP) 数据仓库 MapReduce和Hadoop分布式计算 分布式文件系统 网络文件系统、日志或数据处理应用 规格 表4 M7n型弹性云服务器的规格 规格名称 vCPU 内存 (GiB) 最大带宽/基准带宽 (Gbps) 最大收发包能力 (万PPS) 网络连接数 (万) 网卡多队列数 网卡个数上限 云硬盘基础带宽/突发带宽 (Gbps) 虚拟化类型 m7n.large.8 2 16 4/0.8 40 50 2 2 1.5/6 KVM m7n.xlarge.8 4 32 8/1.6 80 50 2 3 2/6 KVM m7n.2xlarge.8 8 64 15/3 150 100 4 4 3/6 KVM m7n.3xlarge.8 12 96 17/5 200 150 4 6 4/6 KVM m7n.4xlarge.8 16 128 20/6 280 150 8 8 5/6 KVM m7n.6xlarge.8 24 192 25/9 400 200 8 8 6/无 KVM m7n.8xlarge.8 32 256 30/12 550 300 16 8 8/无 KVM m7n.12xlarge.8 48 384 35/18 750 400 16 8 12/无 KVM m7n.16xlarge.8 64 512 36/24 800 500 28 8 16/无 KVM m7n.24xlarge.8 96 768 40/36 850 800 32 8 24/无 KVM
  • 内存优化型M7 概述 M7型弹性云服务器搭载第三代英特尔® 至强® 可扩展处理器,在性能、安全、稳定性等方面全面升级,最大核数升级至128U,内存频率升级至3200MHz,适用于高内存计算应用。 使用须知 M7型弹性云服务器仅支持使用S CS I磁盘模式挂载磁盘,不支持使用VBD磁盘模式挂载磁盘。磁盘标识为wwn号。 适用场景 大规模并行处理 (MPP) 数据仓库 MapReduce和Hadoop分布式计算 分布式文件系统 网络文件系统、日志或数据处理应用 规格 表2 M7型弹性云服务器的规格 规格名称 vCPU 内存 (GiB) 最大带宽/基准带宽 (Gbps) 最大收发包能力 (万PPS) 网络连接数 (万) 网卡多队列数 网卡个数上限 辅助网卡个数上限 云硬盘基础带宽/突发带宽 (Gbps) 虚拟化类型 m7.large.8 2 16 4/0.8 40 50 2 2 16 1/6 基于QingTian架构的自研极简虚拟化 m7.xlarge.8 4 32 8/1.6 80 50 2 3 32 1.5/6 m7.2xlarge.8 8 64 15/3 150 100 4 4 64 2/6 m7.3xlarge.8 12 96 17/5 200 150 4 6 96 3/6 m7.4xlarge.8 16 128 20/6 280 150 8 8 128 4/6 m7.6xlarge.8 24 192 25/9 400 200 8 8 192 5/6 m7.8xlarge.8 32 256 30/12 550 300 16 8 256 6/无 m7.12xlarge.8 48 384 35/18 750 400 16 8 256 8/无 m7.16xlarge.8 64 512 36/24 1000 500 28 8 256 12/无 m7.24xlarge.8 96 768 40/36 1100 800 32 8 256 16/无 m7.32xlarge.8 128 1024 42/40 1200 1000 32 8 256 24/无
  • 内存优化型aM7 概述 aM7型弹性云服务器搭载新一代可扩展处理器,在性能、安全、稳定性等方面全面升级,最大核数升级至232U,内存频率升级至3200MHz,适用于高内存计算应用。 使用须知 aM7型云服务器的内网最大带宽可达100Gbps,最大收发包能力支持2000万PPS。当带宽高于50Gbps,收发包超过1000万PPS时,可以通过DPDK方式屏蔽云服务器内核协议栈差异,获取真实网络性能。 适用场景 大规模并行处理 (MPP) 数据仓库 MapReduce和Hadoop分布式计算 分布式文件系统 网络文件系统、日志或数据处理应用 规格 表3 aM7型弹性云服务器的规格 规格名称 vCPU 内存 (GiB) 最大带宽/基准带宽 (Gbps) 最大收发包能力 (万PPS) 网卡多队列数 网卡个数上限 辅助网卡个数上限 虚拟化类型 am7.large.8 2 16 2/1 40 2 2 16 KVM am7.xlarge.8 4 32 3/1.5 60 2 3 32 am7.2xlarge.8 8 64 4/2.5 100 4 4 64 am7.3xlarge.8 12 96 6/4 150 4 6 96 am7.4xlarge.8 16 128 8/5 200 8 8 128 am7.6xlarge.8 24 192 12/6 250 8 8 192 am7.8xlarge.8 32 256 15/8 300 16 8 256 am7.12xlarge.8 48 384 22/12 400 16 8 256 am7.16xlarge.8 64 512 28/16 550 24 12 256 am7.24xlarge.8 96 768 40/25 800 24 12 256 am7.29xlarge.8 116 934 50/30 950 32 16 256 am7.32xlarge.8 128 1024 55/35 1000 32 16 256 am7.48xlarge.8 192 1536 100/80 1600 32 16 256 am7.58xlarge.8 232 1868 120/100 2000 32 16 256
  • 内存优化型实例类型总览 内存优化型云服务器擅长应对大型内存数据集和高网络场景。适用于内存要求高,数据量大并且数据访问量大,同时要求快速的数据交换和处理。例如广告精准营销、电商、车联网等大数据分析场景。 该类型弹性云服务器默认开启超线程,每个vCPU对应一个底层超线程HT(Hyper-Threading)。 在售:M7、aM7、M7n、M6、M3ne、M3、M2 已停售:M1 停售的规格详情请参见已停售的实例规格。 表1 内存优化型实例特点 规格名称 计算 磁盘类型 网络 内存优化型M7 CPU/内存配比:1:8 vCPU数量范围:2-128 处理器:第三代英特尔® 至强® 可扩展处理器 基频/睿频:3.0GHz/3.5GHz 支持开启/关闭超线程功能,详细内容请参见开启/关闭超线程 高IO 通用型SSD 超高IO 极速型SSD 通用型SSD V2 支持IPv6 超高网络收发包能力 实例网络性能与计算规格对应,规格越高网络性能越强 最大网络收发包:1200万PPS 最大内网带宽:42Gbps 最大网络连接数:1000万 内存优化型aM7 CPU/内存配比:1:8 vCPU数量范围:2-232 基频/睿频:2.45GHz/3.5GHz 支持开启/关闭超线程功能,详细内容请参见开启/关闭超线程 高IO 通用型SSD 超高IO 极速型SSD 通用型SSD V2 支持IPv6 超高网络收发包能力 实例网络性能与计算规格对应,规格越高网络性能越强 最大网络收发包:2000万PPS 最大内网带宽:100Gbps 内存优化型M7n CPU/内存配比:1:8 vCPU数量范围:2-96 处理器:第三代英特尔® 至强® 可扩展处理器 基频/睿频:2.6GHz/3.4GHz 支持开启/关闭超线程功能,详细内容请参见开启/关闭超线程 高IO 通用型SSD 超高IO 极速型SSD 通用型SSD V2 支持IPv6 超高网络收发包能力 实例网络性能与计算规格对应,规格越高网络性能越强 最大网络收发包:850万PPS 最大内网带宽:40Gbps 最大网络连接数:800万 内存优化型M6 CPU/内存配比:1:8 vCPU数量范围:2-64 处理器:第二代英特尔® 至强® 可扩展处理器 基频/睿频:3.0GHz/3.4GHz 高IO 通用型SSD 超高IO 极速型SSD 通用型SSD V2 超高网络收发包能力 实例网络性能与计算规格对应,规格越高网络性能越强 最大网络收发包:1000万PPS 最大内网带宽:40Gbps 最大网络连接数:1000万 内存优化型M3ne CPU/内存配比:1:8 vCPU数量范围:2-60 处理器:英特尔® 至强® 可扩展处理器 基频/睿频:3.0GHz/3.4GHz 高IO 通用型SSD 超高IO 极速型SSD 通用型SSD V2 超高网络收发包能力 实例网络性能与计算规格对应,规格越高网络性能越强 最大网络收发包:1000万PPS 最大内网带宽:40Gbps 内存优化型M3 CPU/内存配比:1:8 vCPU数量范围:2-60 处理器:英特尔® 至强® 可扩展处理器 基频/睿频:3.0GHz/3.4GHz 高IO 通用型SSD 超高IO 极速型SSD 通用型SSD V2 超高网络收发包能力 实例网络性能与计算规格对应,规格越高网络性能越强 最大网络收发包:500万PPS 最大内网带宽:17Gbps 内存优化型M2 CPU/内存配比:1:8 vCPU数量范围:2-32 处理器:英特尔® 至强® 处理器E5 v4家族 基频/睿频:2.4GHz/3.3GHz 高IO 通用型SSD 超高IO 极速型SSD 超高网络收发包能力 实例网络性能与计算规格对应,规格越高网络性能越强 为了提高网络性能,可以将网卡的MTU值设置为MTU=8888 最大网络收发包:60万PPS 最大内网带宽:13Gbps
  • 本地安装ModelArts SDK步骤 在本地安装ModelArts SDK,具体的配置步骤如下: 步骤一:下载ModelArts SDK 步骤二:配置运行环境 步骤三:安装ModelArts SDK ModelArts SDK支持安装在Windows和Linux操作系统中。 如果在Windows上安装ModelArts SDK时出现报错,可参见FAQ:安装ModelArts SDK报错处理报错。
  • 用户名密码认证模式 本地安装完成ModelArts SDK后,可通过用户名密码认证模式进行Session鉴权。示例代码如下: 使用账号认证 “username”填写您的账号名。 1 2 3 4 5 6 7 from modelarts.session import Session # 认证用的password硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; # 本示例以password保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_PASSWORD。 __PASSWORD = os.environ["HUAWEICLOUD_SDK_PASSWORD"] # 如果进行了加密还需要进行解密操作 session = Session(username='***', password=__PASSWORD, region_name='***', project_id='***') 使用 IAM 用户认证 “account”填写您的账号名,“username”填写您的IAM用户名。 1 2 3 4 5 6 7 from modelarts.session import Session # 认证用的password硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; # 本示例以password保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_PASSWORD。 __PASSWORD = os.environ["HUAWEICLOUD_SDK_PASSWORD"] # 如果进行了加密还需要进行解密操作 session = Session(account='***', username='***', password=__PASSWORD, region_name='***', project_id='***') 账号与用户的概念介绍,请参见IAM基本概念。获取您的账号、用户名等信息,请参见获取用户名、用户ID、项目名称、项目ID。 如果您的华为云账号已经升级为华为账号,则账号认证方式将不可用,请创建一个IAM用户,使用IAM用户认证。
  • Session鉴权概述 Session模块的主要作用是实现与公有云资源的鉴权,并初始化ModelArts SDK Client、OBS Client。当成功建立Session后,您可以直接调用ModelArts的SDK接口。 ModelArts开发环境Notebook不需要Session鉴权,可以直接使用。示例代码如下: 1 2 from modelarts.session import Session session = Session() 本地PC使用ModelArts SDK时,需要进行Session鉴权。鉴权方式可参考如下认证方式,选择其中一种方式进行认证即可。 用户名密码认证模式: 支持OBS管理、数据管理、训练管理、模型管理、服务管理的鉴权。 用户AK-SK认证模式: 支持OBS管理、数据管理、训练管理、模型管理、服务管理的鉴权。
  • 示例代码 示例一:根据数据类型创建图像数据集 from modelarts.session import Session from modelarts.dataset import Dataset session = Session() dataset_name = "dataset-image" # 数据集名称 data_type = "IMAGE" # 数据集类型,图像类型数据集 data_sources = dict() # 数据集数据来源 data_sources["type"] = 0 # 数据来源类型,0表示OBS data_sources["path"] = "/obs-gaia-test/data/image/image-classification/" # 数据在OBS中的路径 work_path = dict() # 数据集输出位置,用于存放输出的标注信息等文件 work_path['type'] = 0 # 数据集工作目录的类型,0表示OBS work_path['path'] = "/obs-gaia-test/data/output/work_path/" # 数据集工作目录在OBS中的路径 create_dataset_resp = Dataset.create_dataset(session, dataset_name=dataset_name, data_type=data_type, data_sources=data_sources, work_path=work_path) 示例二:根据数据类型创建图像数据集(导入标注信息) from modelarts.session import Session from modelarts.dataset import Dataset session = Session() dataset_name = "dataset-image-with-annotations" data_type = "IMAGE" data_sources = dict() data_sources["type"] = 0 data_sources["path"] = "/obs-gaia-test/data/image/image-classification/" annotation_config = dict() # 源数据的标注格式 annotation_config['scene'] = "image_classification" # 数据标注场景为图像分类标注 annotation_config['format_name'] = "ModelArts image classification 1.0" # 标注格式为ModelArts image classification 1.0 data_sources['annotation_config'] = annotation_config work_path = dict() work_path['type'] = 0 work_path['path'] = "/obs-gaia-test/data/output/work_path/" create_dataset_resp = Dataset.create_dataset(session, dataset_name=dataset_name, data_type=data_type, data_sources=data_sources, work_path=work_path) 示例三:根据数据类型创建表格数据集 from modelarts.session import Session from modelarts.dataset import Dataset session = Session() dataset_name = "dataset-table" data_type = "TABLE" data_sources = dict() data_sources["type"] = 0 data_sources["path"] = "/obs-gaia-test/data/table/table0/" data_sources['with_column_header'] = True work_path = dict() work_path['type'] = 0 work_path['path'] = "/obs-gaia-test/data/output/work_path/" # 表格类型的数据集需要指定表格数据的schema信息 schema0 = dict() schema0['schema_id'] = 0 schema0['name'] = "name" schema0['type'] = "STRING" schema1 = dict() schema1['schema_id'] = 1 schema1['name'] = "age" schema1['type'] = "STRING" schema2 = dict() schema2['schema_id'] = 2 schema2['name'] = "label" schema2['type'] = "STRING" schemas = [] schemas.append(schema0) schemas.append(schema1) schemas.append(schema2) create_dataset_resp = Dataset.create_dataset(session, dataset_name=dataset_name, data_type=data_type, data_sources=data_sources, work_path=work_path, schema=schemas) 示例四:根据标注类型创建图像分类数据集 from modelarts.session import Session from modelarts.dataset import Dataset session = Session() dataset_name = "dataset-image-classification" dataset_type = 0 # 数据集的标注类型,0表示图像分类标注类型 data_sources = dict() data_sources["path"] = "/obs-gaia-test/data/image/image-classification/" data_sources["type"] = "0" work_path = dict() work_path['type'] = 0 work_path['path'] = "/obs-gaia-test/data/output/work_path/" create_dataset_resp = Dataset.create_dataset(session, dataset_name=dataset_name, dataset_type=dataset_type, data_sources=data_sources, work_path=work_path) 示例五:根据标注类型创建文本三元组数据集 dataset_name = "dataset-text-triplet" dataset_type = 102 # 数据集标注类型,102表示文本三元组标注类型 data_sources = dict() data_sources['type'] = 0 data_sources['path'] = "/obs-gaia-test/data/text/text-classification/" work_path = dict() work_path['type'] = 0 work_path['path'] = "/obs-gaia-test/data/output/work_path/" # 创建文本三元组标注类型的数据集,需要传入标签参数 label_entity1 = dict() # 标签对象 label_entity1['name'] = "疾病" # 标签名称 label_entity1['type'] = 101 # 标签类型,101表示实体类型标签 label_entity2 = dict() label_entity2['name'] = "疾病别称" label_entity2['type'] = 101 label_relation1 = dict() label_relation1['name'] = "又称为" label_relation1['type'] = 102 # 标签类型,102表示关系类型标签 property = dict() # 关系类型标签需要在标签属性中指定起始实体标签和终止实体标签 property['@modelarts:from_type'] = "疾病" # 起始实体标签 property['@modelarts:to_type'] = "疾病别称" # 终止实体标签 label_relation1['property'] = property labels = [] labels.append(label_entity1) labels.append(label_entity2) labels.append(label_relation1) create_dataset_resp = Dataset.create_dataset(session, dataset_name=dataset_name, dataset_type=dataset_type, data_sources=data_sources, work_path=work_path, labels=labels) 示例六:根据标注类型创建表格数据集 dataset_name = "dataset-table" dataset_type = 400 # 数据集标注类型,400表示表格数据集 data_sources = dict() data_sources['type'] = 0 data_sources['path'] = "/obs-gaia-test/data/table/table0/" data_sources['with_column_header'] = True # 用来指明表格数据中是否包含表头 work_path = dict() work_path['type'] = 0 work_path['path'] = "/obs-gaia-test/data/output/work_path/" # 表格数据集需要传入表格数据的表头参数 schema0 = dict() # 表格的表头 schema0['schema_id'] = 0 # 第一列表头 schema0['name'] = "name" # 表头名称,该列表头为name schema0['type'] = "STRING" # 表头数据类型,表示字符串 schema1 = dict() schema1['schema_id'] = 1 schema1['name'] = "age" schema1['type'] = "STRING" schema2 = dict() schema2['schema_id'] = 2 schema2['name'] = "label" schema2['type'] = "STRING" schemas = [] schemas.append(schema0) schemas.append(schema1) schemas.append(schema2) create_dataset_resp = Dataset.create_dataset(session, dataset_name=dataset_name, dataset_type=dataset_type, data_sources=data_sources, work_path=work_path, schema=schemas)
  • 使用SDK调测单机训练作业 代码中涉及到的OBS路径,请用户替换为自己的实际OBS路径。 代码是以PyTorch为例编写的,不同的AI框架之间,整体流程是完全相同的,仅需修改6和10中的framework_type参数值即可,例如:MindSpore框架,此处framework_type=Ascend-Powered-Engine。 Session初始化。 代码如下:这里只列出最常用的一种方式,更多方式请参考《Session鉴权章节》 from modelarts.session import Session session = Session() 准备训练数据,这里支持三种形式,用户可根据自己的情况选择一种。 import os from modelarts.train_params import InputData base_bucket_path = "obs://modelarts-xxx-a0de02a6/dis-train/cifar10/" base_local_path = "/home/ma-user/work/cifar10/" # 形式1,数据在OBS上,且是一个压缩文件 obs_path = os.path.join(base_bucket_path, "dataset-zip/dataset.zip") data_local = os.path.join(base_local_path, "dataset/") input_data = InputData(obs_path=obs_path, local_path=data_local, is_local_source=False) # 形式2,数据在OBS上,且是一个目录 #obs_path = os.path.join(base_bucket_path, "dataset/") #data_local = os.path.join(base_local_path, "dataset/") #input_data = InputData(obs_path=obs_path, local_path=data_local, is_local_source=False) # 形式3,数据在Notebook中,且是一个目录,一般是使用SFS挂载磁盘的场景 #obs_path = os.path.join(base_bucket_path, "dataset-local/") #data_local = os.path.join(base_local_path, "dataset/") #input_data = InputData(obs_path=obs_path, local_path=data_local, is_local_source=True) 参数解释: is_local_source:可选参数,默认为False,指定训练数据的保存位置。 False:训练数据保存在参数obs_path指定的位置中; True:训练数据保存在notebook中,由local_path指定。 obs_path:obs地址。根据is_local_source值的变化,有不同的含义。 is_local_source=False,此时是必选参数,代表训练数据位置,支持文件夹和压缩文件。 is_local_source=True,此时是可选参数。如果用户填写了该参数,则开始训练时会将Notebook中的训练数据压缩并上传到该位置,不可重复上传。如果第一次上传后,建议将is_local_source修改为False,obs_path指向刚才上传的压缩数据文件位置;如果用户没有填写,则不会进行压缩上传。 local_path:必选参数,Notebook中的路径。用户的训练脚本需要从该目录中读取数据,完成训练任务。根据is_local_source值的变化,有不同的含义。 is_local_source=True,此时代表训练数据位置,仅支持文件夹。 is_local_source=False,训练过程中SDK会帮助用户将数据下载到该位置,如果训练数据是压缩文件,下载完成后会进行解压缩。 准备训练脚本。 from modelarts.train_params import TrainingFiles code_dir = os.path.join(base_local_path, "train/") # 这里提前将训练脚本放在了obs中,实际上训练脚本可以是任何来源,只要能够放到Notebook里边就行 session.obs.download_file(os.path.join(base_bucket_path, "train/test-pytorch.py"), code_dir) training_file = TrainingFiles(code_dir=code_dir, boot_file="test-pytorch.py", obs_path=base_bucket_path + 'train/') 参数解释: code_dir:必选参数,训练脚本所在的目录。在训练任务调测的情况下,必须是notebook中的目录,不能是OBS目录。 boot_file:必选参数,训练启动文件路径,路径格式为基于code_dir目录的相对路径,如实例代码中boot_file的完整路径为/home/ma-user/work/cifar10/train/test-pytorch.py,这里就只需要填写test-pytorch.py。 obs_path:可选参数,一个OBS目录。仅在本地单机调试时不需要该参数,提交远程训练时必选,会将训练脚本压缩并上传到该路径。 准备训练输出,如果用户不需要将训练输出上传到OBS,可以省略这一步。 from modelarts.train_params import OutputData output = OutputData(local_path=os.path.join(base_local_path, "output/"), obs_path=os.path.join(base_bucket_path, 'output/')) local_path:必选参数,一个notebook中的路径,训练脚本需要将输出的模型或其他数据保存在该目录下。 obs_path:必选参数,一个OBS目录。SDK会将local_path中的模型文件自动上传到这里。 查看训练支持的AI框架。 from modelarts.estimatorV2 import Estimator Estimator.get_framework_list(session) 参数session即是第一步初始化的数据。如果用户知道要使用的AI框架,可以略过这一步。 Estimator初始化。 from modelarts.estimatorV2 import Estimator parameters = [] parameters.append({"name": "data_url", "value": data_local}) parameters.append({"name": "output_dir", "value": os.path.join(base_local_path, "output/")}) parameters.append({"name": "epoc_num", "value": 2}) estimator = Estimator(session=session, training_files=training_file, outputs=[output], parameters=parameters, framework_type='PyTorch', train_instance_type='local', train_instance_count=1, script_interpreter="/home/ma-user/anaconda3/envs/PyTorch-1.4/bin/python", log_url=base_bucket_path + 'log/', job_description='This is a image net train job') 参数解释: session:必选参数,1中初始化的参数。 training_files:必选参数,3中初始化的训练文件。 outputs:可选参数,这里传入的是一个list,每个元素都是4中初始化的训练输出。 parameters:可选参数,一个list,每个元素都是一个字典,包含"name"和"value"两个字段,以"--name=value"的形式传递给训练启动文件。value支持字符串,整数,布尔等类型。对于布尔类型,建议用户在训练脚本中使用action='store_true'的形式来解析。 framework_type:必选参数,训练作业使用的AI框架类型,可参考步骤5查询的返回结果。 train_instance_type:必选参数,训练实例类型,这里指定'local'即为在notebook中进行训练。 train_instance_count:必选参数,训练使用的worker个数,单机训练时为1,训练作业只在当前使用的notebook中运行。 script_interpreter:可选参数,指定使用哪个python环境来执行训练任务,如果未指定,会默认使用当前的kernel。 log_url:可选参数,一个OBS地址,训练过程中,SDK会自动将训练的日志上传到该位置。但是如果训练任务运行在Ascend上,则是必选参数。 job_description:可选参数,训练任务的描述。 开始训练。 estimator.fit(inputs=[input_data], job_name="cifar10-dis") 参数解释: inputs:可选参数,一个list,每个元素都是2生成的实例。 job_name:可选参数,训练任务名,便于区分和记忆。 本地单机调试训练任务开始后,SDK会依次帮助用户完成以下流程: 初始化训练作业,如果2指定的训练数据在OBS上,这里会将数据下载到local_path中。 执行训练任务,用户的训练代码需要将训练输出保存在4中指定的local_path中。 将训练任务得到的输出上传到4指定的obs_path中,日志上传到第六步指定的log_url中。 同时,可以在任务名后增加时间后缀,区分不同的任务名称。 from datetime import datetime, timedelta import time base_name = "cifar10-dis" job_name = base_name + '-' + (datetime.now() + timedelta(hours=8)).strftime('%Y%m%d-%H%M%S') estimator.fit(inputs=[input_data], job_name=job_name) 多次调试。 上一步执行过程中,训练脚本的日志会实时打印到控制台,如果用户的代码或者参数有误的话,可以很方便的看到。在Notebook中经过多次调试,得到想要的结果后,可以进行下一步。 查询训练支持的计算节点类型和最大个数。 from modelarts.estimatorV2 import Estimator Estimator.get_spec_list(session=session) 参数session即是1初始化的数据。返回的是一个字典,其中flavors值是一个列表,描述了训练服务支持的所有规格的信息。每个元素中flavor_id是可直接用于远程训练任务的计算规格,max_num是该规格的最大节点数。如果用户知道要使用的计算规格,可以略过这一步。 提交远程训练作业。 from modelarts.estimatorV2 import Estimator parameters = [] parameters.append({"name": "data_url", "value": data_local}) parameters.append({"name": "output_dir", "value": os.path.join(base_local_path, "output/")}) parameters.append({"name": "epoch_num", "value": 2}) estimator = Estimator(session=session, training_files=training_file, outputs=[output], parameters=parameters, framework_type='PyTorch', train_instance_type='modelarts.vm.cpu.8u', train_instance_count=1, script_interpreter="/home/ma-user/anaconda3/envs/PyTorch-1.4/bin/python", log_url=base_bucket_path + 'log/', job_description='This is a image net train job') estimator.fit(inputs=[input_data], job_name="cifar10-dis") 在本地调测完成的基础上,只需要Estimator初始化时将参数train_instance_type修改为训练服务支持的规格即可(即第10步查询出来的flavor_id的值)。执行fit函数后,即可提交远程训练任务。 训练任务提交后,SDK会依次帮助用户完成以下流程: 将训练脚本打包成zip文件,上传到3中指定的obs_path中。 当训练数据保存在Notebook中,则将其打包成zip文件并上传到指定的obs_path中。 向ModelArts训练服务提交 自定义镜像 训练作业,使用的镜像为当前Notebook的镜像,这样保证了远程训练作业和在Notebook中的训练作业使用的运行环境一致。 训练任务得到的输出上传到4指定的obs_path中,日志上传到这一步log_url指定的位置中。 在这一步中需要注意的一个问题: 如果用户在自己的训练脚本中要创建新的目录或文件,请在以下几种目录中创建: /home/ma-user/work; /cache; inputs或者outputs中指定的local_path,如在步骤2中初始化InputData时,填写了local_path="/home/ma-user/work/xx/yy/",则在该目录下也可以创建新目录或文件。 父主题: 训练作业调测
  • 示例代码 在ModelArts notebook平台,Session鉴权无需输入鉴权参数。其它平台的Session鉴权请参见Session鉴权。 方式1:已部署为在线服务predictor的初始化 1 2 3 4 5 from modelarts.session import Session from modelarts.model import Predictor session = Session() predictor_instance = Predictor(session, service_id="your_service_id") 方式2:部署在线服务predictor 部署服务到公共资源池 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 from modelarts.session import Session from modelarts.model import Model from modelarts.config.model_config import ServiceConfig, TransformerConfig, Schedule session = Session() model_instance = Model(session, model_id='your_model_id') vpc_id = None # (可选)在线服务实例部署的虚拟私有云ID,默认为空 subnet_network_id = None # (可选)子网的网络ID,默认为空 security_group_id = None # (可选)安全组,默认为空 configs = [ServiceConfig(model_id=model_instance.model_id, weight="100", instance_count=1, specification="modelarts.vm.cpu.2u")] # 参考表3中specification字段 predictor_instance = model_instance.deploy_predictor( service_name="service_predictor_name", infer_type="real-time", vpc_id=vpc_id, subnet_network_id=subnet_network_id, security_group_id=security_group_id, configs=configs, # predictor配置参数, 参考下文configs参数格式说明 schedule = [Schedule(op_type='stop', time_unit='HOURS', duration=1)] # (可选)设置在线服务运行时间 ) 参数“model_id”代表将部署成在线服务的模型。“model_id”可以通过查询模型列表或者ModelArts管理控制台获取。 部署服务到专属资源池 from modelarts.config.model_config import ServiceConfig configs = [ServiceConfig(model_id=model_instance.model_id, weight="100", instance_count=1, specification="modelarts.vm.cpu.2u")] predictor_instance = model_instance.deploy_predictor( service_name="your_service_name", infer_type="real-time", configs=configs, cluster_id="your dedicated pool id" ) configs参数格式说明:SDK提供了ServiceConfig类对其定义,configs为list,list中的元组对象是ServiceConfig。定义代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 configs = [] envs = {"model_name":"mxnet-model-1", "load_epoch":"0"} service_config1 = ServiceConfig( model_id="model_id1", # model_id1和model_id2必须是同一个模型的不同版本对应的model_id weight="70", specification="modelarts.vm.cpu.2u", # 参考表3中specification字段 instance_count=2, envs=envs) # (可选)设置环境变量的值,如:envs = {"model_name":"mxnet-model-1", "load_epoch":"0"} service_config2 = ServiceConfig( model_id='model_id2', weight="30", specification="modelarts.vm.cpu.2u", # 参考表3中specification字段 instance_count=2, envs=envs) # (可选)设置环境变量的值,如:envs = {"model_name":"mxnet-model-1", "load_epoch":"0"} configs.append(service_config1) configs.append(service_config2) 方式3:部署批量服务transformer 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 from modelarts.session import Session from modelarts.model import Model from modelarts.config.model_config import TransformerConfig session = Session() model_instance = Model(session, model_id='your_model_id') vpc_id = None # (可选)批量服务实例部署的虚拟私有云ID,默认为空 subnet_network_id = None # (可选)子网的网络ID,默认为空 security_group_id = None # (可选)安全组,默认为空 transformer = model_instance.deploy_transformer( service_name="service_transformer_name", infer_type="batch", vpc_id=vpc_id, subnet_network_id=subnet_network_id, security_group_id=security_group_id, configs=configs # transformer配置参数, 参考下文configs参数格式说明 ) configs参数格式说明:SDK提供了TransformerConfig类对其定义,configs都是list,list中的元组对象是TransformerConfig。定义代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 configs = [] mapping_rule = None # (可选)输入参数与csv数据的映射关系 mapping_type= "file" # file或者csv envs = {"model_name":"mxnet-model-1", "load_epoch":"0"} transformer_config1 = TransformerConfig( model_id="model_id", specification="modelarts.vm.cpu.2u", # 参考表3中specification字段 instance_count=2, src_path="/shp-cn4/sdk-demo/", # 批量任务输入数据的OBS路径,如:"/your_obs_bucket/src_path" dest_path="/shp-cn4/data-out/", # 批量任务输出结果的OBS路径,如:"/your_obs_bucket/dest_path" req_uri="/", mapping_type=mapping_type, mapping_rule=mapping_rule, envs=envs) # (可选)设置环境变量的值,如:envs = {"model_name":"mxnet-model-1", "load_epoch":"0"} configs.append(transformer_config1)
  • 步骤1:准备数据 华为HiLens在公共OBS桶中提供了人脸检测技能的示例模型,命名为“face_detection_model”,因此本文的操作示例使用此示例模型进行技能开发。您需要执行如下操作,将模型文件上传至您的OBS目录下,即准备工作中您创建的OBS目录“hilens-test1/face-detection”。 单击模型下载链接,将人脸检测案例示例模型“face_detection_model”下载至本地,在文件存放目录完成签名校验(Windows系统推荐使用Git工具),验证成功将返回OK。执行命令如下: echo ec5160c48f5ba6025dac696d7ff8b827f1902f6aa712b6969609cb5f290d149a face_detection_model.zip | sha256sum -c 在本地,将“face_detection_model”压缩包解压。例如解压至本地“face_detection_model”文件夹下,包括两个子文件夹“caffemodel+transfer”和“logic_code”。 参考上传文件,将“caffemodel+transfer”文件夹下的3个文件上传至“hilens-test1/face-detection”OBS路径下,包含caffe模型文件“.caffemodel”和“.prototxt”和配置文件“.cfg”。
  • 准备工作 已注册华为云帐号,且在使用华为HiLens前检查帐号状态,帐号不能处于欠费或冻结状态。 已购买HiLens Kit设备,并准备好网线,电脑,路由器,HDMI线,显示屏。 成功注册设备HiLens Kit设备至华为HiLens控制台,详情请参见注册HiLens Kit。 登录OBS服务,创建桶和文件夹,用于存放样例的模型数据。创建名称为“hilens-test1”OBS桶,创建名称为“face-detection”文件夹和名称为“face-detection-output”的文件夹。 创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。为保证模型数据能正常访问,请务必保证创建的OBS桶与华为HiLens在同一区域。 占用OBS资源的操作均会收取一定费用,收费规则请参见 对象存储服务 OBS。
  • 准备工作 已注册华为云帐号,且在使用华为HiLens前检查帐号状态,帐号不能处于欠费或冻结状态。 已购买HiLens Kit设备,并准备好网线,电脑,路由器,HDMI线,显示屏。 成功注册设备HiLens Kit设备至华为HiLens控制台,详情请参见注册HiLens Kit。 登录OBS服务,创建桶和文件夹,用于存放样例的训练数据。创建名称为“hilens-gesture”OBS桶,区域选择“华北-北京四”,创建如下文件夹: “gesture-data”:用于存放训练模型的数据。 “gesture-data-output”:用于存放模型输出数据。 “gesture-data-record”:用于存放日志。 “gesture-convert-output”:用于存放转换模型后的输出文件。 创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。为保证模型数据能正常访问,请务必保证创建的OBS桶与华为HiLens在同一区域。 占用OBS资源的操作均会收取一定费用,收费规则请参见对象存储服务 OBS。
  • 步骤1:准备数据 华为HiLens在公共OBS桶中提供了手势识别技能的用于模型训练的示例数据,命名为“gesture_recognition_data”,因此本文的操作示例使用此示例模型进行技能开发。您需要执行如下操作,将模型文件上传至您的OBS目录下,即准备工作中您创建的OBS目录“hilens-gesture/gesture-recognition”。 单击示例数据下载链接,将手势识别案例示例数据“gesture_recognition_data”下载至本地,在文件存放目录完成签名校验(Windows系统推荐使用Git工具),验证成功将返回OK。执行命令如下: echo 244e86ec55fd54461b5f5eff53a7867f43f72f29778babd3fe89a20e860ca529 gesture_recognition_data.zip | sha256sum -c 在本地,将“gesture_recognition_data”压缩包解压。例如解压至本地“gesture_recognition_data”文件夹下,包括1个子文件夹“gesture-data”和1个“.py”文件。 参考上传文件,利用OBS Browser+工具将“gesture_recognition_data/gesture-data”文件夹下的所有数据上传至“hilens-gesture/gesture-data”OBS路径下,OBS Browser+使用方法请参见OBS Browser+工具指南。
  • 问题原因 认证身份失败,请检查用户名或密码是否错误。 注册HiLens Kit所使用的账号名必须是华为云账号,不是华为账号。 华为帐号和华为云帐号不同,如果您暂未 注册华为账号 ,建议您先注册华为账号并开通华为云,请参考注册华为帐号并开通华为云。 如果您使用的账号是华为账号,请使用此账号创建子账号,详情请见创建IAM用户,并给子账号添加admin权限。 注册HiLens Kit所使用的用户名、账号名、设备名仅支持英文字母、数字和下划线,不支持以数字开头的名称以及只有数字的名称。 注册设备时提示:“The account is locked”、“Password: Authenticating the account” 检查华为云账号和密码是否正确,如5次输入错误将导致账户被锁,15min后自动解锁。
  • 检查设备时间 使用SSH连接到端侧设备,查看当前设备时间是否正确。 具体操作如下: 网线连接电脑和设备,使用PuTTY软件SSH连接到端侧设备,详细操作指导请参见使用SSH注册设备。 在PuTTY里输入命令date,查看当前设备时间。 PuTTY上显示时间为协调世界时间(Coordinated Universal Time,缩写为UTC),与北京时间相差8小时。 在判断设备时间是否正确时,在UTC时间基础上加8小时,换算成北京时间后,判断是否与当前时间一致。 如果设备时间与当前时间一致,请重启设备。 具体操作如下: 网线连接电脑和设备,使用PuTTY软件SSH连接到HiLens Kit设备,详细操作指导请参见使用SSH注册设备。 在PuTTY里输入命令reboot,按回车即可重新启动设备。 如果设备时间与当前时间不一致,请修改设备时间。 具体操作如下: 网线连接电脑和设备,使用PuTTY软件SSH连接到HiLens Kit设备,详细操作指导请参见使用SSH注册设备。 在PuTTY里输入命令 timedatectl set-timezone Asia/Shanghai 按回车结束。 在PuTTY里输入命令 hwclock –w 按回车结束。 浏览器输入https://192.168.2.111(以设备IP是“192.168.2.111”为例),输入“用户名”和“密码”,登录华为HiLens智能边缘管理系统。详情请参见登录华为HiLens智能边缘系统。 单击上方“管理”,进入“管理”页面。 单击“时间”,在“时间”页签下选择“手动矫正时间”,单击重新配置时间。 单击上方“维护”,进入“维护”页面。 单击“系统重启”,在“系统重启”页签下单击“重启系统”,如图2所示,完成设备时间的修改。 图2 重启系统
  • 什么是区域、可用区 我们用区域和可用区来描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。
  • 技能安装提示失败是什么原因? 可从如下几个方面进行排查。 检查华为云账号是否欠费,确保未欠费才能正常安装技能。 检查网络是否连通。命令行输入ping 8.8.8.8和ping 任意网站是否能ping通。 请检查OBS桶是否存储您所需要的技能。如果OBS桶中没有技能,请检查OBS桶是否存在权限设置,详情请见查看桶的信息。 可去掉桶的权限,或重新创建一个没有限制权限的OBS桶,重新安装技能。创建桶的操作请见创建桶。 检查时间是否同步,并修改错误时间。 SSH连接设备,并在SSH窗口命令行输入date,看时间是否同步,不同步则请修改: 调整时区,与中国时区一致,执行命令 timedatectl set-timezone Asia/Shanghai 修改设备时间,以当前时间为2019年10月17日19时19分19秒为例。执行命令 date -s “2019-10-17 19:19:19”(注意使用英文引号) hwclock –w reboot 父主题: 安装/启动技能
  • 使用SSH注册设备 使用SSH注册设备指通过SSH登录HiLens Kit系统,使用Linux命令注册设备。SSH登录设备系统支持操作HiLens Kit的系统文件等配置。 使用SSH注册设备流程如图2所示,详细操作指引请参见表2。 图2 SSH注册设备流程 表2 SSH注册设备流程说明 流程 说明 详细指导 连接PC和HiLens Kit 在注册HiLens Kit至控制台之前,您需要连接PC和HiLens Kit。 连接PC和HiLens Kit SSH登录HiLens Kit 使用SSH连接设备HiLens Kit,用Linux指令进行操作。 SSH登录HiLens Kit设备 组网配置 HiLens Kit有两种组网方式,分为无线和有线两种方式连接路由器,您可以选择其中一种方式进行组网配置。 不能同时使用无线网络和有线网络连接同一个路由器,无线连接会自动删除默认网关,再次使用有线网络时需要配置默认网关。推荐使用无线连接到路由器,以免更新设备IP后遗忘或丢失IP。 无线网络配置(SSH) 有线网络配置(SSH) 注册HiLens Kit 注册设备至控制台上,并在控制台上查看设备状态。 注册HiLens Kit
  • 解决方案 使用当前账号登录OBS管理控制台,确认当前账号是否能访问OBS。 是,请执行步骤2。 否,请执行步骤3。 如能访问OBS,单击右上方登录的用户,在下拉列表中选择“我的凭证”。请根据访问秘钥操作指导,确认当前AK/SK是否是当前账号创建的AK/SK。 是,请联系提交工单处理。 否,请根据“访问秘钥”操作指导更换为当前账号的AK/SK。 请确认当前账号是否欠费。 是,请给账号充值。操作指导请参见华为云帐户充值。 否,且提示资源已过保留期,需要提工单给OBS开通资源。
  • 安装节点 在安装前请检查机器网络是否正常,是否能够连接到公网。 在安装之前请检查机器时间是否和北京时间一致,如果偏差过大会导致安装失败。 选择支持架构和安装目录之后,按照图中框选地方获取。 图4 获取安装命令 鸿蒙操作系统下默认未安装wget以及openssl,因此需要将安装命令拆解为以下几步执行。如图为安装命令的拆分图解 图5 命令拆解 其中第①步为下载安装包,第②步为安装包完整性校验(可以跳过),第③步为执行安装命令。 根据步骤二的说明获取安装包的下载命令并通过浏览器下载。 安装包下载链接:https://ioe-installer-cn-north-4.obs.cn-north-4.myhuaweicloud.com:443/edgeRuntime-2022.1222.1216.38-openharmony.tar.gz/1671689782293/edgeRuntime-2022.1222.1216.38-openharmony.tar.gz?AccessKeyId=VGC*****CE&Expires=1673949121&Signature=pwx******3D 浏览器下载: 图6 浏览器下载安装包 在windows上通过hdc_std工具,将下载的安装包上传到鸿蒙设备的/data/zh下并查看,上传的目录建议在/data/目录或者子目录下。 图7 上传文件到鸿蒙设备 图8 登录鸿蒙设备控制台 图9 确定文件成功上传 注意执行命令:mount -oremount,rw / , 该命令必须执行,修改鸿蒙文件系统的可读写权限,以防安装失败。 图10 解压安装包 在/data/zh下执行解压命令。至此安装包已经解压在/data/zh。并不一定必须在/data/zh目录下,仅仅因为上传到这个目录下。实际执行时,安装上传的实际目录进行操作。 上述几步执行完成后就可以进行最后的安装操作。 因为前面步骤可能会耗费一些时间,所以此时需要确认安装命令是否过期,避免本次安装以为验证码过期而安装失败,安装命令的有效时间为30min。 如果是公网安装,可以提前测试网络是否正常,ping www.baidu.com. 命令拆分步骤中的第三步标识了安装命令的获取,安装命令示例: INSTALL_IOTEDGE_BIN_DIR=/data/zh/IoTEdge sh edge_install.sh 100.94.60.201 8943 795632095371472896 sys_edge_daemon 02******1a cloud false lite DEFAULT && cd – 执行安装命令: 图11 执行安装命令 安装成功: 图12 安装成功 查看节点状态以及应用状态 图13 节点状态 图14 应用状态 部署$edge_omagent测试功能 $edge_omagent部署时根据架构选择对应的版本,此处部署$edge_omagent的最新的arm64版本。 图15 部署$edge_omagent应用 图16 指标采集
  • 安装专业版节点 在“节点管理”的节点列表选择您需要安装的节点,单击右侧“安装”,获得提示。 图5 安装 选择支持架构和安装目录,然后单击复制安装命令,使用SSH工具以root用户登录边缘节点服务器后台系统,执行安装命令。 图6 提示 安装命令的选择需要与购买的ecs的架构保持一致。 图7 执行安装 图8 安装命令执行成功 单击“我知道了”,等待边缘节点的状态变为“在线”,表示该节点已安装并连接成功。 您可以单击“节点名称”,查看该节点详细信息,关于节点详情描述可参见节点概览。
  • Step5 训练Wav2Lip模型 准备预训练模型。下载需要使用的预训练模型。 人脸检测预训练模型,下载链接。 专家唇形同步鉴别器,下载链接 ,此链接是官方提供的预训练模型。训练Wav2Lip模型时需要使用专家唇形同步鉴别器,用户可以用自己的数据训练,也可以直接使用官方提供的预训练模型。 处理初始视频数据集。 将下载好的人脸检测预训练模型修改名字为s3fd.pth,上传到/home/ma-user/Wav2Lip/face_detection/detection/sfd/s3fd.pth目录。 下载LRS2数据集。数据集文件夹结构如下: ├── LRS2_partly | ├── main | │ ├── five-digit numbered video IDs ending with (.mp4) | │ ├── 00001.mp4 | │ ├── 00002.mp4 对数据集进行预处理。具体命令如下。 python preprocess.py --data_root ./LRS2_partly --preprocessed_root lrs2_preprocessed/ data_root参数为原始视频根目录,preprocessed_root参数为处理后生成的数据集目录。 处理后数据目录如下所示。 preprocessed_root (lrs2_preprocessed) ├── main | ├── Folders with five-digit numbered video IDs(00001) | │ ├── *.jpg | │ ├── audio.wav | ├── 00001 | │ ├── *.jpg | │ ├── audio.wav 将LRS2文件列表中的.txt文件(train、val)放入该filelists文件夹中。 图2 filelists文件夹 train.txt和val.txt内容参考如下,为处理后视频数据的目录名字。 图3 train.txt和val.txt内容 训练专家唇形同步鉴别器。 如果使用LRS2数据集,可选择跳过此步骤。如果使用自己的数据集,训练命令参考如下。 python color_syncnet_train.py --data_root ./lrs2_preprocessed/main/ --checkpoint_dir ./savedmodel/syncnet_model/ --checkpoint_path ./checkpoints/lipsync_expert.pth 参数说明: --data_root :处理后的视频数据目录,与train.txt内容拼接后得到单个数据目录,例如:lrs2_preprocessed/main/00001。 --checkpoint_dir :此目录用于保存模型。 -checkpoint_path :(可选)可基于此目录的lipsync_expert模型继续进行训练,如果重新训练则不需要此参数。 默认每10000 step保存一次模型。 训练Wav2Lip模型。 训练Wav2Lip模型时需要使用专家唇形同步鉴别器。可以使用上一步3中的训练结果,也可以直接下载官方提供的预训练权重来使用。 具体训练命令如下。 python wav2lip_train.py --data_root ./lrs2_preprocessed/main/ --checkpoint_dir ./savedmodel --syncnet_checkpoint_path ./checkpoints/lipsync_expert.pth --checkpoint_path ./checkpoints/wav2lip.pth 首次训练会进行模型评估,默认为700 step,请耐心等待,结束之后会进行正式训练。 参数说明: --data_root :处理后的视频数据目录,与train.txt内容拼接后得到单个数据目录,例如:lrs2_preprocessed/main/00001。 --checkpoint_dir :此目录用于保存模型。 --syncnet_checkpoint_path :专家鉴别器的目录。 --checkpoint_path :(可选)可基于此目录的Wav2Lip模型继续进行训练,如果重新训练则不需要此参数。 默认每3000 step保存一次模型。 注: 专家鉴别器的评估损失应降至约 0.25,Wav2Lip评估同步损失应降至约 0.2,以获得良好的结果。 可以在文件设置其他不太常用的超参数hparams.py,常用超参如下: nepochs 训练总步数 checkpoint_interval Wav2Lip模型保存间隔步数 eval_interval Wav2Lip模型评估间隔步数 syncnet_eval_interval 专家鉴别器模型评估间隔步数 syncnet_checkpoint_interval 专家鉴别器模型保存间隔步数
  • Step1 准备环境 请参考Lite Server资源开通,购买Lite Server资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。 SSH登录机器后,检查NPU设备检查。运行如下命令,返回NPU设备信息。 npu-smi info # 在每个实例节点上运行此命令可以看到NPU卡状态 npu-smi info -l | grep Total # 在每个实例节点上运行此命令可以看到总卡数 如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先正常安装固件和驱动,或释放被挂载的NPU。 检查docker是否安装。 docker -v #检查docker是否安装 如尚未安装,运行以下命令安装docker。 yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64 配置IP转发,用于容器内的网络访问。执行以下命令查看net.ipv4.ip_forward配置项的值,如果为1,可跳过此步骤。 sysctl -p | grep net.ipv4.ip_forward 如果net.ipv4.ip_forward配置项的值不为1,执行以下命令配置IP转发。 sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf sysctl -p | grep net.ipv4.ip_forward
  • Step3 启动容器镜像 启动容器镜像。启动前请先按照参数说明修改${}中的参数。 export work_dir="自定义挂载的工作目录" export container_work_dir="自定义挂载到容器内的工作目录" export container_name="自定义容器名称" export image_name="镜像名称或ID" // 启动一个容器去运行镜像 docker run -itd --net=bridge \ -p 8080:8080 \ --device=/dev/davinci0 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ --shm-size=32g \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /var/log/npu/:/usr/slog \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v ${work_dir}:${container_work_dir} \ --name ${container_name} \ ${image_name} \ /bin/bash 参数说明: -v ${work_dir}:${container_work_dir}:代表需要在容器中挂载宿主机的目录。宿主机和容器使用不同的文件系统。work_dir为宿主机中工作目录,目录下存放着训练所需代码、数据等文件。container_work_dir为要挂载到的容器中的目录。为方便两个地址可以相同。 容器不能挂载到/home/ma-user目录,此目录为ma-user用户家目录。如果容器挂载到/home/ma-user下,拉起容器时会与基础镜像冲突,导致基础镜像不可用。 driver及npu-smi需同时挂载至容器。 --name ${container_name}:容器名称,进入容器时会用到,此处可以自己定义一个容器名称。 -p 8080:8080:开启一个端口,可以web访问(如冲突,可自行更换其他端口)。 ${image_name}:容器镜像的名称。 通过容器名称进入容器中。默认使用ma-user用户,后续所有操作步骤都在ma-user用户下执行。 docker exec -it ${container_name} bash
  • 获取软件和镜像 表2 获取软件和镜像 分类 名称 获取路径 插件代码包 AscendCloud-6.3.907-xxx.zip软件包中的AscendCloud-AIGC-6.3.907-xxx.zip 说明: 包名中的xxx表示具体的时间戳,以包名的实际时间为准。 获取路径:Support-E 说明: 如果上述软件获取路径打开后未显示相应的软件信息,说明您没有下载权限,请联系您所在企业的华为方技术支持下载获取。 基础镜像 西南-贵阳一: swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc2-py_3.9-hce_2.0.2312-aarch64-snt9b-20240727152329-0f2c29a 从SWR拉取。
共99549条