云服务器内容精选

  • 操作步骤 卸载原有版本的NVIDIA和CUDA。 查看使用apt包管理方式安装的nvidia软件包, 执行如下命令实现查看和卸载。 dpkg -l | grep nvidia dpkg -l | grep cuda sudo apt-get autoremove --purge nvidia-* sudo apt-get autoremove --purge cuda-* 以上命令可以卸载nvidia-driver、cuda、nvidia-fabricmanager、nvidia-peer-memory四个软件。 但是如果nvidia和cuda是使用runfile(local)方式安装的,那么需要在下一步中再次卸载。 若使用nvidia run包直接安装的驱动,需要找到对应的卸载命令。 sudo /usr/bin/nvidia-uninstall sudo /usr/local/cuda-11.7/bin/cuda-uninstaller 验证是否卸载完成。 nvidia-smi nvcc -V dpkg -l | grep peer dpkg -l | grep fabricmanager dpkg -l | grep nvidia 卸载nccl相关软件。 由于nccl和cuda是配套关系, 当cuda版本从12.0更换为11.7的时候,libnccl和libnccl-dev都需要更换为和cuda11.7匹配的版本。因此必须卸载掉原版本。 sudo apt-get autoremove --purge *nccl* 删除原nccl-test的编译后文件。 由于nccl-test make编译也是基于当前cuda12.0版本的。 当cuda版本更换后,需要重新编译, 因此删除它。默认该文件在/root/nccl-tests直接删除即可。 从内核中卸载nvidia相关的所有进程。 在安装nvidia驱动时,必须把内核中加载nvidia相关的进程卸载,否则会失败。具体操作请参考卸载nvidia驱动。 若遇到加载到内核的nvidia进程循环依赖,无法从内核中卸载nvidia,此时执行reboot命令重启服务器即可。 安装NVIDIA-515和CUDA-11.7配套软件环境。具体步骤请参考安装nvidia。
  • 使用GPU A系列裸金属服务器有哪些注意事项? 使用华为云A系列裸金属服务器时有如下注意事项: nvidia-fabricmanager版本号必须和nvidia-driver版本号保持一致,可参考安装nvidia-fabricmanag方法。 NCCL必须和CUDA版本相匹配,可单击此处可查看配套关系和安装方法。 使用该裸金属服务器制作 自定义镜像 时, 必须清除残留文件,请参考清理文件。 父主题: Lite Server
  • Atlas 800训练服务器的网卡配置问题 机头网卡配置是什么? 有以下两类网卡: 四个2*100GE网卡,为RoCE网卡,插在NPU板。 一个4*25GE/10GE,为Hi1822网卡,插在主板上的。 ifconfig能看到的网卡信息吗 能看到主板上的网卡信息,即VPC分配的私有IP。若要看RoCE网卡的命令需要执行“hccn_tools”命令查看,参考Atlas 800 训练服务器 1.0.11 HCCN Tool接口参考中的指导。 NPU上的网卡在哪里可以看到, 会健康检查吗? 8*NPU的网卡为机头上配置的四个2*100GE网卡。华为云有网卡健康状态监控机制。
  • 场景描述 在Ubuntu 20.04每次内核升级后,系统需要重新启动以加载新内核。如果您已经安装了自动更新功能,则系统将自动下载和安装可用的更新,这可能导致系统在不经意间被重启;如果使用的软件依赖于特定版本的内核,那么当系统自动更新到新的内核版本时,可能会出现兼容性问题。在使用Ubuntu20.04时,建议手动控制内核的更新。 禁用自动更新可能会导致您的系统变得不安全,因为您需要手动安装重要的安全补丁。在禁用自动更新之前,请确保您已了解其中的风险。
  • 操作指导 检查当前内核版本。 uname -r 升级内核 apt-get install linux-headers-5.4.0-144-generic linux-image-5.4.0-144-generic grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg reboot 第一条命令为安装Linux内核头文件和内核镜像,其中版本为5.4.0-144-generic。 第二条命令为重新生成GRUB引导程序的配置文件,用于在启动计算机时加载操作系统, 命令将使用新安装的内核镜像更新GRUB的配置文件,以便在下次启动时加载新的内核。
  • 操作步骤 使用以下脚本测得GPU服务器内NVLINK带宽性能。 import torch import numpy as np device = torch.device("cuda") n_gpus = 8 data_size = 1024 * 1024 * 1024 # 1 GB speed_matrix = np.zeros((n_gpus, n_gpus)) for i in range(n_gpus): for j in range(i + 1, n_gpus): print(f"Testing communication between GPU {i} and GPU {j}...") with torch.cuda.device(i): data = torch.randn(data_size, device=device) torch.cuda.synchronize() with torch.cuda.device(j): result = torch.randn(data_size, device=device) torch.cuda.synchronize() with torch.cuda.device(i): start = torch.cuda.Event(enable_timing=True) end = torch.cuda.Event(enable_timing=True) start.record() result.copy_(data) end.record() torch.cuda.synchronize() elapsed_time_ms = start.elapsed_time(end) transfer_rate = data_size / elapsed_time_ms * 1000 * 8 / 1e9 speed_matrix[i][j] = transfer_rate speed_matrix[j][i] = transfer_rate print(speed_matrix) 以Ant8 GPU裸金属服务器为例, 其理论GPU卡间带宽为:NVIDIA*NVLink*Bridge for 2GPUS: 400GB/s。使用上述测试脚本测得带宽性能进行如下分析。 正常模式-NVLINK全互通,带宽约为370GB。基本符合预期,且证明Ant GPU裸金属服务器内部GPU间确实走NVLINK模式,且完全互联。 图2 正常模式带宽性能 异常模式-NVLINK部分互通,出现带宽波动较大的情况。如下图中GPU0和GPU4之间带宽远低于理论值, 存在问题。 图3 异常模式带宽性能 出现这种现象, 可尝试重装nvidia/cuda/nvidia-fabricmanager, 重装后再测试又恢复到了正式模式,GPU0和GPU4之间带宽恢复到370GB/s。 可能原因如下,仅供参考: 驱动程序问题:可能是由于驱动程序没有正确安装或配置,导致NVLINK带宽受限。重新安装nvidia驱动、CUDA和nvidia-fabricmanager等软件后,驱动程序可能已经正确配置,从而解决了这个问题。 硬件问题:如果GPU之间的NVLINK连接存在硬件故障,那么这可能会导致带宽受限。重新安装软件后,重启系统,可能触发了某种硬件自检或修复机制,从而恢复了正常的带宽。 系统负载问题:最初测试GPU卡间带宽时,可能存在其他系统负载,如进程、服务等,这些负载会占用一部分网络带宽,从而影响NVLINK带宽的表现。重新安装软件后,这些负载可能被清除,从而使NVLINK带宽恢复正常。
  • 如何删除预置镜像中不需要的工具 预置的基础镜像中存在cpp、gcc等调试/编译工具,如果您不需要使用这些工具,可以通过运行脚本删除。 创建一个run.sh脚本文件,文件中的代码内容如下。然后在容器中执行sh run.sh命令运行脚本。 #!/bin/bash delete_sniff_compiler() { echo "[+][001] start remove debug tools" rm -rf /usr/bin/readelf rm -rf /usr/bin/gcc-nm #readelf根据需要决定是否删除 #rm -rf /usr/local/Ascend/ascend-toolkit/latest/toolkit/toolchain/hcc/aarch64-target-linux-gnu/bin/readelf rm -rf /usr/bin/gcc rm -rf /usr/bin/cpp rm -rf /usr/bin/objdump echo "[+] complete" } hardening_ssh_config() { sed -i "s/Subsystem/#Subsystem/g" /etc/ssh/sshd_config #关闭sftp服务 sed -i "s/^.MaxAuthTries.*/MaxAuthTries 6/g" /etc/ssh/sshd_config #开启防暴力机制 sed -i "s/^.ClientAliveInterval.*/ClientAliveInterval 300/g" /etc/ssh/sshd_config #开启会话超时机制 systemctl restart /etc/ssh/sshd_config chmod 600 /home/ma-user/.ssh/id_rsa* #收缩公私钥文件权限 chmod 600 /home/ma-user/etc/ssh_host_rsa_key* #收缩公私钥文件权限 sed -i "s/ma-user/#ma-user/g" /etc/sudoers #不允许ma-user用户免密执行所有命令 } delete_sniff_compiler hardening_ssh_config Ascend镜像中存在hcc编译器,具体说明请参见昇腾社区提供的HCC编译器说明文档。 父主题: 一般性问题
  • 解决措施 一、Region等信息配置不正确 配置正确的Region、Projects、Endpoint信息。 例如:Endpoint配置不正确也会导致认证失败。 错误示例:Endpoint参数前面带了https,正确的配置中不需要有https。 图1 配置ToolKit 二、未配置hosts文件或者hosts文件信息配置不正确 在本地PC的hosts文件中配置 域名 和IP地址的对应关系。 三、网络代理设置 如果用户使用的网络有代理设置要求,请检查代理配置是否正确。也可以使用手机热点网络连接进行测试排查。 检查代理配置是否正确。 图2 PyCharm网络代理设置 四、AK/SK不正确 获取到的AK/SK信息不正确,请确认获取到正确的AK/SK信息再进行尝试,具体请参考创建访问密钥(AK和SK)。 五、电脑时间设置错误 请设置电脑时间为正确时间。
  • 如何查看PyCharm ToolKit的错误日志 PyCharm ToolKit的错误日志记录在PyCharm的“idea.log”中,以Windows为例,该文件的路径在“C:\Users\xxx\.IdeaIC2019.2\system\log\idea.log”。 在日志中搜索“modelarts”,可以查看所有和PyCharm ToolKit相关的日志。 父主题: PyCharm Toolkit使用
  • 提交训练作业报错“Invalid OBS path” 当运行训练作业时,出现“Invalid OBS path”错误。 图1 训练作业报错 该问题可以通过以下方法排查: 如果是首次使用ModelArts的新用户,需要登录ModelArts管理控制台,在权限管理页面完成访问授权配置,推荐使用委托授权的方式。完成访问授权配置后,再次提交作业即可。 请排查所填写的Data Path in OBS是否存在,文件夹下是否有数据文件,如果没有,需要在OBS创建目录并上传训练数据到该目录。 父主题: PyCharm Toolkit使用
  • 导入AI应用对于镜像大小的限制 ModelArts部署使用的是容器化部署,容器运行时有空间大小限制,当用户的模型文件或者其他自定义文件,系统文件超过容器引擎空间大小时,会提示镜像内空间不足。 当前,公共资源池容器引擎空间的大小最大支持50G,专属资源池容器引擎空间的默认为50G,专属资源池容器引擎空间可在创建资源池时自定义设置,设置专属资源池容器引擎空间不会造成额外费用增加。 如果使用的是OBS导入或者训练导入,则包含基础镜像、模型文件、代码、数据文件和下载安装软件包的大小总和。 如果使用的是自定义镜像导入,则包含解压后镜像和镜像下载文件的大小总和。 父主题: 导入模型
  • Notebook实例出现“Server Connection Error”错误 在Terminal中执行命令时,出现错误如图1 报错信息截图所示,此问题可能由于CPU/GPU或显存等占满,可在JupyterLab界面下方查看内存使用情况,如图2所示。 此时Kernel会自动重启,存储在“/home/ma-user/work”目录下的数据会被保留,其他目录的数据均不会保留。 图1 报错信息截图 图2 查看内存使用情况 父主题: Notebook实例常见错误
  • 操作步骤 创建conda env。 在Notebook的Terminal中执行如下命令。其中,my-env是虚拟环境名称,用户可自定义。conda详细参数可参考conda官网。 conda create --quiet --yes -n my-env python=3.6.5 创建完成后,执行conda info --envs命令查看现有的虚拟环境列表,可以看到my-env虚拟环境: sh-4.4$conda info --envs # conda environments: # base * /home/ma-user/anaconda3 TensorFlow-2.1 /home/ma-user/anaconda3/envs/TensorFlow-2.1 my-env /home/ma-user/anaconda3/envs/my-env python-3.7.10 /home/ma-user/anaconda3/envs/python-3.7.10 /opt/conda/envs/my-env 执行如下命令进入conda env。 source /home/ma-user/anaconda3/bin/activate /home/ma-user/anaconda3/envs/my-env 执行如下命令在my env里安装如下依赖包。 pip install jupyter pip install jupyter_core==5.3.0 pip install jupyter_client==8.2.0 pip install ipython==8.10.0 pip install ipykernel==6.23.1 执行下述命令添加虚拟环境为IPython Kernel。 其中--name的值可自定义。 python3 -m ipykernel install --user --name "my-py3-tensorflow-env" 执行完毕后,可以看到下述提示信息。 (my-env) sh-4.4$python3 -m ipykernel install --user --name "my-py3-tensorflow-env" Installed kernelspec my-py3-tensorflow-env in /home/ma-user/.local/share/jupyter/kernels/my-py3-tensorflow-env 自定义虚拟环境Kernel的环境变量。 执行cat /home/ma-user/.local/share/jupyter/kernels/my-py3-tensorflow-env/kernel.json,可以看到默认配置如下: { "argv": [ "/home/ma-user/anaconda3/envs/my-env/bin/python3", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "display_name": "my-py3-tensorflow-env", "language": "python" } 按需添加env字段的值,可参考下述配置。其中,PATH中增加了该虚拟环境python包所在路径: { "argv": [ "/home/ma-user/anaconda3/envs/my-env/bin/python3", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "display_name": "my-py3-tensorflow-env", "language": "python", "env": { "PATH": "/home/ma-user/anaconda3/envs/my-env/bin:/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/ma-user/modelarts/ma-cli/bin", "http_proxy": "http://proxy-notebook.modelarts-dev-proxy.com:8083", "https_proxy": "http://proxy-notebook.modelarts-dev-proxy.com:8083", "ftp_proxy": "http://proxy-notebook.modelarts-dev-proxy.com:8083", "HTTP_PROXY": "http://proxy-notebook.modelarts-dev-proxy.com:8083", "HTTPS_PROXY": "http://proxy-notebook.modelarts-dev-proxy.com:8083", "FTP_PROXY": "http://proxy-notebook.modelarts-dev-proxy.com:8083" } } 进入虚拟环境的IPython Kernel。 刷新JupyterLab页面,可以看到自定义的虚拟环境Kernel。如下所示: 单击my-py3-tensorflow-env图标,验证是否为当前环境,如下所示: 清理环境。 删除虚拟环境的IPython Kernel。 jupyter kernelspec uninstall my-py3-tensorflow-env 删除虚拟环境。 conda env remove -n my-env
  • 预测分析对数据集的要求 训练数据: 训练数据列数一致,总数据量不少于100条不同数据(有一个特征取值不同,即视为不同数据)。 训练数据列内容不能有时间戳格式(如:yy-mm-dd、yyyy-mm-dd等)的数据。 如果某一列的取值只有一种,会被视为无效列。请确保标签列的取值至少有两个且无数据缺失。 标签列指的是在训练任务中被指定为训练目标的列,即最终通过该数据集训练得到模型时的输出(预测项)。 除标签列外数据集中至少还应包含两个有效特征列(列的取值至少有两个且数据缺失比例低于10%)。 当前由于特征筛选算法限制,预测数据列建议放在数据集最后一列,否则可能导致训练失败。
  • 物体检测对数据集的要求 文件名规范,不能有中文,不能有+、空格、制表符。 保证图片质量:不能有损坏的图片;目前支持的格式包括jpg、jpeg、bmp、png。 不要把明显不同的多个任务数据放在同一个数据集内。 为了保证模型的预测准确度,训练样本跟真实使用场景尽量相似。 为保证模型的泛化能力,数据集尽量覆盖可能出现的各种场景。 物体检测数据集中,如果标注框坐标超过图片,将无法识别该图片为已标注图片。 在上传数据时,请选择非加密桶进行上传,否则会由于加密桶无法解密导致后期的训练失败。 用于训练的图片,至少有1种以上的分类,每种分类的图片数不少50张。