云服务器内容精选

  • 录入EPS配置 进入运维中心工作台。 将鼠标悬停在右上角的账号,选择下拉列表中的“服务环境配置”,选择左侧导航栏的“服务关联”。 在项目配置区域,单击“新增”。 新增项目配置,具体参数如表1所示。 表1 项目配置参数 名称 说明 部门 选择已录入的部门。 产品 选择已录入的产品。 服务 选择已录入的服务。 华为公有云账号名 选择用户的华为云账号名。 类型 关联项目:关联已有的公有云EPS。 关联且新增项目:在公有云EPS创建一个新项目,同时进行关联。 企业项目名称 关联项目时,选择已有的公有云EPS。 关联且新增时,填写创建的企业项目名称。 单击“确定”。
  • 更多操作 表2 相关操作 操作 说明 修改环境信息 单击环境信息管理3.0列表操作列的“修改”,在弹出的窗口中重新选择环境,单击“确定”,修改环境信息。 删除环境信息 单击环境信息管理3.0列表操作列的“删除”,在弹出的提示框中单击“确定”,删除环境信息。 同步 单击环境信息管理3.0列表操作列的“同步”,在弹出的提示框中单击“确定”,将部署服务下服务环境管理中的环境信息同步至微服务平台。 撤销同步 单击环境信息管理3.0列表操作列的“撤销同步”,在弹出的提示框中单击“确定”,撤销同步的环境信息。
  • 录入EPS配置 进入运维中心工作台。 将鼠标悬停在右上角的账号,选择下拉列表中的“服务环境配置”,选择左侧导航栏的“服务关联”。 在项目配置区域,单击“新增”。 新增项目配置,具体参数如表1所示。 表1 项目配置参数 名称 说明 部门 选择已录入的部门。 产品 选择已录入的产品。 服务 选择已录入的服务。 华为公有云账号名 选择用户的华为云账号名。 类型 关联项目:关联已有的公有云EPS。 关联且新增项目:在公有云EPS创建一个新项目,同时进行关联。 企业项目名称 关联项目时,选择已有的公有云EPS。 关联且新增时,填写创建的企业项目名称。 单击“确定”。
  • Step3 水表读数识别 执行如下命令安装mmocr套件。 python manage.py install algorithm mmocr==0.2.1 安装mmocr套件后,“./algorithms/mmocr/config/textrecog”文件夹中包括config.py(算法外壳配置)和robustscanner_r31_academic.py(模型结构),需要根据所需算法和数据集路径修改配置文件。以下以robust_scanner算法为例。 图15 进入textrecog文件夹 修改“robustscanner_r31_academic.py”,如下所示: ... train_prefix = 'data/raw/water_meter_crop/' # 修改数据集路径改为水表ocr识别数据集路径 train_img_prefix1 = train_prefix + 'train' train_ann_file1 = train_prefix + 'train.txt' ... test_prefix = 'data/raw/water_meter_crop/' test_img_prefix1 = test_prefix + 'val/' test_ann_file1 = test_prefix + 'val.txt' 执行如下命令安装robust_scanner预训练模型。 python manage.py install model mmocr:textrecog/robust_scanner/robustscanner_r31_academic 图16 安装robust_scanner模型 训练OCR模型。 初次使用mmcv时需要编译mmcv-full,该过程较慢,可以直接使用官方预编译的依赖包。 预编译包URL: https://download.openmmlab.com/mmcv/dist/cu102/torch1.6.0/index.html pip uninstall mmcv -y pip install https://download.openmmlab.com/mmcv/dist/cu102/torch1.6.0/mmcv_full-1.3.9-cp37-cp37m-manylinux1_x86_64.whl pip install rapidfuzz==2.15.1 pip install numpy -U 修改“./algorithms/mmocr/config/textrecog/config.py”,将EPOCHS(迭代数量)改为2。 图17 修改textrecog文件夹下的config.py文件 图18 迭代数量修改为2 执行如下命令训练OCR模型。(仅使用GPU进行训练,大概需要几分钟) python manage.py run --cfg algorithms/mmocr/config/textrecog/config.py 图19 OCR模型训练结果 训练好的模型会保存在指定位置中,默认为output/robustscanner_r31_academic/文件夹中。 验证模型效果。 模型训练完成后,可以在验证集上计算模型的指标,首先修改配置文件的模型位置。 修改“./algorithms/mmocr/config/textrecog/config.py” #config.py ... model_path = './output/robustscanner_r31_academic/latest.pth' ... 执行如下命令验证模型。 python manage.py run --cfg algorithms/mmocr/config/textrecog/config.py --pipeline evaluate 图20 计算模型的指标 可选:模型推理。 模型推理能够指定某一张图片,并且推理出图片的分割区域,并进行可视化。首先需要指定待推理的图片路径,修改“./algorithms/mmocr/config/textrecog/config.py”,具体如下。 ... infer_img_file='./data/raw/water_meter_crop/val/train_10.jpg' # 指定需要推理的图片路径 ... 执行如下命令推理。 python manage.py run --cfg algorithms/mmocr/config/textrecog/config.py --pipeline infer 图21 模型推理结果 推理输出的图片路径在“output/robustscanner_r31_academic/vis”文件夹下。 图22 表盘读数识别结果图 执行如下命令导出算法SDK。 python manage.py export --cfg algorithms/mmocr/config/textrecog/config.py
  • Step1 创建算法工程 在JupyterLab的Terminal中,在work目录下执行ma-cli createproject命令创建工程,根据提示输入工程名称,例如:water_meter。然后按回车键选择默认参数(连续按五次回车),并选择跳过资产安装步骤(选择6)。 图2 创建工程 执行以下命令进入工程目录。 cd water_meter 执行以下命令复制项目数据到Notebook中。 python manage.py copy --source {obs_dataset_path} --dest ./data/raw/water_meter_crop python manage.py copy --source {obs_dataset_path} --dest ./data/raw/water_meter_segmentation {obs_dataset_path}路径为Step1 准备数据中下载到OBS中的数据集路径,比如“obs://{OBS桶名称}/water_meter_segmentation”和“obs://{OBS桶名称}/water_meter_crop” 图3 复制数据集到Notebook中
  • 准备数据 登录OBS控制台,创建OBS对象桶,区域选择“华北-北京四”。 登录ModelArts控制台,选择控制台区域为“华北-北京四”。 在“全局配置”页面查看是否已经配置授权,允许ModelArts访问OBS。如果没有配置授权,请参考配置访问授权(全局配置)添加授权。 分别下载本案例的数据集,水表表盘分割数据集和水表表盘读数OCR识别数据集到OBS桶中,单击数据集右侧的“下载”,弹出“选择云服务区域”,选择区域后单击“确定”进入下载详情页面。下载方式选择“对象存储服务(OBS)”,填写OBS路径信息等,详细步骤请参考下载数据集。 OBS路径示例如下: obs://{OBS桶名称}/water_meter_segmentation 水表表盘分割数据集 obs://{OBS桶名称}/water_meter_crop 水表表盘读数OCR识别数据集 从AI Gallery下载数据集免费,但是数据集存储在OBS桶中会收取少量费用,具体计费请参见OBS价格详情页,案例使用完成后请及时清除资源和数据。
  • Step2 使用deeplabv3完成水表区域分割任务 执行如下命令安装ivgSegmentation套件。 python manage.py install algorithm ivgSegmentation==1.0.2 图4 ivgSegmentation套件安装成功 如果提示ivgSegmentation版本不正确,可以通过命令python manage.py list algorithm查询版本。 安装ivgSegmentation套件后,在JupyterLab界面左侧的工程目录中进入“./algorithms/ivgSegmentation/config/sample”文件夹中查看目前支持的分割模型,以sample为例(sample默认的算法就是deeplabv3),文件夹中包括config.py(算法外壳配置)和deeplabv3_resnet50_standard-sample_512x1024.py(模型结构)。 图5 进入sample文件夹 表盘分割只需要区分背景和读数区域,因此属于二分类,需要根据项目所需数据集对配置文件进行修改,如下所示: 修改“config.py”文件。 图6 修改sample文件夹下的config.py文件 # config.py ... alg_cfg = dict( ... data_root='data/raw/water_meter_segmentation', # 修改为真实路径本地分割数据集路径 ... ) 修改完后按Ctrl+S保存。 修改“deeplabv3_resnet50_standard-sample_512x1024.py”文件。 图7 修改deeplabv3_resnet50_standard-sample_512x1024.py文件 # deeplabv3_resnet50_standard-sample_512x1024.py gpus=[0] ... data_cfg = dict( ... num_classes=2, # 修改为2类 ... ... train_scale=(512, 512), # (h, w)#size全部修改为(512, 512) ... train_crop_size=(512, 512), # (h, w) ... test_scale=(512, 512), # (h, w) ... infer_scale=(512, 512), # (h, w) ) 修改完按Ctrl+S保存。 在water_meter工程目录下,执行如下命令安装deeplabv3预训练模型。 python manage.py install model ivgSegmentation:deeplab/deeplabv3_resnet50_cityscapes_512x1024 图8 安装deeplabv3预训练模型 执行如下命令训练分割模型。(推荐使用GPU进行训练) python manage.py run --cfg algorithms/ivgSegmentation/config/sample/config.py --gpus 0 图9 分割模型训练结果 训练好的模型会保存在指定位置中,默认为“./output/deeplabv3_resnet50_standard-sample_512x1024/checkpoints/”中。 验证模型效果。 模型训练完成后,可以在验证集上计算模型的指标,首先修改配置文件的模型位置。 修改“config.py”文件,修改完按Ctrl+S保存。 # config.py ... alg_cfg = dict( ... load_from='./output/deeplabv3_resnet50_standard-sample_512x1024/checkpoints/checkpoint_best.pth.tar', # 修改训练模型的路径 ... ) 执行如下命令计算模型指标。 python manage.py run --cfg algorithms/ivgSegmentation/config/sample/config.py --pipeline evaluate 图10 模型指标计算结果 模型推理。 模型推理能够指定某一张图片,并且推理出图片的分割区域,并进行可视化,首先需要指定需要推理的图片路径。 修改“config.py”文件,修改完按Ctrl+S保存。 alg_cfg = dict( ... img_file='./data/raw/water_meter_segmentation/image/train_10.jpg' # 指定需要推理的图片路径 ... ) 执行如下命令推理模型。 python manage.py run --cfg algorithms/ivgSegmentation/config/sample/config.py --pipeline infer 图11 表盘分割模型推理结果 推理输出的图片路径在“./output/deeplabv3_resnet50_standard-sample_512x1024”下。 图12 水表表盘分割结果可视化 执行如下命令导出算法SDK。 python manage.py export --cfg algorithms/ivgSegmentation/config/sample/config.py --is_deploy 算法开发套件支持将模型导出成一个模型SDK,方便进行模型部署等下游任务。SDK导出的路径为“./export/deeplabv3_resnet50_standard-sample_512x1024/Linux_x86_64_GPU_PyTorch_Common_py” 图13 SDK导出路径 图14 SDK导出示意图
  • 操作步骤 NVIDIA驱动安装。 wget https://us.download.nvidia.com/tesla/515.105.01/NVIDIA-Linux-x86_64-515.105.01.run chmod +x NVIDIA-Linux-x86_64-515.105.01.run ./NVIDIA-Linux-x86_64-515.105.01.run CUDA安装(可选,若在宿主机上不开发,可以忽略此步骤)。 wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda_11.7.1_515.65.01_linux.run chmod +x cuda_11.7.1_515.65.01_linux.run ./cuda_11.7.1_515.65.01_linux.run --toolkit --samples –silent 安装Docker。 curl https://get.docker.com | sh && sudo systemctl --now enable docker 安装NIVDIA容器插件。 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list apt-get update apt-get install -y nvidia-container-toolkit nvidia-ctk runtime configure --runtime=docker systemctl restart docker 验证Docker模式环境是否安装成功。 基于PyTorch2.0镜像验证(本案例中镜像较大,拉取时间可能较长)。 docker run -ti --runtime=nvidia --gpus all pytorch/pytorch:2.0.0-cuda11.7-cudnn8-devel bash 图1 成功拉取镜像
  • 注册华为账号并开通华为云 在使用obsfs之前,您需要拥有一个华为账号并且成功开通OBS。OBS提供按需和资源包两种计费方式,充值或购买资源包即开通OBS服务。成功开通OBS后即可进行访问和使用。如果您已有账号且账号已开通OBS服务,可以略过此部分内容。 打开华为云网站www.huaweicloud.com。 注册账号。 使用OBS前需注册一个华为账号。如果您已有账号,请从3开始。 在顶部导航栏右侧,单击“注册”。 在注册页面,根据提示信息完成注册。 注册成功后,系统会自动跳转至您的个人信息界面。 在顶部导航栏右侧,单击“登录”,输账号名和密码。 在顶部导航栏右侧,单击“控制台”,进入华为云控制台。
  • 验证obsutil上传文件到OBS是否正常 创建测试文件。例如:test.txt。 touch test.txt 使用obsutil上传创建的文件到obs。 ~/tools/obsutil/obsutil_linux_amd64_5.4.6/obsutil cp test.txt obs://{OBS桶名称} 请将{OBS桶名称}替换为已创建的待使用的OBS桶名称,本示例选择的桶名为cae-obs,将在当前目录新建的test.txt文件上传到cae-obs桶中。提示“Upload successfully”表示上传成功。 图1 上传文件到obs 登录OBS控制台,选择“桶列表”。 单击本示例桶名名称cae-obs,进入“概览”页面。 选择“对象”,可查看已经上传的文件test.txt。 图2 查看已上传文件
  • 安全认证代码(Scala版) 目前样例代码统一调用LoginUtil类进行安全认证。 在Spark样例工程代码中,不同的样例工程,使用的认证代码不同,基本安全认证或带ZooKeeper认证。样例工程中使用的示例认证参数如表3所示,请根据实际情况修改对应参数值。 表3 参数描述 参数 示例参数值 描述 userPrincipal sparkuser 用户用于认证的账号Principal,您可以联系管理员获取此账号。 userKeytabPath /opt/FIclient/user.keytab 用户用于认证的Keytab文件,您可以联系管理员获取文件。 krb5ConfPath /opt/FIclient/KrbClient/kerberos/var/krb5kdc/krb5.conf krb5.conf文件路径和文件名称。 ZKServerPrincipal zookeeper/hadoop.hadoop.com ZooKeeper服务端principal。请联系管理员获取对应账号。 基本安全认证: Spark Core和Spark SQL程序不需要访问HBase或ZooKeeper,所以使用基本的安全认证代码即可。请在程序中添加如下代码,并根据实际情况设置安全认证相关参数: val userPrincipal = "sparkuser" val userKeytabPath = "/opt/FIclient/user.keytab" val krb5ConfPath = "/opt/FIclient/KrbClient/kerberos/var/krb5kdc/krb5.conf" val hadoopConf: Configuration = new Configuration() LoginUtil.login(userPrincipal, userKeytabPath, krb5ConfPath, hadoopConf); 带ZooKeeper认证: 由于“Spark Streaming”、“通过JDBC访问Spark SQL”和“Spark on HBase”样例程序,不仅需要基础安全认证,还需要添加ZooKeeper服务端Principal才能完成安全认证。请在程序中添加如下代码,并根据实际情况设置安全认证相关参数: val userPrincipal = "sparkuser" val userKeytabPath = "/opt/FIclient/user.keytab" val krb5ConfPath = "/opt/FIclient/KrbClient/kerberos/var/krb5kdc/krb5.conf" val ZKServerPrincipal = "zookeeper/hadoop.hadoop.com" val ZOOKEEPER_DEFAULT_LOGIN_CONTEXT_NAME: String = "Client" val ZOOKEEPER_SERVER_PRINCIPAL_KEY: String = "zookeeper.server.principal" val hadoopConf: Configuration = new Configuration(); LoginUtil.setJaasConf(ZOOKEEPER_DEFAULT_LOGIN_CONTEXT_NAME, userPrincipal, userKeytabPath) LoginUtil.setZookeeperServerPrincipal(ZOOKEEPER_SERVER_PRINCIPAL_KEY, ZKServerPrincipal) LoginUtil.login(userPrincipal, userKeytabPath, krb5ConfPath, hadoopConf);
  • 安全认证代码(Java版) 目前样例代码统一调用LoginUtil类进行安全认证。 在Spark样例工程代码中,不同的样例工程,使用的认证代码不同,基本安全认证或带ZooKeeper认证。样例工程中使用的示例认证参数如表2所示,请根据实际情况修改对应参数值。 表2 参数描述 参数 示例参数值 描述 userPrincipal sparkuser 用户用于认证的账号Principal,您可以联系管理员获取此账号。 userKeytabPath /opt/FIclient/user.keytab 用户用于认证的Keytab文件,您可以联系管理员获取文件。 krb5ConfPath /opt/FIclient/KrbClient/kerberos/var/krb5kdc/krb5.conf krb5.conf文件路径和文件名称。 ZKServerPrincipal zookeeper/hadoop.hadoop.com ZooKeeper服务端principal。请联系管理员获取对应账号。 基本安全认证: Spark Core和Spark SQL程序不需要访问HBase或ZooKeeper,所以使用基本的安全认证代码即可。请在程序中添加如下代码,并根据实际情况设置安全认证相关参数: String userPrincipal = "sparkuser"; String userKeytabPath = "/opt/FIclient/user.keytab"; String krb5ConfPath = "/opt/FIclient/KrbClient/kerberos/var/krb5kdc/krb5.conf"; Configuration hadoopConf = new Configuration(); LoginUtil.login(userPrincipal, userKeytabPath, krb5ConfPath, hadoopConf); 带ZooKeeper认证: 由于“Spark Streaming”、“通过JDBC访问Spark SQL”和“Spark on HBase”样例程序,不仅需要基础安全认证,还需要添加ZooKeeper服务端Principal才能完成安全认证。请在程序中添加如下代码,并根据实际情况设置安全认证相关参数: String userPrincipal = "sparkuser"; String userKeytabPath = "/opt/FIclient/user.keytab"; String krb5ConfPath = "/opt/FIclient/KrbClient/kerberos/var/krb5kdc/krb5.conf"; String ZKServerPrincipal = "zookeeper/hadoop.hadoop.com"; String ZOOKEEPER_DEFAULT_LOGIN_CONTEXT_NAME = "Client"; String ZOOKEEPER_SERVER_PRINCIPAL_KEY = "zookeeper.server.principal"; Configuration hadoopConf = new Configuration(); LoginUtil.setJaasConf(ZOOKEEPER_DEFAULT_LOGIN_CONTEXT_NAME, userPrincipal, userKeytabPath); LoginUtil.setZookeeperServerPrincipal(ZOOKEEPER_SERVER_PRINCIPAL_KEY, ZKServerPrincipal); LoginUtil.login(userPrincipal, userKeytabPath, krb5ConfPath, hadoopConf);
  • 前提条件 已按照准备开发和运行环境章节准备好开发用户,例如developuser,并下载用户的认证凭据文件到本地。 用户需要具备Oozie的普通用户权限,HDFS访问权限,Hive表读写权限,HBase读写权限以及Yarn的队列提交权限。 已在Linux环境中安装了完整的集群客户端。 获取Oozie服务器URL(任意节点),这个URL将是客户端提交流程任务的目标地址。 URL格式为:https://Oozie节点业务IP:21003/oozie。端口为“OOZIE_HTTPS_PORT”参数对应值,默认为21003。 例如,“https://10.10.10.176:21003/oozie”。
  • 前提条件 已按照准备开发和运行环境章节准备好开发用户,例如developuser,并下载用户的认证凭据文件到本地。 用户需要具备Oozie的普通用户权限,HDFS访问权限,Hive表读写权限,HBase读写权限以及Yarn的队列提交权限。 已在Linux环境中安装了完整的集群客户端。 获取Oozie服务器URL(任意节点),这个URL将是客户端提交流程任务的目标地址。 URL格式为:https://Oozie节点业务IP:21003/oozie。端口为“OOZIE_HTTPS_PORT”参数对应值,默认为21003。 例如,“https://10.10.10.176:21003/oozie”。
  • URI GET /v1/{project_id}/eihealth-projects/{eihealth_project_id}/notebooks/tools 表1 路径参数 参数 是否必选 参数类型 描述 eihealth_project_id 是 String 平台项目ID,您可以在平台单击所需的项目名称,进入项目设置页面查看。 最小长度:1 最大长度:128 project_id 是 String 华为云项目ID,您可以从获取项目ID中获取。 最小长度:1 最大长度:128