华为云用户手册

  • 操作场景 ELB可以针对客户访问的业务为访问者提供个性化的管理策略,制定策略之前需要获取来访者的真实IP。TOA内核模块主要用来获取ELB转化过的访问者真实IP地址(仅支持IPv4),该插件安装在ELB后端服务器。 本文档仅适用于四层(TCP协议)服务,当客户需要在操作系统中编译TOA内核模块时,可参考本文档进行配置。 Linux内核版本为2.6.32和Linux内核版本为3.0以上的操作系统,在配置TOA内核模块的操作步骤上有所区别,具体操作请参照相应的操作步骤进行配置。
  • 在标签管理页面单个删除 登录管理控制台。 在右上角的用户名下选择“标签管理”,进入标签管理服务页面。 图1 标签管理 在“资源标签”页面,设置弹性云服务器资源搜索条件,单击“搜索”。 页面下方展示的搜索结果包含“编辑”与“只读”两种状态,单击“编辑”,切换资源标签列表为可编辑状态。 若需要删除的标签的“键”没有展示在列表中,单击,在下拉列表中勾选需要删除的标签的“键”。勾选需要展示的标签键建议不超过10个。 单击待删除标签的弹性云服务器资源所在行的,资源标签删除完成。 (可选)单击搜索结果区域右侧的按钮。 资源标签列表刷新为最新状态,并更新列表刷新时间。
  • 在标签管理页面批量删除 在批量删除标签时,请谨慎操作。执行删除操作后,其所标识的所有弹性云服务器资源对应的该标签均会被删除,且不可恢复。 登录管理控制台。 在右上角的用户名下选择“标签管理”,进入标签管理服务页面。 在“资源标签”页面,设置弹性云服务器资源搜索条件,单击“搜索”。 勾选待删除标签的弹性云服务器资源。 单击列表上方的“管理标签”,进入管理标签页面。 单击待删除标签所在行的“删除”。单击“确认”,资源标签删除完成。 (可选)单击搜索结果区域右侧的按钮。 资源标签列表刷新为最新状态,并更新列表刷新时间。
  • 安全组 安全组是一个逻辑上的分组,为具有相同安全保护需求并相互信任的云服务器提供访问策略。安全组创建后,用户可以在安全组中定义各种访问规则,当云服务器加入该安全组后,即受到这些访问规则的保护。 您也可以根据需要创建自定义的安全组,或使用默认安全组,系统会为每个用户默认创建一个默认安全组,默认安全组的规则是在出方向上的数据报文全部放行,入方向访问受限,安全组内的云服务器无需添加规则即可互相访问。默认安全组您可以直接使用,详情请参见默认安全组和规则。 云上一分钟,了解什么是安全组。 安全组需在网络互通的情况下生效。若实例属于不同VPC,但同属于一个安全组,则此安全组不生效,您可以使用对等连接等产品建立VPC连接互通。VPC连接请参见VPC连接。
  • 安全组的使用限制 为了确保良好的网络性能体验,建议一个实例最多关联5个安全组。 建议一个安全组关联的实例数量不应超过6000个,否则会引起安全组性能下降。 在一个安全组中,对于入方向规则来说,源地址是安全组的规则数量+源地址是IP地址组的规则数量+端口是不连续端口号的规则数量 ≤ 128条,否则超过数量的安全组规则将不生效。出方向的限制和入方向一致。 源地址是安全组时,包括本安全组和其他安全组。 不连续端口号取值示例为22,25,27。 如果您添加安全组规则时,使用IP地址组或者不连续端口,那么该安全组规则对不同规格云服务器的生效情况存在差异,为了避免您的安全组规则不生效,请您查看表1了解详情。 表1 安全组规则限制 安全组规则 云服务器类型 添加安全组规则时,“源地址”和“目的地址”可选择“IP地址组” 不支持的X86云服务器规格如下: 通用计算型(S1型、C1型、C2型 ) 内存优化型(M1型) 高性能计算型(H1型) 磁盘增强型( D1型) GPU加速型(G1型、G2型) 超大内存型(E1型、E2型、ET2型) 添加安全组规则时,“协议端口”可配置为不连续端口号 不支持的X86云服务器规格如下: 通用计算型(S1型、C1型、C2型 ) 内存优化型(M1型) 高性能计算型(H1型) 磁盘增强型( D1型) GPU加速型(G1型、G2型) 超大内存型(E1型、E2型、ET2型) 所有鲲鹏云服务器规格不支持配置不连续端口。 如果您在鲲鹏云服务器中添加安全组规则时,使用了不连续端口号,那么除了该条规则不会生效,该规则后的其他规则也不会生效。比如: 您先配置了安全组规则A(不连续端口号22,24),再配置了下一条安全组规则B(独立端口号9096),则安全组规则A和B均不会生效。 X86云服务器规格详情,请参见规格清单(X86)。 鲲鹏云服务器规格详情,请参见规格清单(鲲鹏)。 当您的组网中存在以下情况时,来自ELB和VPCEP的流量不受网络ACL和安全组规则的限制。 ELB实例的监听器开启“获取客户端IP”功能时,不受限制。 比如规则已明确拒绝来自ELB实例的流量进入后端云服务器,此时该规则无法拦截来自ELB的流量,流量依然会抵达后端云服务器。 VPCEP实例类型为“专业型”时,不受限制。
  • 在标签管理页面添加标签 此方法适用于为多个资源统一添加拥有同样标签键的标签。 登录管理控制台。 在右上角的用户名下选择“标签管理”,进入标签管理服务页面。 图3 标签管理 在“资源标签”页面,勾选资源所在的区域,“资源类型”请选择“E CS -ECS”,单击“搜索”。 系统列出所选区域下的所有云服务器资源。 在“搜索结果”区域,单击“创建标签键”,输入键(例如:项目),单击“确定”。 创建完成后,该标签键会添加至资源标签列表。如果列表中没有显示该标签,单击,在下拉列表中勾选创建的标签键。 默认该标签键的值为“无标签”,您还需要为每一个资源对应的标签值赋值,完成标签与资源的关联,继续下一步。 图4 资源列表 单击“编辑”,切换资源标签列表为可编辑状态。 在云服务器资源所在行,单击,输入标签“值”(例如:A)。 为标签键赋值后,“标签数量”将加1。按照同样方法依次为其他云服务器添加标签值。 图5 输入标签值
  • 编辑资产详情 数据集发布成功后,发布者可以进入数据集的详情查看资产信息。 基本设置 单击数据集名称,在数据集详情页,单击“设置”页签。在右侧单击“编辑”,在编辑框中输入资产的描述内容,“数据集名称”与“数据集描述”。 编辑完成之后单击“确定”。 关联资产 数据集可以关联Notebook和算法。当数据集关联了Notebook或算法时,Notebook或算法页面也显示关联了数据集。 在关联资产搜索框中输入待关联资产的ID,单击“关联”。 在弹出的“资产信息”页面,单击“确认”即可关联资产。 对已经关联的资产,单击“取消关联”即可取消资产的关联。 权限设置 在“可见范围”处可以更改您发布的数据集资产的可见性,可更改为“公开”或“私密”。 “公开”:资产设置为“公开”后,该资产所有用户均可查看使用。 “私密”: “仅自己可见”:设置为“仅自己可见”后,该资产只可自己使用。 “指定成员可见”:在搜索框中,输入成员的账号名/账号ID/用户昵称后,单击“搜索”。在用户列表中选择对应的用户信息后,单击“确认”。完成后,单击“保存”即可。 删除数据集 如果您需要删除发布的数据集,则单击“删除数据集”,在弹窗中单击“确认”,即可完成数据集的删除。
  • Step5 转换模型文件 将onnx模型文件转换为mindir格式模型文件。转换过程中涉及到的参数需要查看原始onnx文件,此处提供查看的脚本文件get_onnx.py,具体的脚步文件内容见附录:get_onnx.py脚本内容。 模型转换命令如下。 export model_name="model" export LD_LIBRARY_PATH=/home/ma-user/anaconda3/envs/python-3.9.10/lib/:${LD_LIBRARY_PATH} converter_lite --modelFile=./${model_name}.onnx --outputFile=./${model_name} --fmk=ONNX --saveType=MINDIR --optimize=ascend_oriented --inputShape="input_ids:4,96;attention_mask:4,96;token_type_ids:4,96" --modelFile:模型名称。 --outputFile:输出模型名称。模型名称无需添加.mindir后缀,添加后对后续测试流程存在一定影响。 --inputShape:根据onnx输出的name:shape进行修改,可以通过get_onnx.py脚本查看,如图1所示。 图1 get_onnx.py脚本查看输入参数 如需进行AOE优化,则需配置一个config.ini文件,文件内容如下。 [ascend_context] plugin_custom_ops=FlashAttention,GroupNormSilu,GeGluV2 aoe_mode="subgraph tuning, operator tuning" AOE优化命令如下,只需将以上模型转换命令添加一个--configFile=config.ini即可。 converter_lite --modelFile=./${model_name}.onnx -- outputFile=./${model_name} --fmk=ONNX --saveType=MINDIR --optimize=ascend_oriented --inputShape="input_ids:4,96;attention_mask:4,96;token_type_ids:4,96" --configFile=config.ini benchmark测试命令如下。 benchmark --device=Ascend --modelFile=${model_name}.mindir 图2 benchmark测试
  • Step6 安装插件代码包并编辑 模型推理时需要使用适配过昇腾的模型插件包。将获取到的模型插件代码包ascendcloud-aigc-6.3.904-*.tar.gz文件上传到容器的/home/ma-user/目录下并解压。获取路径参见获取软件和镜像。 cd /home/ma-user/ tar -zxvf ascendcloud-aigc-6.3.904-*.tar.gz #解压,包名中的*表示时间戳,请按照实际替换。 cp ascendcloud-aigc-poc-redbook.tar.gz ${model_path} #${model_path}为mindir文件所在路径 cd ${model_path} tar -zxvf ascendcloud-aigc-poc-redbook.tar.gz 解压后所得文件如图3所示。 图3 ascendcloud-aigc-poc-redbook解压后文件 编辑gunicorn.conf文件。 vim gunicorn.conf 图4 编辑gunicorn.conf文件 5556与创建容器映射端口号保持一致。 workers为服务数,测试多服务时可以根据需要修改此参数的值。 编辑infer_server.py文件。 vim infer_server.py 图5 BERT编辑infer_server.py文件 DEVICE_ID:设备ID,与挂载卡保持一致。 model_path:为mindir名称。 port:与创建容器时端口保持一致。 input_data:三个为onnx模型转mindir模型时的输入,此次三个输入全部为4,96,将图上32,256全部换为4,96即可。如果该模型只有一个输入,需将input_data2与input_data3添加注释,并将res = model[(input_data1,input_data2,input_data3])]中的input_data2与input_data3删除,在input_data1中填入相应输入即可。 此次三个BERT全部为三个输入,CV模型全部为单个输入,如下图为CV模型的输入信息查看示例。 图6 get_onnx.py查看CV模型的onnx信息 对于CV模型,需将input_data2与input_data3注释,此onnx模型为固定shape,其转为onnx模型时不能修改其输入,故Inptu_data1中需修改为1,3,640,640,后面np.int32也需修改为np.float32。 编辑jmeter.jmx文件 vim jmeter.jmx 图7 编辑jmeter.jmx文件(1) ThreadGroup.num_threads:为jemter压测的线程数。 ThreadGroup.scheduler:将false修改为true,表示限制压测时间。 ThreadGroup.duration:设置压测时间,默认时间单位为s,例如需要压测10min,则添加600即可,无需带单位。 图8 编辑jmeter.jmx文件(2) port:与创建容器时端口保持一致
  • Step8 Jmeter压测 获取开源的Jmeter压测工具。安装包地址:jmeter安装包地址。 安装Java。 下载jdk包到宿主机上,拷贝到容器/opt/jdk目录下,使用tar -zxvf 解压,例如: #容器内执行: mkdir /opt/jdk #宿主机上执行: docker cp jdk-8u352-linux-aarch64.tar.gz bert-mindspore:/opt/jdk #容器内执行: cd /opt/jdk tar -zxvf jdk-8u352-linux-aarch64.tar.gz 然后设置环境变量(JAVA_HOME 路径名称以实际为准): export JAVA_HOME=/opt/jdk/jdk1.8.0_352 export PATH=${JAVA_HOME}/bin:${PATH} 安装Jmeter。 下载jmeter包到宿主机上,拷贝到容器/opt/jmeter,使用unzip 解压,例如: #容器内执行: mkdir /opt/jmeter #宿主机上执行: docker cp apache-jmeter-5.4.1.zip bert-mindspore:/opt/jmeter #容器内执行: cd /opt/jmeter unzip apache-jmeter-5.4.1.zip 然后设置环境变量 export PATH=/opt/jmeter/apache-jmeter-5.4.1/bin:${PATH} 启动Jmeter压测。 修改jmeter启动脚本 vim run_jmeter.sh 将其内容修改如下,${model}.jtl 为jtl文件名 jmeter -n -t jmeter.jmx -l ${model}.jtl 启动jmeter脚本 sh run_jmeter.sh 查看信息。将jtl文件保存在本地,创建一个线程组,在该线程组下面创建一个监听器的聚合报告。在聚合报告中打开相应的jtl文件查看信息。 查看的信息包括: 平均值:平均时延 99%百分位:p99时延 异常:失败率 吞吐量:qps 每打开一个jtl文件需要重新创建一个聚合报告,不能用同一个聚合报告打开多个jtl文件,会使数据杂糅,使聚合报告信息不准。 记录最终吞吐量时需将该信息中的吞吐量 x batchsize。
  • 附录:get_onnx.py脚本内容 get_onnx.py脚本用于查看onnx模型文件信息,脚步具体内容如下: from pprint import pprint import onnxruntime onnx_path = "./model.onnx" # 此处的onnx_path值需替换成实际的模型存放路径和模型文件名称 provider = "CPUExecutionProvider" onnx_session = onnxruntime.InferenceSession(onnx_path, providers=[provider]) print("----------------- 输入部分 -----------------") input_tensors = onnx_session.get_inputs() # 该 API 会返回列表 for input_tensor in input_tensors: # 因为可能有多个输入,所以为列表 input_info = { "name" : input_tensor.name, "type" : input_tensor.type, "shape": input_tensor.shape, } pprint(input_info) print("----------------- 输出部分 -----------------") output_tensors = onnx_session.get_outputs() # 该 API 会返回列表 for output_tensor in output_tensors: # 因为可能有多个输出,所以为列表 output_info = { "name" : output_tensor.name, "type" : output_tensor.type, "shape": output_tensor.shape, } pprint(output_info)
  • 获取软件和镜像 表2 获取软件和镜像 分类 名称 获取路径 插件代码包 ascendcloud-aigc-6.3.904-*.tar.gz 说明: 包名中的*表示具体的时间戳,以包名的实际时间为准。 获取路径:Support-E网站。 说明: 如果没有下载权限,请联系您所在企业的华为方技术支持下载获取。 基础镜像 西南-贵阳一:swr.cn-southwest-2.myhuaweicloud.com/atelier/mindspore_2_3_ascend:mindspore_2.3.0-cann_8.0.rc1-py_3.9-hce_2.0.2312-aarch64-snt9b-20240516142953-ca51f42 从SWR拉取。
  • Step3 启动容器镜像 启动容器镜像。启动前请先按照参数说明修改${}中的参数。 export work_dir="自定义挂载的工作目录" export container_work_dir="自定义挂载到容器内的工作目录" export container_name="自定义容器名称" export image_name="镜像名称" // 启动一个容器去运行镜像 docker run -itd \ --device=/dev/davinci0 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /etc/ascend_install.info:/etc/ascend_install.info \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ --shm-size 32g \ --net=bridge \ -p 5556:5556 \ -v ${work_dir}:${container_work_dir} \ --name ${container_name} \ ${image_name} 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}:容器名称,进入容器时会用到,此处可以自己定义一个容器名称。 ${image_name}:容器镜像的名称。 通过容器名称进入容器中。 docker exec -it ${container_name} bash
  • Step1 准备环境 请参考DevServer资源开通,购买DevServer资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。 检查环境。 SSH登录机器后,检查NPU设备检查。运行如下命令,返回NPU设备信息。 npu-smi info # 在每个实例节点上运行此命令可以看到NPU卡状态 npu-smi info -l | grep Total # 在每个实例节点上运行此命令可以看到总卡数 如出现错误,可能是机器上的NPU设备没有正常安装,或者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
  • 获取代码和权重文件 表1 准备代码 代码包名称 代码说明 下载地址 AscendCloud-3rdLLM-6.3.904-xxx.zip 说明: 软件包名称中的xxx表示时间戳。 包含了本教程中使用到的模型训练代码、推理部署代码和推理评测代码。代码包具体说明请参见代码目录介绍。 AscendSpeed是用于模型并行计算的框架,其中包含了许多模型的输入处理方法。 获取路径:Support-E网站。 说明: 如果没有下载权限,请联系您所在企业的华为方技术支持下载获取。 权重和词表文件 包含了本教程使用到的HuggingFace原始权重文件和Tokenizer。 标记器(Tokenizer)是NLP管道的核心组件之一。它们有一个目的:将文本转换为模型可以处理的数据。模型只能处理数字,因此标记器(Tokenizer)需要将文本输入转换为数字数据。 Qwen-14B-Chat Qwen-7B-Chat Qwen-72B-Chat 这个路径下既有权重,也有Tokenizer,全部下载。具体内容参见权重和词表文件介绍。 本文档前向兼容AscendCloud-3rdLLM-6.3.T041版本,获取路径:Support网站。
  • 权重和词表文件介绍 下载完毕后的HuggingFace原始权重文件包含以下内容,此处以Qwen-14B为例,仅供参考,以实际下载的最新文件为准。 qwen-14b ├── assets ├── cache_autogptq_cuda_256.cpp ├── cache_autogptq_cuda_kernel_256.cu ├── config.json ├── configuration_qwen.py ├── cpp_kernels.py ├── examples ├── generation_config.json ├── LICENSE ├── model-00001-of-00015.safetensors ├── model-00002-of-00015.safetensors ... ├── model-00014-of-00015.safetensors ├── model-00015-of-00015.safetensors ├── modeling_qwen.py ├── model.safetensors.index.json ├── NOTICE ├── qwen_generation_utils.py ├── qwen.tiktoken ├── README.md ├── tokenization_qwen.py ├── tokenizer_config.json
  • 代码目录介绍 AscendCloud-3rdLLM代码包结构介绍如下: xxx-Ascend #xxx表示版本号 ├──llm_evaluation #推理评测代码包 ├──benchmark_eval #精度评测 ├──benchmark_tools #性能评测 ├──llm_train #模型训练代码包 ├──AscendSpeed #基于AscendSpeed的训练代码 ├──AscendSpeed #加速库 ├──ModelLink #基于ModelLink的训练代码 ├──scripts #训练需要的启动脚本 本教程需要使用到的训练相关代码存放在llm_train/AscendSpeed目录下,具体文件介绍如下: ├──llm_train #模型训练代码包 ├──AscendSpeed #基于AscendSpeed的训练代码 ├──AscendSpeed #加速库 ├──ModelLink #基于ModelLink的训练代码和数据预处理脚本 ├──scripts #训练需要的启动脚本,调用ModelLink ├──qwen #qwen的训练代码 ├──qwen.sh #qwen训练脚本
  • 工作目录介绍 工作目录结构如下,以下样例都以Qwen-14B为例,请根据实际模型命名,Qwen-7B、Qwen-14B或Qwen-72B。 ${workdir}(例如/home/ma-user/ws ) ├──llm_train ├── AscendSpeed #代码目录 ├── AscendSpeed #训练依赖的三方模型库 ├── ModelLink #AscendSpeed代码目录 ├── scripts #训练启动脚本 ├── processed_for_ma_input ├── Qwen-14B #请根据实际模型命名,Qwen-7B、Qwen-14B或Qwen-72B ├── data #预处理后数据 ├── pretrain #预训练加载的数据 ├── finetune #微调加载的数据 ├──converted_weights #HuggingFace格式转换magatron格式后权重文件 ├── saved_dir_for_ma_output #训练输出保存权重,根据实际训练需求设置 ├── Qwen-14B #请根据实际模型命名,Qwen-7B、Qwen-14B或Qwen-72B ├── logs #训练过程中日志(loss、吞吐性能) ├── lora #lora微调输出权重 ├── sft #增量训练输出权重 ├── pretrain #预训练输出权重 ├── tokenizers #原始权重及tokenizer目录 ├── Qwen-14B #请根据实际模型命名,Qwen-7B、Qwen-14B或Qwen-72B ├── training_data #原始数据目录 ├── pretrain #预训练加载的数据 ├── train-00000-of-00001-a09b74b3ef9c3b56.parquet #预训练原始数据文件 ├── finetune #微调训练加载的数据 ├── alpaca_gpt4_data.json #微调训练原始数据文件
  • CentOS 7安装libfuse CentOS 7默认安装的是libfuse.so.2.9.2。 首先您需要按照前提条件下载、编译及生成libfuse.so.2.9.7,然后按照以下步骤进行安装替换。 执行以下命令,查找旧版本libfuse.so.2.9.2库链接。 find / -name libfuse.so* 执行以下命令,将libfuse.so.2.9.7拷贝至旧版本库libfuse.so.2.9.2所在位置。 cp /usr/local/lib/libfuse.so.2.9.7 /usr/lib64/ 执行以下命令, 删除旧版本libfuse.so库的所有链接。 rm -f /usr/lib64/libfuse.so rm -f /usr/lib64/libfuse.so.2 执行以下命令,建立与被删除旧版本链接类似的libfuse.so.2.9.7库链接。 ln -s /usr/lib64/libfuse.so.2.9.7 /usr/lib64/libfuse.so ln -s /usr/lib64/libfuse.so.2.9.7 /usr/lib64/libfuse.so.2
  • SUSE 12安装libfuse SUSE 12默认安装的是libfuse.so.2.9.3。 首先您需要按照前提条件下载、编译及生成libfuse.so.2.9.7,然后按照以下步骤进行安装替换。 执行以下命令,查找旧版本libfuse.so.2.9.3库链接。 find / -name libfuse.so* 执行以下命令,将libfuse.so.2.9.7拷贝至旧版本库libfuse.so.2.9.3所在位置。 cp /usr/local/lib/libfuse.so.2.9.7 /usr/lib64/ 执行以下命令, 删除旧版本libfuse.so库的所有链接。 rm -f /usr/lib64/libfuse.so.2 rm -f /lib64/libfuse.so.2.9.3 执行以下命令,建立与被删除旧版本链接类似的libfuse.so.2.9.7库链接。 ln -s /usr/lib64/libfuse.so.2.9.7 /usr/lib64/libfuse.so.2 ln -s /usr/lib64/libfuse.so.2.9.7 /lib64/libfuse.so.2.9.7
  • Ubuntu 16安装libfuse Ubuntu 16默认安装的是libfuse.so.2.9.4。 首先您需要按照前提条件下载、编译及生成libfuse.so.2.9.7,然后按照以下步骤进行安装替换。 执行以下命令,查找旧版本libfuse.so.2.9.4库链接。 find / -name libfuse.so* 执行以下命令,将libfuse.so.2.9.7拷贝至旧版本库libfuse.so.2.9.4所在位置。 cp /usr/local/lib/libfuse.so.2.9.7 /lib/x86_64-linux-gnu/ 执行以下命令,删除旧版本libfuse.so库的所有链接。 rm -f /lib/x86_64-linux-gnu/libfuse.so.2 执行以下命令,建立与被删除旧版本链接类似的libfuse.so.2.9.7库链接。 ln -s /lib/x86_64-linux-gnu/libfuse.so.2.9.7 /lib/x86_64-linux-gnu/libfuse.so.2
  • 运行示例 以Windows操作系统为例,运行obsutil clear -u,删除默认文件夹下分段上传任务的断点记录文件。 obsutil clear -u Clear checkpoint files for uploading in folder [xxxxx] [==================================================================] 100.00% 0s Succeed files is: 1 Failed files are: 0
  • 命令结构 Windows操作系统 obsutil clear [checkpoint_dir] [-u] [-d] [-c] [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx] macOS/Linux操作系统 ./obsutil clear [checkpoint_dir] [-u] [-d] [-c] [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
  • 参数说明 参数 约束 描述 checkpoint_dir 可选 断点记录文件的文件夹,默认为obsutil命令同级子文件夹.obsutil_checkpoint。 u 附加参数,可选 删除所有分段上传任务的断点记录文件。 说明: 同时会尝试删除每个断点记录文件中记录的分段上传任务。 d 附加参数,可选 删除所有分段下载任务的断点记录文件。 说明: 同时会尝试删除每个断点记录文件中记录的临时文件。 c 附加参数,可选 删除所有分段复制任务的断点记录文件。 说明: 同时会尝试删除每个断点记录文件中记录的分段复制任务。 config 附加参数,可选 运行当前命令时的自定义配置文件,可支持的配置参数请参考配置参数说明。 e 附加参数,可选 指定终端节点。 i 附加参数,可选 指定用户的AK。 k 附加参数,可选 指定用户的SK。 t 附加参数,可选 指定用户的securitytoken。 u,d,c三个参数必须至少指定一个。
  • 创建AI应用的 自定义镜像 规范 针对您本地开发的模型,在制作AI应用的自定义镜像时,需满足ModelArts定义的规范。 自定义镜像中不能包含恶意代码。 自定义镜像大小不超过50GB。 对于同步请求模式的AI应用,如果预测请求时延超过60s,会造成请求失败,甚至会有服务业务中断的风险,预测请求时延超过60s时,建议制作异步请求模式的镜像。 镜像对外接口 设置镜像的对外服务接口,推理接口需与config.json文件中apis定义的url一致,当镜像启动时可以直接访问。下面是mnist镜像的访问示例,该镜像内含mnist数据集训练的模型,可以识别手写数字。其中listen_ip为容器IP,您可以通过启动自定义镜像,在容器中获取容器IP。 请求示例 curl -X POST \ http://{listen_ip}:8080/ \ -F images=@seven.jpg 图1 listen_ip获取示例 返回示例 {"mnist_result": 7} (可选)健康检查接口 如果在滚动升级时要求不中断业务,那么必须在config.json文件中配置健康检查的接口,供ModelArts调用,在config.json文件中配置。当业务可提供正常服务时,健康检查接口返回健康状态,否则返回异常状态。 如果要实现无损滚动升级,必须配置健康检查接口。 自定义镜像如果需要在“在线服务”模块使用OBS外部存储挂载功能,需要新建一个OBS挂载专属目录如“/obs-mount/”,避免选择存量目录覆盖已有文件。OBS挂载仅开放对挂载目录文件新增、查看、修改功能不支持删除挂载目录文件对象,若需要删除文件请到OBS并行文件系统中手动删除。 健康检查接口示例如下。 URI GET /health 请求示例curl -X GET \ http://{listen_ip}:8080/health 响应示例 {"health": "true"} 状态码 表1 状态码 状态码 编码 状态码说明 200 OK 请求成功 日志文件输出 为保证日志内容可以正常显示,日志信息需要打印到标准输出。 镜像启动入口 如果需要部署批量服务,镜像的启动入口文件需要为“/home/run.sh”,采用CMD设置默认启动路径,例如Dockerfile如下: CMD ["sh", "/home/run.sh"] 镜像依赖组件 如果需要部署批量服务,镜像内需要安装python、jre/jdk、zip等组件包。 (可选)保持Http长链接,无损滚动升级 如果需要支持滚动升级的过程中不中断业务,那么需要将服务的Http的“keep-alive”参数设置为200s。以gunicorn服务框架为例,gunicorn缺省情形下不支持keep-alive,需要同时安装gevent并配置启动参数“--keep-alive 200 -k gevent”。不同服务框架参数设置有区别,请以实际情况为准。 (可选)处理SIGTERM信号,容器优雅退出 如果需要支持滚动升级的过程中不中断业务,那么需要在容器中捕获SIGTERM信号,并且在收到SIGTERM信号之后等待60秒再优雅退出容器。提前优雅退出容器可能会导致在滚动升级的过程中业务概率中断。要保证容器优雅退出,从收到SIGTERM信号开始,业务需要将收到的请求全部处理完毕再结束,这个处理时长最多不超过90秒。例如run.sh如下所示: #!/bin/bash gunicorn_pid="" handle_sigterm() { echo "Received SIGTERM, send SIGTERM to $gunicorn_pid" if [ $gunicorn_pid != "" ]; then sleep 60 kill -15 $gunicorn_pid # 传递 SIGTERM 给gunicorn进程 wait $gunicorn_pid # 等待gunicorn进程完全终止 fi } trap handle_sigterm TERM 父主题: 使用自定义镜像创建AI应用(推理部署)
  • 可视化训练作业介绍 ModelArts支持在开发环境中开启TensorBoard和MindInsight可视化工具。在开发环境中通过小数据集训练调试算法,主要目的是验证算法收敛性、检查是否有训练过程中的问题,方便用户调测。 ModelArts可视化作业支持创建TensorBoard类型和MindInsight两种类型。 TensorBoard和MindInsight能够有效地展示训练作业在运行过程中的变化趋势以及训练中使用到的数据信息。 TensorBoard TensorBoard是一个可视化工具,能够有效地展示TensorFlow在运行过程中的计算图、各种指标随着时间的变化趋势以及训练中使用到的数据信息。TensorBoard相关概念请参考TensorBoard官网。 TensorBoard可视化训练作业,当前仅支持基于TensorFlow2.1、Pytorch1.4/1.8版本镜像,CPU/GPU规格的资源类型。请根据实际局点支持的镜像和资源规格选择使用。 MindInsight MindInsight能可视化展现出训练过程中的标量、图像、计算图以及模型超参等信息,同时提供训练看板、模型溯源、数据溯源、性能调试等功能,帮助您在更高效地训练调试模型。MindInsight当前支持基于MindSpore引擎的训练作业。MindInsight相关概念请参考MindSpore官网。 MindInsight可视化训练作业,当前支持的镜像如下,请根据实际局点支持的镜像和资源规格选择使用。 mindspore1.2.0版本,CPU/GPU规格的资源类型。 mindspore1.5.x以上版本,Ascend规格的资源类型。 您可以使用模型训练时产生的Summary文件在开发环境Notebook中创建可视化作业。 在开发环境中创建MindInsight可视化作业,请参见MindInsight可视化作业。 在开发环境中创建TensorBoard可视化作业,请参见TensorBoard可视化作业。 父主题: 可视化训练作业
  • 亮点特性4:提供在线的交互式开发调试工具JupyterLab ModelArts集成了基于开源的JupyterLab,可为您提供在线的交互式开发调试。您无需关注安装配置,在ModelArts管理控制台直接使用Notebook,编写和调测模型训练代码,然后基于该代码进行模型的训练。 JupyterLab是一个交互式的开发环境,是Jupyter Notebook的下一代产品,可以使用它编写Notebook、操作终端、编辑MarkDown文本、打开交互模式、查看csv文件及图片等功能。
  • 亮点特性3:预置镜像 - 即开即用,优化配置,支持主流AI引擎 每个镜像预置的AI引擎和版本是固定的,在创建Notebook实例时明确AI引擎和版本,包括适配的芯片。 ModelArts开发环境给用户提供了一组预置镜像,主要包括PyTorch、TensorFlow、MindSpore系列。用户可以直接使用预置镜像启动Notebook实例,在实例中开发完成后,直接提交到ModelArts训练作业进行训练,而不需要做适配。 ModelArts开发环境提供的预置镜像版本是依据用户反馈和版本稳定性决定的。当用户的功能开发基于ModelArts提供的版本能够满足的时候,建议用户使用预置镜像,这些镜像经过充分的功能验证,并且已经预置了很多常用的安装包,用户无需花费过多的时间来配置环境即可使用。 ModelArts开发环境提供的预置镜像主要包含: 常用预置包,基于标准的Conda环境,预置了常用的AI引擎,例如PyTorch、MindSpore;常用的数据分析软件包,例如Pandas、Numpy等;常用的工具软件,例如cuda、cudnn等,满足AI开发常用需求。 预置Conda环境:每个预置镜像都会创建一个相对应的Conda环境和一个基础Conda环境python(不包含任何AI引擎),如预置MindSpore所对应的Conda环境如下: 用户可以根据是否使用AI引擎参与功能调试,选择不同的Conda环境。 Notebook:是一款Web应用,能够使用户在界面编写代码,并且将代码、数学方程和可视化内容组合到一个文档中。 JupyterLab插件:插件包括规格切换,分享案例到AI Gallery进行交流,停止实例等,提升用户体验。 支持SSH远程连接功能,通过SSH连接启动实例,在本地调试就可以操作实例,方便调试。 ModelArts开发环境提供的预置镜像支持功能开发后,直接提到ModelArts训练作业中进行训练。 为了简化操作,ModelArts的Notebook,同一个Notebook实例中支持不同引擎之间的切换。 不同Region支持的AI引擎不一样,请以控制台实际界面为准。
  • 亮点特性1:远程开发 - 支持本地IDE远程访问Notebook Notebook提供了远程开发功能,通过开启SSH连接,用户本地IDE可以远程连接到ModelArts的Notebook开发环境中,调试和运行代码。 对于使用本地IDE的开发者,由于本地资源限制,运行和调试环境大多使用团队公共搭建的服务器,并且是多人共用,这带来一定的环境搭建和维护成本。 而ModelArts的Notebook的优势是即开即用,它预先装好了不同的AI引擎,并且提供了非常多的可选规格,用户可以独占一个容器环境,不受其他人的干扰。只需简单配置,用户即可通过本地IDE连接到该环境进行运行和调试。 图1 本地IDE远程访问Notebook开发环境 ModelArts的Notebook可以视作是本地PC的延伸,均视作本地开发环境,其读取数据、训练、保存文件等操作与常规的本地训练一致。 对于习惯使用本地IDE的开发者,使用远程开发方式,不影响用户的编码习惯,并且可以方便快捷的使用云上的Notebook开发环境。 本地IDE当前支持VS Code、PyCharm、SSH工具。还有专门的插件PyCharm Toolkit和VS Code Toolkit,方便将云上资源作为本地的一个扩展。
  • Step7 远程调试 单击本地IDE右下角interpreter,选择Notebook的python解释器。 图9 选择Python解释器 像本地运行代码一样,直接单击运行按钮运行代码即可,此时虽然是在本地IDE点的运行按钮,实际上运行的是云端Notebook里的代码,日志可以回显在本地的日志窗口。 图10 查看运行日志 也可以单击本地IDE右上角的Run/Debug Configuration按钮来设置运行参数。 图11 设置运行参数(1) 选择远程连接到云上开发环境实例对应的Python解释器。 图12 设置运行参数(2) 当需要调试代码时,可以直接打断点,然后使用debug方式运行程序。 图13 使用debug方式运行程序 此时可以进入debug模式,代码运行暂停在该行,且可以查看变量的值。 图14 Debug模式下查看变量值
共100000条