云服务器内容精选

  • 理解ModelArts的权限与委托 图1 权限管理抽象 ModelArts每个功能都通过 IAM 的权限来进行控制。比如,用户(此处指IAM子用户,而非租户)希望在ModelArts创建训练作业,则该用户必须拥有 "modelarts:trainJob:create" 的权限才可以完成操作(无论界面操作还是API调用)。关于如何给一个用户赋权(准确讲是需要先将用户加入用户组,再面向用户组赋权),可以参考IAM的文档《权限管理》。 而ModelArts还有一个特殊的地方在于,为了完成AI计算的各种操作,AI平台在任务执行过程中需要访问用户的其他服务,典型的就是训练过程中,需要访问OBS读取用户的训练数据。在这个过程中,就出现了ModelArts“代表”用户去访问其他云服务的情形。从安全角度出发,ModelArts代表用户访问任何云服务之前,均需要先获得用户的授权,而这个动作就是一个“委托”的过程。用户授权ModelArts再代表自己访问特定的云服务,以完成其在ModelArts平台上执行的AI计算任务。 综上,对于图1 权限管理抽象可以做如下解读: 用户访问任何云服务,均是通过标准的IAM权限体系进行访问控制。用户首先需要具备相关云服务的权限(根据您具体使用的功能不同,所需的相关服务权限多寡亦有差异)。 权限:用户使用ModelArts的任何功能,亦需要通过IAM权限体系进行正确权限授权。 委托:ModelArts上的AI计算任务执行过程中需要访问其他云服务,此动作需要获得用户的委托授权。
  • ModelArts权限管理 默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于授予的权限对云服务进行操作。 ModelArts部署时通过物理区域划分,为项目级服务,授权时“选择授权范围方案”可以选择“指定区域项目资源”,如果授权时指定了区域(如华北-北京4)对应的项目(cn-north-4),则该权限仅对此项目生效;简单的做法是直接选择“所有资源”。 ModelArts也支持企业项目,所以选择授权范围方案时,也可以指定企业项目。具体操作参见《创建用户组并授权》。 IAM在对用户组授权的时候,并不是直接将具体的某个权限进行赋权,而是需要先将权限加入到“策略”当中,再把策略赋给用户组。为了方便用户的权限管理,各个云服务都提供了一些预置的“系统策略”供用户直接使用。如果预置的策略不能满足您的细粒度权限控制要求,则可以通过“自定义策略”来进行精细控制。 表1列出了ModelArts的所有预置系统策略。 表1 ModelArts系统策略 策略名称 描述 类型 ModelArts FullAccess ModelArts管理员用户,拥有所有ModelArts服务的权限 系统策略 ModelArts CommonOperations ModelArts操作用户,拥有所有ModelArts服务操作权限除了管理专属资源池的权限 系统策略 ModelArts Dependency Access ModelArts服务的常用依赖服务的权限 系统策略 通常来讲,只给管理员开通“ModelArts FullAccess”,如果不需要太精细的控制,直接给所有用户开通“ModelArts CommonOperations”即可满足大多数小团队的开发场景诉求。如果您希望通过自定义策略做深入细致的权限控制,请阅读ModelArts的IAM权限控制详解。 ModelArts的权限不会凌驾于其他服务的权限之上,当您给用户进行ModelArts赋权时,系统不会自动对其他相关服务的相关权限进行赋权。这样做的好处是更加安全,不会出现预期外的“越权”,但缺点是,您必须同时给用户赋予不同服务的权限,才能确保用户可以顺利完成某些ModelArts操作。 举例,如果用户需要用OBS中的数据进行训练,当已经为IAM用户配置ModelArts训练权限时,仍需同时为其配置对应的OBS权限(读、写、列表),才可以正常使用。其中OBS的列表权限用于支持用户从ModelArts界面上选择要进行训练的数据路径;读权限主要用于数据的预览以及训练任务执行时的数据读取;写权限则是为了保存训练结果和日志。 对于个人用户或小型组织,一个简单做法是为IAM用户配置“作用范围”为“全局级服务”的“Tenant Administrator”策略,这会使用户获得除了IAM以外的所有用户权限。在获得便利的同时,由于用户的权限较大,会存在相对较大的安全风险,需谨慎使用。(对于个人用户,其默认IAM账号就已经属于admin用户组,且具备Tenant Administrator权限,无需额外操作) 当您需要限制用户操作,仅为ModelArts用户配置OBS相关的最小化权限项,具体操作请参见OBS权限管理。对于其他云服务,也可以进行精细化权限控制,具体请参考对应的云服务文档。
  • 严格授权模式 严格授权模式是指在IAM中创建的子用户必须由账号管理员显式在IAM中授权,才能访问ModelArts服务,管理员用户可以通过授权策略为普通用户精确添加所需使用的ModelArts功能的权限。 相对的,在非严格授权模式下,子用户不需要显式授权就可以使用ModelArts,管理员需要在IAM上为子用户配置Deny策略来禁止子用户使用ModelArts的某些功能。 账号的管理员用户可以在“全局配置”页面修改授权模式。 如无特殊情况,建议优先使用严格授权模式。在严格授权模式下,子用户要使用ModelArts的功能都需经过授权,可以更精确的控制子用户的权限范围,达成权限最小化的安全策略。
  • 用工作空间限制资源访问 工作空间是ModelArts面向企业客户提供的一个高阶功能,用于进一步将用户的资源划分在多个逻辑隔离的空间中,并支持以空间维度进行访问的权限限定。目前工作空间功能是“受邀开通”状态,作为企业用户您可以通过您对口的技术支持经理申请开通。 在开通工作空间后,系统会默认为您创建一个“default”空间,您之前所创建的所有资源,均在该空间下。当您创建新的工作空间之后,相当于您拥有了一个新的“ModelArts分身”,您可以通过菜单栏的左上角进行工作空间的切换,不同工作空间中的工作互不影响。 创建工作空间时,必须绑定一个企业项目。多个工作空间可以绑定到同一个企业项目,但一个工作空间不可以绑定多个企业项目。借助工作空间,您可以对不同用户的资源访问和权限做更加细致的约束,具体为如下两种约束: 只有被授权的用户才能访问特定的工作空间(在创建、管理工作空间的页面进行配置),这意味着,像数据集、算法等AI资产,均可以借助工作空间做访问的限制。 在前文提到的权限授权操作中,如果“选择授权范围方案”时设定为“指定企业项目资源”,那么该授权仅对绑定至该企业项目的工作空间生效。 工作空间的约束与权限授权的约束是叠加生效的,意味着对于一个用户,必须同时拥有工作空间的访问权和训练任务的创建权限(且该权限覆盖至当前的工作空间),他才可以在这个空间里提交训练任务。 对于已经开通企业项目但没有开通工作空间的用户,其所有操作均相当于在“default”企业项目里进行,请确保对应权限已覆盖了名为default的企业项目。 对于未开通企业项目的用户,不受上述约束限制。
  • 访问方式 ModelArts基于不同的产品形态提供了多种访问方式。 管理控制台方式 ModelArts Standard支持通过管理控制台访问,包含自动学习、数据管理、开发环境、模型训练、AI应用管理、部署上线等功能,您可以在管理控制台端到端完成您的AI开发。 ModelArts MAAS可以通过管理控制台访问,包括大模型数据生产、微调、提示词工程、应用编排等功能。 SDK方式 如果您需要将ModelArts Standard功能集成到第三方系统,用于二次开发,可选择调用SDK方式完成目的。ModelArts的SDK是对ModelArts Standard提供的REST API进行的Python封装,简化用户的开发工作。具体操作和SDK详细描述,请参见《SDK参考》。 除此之外,在ModelArts Standard的Notebook中编写代码时,也可直接调用ModelArts SDK。 API方式 如果您需要将ModelArts Standard集成到第三方系统,用于二次开发,请使用API方式访问ModelArts,具体操作和API详细描述,请参见《API参考》。 云原生方式 如果您使用的是ModelArts Lite Server形态,您可以通过弹性公网IP直接访问云主机,详情请参见《ModelArts Lite Server用户指南》。 如果您使用的是ModelArts Lite Cluster形态,您可以通过k8s原生接口操作集群,详情请参见《ModelArts Lite Cluster用户指南》。
  • 产品架构 ModelArts产品架构请参考图1。 图1 ModelArts产品架构 算力层提供全系列昇腾硬件,万卡级大规模集群管理能力,提供资源负载调度管理能力,兼容业界主流AI开发调试、训练推理框架。 AI平台层提供端到端的AI开发工具链,支持开发者一站式完成模型开发和上线,并提供高效的资源管理能力,支持自动化故障恢复,提升AI模型开发、训练、上线全流程效率。 AI开发工具链层提供端到端的大模型开发工具链,支持主流优质开源大模型“开箱即用”,提供大模型开发套件,提升大模型开发效率并缩短开发周期。
  • 产品形态 ModelArts提供多种产品形态,如下表所示。 表1 ModelArts产品形态介绍 产品形态 产品定位 使用场景 文档链接 ModelArts Standard 面向AI开发者的一站式开发平台, 提供了简洁易用的管理控制台,包含自动学习、数据管理、开发环境、模型训练、模型管理、部署上线等端到端的AI开发工具链,实现AI全流程生命周期管理。 面向有 AI开发平台 诉求的用户。 ModelArts用户指南(Standard) ModelArts Studio 大模型即服务平台(后续简称为MaaS服务) 提供端到端的大模型生产工具链和昇腾算力资源,并预置了当前主流的第三方开源大模型。支持大模型数据生产、微调、提示词工程、应用编排等功能。 用户无需自建平台,可以基于MaaS平台开箱即用,对预置大模型进行二次开发,用于生产商用。 ModelArts用户指南(Studio) ModelArts Lite Server 面向云主机资源型用户,基于裸金属服务器进行封装,可以通过弹性公网IP直接访问操作服务器。 适用于已经自建AI开发平台,仅有算力需求的用户,提供高性价比的AI算力,并预装主流AI开发套件以及自研的加速插件。 ModelArts用户指南(Lite Server) ModelArts Lite Cluster 面向k8s资源型用户,提供k8s原生接口,用户可以直接操作资源池中的节点和k8s集群。 适用于已经自建AI开发平台,仅有算力需求的用户。要求用户具备k8s基础知识和技能。 ModelArts用户指南(Lite Cluster) ModelArts Edge 为客户提供了统一边缘部署和管理能力,支持统一纳管异构边缘设备,提供AI应用部署、Al应用和节点管理、资源池与负载均衡、应用商用保障等能力,帮助客户快速构建高性价比的边云协同AI解决方案。 适用于边缘部署场景。 ModelArts Edge是白名单功能,如果有试用需求,请提工单申请。 AI Gallery AI Gallery百模千态社区,为用户提供优质的昇腾云AI模型开发体验和丰富的社区资源。 适用于AI开发探索。 ModelArts用户指南(AI Gallery )
  • 操作步骤 卸载原有版本的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)。 五、电脑时间设置错误 请设置电脑时间为正确时间。