云服务器内容精选

  • 背景 当前,大模型训练往往使用成百上千加速卡训练几周到几个月不等。在训练过程中,故障导致训练中断经常发生。训练程序一般采用周期 checkpoint方案来将训练状态持久化到存储,当发生故障时,训练程序能恢复到故障之前的模型和优化器的状态继续训练。原生Pytorch系框架在保存checkpoint时均直接持久化到存储系统,耗时与模型大小、存储的IO性能等密切相关,往往需要几分钟到几十分钟不等,为了保证训练状态的一致性,保存checkpoint时训练必须暂停,保存时间影响了训练过程的整体效率。当发生故障,训练程序从已有checkpoint恢复时,每张卡都需要从持久化存储中加载,在训练集群规模较大,存储带宽较低的场景下,加载耗时可能会达到小时级,严重影响训练恢复。因此,我们在AITurbo SDK中提供了快速保存和加载checkpoint的功能,当前流行的两种大模型训练框架Megatron和DeepSpeed进行很简单地适配便可使用。
  • 加速保存checkpoint 在保存checkpoint的时候,利用两阶段写、内存副本、异步持久化等技术保证checkpoint的快速、高可靠存储。具体地,第一阶段,各个节点将自己的checkpoint高速同步写入HOST侧的内存缓存中,同时写入配置好的backup节点内存缓存中,backup的内存副本可以在主节点进程异常退出时不会丢失内存checkpoint;第二阶段,拥有相同checkpoint的节点会选择代表节点异步写一份完整的checkpoint到SFS Turbo服务端进行持久化存储,通过异步方式最大程度隐藏了checkpoint持久化到远端存储的耗时,实现checkpoint秒级同步保存,避免训练任务长时间阻塞,异步保存阶段,主节点持久化过程中,内存中写入了相同检查点的备节点会持续监听主节点的保存结果。保存失败之后,备节点会接管主节点的持久化操作,代替主节点将检查点持久化下去,保证可靠性。 图1 保存checkpoint流程
  • 加速加载checkpoint 在加载checkpoint的时候,利用内存快恢、checkpoint广播等技术,大大减少后端存储的带宽压力,提升加载效率。具体地,对于训练中进程级故障、硬件仍然健康的故障场景,主机侧客户端内存缓存仍会保留,本机缓存中的checkpoint仍可正常访问,此时可从主机侧客户端内存中直接加载checkpoint进行原地秒级快速恢复;为避免所有GPU/NPU卡同时从存储中加载checkpoint致使存储带宽成为拥塞瓶颈,在具有相同checkpoint的冗余组内,采用部分代表节点先从远端存储加载checkpoint并将checkpoint广播到剩余其他节点的恢复机制,这种策略显著降低大规模训练集群故障恢复过程对远端存储带宽的需求,加速大规模训练集群checkpoint快速恢复。 图2 加载checkpoint流程
  • 安装AITurbo SDK 安装AITurbo SDK依赖包。 AITurbo SDK依赖rpyc,setproctitle,PyYAML,pathlib2等三方库,安装方式如下: pip install rpyc setproctitle pathlib2 PyYAML 安装AITurbo SDK,checkpoint的保存和加载优化依赖于AITurbo SDK,安装包的下载地址请提交工单获取。
  • 创建备份操作步骤 请确认目标文件系统为“可用”状态,否则无法启动备份任务。此步骤介绍如何手动创建文件系统备份。 备份标准型、标准型-增强版(停售)、性能型、性能型-增强版(停售)等类型的SFS Turbo文件系统过程中,挂载文件系统可能会失败,正在挂载使用的连接会感知30秒左右的IO延迟,建议在业务低峰期备份。 登录云备份管理控制台。 在左侧导航栏选择“SFS Turbo备份”。 参考《云备份用户指南》的“快速创建SFS Turbo备份”章节,完成创建备份存储库的操作,再根据创建文件系统备份完成创建备份操作。 系统会自动进行文件系统的备份。 您可以在备份页面,查看备份创建状态。当文件系统备份的“备份状态”变为“可用”时,表示备份创建成功。 当文件系统发生错误等故障时,可以使用备份创建新的文件系统,具体请参考使用备份创建新文件系统。
  • 购买资源包 通用文件系统同时提供包年包月计费模式,您可以购买资源包实现包年包月计费。暂不支持退订资源包,请提前规划资源的使用额度和时长。 在SFS管理控制台左侧导航栏选择“资源包管理”。 单击页面右上角“购买资源包”。 图1 购买通用文件系统资源包 配置资源包参数。 表1 配置资源包参数 参数 说明 区域 选择资源包所属区域。 区域专属资源包,不支持共享给其他区域使用,请根据您资源所在地谨慎选择。 资源包规格 选择资源包规格。 通用文件系统资源包无法扩容,但可以叠加购买。 购买时长 选择购买时长。 购买数量 输入购买数量。 购买数量必须在1~3000之间。 生效时间 选择生效时间:支付完成后立即生效/指定时间生效。 如果支付时间晚于指定生效时间,资源包将在支付后立即生效。 企业项目 勾选“限定企业项目使用”可限定企业项目使用资源包,即仅在所选企业项目下的通用文件系统才能使用此资源包进行抵扣,同时也需满足资源包所属区域匹配的要求。如果未限定则全部企业项目均可使用。该选项仅对企业账号展示。 资源包示意 根据以上配置显示资源包示意图,包括资源包的基础配置和折合单价,以及相比按需计费所节省费用的百分比。 单击“立即购买”。 确认订单无误后,单击“去支付”。 如果发现订单有误,也可单击“上一步”修改订单后再继续购买。 根据界面提示进行订单支付。 资源包购买注意事项: 支持续订,暂不支持退订。资源包到期后,不会影响您通用文件系统的使用和数据安全。您只要保证云服务账号上有足够的余额,系统会自动以按需计费的模式进行结算。
  • 续费资源包 在SFS管理控制台左侧导航栏选择“资源包管理”。 选择所要续费的资源包。 在需要续费的资源包操作列,单击“续费”。 选择续费时长。 页面将显示资源包在续费后的到期时间,以及对应的费用。 (可选)根据需要,选择是否统一到期日为每月1号。 将到期时间延长至统一到期日,可能产生额外的续费天数,进而产生额外的费用。选择此项后,请务必核对清楚续费时长和费用信息。 确认无误后,单击“去支付”,并在支付页面完成付款。
  • 操作步骤 登录弹性文件服务管理控制台。 在文件系统列表中查看所有文件系统的基本信息,参数说明如表1所示。 表1 参数说明 参数 说明 名称 已创建的文件系统名称,例如:sfs-name-001。 可用区 文件系统所在的可用区。 状态 文件系统的状态,包含“可用”、“不可用”、“已冻结”、“正在创建”、“正在删除”、“删除错误”、“创建失败”、“正在扩容”、“扩容错误”、“正在缩容”、“缩容错误”和“缩容失败”。 类型 文件系统的类型。 协议类型 文件系统的协议类型为NFS或CIFS。 已用容量(GB) 文件系统存放数据已使用的空间。 说明: 该数据不是实时数据,平均15分钟刷新一次。SFS容量型文件系统已用容量小于1MB时,将不会显示已用容量。 最大容量(GB) 文件系统的最大使用容量。 已上传文件数 文件系统内已上传的文件数量。 说明: 通用文件系统展示该字段。 该数据不是实时数据,平均15分钟刷新一次。 是否加密 已经创建的文件系统的加密状态,包括“是”和“否”。 企业项目 文件系统归属的企业项目。 挂载地址 文件系统的挂载地址,NFS类型的格式为:文件系统 域名 :/路径,或文件系统IP:/,或域名地址:/;CIFS类型的格式为:\\文件系统域名\路径。 说明: 由于挂载地址名称较长,需要拉宽该栏以便完整显示。 操作 SFS容量型包含“容量调整”、“查看监控指标”和“删除”操作。 SFS Turbo包含“扩容”、“删除”、“查看监控指标”、“续订”和“退订”操作。 通用文件系统包含“删除”操作。 说明: 包年/包月的SFS Turbo文件系统创建完成后,大约1到2分钟后,才能执行续订、退订等操作。 单击文件系统名称,可查看更多的文件系统信息。 图1 SFS Turbo文件系统的扩展信息 图2 通用文件系统的扩展信息 图3 SFS容量型文件系统的扩展信息 (可选)通过文件系统名称关键字、密钥ID或文件系统状态来过滤查看指定的文件系统。
  • 约束限制 标签由标签“键”和标签“值”组成。 “键”最大长度为128个字符,不能为空,首尾不支持空格字符,以“_sys_”开头的键属于系统标签,不支持用户输入,可用UTF-8格式表示的任意语种的字母、数字和空格,以及“_”、“.”、“:”、“=”、“+”、“-”、“@”。 “值”最大长度为255个字符,首尾不支持空格字符,可以为空字符串,可用UTF-8格式表示的任意语种的字母、数字和空格,以及以下字符: “_”、“.”、“:”、“=”、“+”、“-”、“@”。 单个文件系统最多可以添加20个标签。 同一个文件系统的标签的“键”不允许重复。 文件系统标签的“键”创建之后不可再编辑,只可对标签的“值”进行编辑。可以对标签进行删除操作。
  • 添加授权地址操作步骤 本章节介绍如何通过控制台完成添加授权地址进行权限管理。 如果您想通过API调用完成文件系统权限管理,请参考《弹性文件服务API参考》权限管理章节。 登录弹性文件服务管理控制台。 在SFS Turbo文件系统列表中,找到待添加授权地址的SFS Turbo文件系统并单击目标文件系统名称,进入文件系统详情界面。 在“权限列表”页签,单击“添加”。 图1 添加授权地址 在“添加授权地址”弹窗内,参考表3完成授权地址的添加。 一个文件系统最多可以配置64条权限规则,单次最多可新增5个授权地址。 表3 添加授权地址说明 参数 说明 授权地址 只能输入一个的IP或网段。 输入的IPv4地址/地址段必须合法,且不能为除0.0.0.0/0以外之前0开头的IP地址或地址段,其中当设置为0.0.0.0/0时表示VPC内的任意IP。同时,不能为127以及224~255开头的IP地址或地址段,例如127.0.0.1,224.0.0.1,255.255.255.255,因为以224-239开头的IP地址或地址段是属于D类地址,用于组播;以240-255开头的IP地址或地址段属于E类地址,用于研究。使用非合法的IP或IP地址段可能会导致添加访问规则失败或者添加的访问规则无法生效。 如果要表示一个地址段,如192.168.1.0-192.168.1.255的地址段应使用掩码形式:192.168.1.0/24,不支持192.168.1.0-255等其他地址段表示形式。掩码位数的取值为0到31的整数,且只有为0.0.0.0/0时掩码位数可取0,其他情况均不合法。 网段类型请参见网段类型。 读写权限 支持选择以下读写权限。默认选择“rw”。 rw:用户拥有读写权限。 ro:用户拥有只读权限。 none:用户无权限访问。 用户权限 支持选择以下用户权限。默认选择“all_squash”。 all_squash:所有的用户访问时权限降为nobody。 root_squash:root用户访问时权限降为nobody。 no_root_squash:包括root用户在内的任何用户访问时权限都不会降为nobody。 确认授权地址信息,单击“确定”。
  • 权限类型 权限分为两部分:access权限和squash权限。 表1 access权限 权限 描述 rw 用户拥有读写权限 ro 用户拥有只读权限 none 用户无权限访问 表2 squash权限 权限 描述 all_squash 所有的用户访问时权限降为nobody root_squash root用户访问时权限降为nobody no_root_squash 包括root用户在内的任何用户访问时权限都不会降为nobody
  • 网段类型 网段类型配置可以采用两种配置方式。 * : 代表任何ip地址 CIDR格式网段 : CIDR格式地址使用可变长度子网掩码来表示 IP 地址中网络地址位和主机地址位之间的比例。 CIDR IP地址在普通IP地址的基础上附加了一个后缀值,这个后缀值就是网络地址前缀位数。例如,192.1.1.0/24 是一个 IPv4 CIDR地址,其中前 24 位(即 192.1.1)是网络地址。 任何前24位与192.1.1.0相同的ip都适用于这一条鉴权规则,即192.1.1.1 与 192.1.1.1/32 表达的含义相同。
  • 加密挂载教程-Linux 安装stunnel。 stunnel是一个开源网络中继。stunnel会监听本地端口,并将发到其上的流量加密转发到SFS Turbo文件系统,要使用加密传输功能需要先安装stunnel。请执行以下命令进行安装: ubuntu或Debian操作系统安装命令 sudo apt update sudo apt-get install stunnel CentOS,EulerOS或HCE OS操作系统安装命令 sudo yum install stunnel 推荐使用Stunnel版本为5.56或以上。 选取未被占用的端口作为本地监听端口。 如下示例,执行如下命令查看本地已被占用的端口: netstat -anp | grep 127.0.0.1 图1 本地已被占用端口 由于20049已被占用,所以需要在20050到21049之间选择一个未被占用的端口作为本地监听端口。 配置stunnel配置文件。 在/etc/stunnel路径下新建stunnel_[本地监听端口].conf文件,在此文件中写入: client = yes sslVersion = TLSv1.2 [nfs] ciphers = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256 accept = 127.0.0.1:[本地监听端口] connect = [dns name]:2052 执行如下命令拉起stunnel进程。 stunnel /etc/stunnel/stunnel_[本地监听端口].conf 执行如下挂载命令。 mount -t nfs -o vers=3,nolock,tcp,port=[本地监听端口],mountport=[本地监听端口] 127.0.0.1:/ [挂载点] 加密挂载完成后,在此挂载点上的所有文件操作与非加密场景的文件操作一致。 如果stunnel进程异常退出会导致文件操作卡住,可以利用crontab等linux能力,保证stunnel进程退出后自动拉起。
  • 使用限制 当前仅20MB/s/TiB、40MB/s/TiB、125MB/s/TiB、250MB/s/TiB、500MB/s/TiB、1000MB/s/TiB规格文件系统支持目录级配额。 只能对空目录设置配额,删除配额。 支持设置配额的最大目录深度为16层,不允许对根目录使用此功能。(注:根目录为第一层目录) 修改目录配额时,配额只能高于或等于已使用配额,不允许子目录配额高于父目录配额。 建议设置配额目录深度不超过3层,否则会出现修改类操作性能下降,性能下降幅度与配额目录深度有关。 不允许跨配额目录创建硬链接、rename操作。 图1 跨配额目录 跨配额目录操作为图1 跨配额目录红线所示,会穿过黑色虚线。 配额目录: D1,D2_0。 目录深度:根目录/往下到当前目录的层数,例如,目录/D1/D2_0/D3_1深度为4。 配额目录深度:当前目录不断往上找,穿过黑色矩形虚线的层数。例如,目录/D1/D2_0/D3_1配额目录深度为2。 红线与绿线:mv或者link操作,绿色表示允许操作,红色表示不允许操作。 虚线矩形:配额目录区域。
  • 设置配额 登录管理控制台,选择“弹性文件服务”。 左侧导航栏选择“通用文件系统”,跳转到通用文件系统控制台。 在文件系统列表页,单击指定文件系统右侧的“配额管理”进入配额管理页面。 在配额管理页面,单击“设置配额”,系统弹出如图2所示对话框。 图1 配额管理页面 图2 设置配额 设置文件系统配额。 容量配额:必填,输入容量配额,必须大于0且不可低于已用容量。单位是GB。 文件数限制:选填,输入文件数限制,必须大于0且不可低于当前文件数。单位是个。 单击“确定”,完成文件系统配额设置。在配额管理页面可以看到配额详情。 图3 配额详情