云服务器内容精选
-
启动容器镜像 启动容器镜像。启动前请先按照参数说明修改${}中的参数。 docker run -it --net=host \ --device=/dev/davinci0 \ --device=/dev/davinci1 \ --device=/dev/davinci2 \ --device=/dev/davinci3 \ --device=/dev/davinci4 \ --device=/dev/davinci5 \ --device=/dev/davinci6 \ --device=/dev/davinci7 \ --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/bin/npu-smi:/usr/local/bin/npu-smi \ -v ${work_dir}:${container_work_dir} \ --name ${container_name} \ ${image_id} \ /bin/bash 参数说明: device=/dev/davinci0,..., --device=/dev/davinci7:挂载NPU设备,示例中挂载了8张卡davinci0~davinci7,可根据需要选择挂载卡数。 ${work_dir}:${container_work_dir} 代表需要在容器中挂载宿主机的目录。宿主机和容器使用不同的文件系统,work_dir为宿主机中工作目录,目录下存放着训练所需代码、数据等文件。container_dir为要挂载到的容器中的目录。为方便两个地址可以相同。 shm-size:共享内存大小。 ${container_name}:容器名称,进入容器时会用到,此处可以自己定义一个容器名称。 ${image_id}:镜像ID,通过docker images查看刚拉取的镜像ID。 容器不能挂载到/home/ma-user目录,此目录为ma-user用户家目录。如果容器挂载到/home/ma-user下,拉起容器时会与基础镜像冲突,导致基础镜像不可用。 driver及npu-smi需同时挂载至容器。 不要将多个容器绑到同一个NPU上,会导致后续的容器无法正常使用NPU功能。
-
获取代码并上传 上传推理代码AscendCloud-CV-6.3.910-xxx.zip到宿主机的工作目录中,包获取路径请参见表2。 上传代码到宿主机时使用的是root用户,此处需要在容器中执行如下命令统一文件属主为ma-user用户。 #统一文件属主为ma-user用户 sudo chown -R ma-user:ma-group ${container_work_dir} # ${container_work_dir}:/home/ma-user/ws 容器内挂载的目录 #例如:sudo chown -R ma-user:ma-group /home/ma-user/ws
-
准备推理环境 安装transformers,用于转换模型和推理。 pip install transformers==4.45.2 获取推理代码。 cd ${container_work_dir} unzip AscendCloud-CV-6.3.910-*.zip cd Bert/bert_infer/mindspore_lite 获取bert-base-chinese模型文件。 mkdir bert-base-chinese wget -P bert-base-chinese https://huggingface.co/google-bert/bert-base-chinese/resolve/main/pytorch_model.bin wget -P bert-base-chinese https://huggingface.co/google-bert/bert-base-chinese/resolve/main/config.json wget -P bert-base-chinese https://huggingface.co/google-bert/bert-base-chinese/resolve/main/tokenizer.json wget -P bert-base-chinese https://huggingface.co/google-bert/bert-base-chinese/resolve/main/tokenizer_config.json wget -P bert-base-chinese https://huggingface.co/google-bert/bert-base-chinese/resolve/main/vocab.txt pt模型转onnx模型。 python pth2onnx.py ./bert-base-chinese/ ./bert_model.onnx python modify_onnx.py ./bert_model.onnx 该转换脚本用于Fill-Mask 任务,若是其他类型任务请按实际场景修改转换脚本。 onnx模型转mindir格式,执行如下命令,转换完成后会生成bert_model.mindir文件。 converter_lite --fmk=ONNX --modelFile=bert_model.onnx --outputFile=bert_model --inputShape='input_ids:1,512;attention_mask:1,512;token_type_ids:1,512' --saveType=MINDIR --optimize=ascend_oriented 动态seq_len场景下需要创建转换配置文件convert_config.ini,将如下内容写入配置文件: [acl_build_options] input_format="ND" input_shape="input_ids:1,-1;attention_mask:1,-1;token_type_ids:1,-1" ge.dynamicDims="50,50,50;100,100,100;150,150,150;200,200,200;250,250,250;300,300,300;350,350,350;400,400,400;450,450,450;512,512,512" 其中input_shape中的-1表示设置动态seq_len,ge.dynamicDims表示支持的seq_len值,可根据实际业务场景选取要支持的seq_len,上面的配置表示模型的三个输入shape支持[1, seq_len],seq_len取值[50,100, …,450,512]。另外需要注意seq_len不能超过模型支持的最大值,本文中下载的bert模型seq_len最大支持512。关于动态batch配置说明详见:https://www.mindspore.cn/lite/docs/zh-CN/r2.3.0/use/cloud_infer/converter_tool_ascend.html 使用如下转换命令: converter_lite --fmk=ONNX --modelFile=bert_model.onnx --outputFile=bert_model_dy --saveType=MINDIR --optimize=ascend_oriented --configFile=convert_config.ini 使用converter_lite转换模型时,如果报E10001: Value [linux] for parameter [--host_env_os] is invalid. Reason: os not supported, support setting are the OS types of opp package。 建议在启动容器镜像中通过docker run启动容器时,加上--privileged=true参数。
-
获取软件和镜像 表2 获取软件和镜像 分类 名称 获取路径 插件代码包 AscendCloud-6.3.910-xxx.zip软件包中的AscendCloud-CV-6.3.910-xxx.zip 说明: 包名中的xxx表示具体的时间戳,以包名的实际时间为准。 获取路径:Support-E,在此路径中查找下载ModelArts 6.3.910 版本。 说明: 如果没有下载权限,请联系您所在企业的华为方技术支持下载获取。 基础镜像 西南-贵阳一: swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc3-py_3.9-hce_2.0.2406-aarch64-snt3p-20240906180137-154bd1b 从SWR拉取。
-
准备容器环境 请参考DevServer资源开通,购买DevServer资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 购买DevServer资源时如果无可选资源规格,需要联系华为云技术支持申请开通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。 SSH登录机器后,检查NPU设备检查。运行如下命令,返回NPU设备信息。 npu-smi info # 在每个实例节点上运行此命令可以看到NPU卡状态 npu-smi info -l | grep Total # 在每个实例节点上运行此命令可以看到总卡数 如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先释放被挂载的NPU或者联系华为方技术支持。 检查驱动版本。 运行如下命令查询驱动版本,回显信息中的“Software Version”字段值表示驱动版本。NPU ID表示设备编号,可通过npu-smi info -l命令查询。 npu-smi info -t board -i NPU ID 如果Atlas 300I Duo推理卡的驱动版本低于24.1.RC2.3,请参考升级文档升级驱动(24.1.RC2.3升级操作和24.1.RC2相同),24.1.RC2.3驱动软件包获取地址参考驱动软件包。 检查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
-
开始推理 执行如下命令开始推理。 python infer.py --tokennizer_config_path ./bert-base-chinese/ --mindir_model_path bert_model_dy.mindir --onnx_model_path bert_model.onnx --input_text [MASK]京是中国的[MASK]都。 infer.py是NPU上使用MindSpore Lite推理的样例,不同业务场景需根据实际情况做相应修改。infer.py文件预置在AscendCloud-CV-6.3.910-xxx.zip软件包中。 infer.py中包含使用MindSpore Lite在NPU上推理和使用推理onnxruntime在CPU上推理,结果如下图,按顺序展示[MASK]位置最大概率填充的文字。 如果是静态seq_len推理,修改infer脚本中45行max_length 的值为静态seq_len,并屏蔽或者删除25~26行以及46~49行,如下图所示。
-
文本内容审核 (V3) 本章节对文本 内容审核 AK/SK方式使用SDK进行示例说明。 示例代码中可以将TextDetectionDataReq的text配置待检测的文本信息,配置完成后运行即可。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" moderation "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/moderation/v3" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/moderation/v3/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/region" ) func main() { // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 ak := os.Getenv("HUAWEICLOUD_SDK_AK") sk := os.Getenv("HUAWEICLOUD_SDK_SK") auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() client := moderation.NewModerationClient( moderation.ModerationClientBuilder(). WithRegion(region.ValueOf("xxx")). //把xxx替换成服务所在的区域,例如北京四:cn-north-4。 WithCredential(auth). Build()) request := &model.RunTextModerationRequest{} databody := &model.TextDetectionDataReq{ Text: "text", } request.Body = &model.TextDetectionReq{ Data: databody, EventType: "comment", } response, err := client.RunTextModeration(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } 审核结果输出到控制台表示执行成功,文本内容审核结果输出到控制台。 RunTextModerationResponse {"request_id": "d81702cfd3599e103030c3d52d6f955f", "result": {"suggestion": "pass", "label": "normal", "details": []}} 父主题: 文本审核
-
请求示例 使用图片的url POST https://{endpoint}/v3/{project_id}/moderation/image/batch { "event_type" : "comment", "categories" : [ "string" ], "image_text_config" : { "black_glossary_names" : [ "string" ], "white_glossary_names" : [ "string" ] }, "urls" : [ { "url" : "http://xxxxxx.com/qweqeqeqz.jpg", "data_id" : "1234" } ], "language" : "zh" } 使用bizType POST https://{endpoint}/v3/{project_id}/moderation/image/batch { "urls" : [ { "url" : "http://xxxxxx.com/qweqeqeqz.jpg", "data_id" : "1234" } ], "language" : "zh", "biz_type" : "test_type" }
-
响应参数 状态码: 200 表6 响应Body参数 参数 参数类型 描述 request_id String 本次请求的唯一标识,用于问题排查,建议保存。 results Array of ImageDetectionResult objects 调用结果。 表7 ImageDetectionResult 参数 参数类型 描述 suggestion String 审核结果是否通过。 block:包含敏感信息,不通过。 pass:不包含敏感信息,通过 。 review:需要人工复检。 category String 检测结果的一级标签。支持category列表如下: terrorism: 暴恐。 porn: 色情。 image_text: 图文审核。 details Array of ImageDetectionResultDetail objects 检测详情。 ocr_text String 图文审核检测出的文本,只有在category参数配置image_text且检测出文本时展示该字段。 data_id String 图片唯一标识。同一次请求中不可重复,由大小写英文字母、数字、下划线(_)、中划线(-)组成,不超过30个字符。 error_code String 调用失败时的错误码,具体请参见错误码。 调用成功时无此字段。 error_msg String 调用失败时的错误信息。 调用成功时无此字段。 表8 ImageDetectionResultDetail 参数 参数类型 描述 suggestion String 审核结果是否通过。 block:包含敏感信息,不通过。 review:需要人工复检。 category String 检测结果的一级标签。支持category列表如下: terrorism: 暴恐。 porn: 色情。 image_text: 图文审核。 confidence Float 置信度,可选值在0-1之间,值越大,可信度越高。 face_location FaceLocationDetail object 人物位置信息,该数组有四个值,分别代表左上角的坐标和右下角的坐标。例如[207,522,340,567],207代表的是左上角的横坐标,522代表左上角的纵坐标,340代表的是右下角的横坐标,567代表的是右下角的纵坐标。 qr_location QRLocationDetail object 图片中二维码指向的链接,当请求参数categories中包含image_text时存在。 qr_content String 图片中二维码指向的链接,当请求参数categories中包含image_text时存在。 segments Array of OCRTextDetail objects image_text场景下命中的文本片段。 label String 识别的详细标签。 表9 FaceLocationDetail 参数 参数类型 描述 top_left_x Integer 检测出人脸的左上角横坐标。 top_left_y Integer 检测出人脸的左上角纵坐标。 bottom_right_x Integer 检测出人脸的右下角横坐标。 bottom_right_y Integer 检测出人脸的右下角纵坐标。 表10 QRLocationDetail 参数 参数类型 描述 top_left_x Integer 检测出的二维码左上角横坐标。 top_left_y Integer 检测出的二维码左上角纵坐标。 bottom_right_x Integer 检测出的二维码右下角横坐标。 bottom_right_y Integer 检测出的二维码右下角纵坐标。 表11 OCRTextDetail 参数 参数类型 描述 segment String 命中的风险片段。 glossary_name String 命中的自定义词库名称。命中自定义词库时,才会返回当前字段。 状态码: 400 表12 响应Body参数 参数 参数类型 描述 error_code String 错误码 最小长度:8 最大长度:36 error_msg String 错误描述 最小长度:2 最大长度:512
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 用于获取操作API的权限。获取方法请参见 获取Token 接口,响应消息头中X-Subject-Token的值即为Token。 表3 请求Body参数 参数 是否必选 参数类型 描述 event_type 否 String 事件类型。可选值如下: head_image:头像。 album:相册。 dynamic:动态。 article:帖子。 comment:评论。 room_cover:房间封面。 group_message:群聊图片。 message:私聊图片。 product:商品图片。 说明: 如果请求参数中包含biz_type则优先使用biz_type,event_type和categories参数将不生效,审核策略由biz_type的设置决定。 如果未传biz_type则event_type和categories为必传参数。 categories 否 Array of strings 检测场景。可添加的检测场景如下: terrorism:暴恐元素的检测。 porn:涉黄元素的检测。 image_text:广告图文的检测。 可通过配置上述场景,来完对应场景元素的检测。每个检测场景的检测次数会分类统计。 说明: 如果请求参数中包含biz_type则优先使用biz_type,event_type和categories参数将不生效,审核策略由biz_type的设置决定。 如果未传biz_type则event_type和categories为必传参数。 image_text_config 否 image_text_config object 图文审核黑白词库配置。 urls 是 Array of urls objects 图片url列表。最大支持12张图片。 language 否 String 指定图片中文字语种类型。 zh: 中文(默认值为zh,中国站仅支持zh)。 en: 英文 。 biz_type 否 String 用户在控制台界面创建的自定义审核策略名称。 如果请求参数中包含biz_type则优先使用biz_type,event_type和categories参数将不生效,审核策略由biz_type的设置决定。 如果未传biz_type则event_type和categories为必传参数。 表4 image_text_config 参数 是否必选 参数类型 描述 black_glossary_names 否 Array of strings 检测时使用的自定义黑名单词库列表。 white_glossary_names 否 Array of strings 检测时使用的自定义白名单词库列表。 表5 urls 参数 是否必选 参数类型 描述 url 是 String 图片url,目前支持:公网HTTP/HTTPS URL。 data_id 是 String 图片唯一标识。同一次请求中不可重复,由大小写英文字母、数字、下划线(_)、中划线(-)组成,不超过30个字符。
-
响应示例 状态码: 200 成功响应示例 { "job_id" : "xxxxxx", "status" : "succeeded", "result" : { "suggestion" : "block", "details" : [ { "start_position" : 1, "end_position" : 10, "suggestion" : "block", "index" : 12, "label" : "porn", "type" : "text", "text" : "xxxxxxxxx", "segments" : [ { "segment" : "xxx" }, { "segment" : "xxx" }, { "segment" : "xxx" } ] } ] }, "request_params" : { "data" : { "url" : "https://xxxxx", "format" : "pdf" }, "event_type" : "default", "image_categories" : [ "politics", "porn", "image_text", "terrorism" ], "text_categories" : [ "default" ], "callback" : "http://xxx" } } 状态码: 400 失败响应示例 { "error_code" : "AIS.0030", "error_msg" : "Job not found" }
-
响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 job_id String 作业id。 status String 作业状态,可取值有: running:正在运行 succeeded:运行成功 failed:运行失败 result result object 作业审核结果,当作业状态为succeeded时存在。 request_params request_params object 作业创建参数。 create_time String 作业创建时间。 update_time String 作业更新时间。 request_id String 本次请求的唯一标识,用于问题排查,建议保存。 表4 result 参数 参数类型 描述 suggestion String 文档审核结果是否通过。 block:包含敏感信息,不通过 review:需要人工复检 pass:不包含敏感信息,通过 details Array of details objects 审核详情。 表5 details 参数 参数类型 描述 suggestion String 当前内容片段的处置建议: block:包含敏感信息,不通过 review:需要人工复检 type String 当前内容片段的类型,可取值有: text:文本 image:图像 video:视频 label String 当前内容片段的风险类型,可取值为: terrorism:暴恐 porn:色情 sexy:性感 abuse:辱骂 ad:广告 qr_code:二维码 watermark:水印 meaningless:无意义 ban:违禁 bad_scene:不良场景 moan:娇喘 index Integer 当前处理的片段索引。 text String 当前内容片段中的文本内容,仅当type为text时存在。 start_position Integer 当前文本内容片段在输入中的起始位置,仅当type为text时存在。 end_position Integer 当前文本内容片段在输入中的结束位置,仅当type为text时存在。 image_url String 网页图片url,仅当type为image且文档格式为webpage时存在。 segments Array of segments objects 命中的风险片段信息列表,仅在有命中敏感词时才返回。 video_image_details Array of DocumentVideoImageDetail objects 网页视频中截帧部分审核详情。 audio_details Array of DocumentAudioDetail objects 网页视频中音频部分审核详情。 表6 segments 参数 参数类型 描述 segment String 命中的敏感词。 表7 DocumentVideoImageDetail 参数 参数类型 描述 time Float 截帧在视频文件中的时间,单位为秒。 suggestion String 截帧审核结果是否通过。 block:包含敏感信息,不通过 review:需要人工复检 ocr_text String 截帧检测出的文本。 label String 识别的详细标签。 segments Array of segments objects 命中的文本风险片段列表。 表8 segments 参数 参数类型 描述 segment String 命中的风险片段。 表9 DocumentAudioDetail 参数 参数类型 描述 start_time Float 音频片段开始时间。 end_time Float 音频片段结束时间。 suggestion String 音频片段审核处理建议。 block:包含敏感信息,不通过 review:需要人工复检 audio_text String 音频片段文本内容。 label String 音频片段标签。 segments Array of segments objects 命中的风险片段信息列表。 表10 segments 参数 参数类型 描述 segment String 命中的风险片段。 表11 request_params 参数 参数类型 描述 data data object 创建作业时传的data参数。 event_type String 创建作业时传的event_type参数。 image_categories Array of strings 创建作业时传的image_categories参数。 text_categories Array of strings 创建作业时传的text_categories参数。 video_image_categories Array of strings 创建作业时传的video_image_categories参数。 audio_categories Array of strings 创建作业时传的audio_categories参数。 callback String 创建作业时传的callback参数。 表12 data 参数 参数类型 描述 url String 创建作业时传的url参数。目前支持:公网HTTP/HTTPS URL。 format String 创建作业时传的format参数。 frame_interval Integer 创建作业时传的frame_interval参数。 状态码: 400 表13 响应Body参数 参数 参数类型 描述 error_code String 调用失败时的错误码,具体请参见错误码。 调用成功时无此字段。 error_msg String 调用失败时的错误信息。 调用成功时无此字段。
-
响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 request_id String 本次请求的唯一标识,用于问题排查,建议保存。 job_id String 作业唯一标识。 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 调用失败时的错误码,具体请参见错误码。 调用成功时无此字段。 error_msg String 调用失败时的错误信息。 调用成功时无此字段。
-
响应示例 状态码: 200 成功响应示例 { "job_id" : "01661356800_7c0fe871f80543358917e4faebca4a48", "request_id" : "07490f57ac5e034c077ab25b5f9e1da5" } 状态码: 400 失败响应示例 { "error_code" : "AIS.0401", "error_msg" : "The input parameter event_type is incorrect." }
-
请求示例 创建文档内容审核作业。 POST https://{endpoint}/v3/{project_id}/moderation/document/jobs { "data" : { "url" : "xxx", "format" : "pdf" }, "event_type" : "default", "image_categories" : [ "politics", "porn", "image_text", "terrorism" ], "text_categories" : [ "default" ], "callback" : "http://xxx" }
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格