云服务器内容精选

  • 镜像地址 本教程中用到的训练和推理的基础镜像地址和配套版本关系如下表所示,请提前了解。 表1 基础容器镜像地址 镜像用途 镜像地址 基础镜像 swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc3-py_3.9-hce_2.0.2312-aarch64-snt9b-20240824153350-cebb080 表2 模型镜像版本 模型 版本 CANN cann_8.0.rc3 驱动 23.0.6 PyTorch 2.1.0
  • Step1 检查环境 SSH登录机器后,检查NPU设备检查。运行如下命令,返回NPU设备信息。 npu-smi info # 在每个实例节点上运行此命令可以看到NPU卡状态 npu-smi info -l | grep Total # 在每个实例节点上运行此命令可以看到总卡数 如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先正常安装固件和驱动,或释放被挂载的NPU。 检查docker是否安装。 docker -v #检查docker是否安装 如尚未安装,运行以下命令安装docker。 yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64 配置IP转发,用于容器内的网络访问。执行以下命令查看net.ipv4.ip_forward配置项的值,如果为1,可跳过此步骤。 sysctl -p | grep net.ipv4.ip_forward 如果net.ipv4.ip_forward配置项的值不为1,执行以下命令配置IP转发。 sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf sysctl -p | grep net.ipv4.ip_forward
  • Step3 启动容器镜像 启动容器镜像前请先按照参数说明修改${}中的参数。可以根据实际需要增加修改参数。启动容器命令如下。 export work_dir="自定义挂载的工作目录" #容器内挂载的目录,例如/home/ma-user/ws export container_work_dir="自定义挂载到容器内的工作目录" export container_name="自定义容器名称" export image_name="镜像名称" docker run -itd \ --device=/dev/davinci0 \ --device=/dev/davinci1 \ --device=/dev/davinci2 \ --device=/dev/davinci3 \ --device=/dev/davinci4 \ --device=/dev/davinci5 \ --device=/dev/davinci6 \ --device=/dev/davinci7 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ --cpus 192 \ --memory 1000g \ --shm-size 200g \ --net=host \ -v ${work_dir}:${container_work_dir} \ --name ${container_name} \ $image_name \ /bin/bash 参数说明: --name ${container_name} 容器名称,进入容器时会用到,此处可以自己定义一个容器名称,例如ascendspeed。 -v ${work_dir}:${container_work_dir} 代表需要在容器中挂载宿主机的目录。宿主机和容器使用不同的文件系统。work_dir为宿主机中工作目录,目录下存放着训练所需代码、数据等文件。container_work_dir为要挂载到的容器中的目录。为方便两个地址可以相同。 容器不能挂载/home/ma-user目录,此目录为ma-user用户家目录。 driver及npu-smi需同时挂载至容器。 不要将多个容器绑到同一个NPU上,会导致后续的容器无法正常使用NPU功能。 ${image_name} 为docker镜像的ID,在宿主机上可通过docker images查询得到。 --shm-size:表示共享内存,用于多进程间通信。由于需要转换较大内存的模型文件,因此大小要求200g及以上。 通过容器名称进入容器中。启动容器时默认用户为ma-user用户。 docker exec -it ${container_name} bash 上传代码和数据到宿主机时使用的是root用户,此处需要执行如下命令统一文件属主为ma-user用户。 #统一文件属主为ma-user用户 sudo chown -R ma-user:ma-group ${container_work_dir} # ${container_work_dir}:/home/ma-user/ws 容器内挂载的目录 #例如:sudo chown -R ma-user:ma-group /home/ma-user/ws 使用ma-user用户安装依赖包。 #进入scripts目录换 cd /home/ma-user/ws/llm_train/AscendSpeed #执行安装命令 sh scripts/install.sh 为了避免因使用不同版本的 transformers 库进行训练和推理而导致冲突的问题,建议用户分别为训练和推理过程创建独立的容器环境。 通过运行install.sh脚本,还会git clone下载Megatron-LM、MindSpeed、ModelLink源码(install.sh中会自动下载配套版本,如果手动下载源码还需修改版本)至llm_train/AscendSpeed文件夹中。下载的源码文件结构如下: |——AscendCloud-LLM |──llm_train # 模型训练代码包 |──AscendSpeed # 基于AscendSpeed的训练代码 |──ascendcloud_patch/ # 针对昇腾云平台适配的功能补丁包 |──scripts/ # 训练需要的启动脚本 |——src/ # 启动命令行封装脚本,在install.sh里面自动构建 |──Megatron-LM/ # 适配昇腾的Megatron-LM训练框架 |──MindSpeed/ # MindSpeed昇腾大模型加速库 |──ModelLink/ # ModelLink端到端的大语言模型方案 |——megatron/ # 注意:该文件夹从Megatron-LM中复制得到 |——...
  • 示例流程 图1 给用户授权 DLI 权限流程 创建用户组并授权 在 IAM 控制台创建用户组,并授予DLI服务普通用户权限“DLI ReadOnlyAccess”。 创建用户并加入用户组 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限 使用新创建的用户登录控制台,切换至授权区域,验证权限: 在“服务列表”中选择 数据湖探索 ,进入DLI主界面。如果在“队列管理”页面可以查看队列列表,但是单击右上角“购买队列”,无法购买DLI队列(假设当前权限仅包含DLI ReadOnlyAccess),表示“DLI ReadOnlyAccess”已生效。 在“服务列表”中选择除 数据湖 探索外(假设当前策略仅包含DLI ReadOnlyAccess)的任一服务,如果提示权限不足,表示“DLI ReadOnlyAccess”已生效。
  • 创建OBS桶 ModelArts使用 对象存储服务 (Object Storage Service,简称OBS)进行数据存储以及模型的备份和快照,实现安全、高可靠和低成本的存储需求。因此,在使用ModelArts之前通常先创建一个OBS桶,然后在OBS桶中创建文件夹用于存放数据。 本文档也以将运行代码以及输入输出数据存放OBS为例,请参考创建OBS桶,例如桶名:standard-llama2-13b。并在该桶下创建文件夹目录用于后续存储代码使用,例如:training_data。
  • 步骤3:(可选)激活站点 购买“部署位置”为“公有云”的数字化制造基础服务后,您还需要按照界面指引激活站点,才能使用数字化制造基础服务。 登录CraftArts IPDCenter控制台。 在左侧导航栏中,单击“数字化制造基础服务”,进入数字化制造基础服务页面。 选择“公有云运行服务”页签,单击服务记录左侧的。 在“状态”为“新建”的站点“操作”列中单击“激活站点”,系统弹出“激活站点”窗口。 选择组织。 (可选)没有组织或想创建新的组织时,请参考以下步骤创建组织: 单击“没有组织?去创建”。 在弹出的“创建组织”窗口中,设置组织名称和 域名 。 组织名称:由1~60个中文、英文、数字及合法字符组成。 域名:可设置新域名或使用自有域名。 没有域名,请设置域名:可使用2~30位字母、数字和.-或它们的组合,例如abc,后缀名为固定的.orgid.top。 已有域名,使用自有域名:单击“使用自有域名”,输入自有域名,例如example.com。 设置组织域名后,管理员为组织创建成员时,成员的管理式华为账号会默认带有固定域名后缀。如设置的组织域名为abc.orgid.top,则管理员创建的成员账号名为xxx@abc.orgid.top;如使用的组织域名为example.com,则管理员创建的成员账号名为xxx@example.com。 阅读并勾选相关服务协议,然后单击“创建”。 组织创建成功,返回至“激活站点”窗口。 单击“请选择”的下拉框,在已有的组织列表中选择组织。 单击“确定”。 站点激活成功后,即可通过控制台或Web网页方式登录数字化制造基础服务。
  • 步骤2:购买数字化制造基础服务 用户可以根据实际业务需求,在CraftArts IPDCenter控制台购买数字化制造基础服务。针对不同的应用场景,用户可以自定义站点数量、用户数量和购买时长,全方位贴合实际业务诉求。 进入购买数字化制造基础服务页面。 根据页面提示,配置如下信息。 表1 数字化制造基础服务配置说明 类型 配置项 配置说明 基础配置 部署位置 数字化制造基础服务的部署位置,支持“公有云”和“边缘云”。 说明: “边缘云”仅在识别到有效的边缘可用区时才显示。 可用区 仅“部署位置”选择“边缘云”时显示。选择数字化制造基础服务所属的可用区。 可选值来源于位置服务(Location Service,L CS )授予账号使用的对应边缘可用区(Availability Zone,AZ)。 计费模式 包年/包月:数字化制造基础服务的预付费模式。 运行服务名称 用户自定义,表示需要购买的数字化制造基础服务的名称。 企业项目 仅对开通企业项目的企业客户账号显示。如需使用该功能,请联系客服申请开通。 企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理,默认项目为default。了解更多企业项目相关信息,请参见企业项目管理。 虚拟私有云 仅“部署位置”选择“边缘云”时显示。表示在华为云上构建的逻辑隔离的网络空间,一个虚拟私有云由至少一个子网组成。系统会为您在每个地域提供默认的虚拟私有云和子网。 如现有的虚拟私有云/子网不符合您的要求,可以在虚拟私有云控制台进行创建,具体操作请参见创建虚拟私有云和子网。 同一虚拟私有云内资源默认内网互通。 安全组 仅“部署位置”选择“边缘云”时显示。表示一个逻辑上的分组,为具有相同安全保护需求并相互信任的云服务器提供访问策略。系统会为您提供一个默认安全组,默认安全组的规则是在出方向上的数据报文全部放行,入方向访问受限,安全组内的云服务器无需添加规则即可互相访问。 如现有的安全组不符合您的要求,可以在虚拟私有云控制台进行创建,具体操作请参见创建安全组。 站点配置 站点 通常一个站点对应一个物理的制造基地(工厂)。站点数量最少为1。 单击“增加站点”,可增加您需要购买站点的数量。 单击“删除”,可减少您需要购买站点的数量。 用户数量 设置对应站点您需要购买用户的数量。单个站点的对应的用户数量最少为1。 购买时长 - 选择您需要购买的数字化制造基础服务的时长。 勾选“自动续费”,可避免数字化制造基础服务到期时需要进行手动续费的操作。 单击“下一步”,进入待购买服务规格确认页面。 确认购买清单中的资源配置信息后,阅读并勾选同意协议。 协议详细内容请参见CraftArts IPDCenter服务声明。 单击“立即购买”。 购买包年/包月的数字化制造基础服务,请根据页面提示完成支付。 待系统提示购买成功后,即可进入CraftArts IPDCenter控制台查收您的数字化制造基础服务。
  • 注意事项 数字化制造基础服务目前仅在华北-北京四、华南-广州上线,请在控制台页面左上角的区域中选择“华北-北京四”或“华南-广州”。 1个华为账号只能购买5个数字化制造基础服务站点(不同区域、部署位置分开计算)。 仅当购买“部署位置”为“公有云”的数字化制造基础服务时才需要进行激活站点操作: 1个数字化制造基础服务站点只能绑定1个组织,且1个组织不能同时被多个数字化制造基础服务站点绑定。 站点所绑定的组织的创建者即数字化制造基础服务业务系统的超级管理员。
  • 开通盘古大模型服务 盘古大模型具备文本补全和多轮对话能力,用户在完成盘古大模型套件的订购操作后,需要开通大模型服务,才可以调用模型,实现与模型对话问答。 登录盘古大模型套件平台。 在左侧导航栏中选择“服务管理”,在相应服务的操作列单击“查看详情”,可在服务列表中申请需要开通的服务。 文本补全:提供单轮文本能力,常用于文本生成、文本摘要、闭卷问答等任务。 多轮对话:提供多轮文本能力,常用于多轮对话、聊天任务。 图1 服务管理 图2 申请开通服务 您可按照需要选择是否开启 内容审核 。 开启内容审核后,可以有效拦截大模型输入输出的有害信息,保障模型调用安全,推荐进行开启。 图3 大模型内容审核 购买内容审核套餐包时,如果使用“文本补全”和“多轮对话”功能,需要选择“ 文本内容审核 ”套餐。 父主题: 准备工作
  • 注册华为账号 并开通华为云 在使用华为云服务之前您需要申请华为云账号并进行实名认证。通过此账号,您可以使用所有华为云服务,并且只需为您所使用的服务付费。 如果您已有一个华为云账号,请跳到下一个任务。如果您还没有华为云账号,请参考以下步骤创建。 打开华为云官网,单击“注册”。 根据提示信息完成注册,详细操作请参见注册华为账号并开通华为云。 注册成功后,系统会自动跳转至您的个人信息界面。 参考实名认证完成个人或企业账号实名认证。 父主题: 准备工作
  • 准备本地横向联邦数据资源 上传数据集文件(作业参与方) 上传数据集文件到计算节点挂载路径下,供计算节点执行的脚本读取。如果是主机挂载,上传到宿主机的挂载路径下。如果是OBS挂载,使用华为云提供的对象存储服务,上传到当前计算节点使用的对象桶中。 图5 对象桶名称 此处以主机挂载为例: 创建一个主机挂载的计算节点Agent1,挂载路径为/tmp/tics1/。 使用文件上传工具上传包含数据集iris1.csv的dataset文件夹到宿主机/tmp/tics1/目录下。 iris1.csv内容如下: sepal_length,sepal_width,petal_length,petal_width,class 5.1,3.5,1.4,0.3,Iris-setosa 5.7,3.8,1.7,0.3,Iris-setosa 5.1,3.8,1.5,0.3,Iris-setosa 5.4,3.4,1.7,0.2,Iris-setosa 5.1,3.7,1.5,0.4,Iris-setosa 4.6,3.6,1,0.2,Iris-setosa 5.1,3.3,1.7,0.5,Iris-setosa 4.8,3.4,1.9,0.2,Iris-setosa 5,3,1.6,0.2,Iris-setosa 5,3.4,1.6,0.4,Iris-setosa 5.2,3.5,1.5,0.2,Iris-setosa 5.2,3.4,1.4,0.2,Iris-setosa 4.7,3.2,1.6,0.2,Iris-setosa 4.8,3.1,1.6,0.2,Iris-setosa 5.4,3.4,1.5,0.4,Iris-setosa 5.2,4.1,1.5,0.1,Iris-setosa 5.5,4.2,1.4,0.2,Iris-setosa 4.9,3.1,1.5,0.1,Iris-setosa 5,3.2,1.2,0.2,Iris-setosa 5.5,3.5,1.3,0.2,Iris-setosa 4.9,3.1,1.5,0.1,Iris-setosa 4.4,3,1.3,0.2,Iris-setosa 5.1,3.4,1.5,0.2,Iris-setosa 5,3.5,1.3,0.3,Iris-setosa 4.5,2.3,1.3,0.3,Iris-setosa 4.4,3.2,1.3,0.2,Iris-setosa 5,3.5,1.6,0.6,Iris-setosa 5.1,3.8,1.9,0.4,Iris-setosa 4.8,3,1.4,0.3,Iris-setosa 5.1,3.8,1.6,0.2,Iris-setosa 4.6,3.2,1.4,0.2,Iris-setosa 5.3,3.7,1.5,0.2,Iris-setosa 5,3.3,1.4,0.2,Iris-setosa 6.8,2.8,4.8,1.4,Iris-versicolor 6.7,3,5,1.7,Iris-versicolor 6,2.9,4.5,1.5,Iris-versicolor 5.7,2.6,3.5,1,Iris-versicolor 5.5,2.4,3.8,1.1,Iris-versicolor 5.5,2.4,3.7,1,Iris-versicolor 5.8,2.7,3.9,1.2,Iris-versicolor 6,2.7,5.1,1.6,Iris-versicolor 5.4,3,4.5,1.5,Iris-versicolor 6,3.4,4.5,1.6,Iris-versicolor 6.7,3.1,4.7,1.5,Iris-versicolor 6.3,2.3,4.4,1.3,Iris-versicolor 5.6,3,4.1,1.3,Iris-versicolor 5.5,2.5,4,1.3,Iris-versicolor 5.5,2.6,4.4,1.2,Iris-versicolor 6.1,3,4.6,1.4,Iris-versicolor 5.8,2.6,4,1.2,Iris-versicolor 5,2.3,3.3,1,Iris-versicolor 5.6,2.7,4.2,1.3,Iris-versicolor 5.7,3,4.2,1.2,Iris-versicolor 5.7,2.9,4.2,1.3,Iris-versicolor 6.2,2.9,4.3,1.3,Iris-versicolor 5.1,2.5,3,1.1,Iris-versicolor 5.7,2.8,4.1,1.3,Iris-versicolor 6.3,3.3,6,2.5,Iris-virginica 5.8,2.7,5.1,1.9,Iris-virginica 7.1,3,5.9,2.1,Iris-virginica 6.3,2.9,5.6,1.8,Iris-virginica 6.5,3,5.8,2.2,Iris-virginica 7.6,3,6.6,2.1,Iris-virginica 4.9,2.5,4.5,1.7,Iris-virginica 7.3,2.9,6.3,1.8,Iris-virginica 6.7,2.5,5.8,1.8,Iris-virginica 7.2,3.6,6.1,2.5,Iris-virginica 6.5,3.2,5.1,2,Iris-virginica 6.4,2.7,5.3,1.9,Iris-virginica 6.8,3,5.5,2.1,Iris-virginica 5.7,2.5,5,2,Iris-virginica 5.8,2.8,5.1,2.4,Iris-virginica 6.4,3.2,5.3,2.3,Iris-virginica 6.5,3,5.5,1.8,Iris-virginica 7.7,3.8,6.7,2.2,Iris-virginica 7.7,2.6,6.9,2.3,Iris-virginica 6,2.2,5,1.5,Iris-virginica 6.9,3.2,5.7,2.3,Iris-virginica 5.6,2.8,4.9,2,Iris-virginica 7.7,2.8,6.7,2,Iris-virginica 6.3,2.7,4.9,1.8,Iris-virginica 6.7,3.3,5.7,2.1,Iris-virginica 7.2,3.2,6,1.8,Iris-virginica 为了使容器内的计算节点程序有权限能够读取到文件,使用命令chown -R 1000:1000 /tmp/tics1/修改挂载目录下的文件的属主和组为1000:1000。 在第二台主机上创建计算节点Agent2,挂载路径为/tmp/tics2/。上传包含数据集iris2.csv的dataset文件夹到宿主机目录下,修改属主。 iris2.csv的内容如下: sepal_length,sepal_width,petal_length,petal_width,class 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa 4.6,3.1,1.5,0.2,Iris-setosa 5,3.6,1.4,0.2,Iris-setosa 5.4,3.9,1.7,0.4,Iris-setosa 4.6,3.4,1.4,0.3,Iris-setosa 5,3.4,1.5,0.2,Iris-setosa 4.4,2.9,1.4,0.2,Iris-setosa 4.9,3.1,1.5,0.1,Iris-setosa 5.4,3.7,1.5,0.2,Iris-setosa 4.8,3.4,1.6,0.2,Iris-setosa 4.8,3,1.4,0.1,Iris-setosa 4.3,3,1.1,0.1,Iris-setosa 5.8,4,1.2,0.2,Iris-setosa 5.7,4.4,1.5,0.4,Iris-setosa 5.4,3.9,1.3,0.4,Iris-setosa 7,3.2,4.7,1.4,Iris-versicolor 6.4,3.2,4.5,1.5,Iris-versicolor 6.9,3.1,4.9,1.5,Iris-versicolor 5.5,2.3,4,1.3,Iris-versicolor 6.5,2.8,4.6,1.5,Iris-versicolor 5.7,2.8,4.5,1.3,Iris-versicolor 6.3,3.3,4.7,1.6,Iris-versicolor 4.9,2.4,3.3,1,Iris-versicolor 6.6,2.9,4.6,1.3,Iris-versicolor 5.2,2.7,3.9,1.4,Iris-versicolor 5,2,3.5,1,Iris-versicolor 5.9,3,4.2,1.5,Iris-versicolor 6,2.2,4,1,Iris-versicolor 6.1,2.9,4.7,1.4,Iris-versicolor 5.6,2.9,3.6,1.3,Iris-versicolor 6.7,3.1,4.4,1.4,Iris-versicolor 5.6,3,4.5,1.5,Iris-versicolor 5.8,2.7,4.1,1,Iris-versicolor 6.2,2.2,4.5,1.5,Iris-versicolor 5.6,2.5,3.9,1.1,Iris-versicolor 5.9,3.2,4.8,1.8,Iris-versicolor 6.1,2.8,4,1.3,Iris-versicolor 6.3,2.5,4.9,1.5,Iris-versicolor 6.1,2.8,4.7,1.2,Iris-versicolor 6.4,2.9,4.3,1.3,Iris-versicolor 6.6,3,4.4,1.4,Iris-versicolor 6.8,2.8,4.8,1.4,Iris-versicolor 6.2,2.8,4.8,1.8,Iris-virginica 6.1,3,4.9,1.8,Iris-virginica 6.4,2.8,5.6,2.1,Iris-virginica 7.2,3,5.8,1.6,Iris-virginica 7.4,2.8,6.1,1.9,Iris-virginica 7.9,3.8,6.4,2,Iris-virginica 6.4,2.8,5.6,2.2,Iris-virginica 6.3,2.8,5.1,1.5,Iris-virginica 6.1,2.6,5.6,1.4,Iris-virginica 7.7,3,6.1,2.3,Iris-virginica 6.3,3.4,5.6,2.4,Iris-virginica 6.4,3.1,5.5,1.8,Iris-virginica 6,3,4.8,1.8,Iris-virginica 6.9,3.1,5.4,2.1,Iris-virginica 6.7,3.1,5.6,2.4,Iris-virginica 6.9,3.1,5.1,2.3,Iris-virginica 5.8,2.7,5.1,1.9,Iris-virginica 6.8,3.2,5.9,2.3,Iris-virginica 6.7,3.3,5.7,2.5,Iris-virginica 6.7,3,5.2,2.3,Iris-virginica 6.3,2.5,5,1.9,Iris-virginica 6.5,3,5.2,2,Iris-virginica 6.2,3.4,5.4,2.3,Iris-virginica 5.9,3,5.1,1.8,Iris-virginica 准备模型文件/初始权重(作业发起方) 作业发起方需要提供模型、初始权重(非必须),上传到Agent1的挂载目录下并使用命令chown -R 1000:1000 /tmp/tics1/修改挂载目录下的文件的属主和组。 使用python代码创建模型文件,保存为二进制文件model.h5,以鸢尾花为例,生成如下的模型: import tensorflow as tf import keras model = keras.Sequential([ keras.layers.Dense(4, activation=tf.nn.relu, input_shape=(4,)), keras.layers.Dense(6, activation=tf.nn.relu), keras.layers.Dense(3, activation='softmax') ]) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.save("d:/model.h5") 初始权重的格式是浮点数的数组,与模型对应。使用联邦学习训练出来的结果result_1可以作为初始权重,样例如下: -0.23300957679748535,0.7804553508758545,0.0064492723904550076,0.5866460800170898,0.676144003868103,-0.7883696556091309,0.5472091436386108,-0.20961782336235046,0.58524489402771,-0.5079598426818848,-0.47474920749664307,-0.3519996106624603,-0.10822880268096924,-0.5457949042320251,-0.28117161989212036,-0.7369481325149536,-0.04728877171874046,0.003856887575238943,0.051739662885665894,0.033792052417993546,-0.31878742575645447,0.7511205673217773,0.3158722519874573,-0.7290999293327332,0.7187696695327759,0.09846954792737961,-0.06735057383775711,0.7165604829788208,-0.730293869972229,0.4473201036453247,-0.27151209115982056,-0.6971480846405029,0.7360773086547852,0.819558322429657,0.4984433054924011,0.05300116539001465,-0.6597640514373779,0.7849202156066895,0.6896201372146606,0.11731931567192078,-0.5380218029022217,0.18895208835601807,-0.18693888187408447,0.357051283121109,0.05440644919872284,0.042556408792734146,-0.04341210797429085,0.0,-0.04367709159851074,-0.031455427408218384,0.24731603264808655,-0.062861368060112,-0.4265706539154053,0.32981523871421814,-0.021271884441375732,0.15228557586669922,0.1818728893995285,0.4162319302558899,-0.22432318329811096,0.7156463861465454,-0.13709741830825806,0.7237883806228638,-0.5489991903305054,0.47034209966659546,-0.04692812263965607,0.7690137028694153,0.40263476967811584,-0.4405142068862915,0.016018997877836227,-0.04845477640628815,0.037553105503320694 编写训练脚本(作业发起方) 作业发起方还需要编写联邦学习训练脚本,其中需要用户自行实现读取数据、训练模型、评估模型、获取评估指标的逻辑。计算节点会将数据集配置文件中的path属性作为参数传递给训练脚本。 JobParam属性如下: class JobParam: """训练脚本参数 """ # 作业id job_id = '' # 当前轮数 round = 0 # 迭代次数 epoch = 0 # 模型文件路径 model_file = '' # 数据集路径 dataset_path = '' # 是否仅做评估 eval_only = False # 权重文件 weights_file = '' # 输出路径 output = '' # 其他参数json字符串 param = '' 鸢尾花的训练脚本iris_train.py样例如下: # -*- coding: utf-8 -*- import getopt import sys import keras import horizontal.horizontallearning as hl def train(): # 解析命令行输入 jobParam = JobParam() jobParam.parse_from_command_line() job_type = 'evaluation' if jobParam.eval_only else 'training' print(f"Starting round {jobParam.round} {job_type}") # 加载模型,设置初始权重参数 model = keras.models.load_model(jobParam.model_file) hl.set_model_weights(model, jobParam.weights_file) # 加载数据、训练、评估 -- 用户自己实现 print(f"Load data {jobParam.dataset_path}") train_x, test_x, train_y, test_y, class_dict = load_data(jobParam.dataset_path) if not jobParam.eval_only: b_size = 1 model.fit(train_x, train_y, batch_size=b_size, epochs=jobParam.epoch, shuffle=True, verbose=1) print(f"Training job [{jobParam.job_id}] finished") eval = model.evaluate(test_x, test_y, verbose=0) print("Evaluation on test data: loss = %0.6f accuracy = %0.2f%% \n" % (eval[0], eval[1] * 100)) # 结果以json格式保存 -- 用户读取评估指标 result = {} result['loss'] = eval[0] result['accuracy'] = eval[1] # 生成结果文件 hl.save_train_result(jobParam, model, result) # 读取CSV数据集,并拆分为训练集和测试集 # 该函数的传入参数为CSV_FILE_PATH: csv文件路径 def load_data(CSV_FILE_PATH): import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import LabelBinarizer # 读取目录数据集,读取目录下所有CSV文件 if os.path.isdir(CSV_FILE_PATH): print(f'read file folder [{CSV_FILE_PATH}]') all_csv_path = glob.glob(os.path.join(CSV_FILE_PATH, '*.csv')) all_csv_path.sort() csv_list = [] for csv_path in all_csv_path: csv_list.append(pd.read_csv(csv_path)) IRIS = pd.concat(csv_list) # 读取CSV文件 else: IRIS = pd.read_csv(CSV_FILE_PATH) target_var = 'class' # 目标变量 # 数据集的特征 features = list(IRIS.columns) features.remove(target_var) # 目标变量的类别 Class = IRIS[target_var].unique() # 目标变量的类别字典 Class_dict = dict(zip(Class, range(len(Class)))) # 增加一列target, 将目标变量进行编码 IRIS['target'] = IRIS[target_var].apply(lambda x: Class_dict[x]) # 对目标变量进行0-1编码(One-hot Encoding) lb = LabelBinarizer() lb.fit(list(Class_dict.values())) transformed_labels = lb.transform(IRIS['target']) y_bin_labels = [] # 对多分类进行0-1编码的变量 for i in range(transformed_labels.shape[1]): y_bin_labels.append('y' + str(i)) IRIS['y' + str(i)] = transformed_labels[:, i] # 将数据集分为训练集和测试集 train_x, test_x, train_y, test_y = train_test_split(IRIS[features], IRIS[y_bin_labels], train_size=0.7, test_size=0.3, random_state=0) return train_x, test_x, train_y, test_y, Class_dict class JobParam: """训练脚本参数 """ # required parameters job_id = '' round = 0 epoch = 0 model_file = '' dataset_path = '' eval_only = False # optional parameters weights_file = '' output = '' param = '' def parse_from_command_line(self): """从命令行中解析作业参数 """ opts, args = getopt.getopt(sys.argv[1:], 'hn:w:', ['round=', 'epoch=', 'model_file=', 'eval_only', 'dataset_path=', 'weights_file=', 'output=', 'param=', 'job_id=']) for key, value in opts: if key in ['--round']: self.round = int(value) if key in ['--epoch']: self.epoch = int(value) if key in ['--model_file']: self.model_file = value if key in ['--eval_only']: self.eval_only = True if key in ['--dataset_path']: self.dataset_path = value if key in ['--weights_file']: self.weights_file = value if key in ['--output']: self.output = value if key in ['--param']: self.param = value if key in ['--job_id']: self.job_id = value if __name__ == '__main__': train()
  • 认证源和组织管理相关操作 表4 认证源和组织管理相关操作 操作 描述 认证源管理 SIM Space认证源管理使用IPDCenter基础服务的认证源管理能力,支持配置多种第三方认证源,包括组织社交认证源和组织认证源,为组织用户登录SIM Space提供便利。在IPDCenter中进行认证源管理的操作请参见认证源管理。 组织信息管理 SIM Space组织管理使用IPDCenter基础服务的组织管理能力,IPDCenter超级管理员可对组织信息进行维护和修改。在IPDCenter中进行组织信息管理的操作请参见组织信息管理。
  • 创建OBS操作步骤 登录OBS管理控制台,在桶列表页面右上角单击“创建桶”,创建OBS桶。 图2 创建桶 创建桶的区域需要与ModelArts所在的区域一致。例如:当前ModelArts在华北-北京一区域,在对象存储服务创建桶时,请选择华北-北京一。 如何查看OBS桶与ModelArts的所处区域,请参见查看OBS桶与ModelArts是否在同一区域。 请勿开启桶加密,ModelArts不支持加密的OBS桶,会导致ModelArts读取OBS中的数据失败。 在桶列表页面,单击桶名称,进入该桶的概览页面。 图3 桶列表 单击左侧导航的“对象”,在对象页面单击新建文件夹,创建OBS文件夹。例如,在已创建的OBS桶“c-flowers”中新建一个文件夹“flowers”。 图4 新建文件夹 在OBS桶中创建完文件夹,即可以上传文件,上传文件操作请参见OBS上传操作。
  • 创建用户组 使用主账号登录IAM服务控制台。 左侧导航窗格中,选择“用户组”页签,单击右上方的“创建用户组”。 图1 创建用户组 在“创建用户组”界面,输入“用户组名称”,创建用户组。 返回用户组列表,单击列表中的“授权”。 图2 用户组授权 参考表1,为用户组设置权限。 表1 授权项 授权项 说明 Agent Operator 拥有该权限的用户可以切换角色到委托方账号中,访问被授权的服务。 Tenant Administrator 全部云服务管理员(除IAM管理权限)。 Security Administrator 统一身份认证 服务(除切换角色外)所有权限。 图3 添加用户组权限 设置最小授权范围。 根据授权项策略,系统会自动推荐授权范围方案。例如,可以选择“所有资源”,即用户组内的IAM用户可以基于设置的授权项限使用账号中所有的企业项目、区域项目、全局服务资源。也可以选择“指定区域项目资源”,如指定“西南-贵阳一”区域,即用户组内的IAM用户仅可使用该区域项目中的资源。 图4 设置最小授权范围 完成用户组授权。 图5 完成授权
  • 细粒度策略授权 登录IAM服务管理控制台,创建自定义策略。 具体操作,请参见《统一身份认证服务用户指南》中的创建自定义策略。 说明如下: 您必须使用IAM管理员用户,即属于admin用户组的用户,因为只有IAM管理员用户具备创建用户组及用户、修改用户组权限等操作权限。 由于 GaussDB (DWS)服务属于项目级服务,“作用范围”必须选择“项目级服务”,如果需要该策略对多个项目生效,需要对多个项目分别授权。 在IAM中,预置了以下两种GaussDB(DWS)策略模板。在创建自定义策略时,您可以选择以下模板,然后基于模板修改策略授权语句。 DWS Admin:拥有对 数据仓库 服务的所有执行权限。 DWS Viewer:拥有对数据仓库服务的只读权限。 在策略授权语句中,您可以在Action列表中,添加如授权项列表所述的GaussDB(DWS)资源操作或REST API对应的“授权项”,从而使策略获得相应的操作权限。 例如,在策略语句的Action列表中,添加“dws:cluster:create”,那么该策略就拥有了创建/恢复集群的权限。 如果需要使用其他服务,您同时还需授予其他服务的相关操作权限,具体内容请查阅相关服务的帮助文档。 例如,创建GaussDB(DWS) 集群时,需要配置集群所属的虚拟私有云,为了能获取VPC列表,您需在策略语句中添加授权项“vpc:*:get*”。 创建用户组。 具体操作,请参见《统一身份认证服务用户指南》中的创建用户组。 将用户加入用户组,并将新创建的自定义策略授权给用户组,使用户组中的用户具有策略定义的权限。 具体操作,请参见《统一身份认证服务用户指南》中的查看或修改用户组。