华为云用户手册

  • 配置外网访问(EIP) 弹性公网IP(Elastic IP,简称EIP)提供独立的公网IP资源,包括公网IP地址与公网出口带宽服务。可以与弹性云服务器、裸金属服务器、虚拟IP、弹性负载均衡、NAT网关等资源灵活地绑定及解绑。集群资源绑定EIP后,外网用户可以通过EIP访问集群资源中的k8s master。 图1 外网访问(EIP) 为集群资源申请并绑定弹性公网IP(EIP),具体操作请参见为弹性云服务器申请和绑定弹性公网IP。 通过SSH方式远程访问集群资源,包括2中方式,密码方式或密钥方式,二选一即可。 通过SSH密钥方式登录集群资源,具体操作请参见SSH密钥登录方式。 通过SSH密码方式登录集群资源,具体操作请参见SSH密码登录方式。 父主题: 网络
  • 处理方法 该问题是由于docker容器sshd服务密钥缺失、sshd守护进程无法加载SSH主机密钥导致。在容器的/etc/ssh目录缺少ssh_host_rsa_key、ssh_host_ecdsa_key、ssh_host_ed25519_key等文件。 按照以下步骤执行,即可成功配置并启动sshd服务。 生成相关ssh key。 执行如下三条命令,生成sshd服务所需的主机密钥。 ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '' ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N '' 此时/etc/ssh目录下应该存在如下文件。 图2 目录文件 修改sshd_config文件 vim /etc/ssh/sshd_config #Port 22 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: 将上面四行改为下方内容,监听所有的ipv4和ipv6地址: Port 22 #AddressFamily any ListenAddress 0.0.0.0 ListenAddress :: 重新启动ssh服务。 /usr/sbin/sshd 免密互联。以2台Snt9B裸金属服务器为例,实现两台机器之间互相免密SSH登录,它们的VPC IP分别为: 172.16.0.67 server1 172.16.0.92 server2 客户端生成秘钥。 若想上server1免密连接上server2,需要在server1上生成私钥和公钥,执行如下命令: ssh-keygen ssh-keygen默认使用RSA算法,长度为2048位,执行完后会在用户目录下的.ssh文件夹创建rsa密钥类型的一个公钥和一个私钥,如下图。 图3 .ssh文件夹 传输公钥。 执行如下命令,将server1的公钥上传到server2的root用户下,会在server2的/root/.ssh目录下生成一个authorized_keys文件 ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.0.92 在server2执行 vim authorized_keys 可以看到server1的公钥已经写如在authorized_keys文件中,就可以实现server1免密SSH登录server2。 测试免密连接。 如下图所示,server1已经可以免密SSH登录server2了。按照上述步骤同样的方式,将server2的公钥发给server1,即可实现server2免密ssh登录server1,从而实现免密互联。 图4 server1免密SSH登录server2 常见问题: sshd启动时报错Loaded : error(Reason: No such file or directory) 该报错说明当前容器中未安装ssh服务,执行如下命令安装: yum install sshd // centos 系统 apt-get install sshd // ubuntu系统 ssh互联时报错Bad owner or permissions on xxx(e.g. /root/.ssh/config) 该报错是权限问题导致,要保证报错显示的路径从.ssh目录开始权限均为600。例如:Bad owner or permissions on /root/.ssh/config。需要执行: chmod 600 /root/.ssh chmod 600 /root/.ssh/config 配置免密互通后,调用ssh仍需要输入密码。 要保证调用ssh连接时的用户和.ssh目录以及.ssh/authorized_keys的用户名和用户组保持一致。例如,如果用户是root,那么用户名和用户组都要为root。
  • 问题现象 在使用华为云Snt9B裸金属服务器多机多docker容器进行SSH免密互通时,发现免密互通失败。报错为: error: Could not load host key: /etc/ssh/ssh_host_rsa_key error: Could not load host key: /etc/ssh/ssh_host_dsa_key error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key 在容器的/etc/ssh目录只有如下图所示的文件。 图1 目录内容
  • GP Ant8裸金属服务器支持的镜像详情 镜像1:Ubuntu20.04 With Nvidia Driver 525 镜像名称:Ubuntu 20.04 x86 64bit SDI3 for Ant8 BareMetal with RoCE and NVIDIA-525 CUDA-12.0 表1 镜像详情 软件类型 版本详情 操作系统 Ubuntu 20.04 server 64bit 内核版本 5.4.0-144-generic 架构类型 x86 nvidia-driver 525.105.17 nvidia-cuda 12.0 nvidia-container-toolkit 1.13.3-1 nvidia-fabricmanager 525.105.17 mlnx-ofed-linux 5.8-2.0.3.0-ubuntu20.04-x86_64 nvidia-peer-memory-dkms 1.2-0 libnccl2 2.18.1 nccl-test v.2.13.6 docker 20.10.23 RoCE路由配置 支持 镜像2:Ubuntu20.04 With Nvidia Driver 515 镜像名称:Ubuntu 20.04 x86 64bit SDI3 for Ant8 BareMetal with RoCE and NVIDIA-515 CUDA-11.7 表2 镜像详情 软件类型 版本详情 操作系统 Ubuntu 20.04 server 64bit 内核版本 5.4.0-144-generic 架构类型 x86 nvidia-driver 515.105.01 nvidia-cuda 11.7 nvidia-container-toolkit 1.13.3-1 nvidia-fabricmanager 525.105.17 mlnx-ofed-linux 5.8-2.0.3.0-ubuntu20.04-x86_64 nvidia-peer-memory-dkms 1.2-0 libnccl2 2.14.3 nccl-test v.2.13.6 docker 20.10.23 RoCE路由配置 支持 镜像3:Ubuntu20.04 纯净版 镜像名称:Ubuntu 20.04 x86 64bit SDI3 for Ant8 BareMetal 表3 镜像详情 软件类型 版本详情 操作系统 Ubuntu 20.04 server 64bit 内核版本 5.4.0-42-generic 架构类型 x86 mlnx-ofed-linux 5.3-1.0.0.1-all RoCE路由配置 不支持自动配置,需创建后手动配置。 镜像4:EulerOS纯净版 镜像名称:EulerOS2.10 x86 64bit sdi3 for Ant1 BareMetal 表4 镜像详情 软件类型 版本详情 操作系统 EulerOS 2.10 64bit 架构类型 x86 RoCE路由配置 不支持自动配置,需创建后手动配置。 父主题: 镜像介绍
  • 配置流程 图1 DevServer资源配置流程图 表1 Server资源配置流程 配置顺序 配置分类 配置任务 使用场景说明 是否必选操作 1 网络 单EIP实现多节点的SSH登录和外网访问 指导一个租户VPC配置一个EIP,通过NAT网关配置进行EIP资源共享,实现该VPC下的所有Server资源均可以通过该EIP进行公网访问和SSH登录。 必选。(二选一) 单EIP绑定裸金属服务器 指导单EIP如何绑定在一台裸金属服务器上实现公网访问和SSH登录。 裸金属服务器支持IPV6解决方案 指导配置裸金属服务器实现支持IPV6。 可选。 2 存储 裸金属服务器存储指南 指导如何选择和使用存储服务。 必选。 3 环境配置 环境配置 指导如何在Snt9b裸金属服务器上,进行磁盘合并挂载、安装docker等环境配置。 必选。 4 监控 华为云CES服务官方监控方案 指导如何使用华为云BMS+CES联合提供的裸金属服务器的指标监控方案。 可选。(二选一) 父主题: DevServer资源配置
  • 1、GPU环境安装指南 安装NVIDIA驱动。 wget https://us.download.nvidia.cn/XFree86/Linux-x86_64/470.182.03/NVIDIA-Linux-x86_64-470.182.03.run chmod +x NVIDIA-Linux-x86_64-470.182.03.run ./NVIDIA-Linux-x86_64-470.182.03.run 安装CUDA。 不能选择Driver,否则会覆盖已安装的NVIDIA驱动。 wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda_11.3.1_465.19.01_linux.run chmod +x cuda_11.3.1_465.19.01_linux.run ./cuda_11.3.1_465.19.01_linux.run --toolkit --samples --silent 安装nvidia-fabricmanager。 Ant系列GPU支持NvLink & NvSwitch,若您使用多GPU卡的机型,需额外安装与驱动版本对应的nvidia-fabricmanager服务使GPU卡间能够互联,否则可能无法正常使用GPU实例。 fabricmanager版本一定要和nvidia驱动版本必须保持一致。 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/nvidia-fabricmanager-470_470.182.03-1_amd64.deb sudo dpkg -i ./nvidia-fabricmanager-470_470.182.03-1_amd64.deb 验证fabricmanager安装结果。 验证驱动安装结果、启动fabricmanager服务并查看状态。 nvidia-smi -pm 1 nvidia-smi systemctl enable nvidia-fabricmanager systemctl start nvidia-fabricmanager systemctl status nvidia-fabricmanager 汇总安装脚本。 在GP Ant8型实例中, 使用bash一键执行如下脚本,实现快速安装GPU环境。 wget https://us.download.nvidia.cn/XFree86/Linux-x86_64/470.182.03/NVIDIA-Linux-x86_64-470.182.03.run chmod +x NVIDIA-Linux-x86_64-470.182.03.run ./NVIDIA-Linux-x86_64-470.182.03.run --silent --no-questions wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda_11.3.1_465.19.01_linux.run chmod +x cuda_11.3.1_465.19.01_linux.run ./cuda_11.3.1_465.19.01_linux.run --toolkit --samples --silent version=470.182.03 main_version=$(echo $version | awk -F '.' '{print $1}') apt-get update apt-get -y install nvidia-fabricmanager-${main_version}=${version}-*
  • 2、pytorch2.0安装和CUDA验证指南 PyTorch2.0所需环境为Python3.10, 安装配置miniconda环境。 miniconda安装并创建alpha环境。 wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.1.0-1-Linux-x86_64.sh chmod 750 Miniconda3-py310_23.1.0-1-Linux-x86_64.sh bash Miniconda3-py310_23.1.0-1-Linux-x86_64.sh -b -p /home/miniconda export PATH=/home/miniconda/bin:$PATH conda create --quiet --yes -n alpha python=3.10 安装pytorch2.0并验证cuda状态。 在alpha环境下安装torch2.0,使用清华PIP源完成。 source activate alpha pip install torch==2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple python 验证torch与cuda的安装状态,输出为True即为正常。 import torch print(torch.cuda.is_available())
  • Python封装API方式切换操作系统 # -*- coding: UTF-8 -*- import requests import json import time import requests.packages.urllib3.exceptions from urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(InsecureRequestWarning) class ServerOperation(object): ################################ IAM认证API################################################# def __init__(self, account, password, region_name, username=None, project_id=None): """ :param username: if IAM user,here is small user, else big user :param account: account big big user :param password: account :param region_name: """ self.account = account self.username = username self.password = password self.region_name = region_name self.project_id = project_id self.ma_endpoint = "https://modelarts.{}.myhuaweicloud.com".format(region_name) self.service_endpoint = "https://bms.{}.myhuaweicloud.com".format(region_name) self.iam_endpoint = "https://iam.{}.myhuaweicloud.com".format(region_name) self.headers = {"Content-Type": "application/json", "X-Auth-Token": self.get_project_token_by_account(self.iam_endpoint)} def get_project_token_by_account(self, iam_endpoint): body = { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": self.username if self.username else self.account, "password": self.password, "domain": { "name": self.account } } } }, "scope": { "project": { "name": self.region_name } } } } headers = { "Content-Type": "application/json" } import json url = iam_endpoint + "/v3/auth/tokens" response = requests.post(url, headers=headers, data=json.dumps(body), verify=True) token = (response.headers['X-Subject-Token']) return token def change_os(self, server_id): url = "{}/v1/{}/baremetalservers/{}/changeos".format(self.service_endpoint, self.project_id, server_id) print(url) body = { "os-change": { "adminpass": "@DevServer", "imageid": "40d88eea-6e41-418a-ad6c-c177fe1876b8" } } response = requests.post(url, headers=self.headers, data=json.dumps(body), verify=False) print(json.dumps(response.json(), indent=1)) return response.json() if __name__ == '__main__': # 调用API前置准备,初始化认证鉴权信息 server = ServerOperation(username="xxx", account="xxx", password="xxx", project_id="xxx", region_name="cn-north-4") server.change_os(server_id="0c84bb62-35bd-4e1c-ba08-a3a686bc5097")
  • 使用BMS Go SDK的方式切换操作系统 package main import ( "fmt" "os" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" bms "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/bms/v1" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/bms/v1/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/bms/v1/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 := bms.NewBmsClient( bms.BmsClientBuilder(). WithRegion(region.ValueOf("cn-north-4")). WithCredential(auth). Build()) keyname := "KeyPair-name" userdata := "aGVsbG8gd29ybGQsIHdlbGNvbWUgdG8gam9pbiB0aGUgY29uZmVyZW5jZQ==" request := &model.ChangeBaremetalServerOsRequest{ ServerId: "****input your bms instance id****", Body: &model.OsChangeReq{ OsChange: &model.OsChange{ Keyname: &keyname, Imageid: "****input your ims image id****", Metadata: &model.MetadataInstall{ UserData: &userdata, }, }, }, } response, err := client.ChangeBaremetalServerOs(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } }
  • 处理方法 执行命令: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驱动。
  • 处理方法 在当前安全组的入方向规则中添加一条规则,基本协议选择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服务。
  • 问题现象 弹性文件服务(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-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+进程。
  • 使用前须知 ModelArts Lite DevServer存在以下使用限制: 切换或者重置操作系统后,ModelArts Lite DevServer服务器的EVS系统盘将不支持扩容 服务器在进行过“切换或者重置操作系统”操作后,EVS系统盘ID发生变化,和下单时订单中的EVS ID已经不一致, 因此EVS系统盘无法扩容,并显示信息:"当前订单已到期,无法进行扩容操作,请续订"。建议挂载数据盘EVS或挂载SFS盘等方式进行存储扩容。 ModelArts Lite DevServer裸金属服务器操作系统升级风险 ModelArts Lite DevServer裸金属服务器,如果升级操作系统内核或者驱动,很可能导致驱动和内核版本不兼容,从而导致OS无法启动,或者基本功能不可用。如果需要升级,请联系华为云技术支持。相关高危命令如:apt-get upgrade。 父主题: DevServer资源配置
  • 操作步骤 替换apt源。 sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list sudo apt update 安装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。 # run包安装 wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run chmod +x cuda_11.7.0_515.43.04_linux.run ./cuda_11.7.0_515.43.04_linux.run --toolkit --samples --silent 安装nccl。 nccl安装可参考NCCL Documentation。 nccl和cuda版本的配套关系和安装方法参考NCL Downloads。 本文使用cuda版本是11.7,因此安装nccl的命令为: wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb sudo dpkg -i cuda-keyring_1.0-1_all.deb sudo apt update sudo apt install libnccl2=2.14.3-1+cuda11.7 libnccl-dev=2.14.3-1+cuda11.7 安装完成后可以查看: 图1 查看nccl 安装nvidia-fabricmanager。 nvidia-fabricmanager必须和nvidia driver版本保持一致 version=515.105.01 main_version=$(echo $version | awk -F '.' '{print $1}') apt-get update apt-get -y install nvidia-fabricmanager-${main_version}=${version}-* 验证驱动安装结果:启动fabricmanager服务并查看状态是否为“RUNNING”。 nvidia-smi -pm 1 nvidia-smi systemctl enable nvidia-fabricmanager systemctl start nvidia-fabricmanager systemctl status nvidia-fabricmanager 安装nv-peer-memory。 git clone https://github.com/Mellanox/nv_peer_memory.git cd ./nv_peer_memory ./build_module.sh cd /tmp tar xzf /tmp/nvidia-peer-memory_1.3.orig.tar.gz cd nvidia-peer-memory-1.3 dpkg-buildpackage -us -uc dpkg -i ../nvidia-peer-memory-dkms_1.2-0_all.deb nv_peer_mem工作在linux内核态,安装完成后需要看是否加载到内核,通过执行“lsmod | grep peer”查看是否加载。 如果git clone拉不下来代码,可能需要先设置下git的配置: git config --global core.compression -1 export GIT_SSL_NO_VERIFY=1 git config --global http.sslVerify false git config --global http.postBuffer 10524288000 git config --global http.lowSpeedLimit 1000 git config --global http.lowSpeedTime 1800 如果安装完成后lsmod看不到nv-peer-memory,可能是由于ib驱动版本过低导致,此时需要升级ib驱动,升级命令: wget https://content.mellanox.com/ofed/MLNX_OFED-5.4-3.6.8.1/MLNX_OFED_LINUX-5.4-3.6.8.1-ubuntu20.04-x86_64.tgz tar -zxvf MLNX_OFED_LINUX-5.4-3.6.8.1-ubuntu20.04-x86_64.tgz cd MLNX_OFED_LINUX-5.4-3.6.8.1-ubuntu20.04-x86_64 apt-get install -y python3 gcc quilt build-essential bzip2 dh-python pkg-config dh-autoreconf python3-distutils debhelper make ./mlnxofedinstall --add-kernel-support 如果想安装其它更高版本的ib驱动,请参考Linux InfiniBand Drivers。比如要安装MLNX_OFED-5.8-2.0.3.0 (当前最新版本),则命令为: wget https://content.mellanox.com/ofed/MLNX_OFED-5.8-2.0.3.0/MLNX_OFED_LINUX-5.8-2.0.3.0-ubuntu20.04-x86_64.tgz tar -zxvf MLNX_OFED_LINUX-5.8-2.0.3.0-ubuntu20.04-x86_64.tgz cd MLNX_OFED_LINUX-5.8-2.0.3.0-ubuntu20.04-x86_64 apt-get install -y python3 gcc quilt build-essential bzip2 dh-python pkg-config dh-autoreconf python3-distutils debhelper make ./mlnxofedinstall --add-kernel-support 安装完nv_peer_mem, 如果想查看其状态可以输入如下指令: /etc/init.d/nv_peer_mem/ status 如果发现没有此文件,则可能安装的时候没有默认拷贝过来,需要拷贝即可: 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/ 设置环境变量。 MPI路径版本需要匹配,可以通过“ls /usr/mpi/gcc/”查看openmpi的具体版本。 # 加入到~/.bashrc export LD_LIBRARY_PATH=/usr/local/cuda/lib:usr/local/cuda/lib64:/usr/include/nccl.h:/usr/mpi/gcc/openmpi-4.1.2a1/lib:$LD_LIBRARY_PATH export PATH=$PATH:/usr/local/cuda/bin:/usr/mpi/gcc/openmpi-4.1.2a1/bin 安装编译nccl-test。 cd /root git clone https://github.com/NVIDIA/nccl-tests.git cd ./nccl-tests make MPI=1 MPI_HOME=/usr/mpi/gcc/openmpi-4.1.2a1 -j 8 编译时需要加上MPI=1的参数,否则无法进行多机之间的测试。 MPI路径版本需要匹配,可以通过“ls /usr/mpi/gcc/”查看openmpi的具体版本。 测试。 单机测试: /root/nccl-tests/build/all_reduce_perf -b 8 -e 1024M -f 2 -g 8 多机测试: mpirun --allow-run-as-root --hostfile hostfile -mca btl_tcp_if_include eth0 -mca btl_openib_allow_ib true -x NCCL_DEBUG=INFO -x NCCL_IB_GID_INDEX=3 -x NCCL_IB_TC=128 -x NCCL_ALGO=RING -x NCCL_IB_HCA=^mlx5_bond_0 -x LD_LIBRARY_PATH /root/nccl-tests/build/all_reduce_perf -b 8 -e 11g -f 2 -g 8 hostfile格式: #主机私有IP 单节点进程数 192.168.20.1 slots=1 192.168.20.2 slots=1 需要执行mpirun的节点到hostfile中的节点间有免密登录(如何设置SSH免密登录)。 btl_tcp_if_include后面替换为主网卡名称。 NCCL环境变量: NCCL_IB_GID_INDEX=3 :数据包走交换机的队列4通道,这是RoCE协议标准。 NCCL_IB_TC=128 :使用RoCE v2协议,默认使用RoCE v1,但是v1在交换机上没有拥塞控制,可能丢包,而且后面的交换机不会支持v1,就跑不起来了。 NCCL_ALGO=RING :nccl_test的总线bandwidth是在假定是Ring算法的情况下计算出来的。 计算公式是有假设的: 总线带宽 = 算法带宽 * 2 ( N-1 ) / N ,算法带宽 = 数据量 / 时间 但是这个计算公式的前提是用Ring算法,Tree算法的总线带宽不能这么算。 如果Tree算法算出来的总线带宽相当于是相对Ring算法的性能加速。 算法计算总耗时减少了,所以用公式算出来的总线带宽也增加了。 理论上Tree算法是比Ring算法更优的,但是Tree算法对网络的要求比Ring高,计算可能不太稳定。 Tree算法可以用更少的数据通信量完成all reduce计算,但用来测试性能不太合适。 因此,会出现两节点实际带宽100,但测试出速度110,甚至130GB/s的情况。 加这个参数以后,2节点和2节点以上情况的速度才会稳定一些。
  • 场景描述 本文旨在指导完成GP Ant8裸金属服务器装机和nccl-test测试。装机软件预览如下: 表1 装机软件 软件类型 版本详情 预置操作系统 Ubuntu 20.04 server 64bit 驱动版本 515.10.01 nvidia-cuda 11.7 nvidia-fabricmanager 515.10.01(必须和驱动版本保持一致) mlnx-ofed-linux 5.8-2.0.3.0/5.4-3.6.8.1(可选) nvidia-peer-memory-dkms 1.2-0 nccl libnccl2=2.14.3-1+cuda11.7 libnccl-dev=2.14.3-1+cuda11.7 nccl-test v.2.13.6
  • 删除图片 通过数据删除操作,可将需要丢弃的图片数据快速删除。 在“全部”、“未标注”或“已标注”页面中,依次选中需要删除的图片,或者选择“选择当前页”选中该页面所有图片,然后单击左上角“删除图片”。在弹出的对话框中,根据实际情况选择是否勾选“同时删除OBS源文件”,确认信息无误后,单击“确定”完成图片删除操作。 其中,被选中的图片,其左上角将显示为勾选状态。如果当前页面无选中图片时,“删除图片”按钮为灰色,无法执行删除操作。 如果勾选了“同时删除OBS源文件”,删除图片操作将删除对应OBS目录下存储的图片,此操作可能会影响已使用此源文件的其他数据集或数据集版本,有可能导致展示异常或训练/推理异常。删除后,数据将无法恢复,请谨慎操作。
  • 标注图片(手工标注) 标注作业详情页中,展示了此标注作业中“全部”、“未标注”和“已标注”的图片,默认显示“未标注”的图片列表。 在“未标注”页签图片列表中,单击图片,自动跳转到标注页面。在标注页面,常用按钮的使用可参见表2。 选择标注方式。 在标注页面,上方工具栏提供了常用的标注方式及常用按钮,系统默认的标注方式为多边形标注。选择多边形标注或极点标注。 标注第一张图片时,一旦选择其中一种,其他所有图片都需要使用此方式进行标注。 图3 工具栏 图4 工具栏 表1 标注方式 图标 使用说明 多边形。在标注对象所在范围内,鼠标左键单击完成一个点的标注,沿着物体的形状边缘,通过鼠标指定多个点,最终单击到第一个点的位置,由所有的点组成一个多边形形状。使得需标注的对象在此标注框内。 极点标注。在目标物体轮廓的最上、最左、最下、最右的位置分别标注四个极点,极点要在物体的轮廓上。系统将根据标注的极点推理出物体的轮廓。 表2 工具栏常用按钮 按钮图标 功能说明 撤销上一个操作。 重做上一个操作。 放大图片。 缩小图片。 删除当前图片中的所有标注框。 显示或隐藏标注框。只有在已标注图片中可使用此操作。 拖动,可将标注好的框拖动至其他位置,也可以选择框的边缘,更改框的大小。 复位,与上方拖动为同组操作,当执行了拖动后,可以单击复位按钮快速将标注框恢复为拖动前的形状和位置。 全屏显示标注的图片。 标注物体。 以极点标注为例。识别图片中的物体,单击左键分别定位物体的最上、最左、最下、最右的位置点。确定位置后,将弹出对话框,填入标签名称,单击确定添加物体的标签。确定后系统将自动推理出物体的轮廓。 完成一张图片标注后,可单击图片下方展开缩略图,查看图片列表,快速选中其他未标注的图片,然后在标注页面中执行标注操作。 图5 标注物体轮廓 单击页面上方“返回数据标注预览”查看标注信息,在弹框中单击“确定”保存当前标注并离开标注页面。 选中的图片被自动移动至“已标注”页签,且在“未标注”和“全部”页签中,标签的信息也将随着标注步骤进行更新,如增加的标签名称、标签对应的图片数量。
  • 修改标注信息 当数据完成标注后,您还可以进入已标注页签,对已标注的数据进行修改。 在数据标注详情页面,单击“已标注”页签,然后在图片列表中选中待修改的图片,单击图片跳转到标注页面,在右侧标签信息区域中单击此图片已添加的标注信息。 修改标签:“标注”区域中,单击编辑图标,在弹出框中输入正确的标签名或标签颜色,然后单击完成修改。也可以单击标签,在图片标注区域,调整标注框的位置和大小,完成调整后,单击其他标签即可保存修改。 修改图片标注信息:在图片展示区,显示物体边缘,可单击蓝色圆点,将标注框调整至物体边缘。 删除标签:在“标注”区域中,单击删除图标即可删除此图片中的标签。图片的标签全部删除后,该图片会重新回到“未标注”页签。 标注信息修改后,单击页面左上角的“返回数据标注预览”离开标注页面,在弹出对话框中单击“确定”保存修改。 图13 编辑标注信息
  • 筛选数据 在标注作业详情页面,默认展示作业中“未标注”数据,您可以在“全部”、“未标注”或页签下,在筛选条件区域,单击,添加筛选条件,快速过滤出您想要查看的数据。 支持的筛选条件如下所示,您可以设置一个或多个选项进行筛选。 难例集:难例或非难例。 标签:您可以选择全部标签,或者基于您指定的标签,选中其中一个或多个。 文件名或目录:根据文件名称或者文件存储目录筛选。 标注人:选择执行标注操作的账号名称。 样本属性:表示自动分组生成的属性。只有启用了自动分组任务后才可使用此筛选条件。 数据属性:筛选数据的来源,选择“全部”或“推理”。 图2 筛选条件
  • 同步新数据 ModelArts会自动将数据集中新增的数据同步至标注作业,包含数据及当前标注作业支持的标注信息。 为了快速获取数据集中最新数据,可在标注作业详情页的“全部”、“未标注”或“已标注”页签中,单击“同步新数据”,快速将数据集中的数据添加到标注作业中。 问题现象: 将已标注好的数据上传至OBS,同步数据后,显示为未标注。 原因分析: 可能是OBS桶设置了自动加密导致此问题。 解决方法: 需要新建OBS桶重新上传数据,或者取消桶加密后,重新上传数据。
  • 修改成员信息 团队中的成员,当其信息发生变化时,可以编辑其基本情况。 在“团队详情”区域,选择需修改的成员。 在成员所在行的“操作”列,单击“修改”。在弹出的对话框中,修改其“描述”或“角色”。 成员的“邮箱”无法修改,如果需要修改邮箱地址,建议先删除此成员,然后再基于新的邮箱地址添加新成员。 “角色”支持“Labeler”、“Reviewer”和“Team Manager”,“Team Manager”只能设置为一个人。
  • 修改标注 当数据完成标注后,您还可以进入“已标注”页签,对已标注的数据进行修改。 在数据集详情页,单击“已标注”页签,在右侧标签信息区域中对文本信息进行修改。 基于文本修改 在数据集详情页,单击“已标注”页签,然后在文本列表中选中待修改的文本。 手工点选删除:在文本列表中,单击文本,当文本背景变为蓝色时,表示已选择。在页面右侧,单击文本标签上方的删除单个标签。 基于标签修改 在数据集详情页,单击“已标注”页签,在图片列表右侧,显示全部标签的信息。 批量修改:在“全部标签”区域中,单击操作列的编辑按钮,然后在文本框中添加标签名称,选择标签颜色,单击“确定”完成修改。 批量删除:在“全部标签”区域中,单击操作列的删除按钮,在弹出对话框中,可选择“仅删除标签”或“删除标签及仅包含此标签的标注对象”,然后单击“确定”。
  • 同步新数据 ModelArts会自动将数据集中新增的数据同步至标注作业,包含数据及当前标注作业支持的标注信息。 为了快速获取数据集中最新数据,可在标注作业详情页的“未标注”页签中,单击“同步新数据”,快速将数据集中的数据添加到标注作业中。 问题现象: 将已标注好的数据上传至OBS,同步数据后,显示为未标注。 原因分析: 可能是OBS桶设置了自动加密导致此问题。 解决方法: 需要新建OBS桶重新上传数据,或者取消桶加密后,重新上传数据。
  • 删除音频 通过数据删除操作,可将需要丢弃的音频数据快速删除。 在“未标注”或“已标注”页面中,选中需要删除的音频,然后单击左上角“删除音频”,在弹出的对话框中,根据实际情况选择是否勾选“同时删除OBS源文件”,确认信息无误后,单击“确定”完成音频删除操作。 如果勾选了“同时删除源OBS文件”,删除音频操作是将删除对应OBS目录下存储的音频。此操作可能会影响已使用此源文件的其他数据集或数据集版本,有可能导致展示异常或训练/推理异常。删除后,数据将无法恢复,请谨慎操作。
  • 同步新数据 ModelArts会自动将数据集中新增的数据同步至标注作业,包含数据及当前标注作业支持的标注信息。 为了快速获取数据集中最新数据,可在标注作业详情页的“未标注”页签中,单击“同步新数据”,快速将数据集中的数据添加到标注作业中。 问题现象: 将已标注好的数据上传至OBS,同步数据后,显示为未标注。 原因分析: 可能是OBS桶设置了自动加密导致此问题。 解决方法: 需要新建OBS桶重新上传数据,或者取消桶加密后,重新上传数据。
  • 修改标注 当数据完成标注后,您还可以进入已标注页签,对已标注的数据进行修改。 基于图片修改 在标注作业详情页面,单击选择“已标注”页签,然后在图片列表中选中待修改的图片,单击图片跳转到标注页面,在右侧标签信息区域中对图片信息进行修改。 修改标签:“标注”区域中,单击编辑图标,在文本框中输入正确的标签名,然后单击确定图标完成修改。也可以单击标签,在图片标注区域,调整标注框的位置和大小,完成调整后,右键选择“修改”,填入修改后的标签名称,单击“修改”即可保存修改。 删除标签:在“标注”区域中,单击删除图标即可删除此图片中的标签。 标签删除后,单击页面左上角的“返回数据标注预览”离开标注页面,在弹出对话框中保存标注。图标的标签全部删除后,该图片会重新回到“未标注”页签。 图12 编辑物体检测标签 基于标签修改 在标注作业详情页中,单击右侧的“标签管理”页签,在标签管理详情页,显示全部标签的信息。 修改标签:单击操作列的“修改”,然后在弹出的对话框中输入修改后的标签和颜色,然后单击“确定”完成修改。修改后,之前添加了此标签的图片,都将被标注为新的标签名称。 删除标签:单击操作列的“删除”,或选中需要删除的标签名称,单击上方的“删除”可删除此标签。 图13 进入标签管理 图14 全部标签 单击标注作业操作列的“标签”,也可跳转至标签管理页。 图15 从标注作业列表进入标签管理 单击操作列的“修改”,即可完成标签的修改。 单击操作列的“删除”,即可删除该标签。
  • 标注图片(手工标注) 标注作业详情页中,展示了此数据集中“全部”“未标注”和“已标注”的图片,默认显示“未标注”的图片列表。 在“未标注”页签图片列表中,单击图片,自动跳转到标注页面。在标注页面,常用按钮的使用可参见表2。 在页面上方工具栏选择合适的标注图形,系统默认的标注图形为矩形。本示例使用矩形工具进行标注。 页面左侧可以选择多种形状对图片进行标注。标注第一张图片时,一旦选择其中一种,其他图片默认使用此形状进行标注,用户可以根据自己需求再进行切换。 表1 支持的标注框 图标 使用说明 矩形。也可使用快捷键 【1】。鼠标单击标注对象左上角边缘位置,界面将出现矩形框,移动鼠标使得矩形框覆盖标注对象,然后单击完成标注。 多边形。也可使用快捷键【2】。在标注对象所在范围内,鼠标左键单击完成一个点的标注,沿着物体的形状边缘,通过鼠标指定多个点,最终单击到第一个点的位置,由所有的点组成一个多边形形状。使得需标注的对象在此标注框内。 圆形。也可使用快捷键【3】。在标注对象中,选择物体的中心点位置,单击鼠标确定圆心,然后移动鼠标,使得圆形框覆盖标注对象,然后再单击鼠标完成标注。 直线。也可使用快捷键【4】。在标注对象中,选择物体的起始点,单击鼠标确定直线的起始点,然后使得直线覆盖标注对象,然后再单击鼠标完成标注。 虚线。也可使用快捷键【5】。在标注对象中,选择物体的起始点,单击鼠标确定虚线的起始点,然后使得虚线覆盖标注对象,然后再单击鼠标完成标注。 点。也可使用快捷键【6】。单击图片中的物体所在位置,即可完成点的标注。 在弹出的添加标签文本框中,直接输入新的标签名,在文本框前面选中标签颜色,然后单击“添加”。如果已存在标签,从下拉列表中选择已有的标签,单击“添加”。 逐步标注图片中所有物体所在位置,一张图片可添加多个标签。完成一张图片标注后,可单击图片右上角来切换下一张(也可使用快捷键【D】直接切换),快速选中其他未标注的图片,然后在标注页面中执行标注操作。 图3 添加物体检测标签 单击页面上方“返回数据标注预览”查看标注信息,在弹框中单击“确定”保存当前标注并离开标注页面。 选中的图片被自动移动至“已标注”页签,且在“未标注”和“全部”页签中,标签的信息也将随着标注步骤进行更新,如增加的标签名称、标签对应的图片数量。 表2 标注界面的常用按钮 按钮图标 功能说明 撤销上一个操作。也可使用快捷键【Ctrl+Z】 重做上一个操作。也可使用快捷键【Ctrl+Shift+Z】 放大图片。也可以使用滚轮进行放大。 缩小图片。也可以使用滚轮进行缩小。 删除当前图片中的所有标注框。也可使用快捷键【Shift+Delete】 显示或隐藏标注框。只有在已标注图片中可使用此操作。也可使用快捷键【Shift+H】 拖动,可将标注好的框拖动至其他位置,也可以选择框的边缘,更改框的大小。也可使用【X+鼠标左键】 复位,与上方拖动为同组操作,当执行了拖动后,可以单击复位按钮快速将标注框恢复为拖动前的形状和位置。也可使用快捷键【Esc】
  • 删除图片 通过数据删除操作,可将需要丢弃的图片数据快速删除。 在“全部”、“未标注”或“已标注”页面中,依次选中需要删除的图片,或者选择“选择当前页”选中该页面所有图片,然后单击“删除”。在弹出的对话框中,根据实际情况选择是否勾选“同时删除OBS源文件”,确认信息无误后,单击“确定”完成图片删除操作。 图19 删除图片 其中,被选中的图片,其左上角将显示为勾选状态。如果当前页面无选中图片时,“删除”按钮为灰色,无法执行删除操作。 如果勾选了“同时删除OBS源文件”,删除图片操作将删除对应OBS目录下存储的图片,此操作可能会影响已使用此源文件的其他数据集或数据集版本,有可能导致展示异常或训练/推理异常。删除后,数据将无法恢复,请谨慎操作。
共100000条