华为云用户手册

  • 问题现象 VS Code连接开发环境时报错“Connection permission denied (publickey). Please make sure the key file is correctly selected and the file permission is correct. You can view the instance keypair information on ModelArts console.”
  • 解决方式 先排查cuda和torch版本是否兼容。 # cuda版本 nvcc --version # nvidia-smi版本 nvidia-smi # torch版本(要确定用户用的哪个conda下的python) python -c "import torch;print(torch.__version__)" 通过pytorch官网可查兼容版本:https://pytorch.org/get-started/previous-versions/ 如果环境中装了多版本的cuda,可以排查LD_LIBRARY_PATH中的cuda优先级,需要手动调整下。 举例:如果cuda只兼容cuda-9.1,查询到LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:/usr/local/cuda-9.1/lib64 需要手动调整优先级,执行命令export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64:$LD_LIBRARY_PATH
  • 解决方案 查看用户Dockerfile中的COPY命令中的文件的路径。将要复制的文件放到Dockerfile同级目录或子目录中,如图,Dockerfile在“./.ma/customize_from_ubuntu_18.04_to_modelarts/路径下”,需要将文件放到“/home/ma-user/work/.ma/customize_from_ubuntu_18.04_to_modelarts”下。 图3 查询Dockerfile的路径 Dockerfile命令修改为相对路径,举例如下: COPY ./mindspore-2.1.0-cp39-cp39-linux_aarch64.whl /tmp/mindspore-2.1.0-cp39-cp39 -linux_aarch64.whl
  • 解决方案 如果不需要使用moxing、sdk等功能,可以暂时删除modelarts.pth文件。 执行如下命令在用户运行的Conda环境下查找modelarts.pth。 # /home/ma-user/anaconda3指用户的python环境 find /home/ma-user/anaconda3 -name modelarts.pth 执行如下命令删除用户使用的python环境中的modelarts.pth文件。 # /xxx/modelarts.pth 指用户通过第一步查出来的文件路径 rm -rf /xxx/modelarts.pth
  • 解决方案 在Terminal里执行命令排查实例存在几个Conda环境。 conda env list 执行如下命令分别切换到对应环境查看是否有ipykernel包。 conda activate base # base替换为实际使用的python环境 pip show ipykernel 对应conda环境没有ipykernel,直接在Notebook中添加自定义IPython Kernel安装。
  • 解决方法 ModelArts权限管理的委托权限不足,导致创建失败? 解决方法请参见ModelArts创建委托授权。 申请的资源中包含受限购买的资源规格,导致购买失败? 当前modelarts.bm.npu.arm.8snt9b3.d为受限购买,需要提前联系ModelArts运营或提工单申请开通资源规格。 图2 报错信息 E CS 、EVS配额不足,导致创建失败? 集群所需的ECS实例数、内存大小、CPU核数和EVS硬盘大小资源会超出华为云默认提供的资源配额,因此需要申请扩大配额。解决方法请参见申请扩大资源配额。 图3 报错信息(1) 图4 报错信息(2) 资源售罄或容量不足,导致创建失败? 减少资源池节点数量,或提工单给ModelArts申请更多资源。 图5 报错信息 ECS、BMS节点创建失败? 查看资源池失败报错信息: 包含错误码,如:Ecs.0000时,可查看弹性云服务器 ECS_错误码查看详细的错误信息及处理措施。 包含错误码,如:BMS.0001时,可查看裸金属服务器 BMS_错误码查看详细的错误信息及处理措施。 包含错误码,如:CCE.01400001时,可查看云容器引擎 CCE_错误码查看详细的错误信息及处理措施 其他报错请提工单联系ModelArts运维进一步定位解决。 集群纳管节点失败? 查看资源池失败报错信息: 查看资源池失败报错信息,包含错误码,如:CCE.01400001时,可查看云容器引擎 CCE_错误码查看详细的错误信息及处理措施。 其他报错请提工单联系ModelArts运维进一步定位解决。 集群容器网段不足,导致创建失败? 图6 报错信息 用户可根据实际业务场景和节点规模,自定义配置容器网段,配置方式如下: ModelArts Standard池,资源池创建阶段指定容器网段,根据实际需要设置更大的容器网段。 图7 设置容器网段 ModelArts Lite池,选择/创建具有更大容器网段的CCE集群。CCE容器网段配置参见网络规划。 账号冻结导致创建失败? 查看资源池失败报错信息,存在"frozen deposit fail",表示账号冻结导致资源创建失败。检查账号状态和资源欠费情况,账号解冻后重新购买资源。 订单取消导致资源创建失败? 查看资源池失败报错信息,存在"the operation is canceled by customer",表示资源池对应订单已取消,取消原因可能为超时未支付、用户自主取消,需重新购买。 其他错误 可通过F12查看浏览器请求信息,选择标红的pools接口,查看响应里的详细报错信息,如下图所示。通过错误提示修正输入参数后再次提交订单。 图8 报错信息 如CCE集群不可用,请检查CCE集群版本和状态。报错信息如下: { "error_code": "ModelArts.50004000", "error_msg": "Bad request. spec.clusters[0].providerId: Invalid value: \"77f6f112-a631-11eb-8dae-0255ac100b0d\": the cluster 77f6f112-a631-11eb-8dae-0255ac100b0d is not available" }
  • 故障说明和处理建议 图1 Lite池故障处理流程 对于ModelArts Lite资源池,每个节点会以DaemonSet方式部署node-agent组件,该组件会检测节点状态,并将检测结果写到K8S NodeCondtition中。同时,节点故障指标默认会上报到 AOM ,您可在AOM配置告警通知。 当发生节点异常时,在故障初步分析阶段,您可先按表1识别是否为亚健康并自助进行处理,若不是,则为故障,请联系客户经理发起维修流程(若无客户经理可提交工单)。
  • 处理方法 在Euler2.8操作系统,NetworkManagre-config-server是一个无用的软件包,无需安装 。执行以下命令卸载NetworkManagre-config-server,并重启NetworkManager服务,重新尝试SSH连接,验证网络是否恢复。 # 卸载 NetworkManagre-config-server rpm -e NetworkManager-config-server # 重启 NetworkManager 服务 systemctl restart NetworkManager
  • 原因分析 查看yum命令历史,发现执行了“yum update -y”,“yum update -y”命令是用于在Linux操作系统上更新软件包的命令。其中,选项-y表示在更新时自动确认所有提示信息,而不需要手动输入“y”确认。 请注意,使用此命令将会检查您系统中已安装的软件包并更新至最新版本。 图1 yum命令历史 查看NetworkManager配置: NetworkManager --print-config 配置内容如下: # NetworkManager configuration: /etc/NetworkManager/NetworkManager.conf (lib: 00-server.conf) [main] # plugins=ifcfg-rh,ibft # rc-manager=symlink # auth-polkit=true # dhcp=dhclient no-auto-default=* ignore-carrier=* [logging] # backend=journal # audit=false 发现“no-auto-default=*”是打开的状态,“no-auto-default=*”含义是关闭DH Client,无法使用DHCP获取IP。正常情况下裸金属服务器这个参数是被注释的状态。 当服务器有网卡配置文件, NetworkManager.service实现将VPC子网分配的私有IP写入网卡配置文件中。NetworkManager.service会优先读取网卡配置文件中的IP设置为主机IP, 此时无论DH Cient是否关闭,服务器都可以获取分配IP。 当服务器没有网卡配置文件时,DH Client开启,此时服务器会分配私有IP。如果关闭DH Client,则服务器无法获取私有IP。 图2 查看NetworkManager配置 图3 查看网络配置 命令“yum update -y”或“yum update NetworkManagre-config-server”,都会将NetworkManagre-config-server软件升级,高版本的NetworkManagre-config-server会将参数no-auto-default=*是打开的状态,又因当前镜像无网卡配置文件导致ip获取不到,从而使得SSH连接失败。
  • 处理方法 查看nvidia-fabricmanager的版本,若nvidia-fabricmanager版本与当前NVIDIA驱动版本不一致则执行下述命令卸载nvidia-fabricmanager。 dpkg -l | grep nvidia-fabricmanager # 若有nvidia-fabricmanager软件,将其卸载 # 若无nvidia-fabricmanager软件,请跳过此命令 sudo apt-get autoremove --purge nvidia-fabricmanager-版本 安装与NVIDIA驱动版本号相等的nvidia-fabricmanager(以515.105.01举例)。 version=515.105.01 main_version=$(echo $version | awk -F '.' '{print $1}') apt-get update apt-get -y install nvidia-fabricmanager-${main_version}=${version}-* 启动nvidia-fabricmanager,确保其服务状态为RUNNING。 systemctl enable nvidia-fabricmanager systemctl start nvidia-fabricmanager systemctl status nvidia-fabricmanager 重新验证cuda状态, 输出为True。 import torch print(torch.cuda.is_available())
  • 原因分析 经过对裸金属服务器排查,发现nvidia-drvier和cuda都已安装,并且正常运行。nvidia-fabricmanager服务可以使单节点GPU卡间互联,在多卡GPU机器上,出现这种问题可能是nvidia-fabricmanger异常导致。 执行以下命令,查看NVIDIA和CUDA的版本,以及nvidia-fabricmanager的状态。 systemctl status nvidia-fabricmanager 发现nvidia-fabricmanager的服务为failed状态,尝试重新启动nvidia-fabricmanager失败,且提示以下信息: nvidia-fabricmanager.service failed because the control process exited with error code 通过命令查看nvidia-fabricmanager的版本,发现nvidia-fabricmanager版本与当前NVIDIA驱动版本不一致。 dpkg -l | grep nvidia-fabricmanager 卸载并重新安装正确版本的nvidia-fabricmanager,验证CUDA成功。
  • 原因分析 在CCE纳管过程中,需要通过cloudinit userdata机制拉取cce-agent,但是在服务器上查看没有拉cce-agent的动作,理论上该动作是cloudinit中的脚本在创建时自动执行的,可能是由于安装脚本没有注入userdata或者注入了但未执行。 经查看是由于userdata未执行,可能原因为服务器A制作镜像时没有清理残留目录导致,即: 镜像里面“/var/lib/cloud/instances”残留了制作镜像机器(后面称模板机)的实例ID信息,如果制作镜像不清理“/var/lib/cloud/*”就会导致用该镜像再重装模板机时,cloud-init根据残留目录(含实例ID)判断已经执行过一次,进而不会再执行user-data里面的脚本。 而使用该镜像的服务器B和C,由于实例ID信息和镜像中残留的服务器A实例ID不同,就会执行user-data,所以CCE能纳管成功。
  • 问题现象 弹性文件服务(Scalable File Service,SFS)提供按需扩展的高性能文件存储(NAS),可以在裸金属服务器中通过网络协议挂载使用,SFS支持NFS和CIFS的网络协议。在使用裸金属服务器时, 将数据放在SFS盘中, 并发建立多个NFS链接、并发的读写数据、做大模型训练。 但有时候会出现读取速度变慢的现象,并且SFS提示报错"rpc_check_timeout:939 callbacks suppressed"。
  • 原因分析 根据SFS客户端 日志分析 出现问题的时间点发现,SFS盘连接的客户端个数较多,在问题的时间点并发读取数据,I/O超高;当前SFS服务端的机制是:当SFS盘的性能到上限时,就会IO排队。IO排队造成处理时间超过 1 分钟时,客户端内核会打印"rpc_check_timeout:939 callbacks suppressed"日志。这个日志只是说明某个IO处理时间超过 1 分钟了,不会造成数据丢失。客户端有重试机制,等峰值过去后,所有IO最终都会正确处理。所以理论上,出现该错误日志, 并不会造成数据丢失, 只是SFS客户端I/O速度变慢或卡顿,但最终会争取处理。
  • 原因分析 nvidia-modprobe是一个Linux工具,用于在系统中加载NVIDIA驱动程序及其相关的内核模块。在Linux系统上安装NVIDIA显卡驱动后,需要通过“nvidia-modprobe”命令来加载相应的内核模块,以便让显卡驱动正常工作。 通常情况下,在安装NVIDIA驱动时,会自动执行“nvidia-modprobe”命令,将必要的内核模块加载到系统中。但有时候也可能需要手动执行该命令。例如,在更新了NVIDIA驱动后,需要重新加载新版本的内核模块才能使变更生效。 此外,若使用了多个NVIDIA显卡,每个显卡都需要加载相应的内核模块才能正常工作。在这种情况下,也需要手动执行“nvidia-modprobe”命令来加载所有必要的内核模块。
  • 原因分析 根据现象描述可能出现了nvidia-smi D+进程。 "D+"表示进程状态为"Uninterruptible Sleep (usually IO)",即进程正在等待I/O操作完成,此时无法被中断。 在正常情况下,nvidia-smi进程通常只会短暂地出现D+状态,因为它们是由内核控制的,该进程处于等待I/O操作完成的状态,可能是在读取或写入GPU相关的数据,这是正常的操作。但是,如果该进程一直处于"D+"状态,可能表明出现了I/O操作阻塞或其他问题,这可能导致系统死锁或其他问题。 如果想构造nvidia-smi D+进程,可以死循环一直执行nvidia-smi体验D+进程带来的系统不稳定性, 如: #!/bin/bash while true; do nvidia-smi & sleep 1 # 可以根据需要调整间隔时间 done 然后执行查看产生nvidia D+进程 ps -aux | grep -w D+ 结果如下: 图1 nvidia D+进程 此时可以观察你的训练任务或者执行“nvidia-smi”等命令,几乎是卡顿无法执行,因为内核IO已经阻塞, 无法执行相关GPU命令,只能尝试释放D+进程。
  • 处理方法 执行命令:lsmod | grep nvidia,查看内核中是否残留旧版nvidia,显示如下: nvidia_uvm 634880 8 nvidia_drm 53248 0 nvidia_modeset 790528 1 nvidia_drm nvidia 12312576 86 nvidia_modeset,nvidia_uvm 卸载nvidia相关模块 sudo rmmod nvidia_drm sudo rmmod nvidia_modeset sudo rmmod nvidia_uvm 最后卸载nvidia sudo rmmod nvidia 如果遇到“rmmod: ERROR: Module nvidia is in use”,执行以下命令: sudo lsof /dev/nvidia* 并再次验证: lsmod | grep nvidia 再次执行“nvidia-smi”,显示成功,且是最新安装的NVIDIA驱动。
  • 处理方法 查看nv_peer_mem是否已安装。 dpkg -i | grep peer 若未安装则需要安装,安装方法参考装机指导。 若已安装则进入下一检测项。 查看该软件是否已经加载至内核。 lsmod | grep peer 若没有则需要重新加载至内核,执行如下命令进行加载: /etc/init.d/nv_peer_mem start 如果执行失败,可能是未加载nv_peer_mem.conf至/etc/infiniband/中或nv_peer_mem不在/etc/init.d/中。 若找不到相关文件的问题,可以搜索相关文件在哪里,然后复制到指定目录,例如可执行如下命令: cp /tmp/nvidia-peer-memory-1.3/nv_peer_mem.conf /etc/infiniband/ cp /tmp/nvidia-peer-memory-1.3/debian/tmp/etc/init.d/nv_peer_mem /etc/init.d/
  • 处理方法 在当前安全组的入方向规则中添加一条规则,基本协议选择ICMP协议,详细配置如下表所示,添加规则步骤请参考添加安全组规则。 表1 入方向规则 方向 协议/应用 端口 源地址 入方向 ICMP 全部 0.0.0.0/0 华为 云安全 组支持的协议参考可参考下表。 表2 入方向规则 协议 端口 说明 协议 端口 说明 FTP 21 FTP服务上传和下载文件。 SSH 22 远程连接Linux弹性云服务器。 Telnet 23 使用Telnet协议访问网站。 SMTP 25 SMTP服务器所开放的端口,用于发送邮件。 基于安全考虑,TCP 25端口出方向默认被封禁,申请解封请参考TCP 25端口出方向无法访问时怎么办?。 HTTP 80 使用HTTP协议访问网站。 POP3 110 使用POP3协议接受邮件。 IMAP 143 使用IMAP协议接受邮件。 HTTPS 443 使用HTTPS协议访问网站。 SQL Server 1433 SQL Server的TCP端口,用于供SQL Server对外提供服务。 SQL Server 1434 SQL Server的TCP端口,用于返回SQLServer使用了哪个TCP/IP端口。 Oracle 1521 Oracle通信端口,弹性云服务器上部署了Oracle SQL需要放行的端口。 MySQL 3306 MySQL数据库对外提供服务的端口。 Windows Server Remote Desktop Services 3389 Windows远程桌面服务端口,通过这个端口可以连接Windows弹性云服务器。 代理 8080 8080端口常用于WWW代理服务,实现网页浏览,实现网页浏览。如果您使用8080端口,访问网站或使用代理服务器时,需要在IP地址后面加上:8080。安装Apache Tomcat服务后,默认服务端口为8080。 NetBIOS 137、138、139 NetBIOS协议常被用于Windows文件、打印机共享和Samba。 137、138:UDP端口,通过网上邻居传输文件时使用的端口。 139:通过这个端口进入的连接试图获得NetBIOS/SMB服务。
  • 原因分析 分析EulerOS内核是如何在不知情的情况下升级的: 首先查看当前操作系统内核。 [root@Server-ddff ~]# uname -r 4.18.0-147.5.1.6.h934.eulerosv2r9.x86_64 一般执行如下升级命令,就会导致自动下载和安装高级内核版本。 yum update -y 执行后查看当前可用内核,发现已经新增了内核h998: [root@Server-ddff ~]# [root@Server-ddff ~]# cat /boot/grub2/grub.cfg |grep "menuentry " menuentry 'EulerOS (4.18.0-147.5.1.6.h998.eulerosv2r9.x86_64) 2.0 (SP9x86_64)' --class euleros --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.18.0-147.5. 1.6.h934.eulerosv2r9.x86_64-advanced-f6aefacb-f2d3-4809-b708-6ad0357037f5' { menuentry 'EulerOS (4.18.0-147.5.1.6.h934.eulerosv2r9.x86_64) 2.0 (SP9x86_64)' --class euleros --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.18.0-147.5. 1.6.h934.eulerosv2r9.x86_64-advanced-f6aefacb-f2d3-4809-b708-6ad0357037f5' { menuentry 'EulerOS (0-rescue) 2.0 (SP9x86_64)' --class euleros --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-advanced-f6aefacb-f2d3-4809-b708-6ad 0357037f5' { [root@Server-ddff ~]# 查看假如reboot(尚未reboot)后默认选择的内核版本: [root@Server-ddff ~]# grub2-editenv list saved_entry=EulerOS (4.18.0-147.5.1.6.h998.eulerosv2r9.x86_64) 2.0 (SP9x86_64) boot_success=0 [root@Server-ddff ~]# 发现默认系统内核已经变为h998,reboot后就会生效。 此时若重启那么内核版本就被升级了。
  • 处理方法 下文中假设当前服务器的内核版本是为4.18.0-147.5.1.6.h934.eulerosv2r9.x86_64,介绍如何避免操作系统内核自动升级。 操作系统内核升级生效,必然需要服务器重启, 因此重启reboot前需要查看当前默认选择的内核版本: [root@Server-ddff ~]# grub2-editenv list saved_entry=EulerOS (4.18.0-147.5.1.6.h998.eulerosv2r9.x86_64) 2.0 (SP9x86_64) boot_success=0 [root@Server-ddff ~]# 如上发现reboot后内核为4.18.0-147.5.1.6.h998.eulerosv2r9.x86_64,和当前内核版本h934不一致,则需要重新设置内核版本与当前版本一致。 查看当前内核版本,并且锁定reboot后默认启动的内核版本,执行如下命令: grub2-set-default 'EulerOS (4.18.0-147.5.1.6.h934.eulerosv2r9.x86_64) 2.0 (SP9x86_64)' 执行后查看默认启动的内核版本是否和上述设置的相同: [root@Server-ddff ~]# grub2-editenv list saved_entry=EulerOS (4.18.0-147.5.1.6.h934.eulerosv2r9.x86_64) 2.0 (SP9x86_64) boot_success=0 [root@Server-ddff ~]# 发现和当前内核一致,因此即使reboot也不会更改服务器的内核版本。 若希望升级指定的操作系统内核,也可以执行grub2-set-default进行设置默认启动内核版本。但操作系统内核升级可能带来的问题。例如在操作系统内核4.18.0-147.5.1.6.h934.eulerosv2r9.x86_64 下安装的nvidia-driver-515,由于执行了yum update并reboot服务器, 发现再次执行nvidia命令时报错: [root@Server-ddff ~]# nvidia-smi NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running. [root@Server-ddff ~]# 此时只能安裝nvidia-driver-515以及配套的cuda版本,安装方法可以参考GP Vnt1裸金属服务器EulerOS 2.9安装NVIDIA 515+CUDA 11.7。
  • 解决方案 需要减少容器大小。Notebook容器的大小分为两部分:镜像大小和容器中新安装文件的大小。因此有两种方法来解决该问题: 减少容器中新安装文件的大小 删除用户在Notebook新安装的内容,比如用户在Notebook中下载了很多文件,可以将这些文件删除。这种方法仅适用于除/home/ma-user/work和/cache目录外的其他目录,因为持久化存储的部分(home/ma-user/work目录的内容)不会保存在最终产生的容器镜像中、“/cache”目录下存储的是临时文件,不占用容器空间。 如果没有文件可以删除,或者不清楚哪些可以删除,那么可以使用相同的镜像重新创建一个Notebook,使用新建的Notebook时,注意减少软件包的安装或文件的下载等操作,也可以减少容器大小; 减少镜像文件的大小 如果无法确认哪些包或文件可以不安装,那么可以选择一个较小的镜像来重建Notebook,然后在其中再安装需要的软件或文件。目前公共镜像中占用空间最小的是mindspore1.7.0-py3.7-ubuntu18.04。
  • 问题现象 在Notebook里保存镜像时报错“there are processes in 'D' status, please check process status using 'ps -aux' and kill all the 'D' status processes”。 在Notebook里保存镜像时报错“Buildimge,False,Error response from daemon: Cannot pause container xxx”。
  • 问题现象 输入输出目录不存在,报如下错误 "error_code": "ModelArts.3551", "error_msg": "OBS path xxxx does not exist." 当访问目录权限不足时,报如下错误 "error_code": "ModelArts.3567", "error_msg": "OBS error occurs because Access Denied."
  • 处理方法 ModelArts.3551:到obs检查输入数据目录是否存在,如果不存在,请按照实际需要创建obs目录;如果检查发现目录存在,但依然报同样的错,可以提工单申请技术支持 ModelArts.3567:用户只能访问自己账号下的obs目录,ModelArts在读取其他用户obs下的数据时,需要用户委托权限,没有创建委托,就没有权限使用其他用户obs中的数据。 登录ModelArts控制台,管理控制台,在左侧导航栏中选择“权限管理”,单击“查看权限”,检查是否配置了obs的委托权限。 图1 查看权限 如果检查后已经存在委托,但是仍然无法访问,可以提工单寻求技术支持。
  • 问题现象 通过API接口查询模型详情,model_name返回值出现乱码。例如model_name为query_vec_recall_model,但是api接口返回结果是query_vec_recall_model_b。 [2022/08/12 00:03:25 GMT+0800][INFO]Execute user name is xxx. user id is 04ef6da71400125321f15c01f1d1xxxx, job id is 6ABxxx [2022/08/12 00:03:25 GMT+0800][INFO]Request url is https://modelarts.xxx.xxx.com/v1/88exxxta/models?model_name=query_vec_recall_model [2022/08/12 00:03:25 GMT+0800][INFO]Request query param is nul [2022/08/12 00:03:25 GMT+0800][INFO]Request method is GET [2022/08/12 00:03:25 GMT+0800][INFO]Request header is {REST_API_MARK=REST API MARK, User-Agent=Dayu} [2022/08/12 00:03:26 GMT+0800][INFO]Response body: {"count":3"total_count":0"models":[{"model id":"ca12cbdb-e7eb-4084-9ea3-36c0bd6axxxx","model name":"query_vec_recall_model_b","model_version":"0.0.1","model_type":"TensorFlow"......
  • 解决方案 查看“/home/ma-user/log/”下以“kernelgateway”开头的最新日志文件,搜索“Starting kernel”附近的日志。若看到如下类似的堆栈,可看到是因为用户工作目录下的“code.py”和创建kernel依赖的import code文件名冲突: 重命名当前工作目录下和创建kernel依赖的库文件冲突的文件名称。 常见容易冲突的文件:code.py、select.py。
  • 问题现象 使用AI市场物体检测YOLOv3_Darknet53算法进行训练,将数据集切分后进行部署在线服务报错,日志如下:TypeError: Cannot interpret feed_dict key as Tensor: The name 'images:0' refers to a Tensor which does not exist. The operation, 'images', does not exist in the graph。
  • 处理方法 如果切分了数据集,需要删除推理代码中“Yolov3Service”类中的如下代码: self.model_inputs = {'images': 'images:0'} self.model_outputs = {'feat_1': 'feat_1:0', 'feat_2': 'feat_2:0', 'feat_3': 'feat_3:0'} 不做数据集切分操作。如果选择未切分的数据集,算法将做纯训练场景;
  • 处理方法 重新构建镜像。 在构建镜像的dockerfile文件中安装pip依赖包,例如安装Flask依赖包。 # 配置华为云的源,安装 python、python3-pip 和 Flask RUN cp -a /etc/apt/sources.list /etc/apt/sources.list.bak && \ sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.comxxx@g" /etc/apt/sources.list && \ sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.comxxx@g" /etc/apt/sources.list && \ apt-get update && \ apt-get install -y python3 python3-pip && \ pip3 install --trusted-host https://repo.huaweicloud.comxxx -i https://repo.huaweicloud.comxxx/repository/pypi/simple Flask
共100000条