联邦学习框架FATE集群部署指南(双节点)

由于毕业设计需要,综合考虑了目前主流的联邦学习框架,最终选择了FATE进行本地化部署,本指南仅在VMware上部署作实验验证之用,生产环境视实际情况部署方式可能有所不同喔!

前期准备

  • VMware安装,这里就不赘述啦,大家自行百度哦,附官网链接

  • CentOS镜像文件下载,注意哦,目前FATE框架仅支持CentOS 7.2/Ubuntu 18.04以上

    image-20240327165323266

    点击CentOS Linux

    • 选择X86_64

    image-20240327165513987

    • 下载源选择第一个阿里云即可

    image-20240327165639272

    • 选择下图条目下载即可

    image-20240327165752707

环境配置

小伙伴们注意哦,再进行接下来的虚拟机配置前,最好保证硬盘有足够的空间,方便后期FATE的部署。

虚拟机配置

  • 打开VMware选择创建新的虚拟机

  • 进入向导页面选择->典型->稍后安装操作系统

  • image-20240327172615257

  • 配置名称及路径

    image-20240327172725678

  • 配置硬盘空间,按照官方文档部署是在一块500G空盘上进行的,后续需要配置超过128G/节点作为虚拟内存,但是目前机子上没有足够的空余空间,因此每个节点我只配置了120G空间,不用担心会一下子把硬盘占满,虚拟机空间会随着实际使用的量来慢慢增加直至上限。

    image-20240327173917186

  • 下一步选择自定义硬件,这里我调整了一下内存和CPU数量以及使用的镜像文件

    image-20240327174124853

    image-20240327174425117

ok,点击完成,接下来愉快的打开虚拟机咯♪(^∇^*)

进入引导界面后直接回车即可

image-20240327185902024

接下来需要等待一段时间自检,这段时间干啥好呢?看会小说?当然不!等待过程中,我们可以重复上述步骤创建一个新的虚拟机,它将作为我们集群中的另一个节点!当然,别忘了更改一个新的虚拟机名字哦,这里我使用了fate101

CentOS安装

  • 首先是安装时的语言,这里选择中文即可

  • 进入配置界面,为了以后命令方便,此处键盘我改为了英文键盘

    image-20240328170944976

  • 点击软件选择

    image-20240327191157285

    选择带GUI的服务器

    image-20240327191228606

  • 点击安装位置进行手动分区(重要)

    image-20240327191404176

    image-20240327191434793

    点击完成

    这里可以先点自动创建,随后再修改大小

    image-20240327191631219

    最后空间分配如下,仅供参考

    image-20240328194457857

    完成->接受更改

  • 再对网络和主机名进行配置

    image-20240327192514821

    image-20240327192620209

    image-20240327192831234

    上图绿框部分大家根据自己实际情况修改,网关地址可以在VM的虚拟网络编辑器里查看,实在不知道如何修改的小伙伴可以评论区留言哈,别忘了点右下角保存喔!

    image-20240327193512913

    随后点击调成打开,应该就可以看到刚才的配置项了!,这里忘了说下面的主机名记得要点右边的应用哦

    最后点击完成退回配置界面,点击开始安装即可!

  • 安装过程中可以顺便配置一下Root密码,这里就不赘述了

    image-20240327193812228

  • 接下来的等待时间,同样按照上述操作配置另一台虚拟机,然后emm...这里应该没那么快,看会小说吧<( ̄︶ ̄)↗[GO!]

  • 完成后记得点重启喔!

    image-20240327195016588

  • 重启后先接受许可证,然后直接点击完成即可

  • 后续的配置没啥难点,不再赘述,对另一台虚拟机也执行相同配置

  • 顺利进入桌面啦,系统安装告一段落

    image-20240327195717447

系统杂项配置

以下配置在两台虚拟机上均需进行,标示重要的对后续实验有影响

hosts文件配置(重要)

root执行

cd /etc/
vim hosts

在原文件上添加上以下两行,即ip地址加主机名

image-20240327230118735

节点连通性实验(重要)

即在fate100和fate101上分别使用ping命令测试网络连通性,双方都正常即可

系统参数修改(重要)

root执行

  • 清理20-nproc.conf文件及my.cnf

    cd /etc/security/limits.d
    
    ls -lrt 20-nproc.conf
    #若文件存在则执行
    mv 20-nproc.conf 20-nproc.conf_bak
    
    cd /etc/
    mv my.cnf my.cnf_bak
  • 修改句柄数、进程数等

    vim /etc/security/limits.conf
    在文件中加入以下几行
    
    * soft nofile 65535
    
    * hard nofile 65535
    
    * soft nproc 65535
    
    * hard nproc 65535

    image-20240328111324855

    重启或者注销后重新登陆即可生效

    可以用ulimit -a查看是否生效

创建用户免密登录

由于仅作实验之用,这里就完全不考虑安全性问题,而是采取偷懒的办法提高效率,因为目前系统默认登录为之前进入系统配置的账户,不具有root权限,配置前需要提权,且可能存在后续权限不足情况,因此这里干脆一劳永逸即使用实验用到的app用户进行后续操作

root执行

groupadd -g 6000 apps
useradd -s /bin/bash -g apps -d /home/app app
passwd app

设置好密码后

vim /etc/gdm/custom.conf

[daemon]模块后加入以下配置项

AutomaticLoginEnable=True
AutomaticLogin=app

image-20240328203144352

接下来进行sudo配置

vim /etc/sudoers.d/app

#在文件中加入以下三行,具体位置如下图
app ALL=(ALL) ALL

app ALL=(ALL) NOPASSWD: ALL

Defaults !env_reset

image-20240329093407549

随后重启系统即可,重启后可能会跳出配置对话框,全部前进或跳过即可

SSH免密配置(重要)

fate100和fate101app身份执行

ssh-keygen -t rsa # 三次回车即可

cat ~/.ssh/id_rsa.pub >> /home/app/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

接下来需要拷贝fate100的authorized_keys 到fate101 ~/.ssh目录下,追加到fate101的id_rsa.pub到authorized_keys,然后再拷贝到fate100

fate100app执行

scp ~/.ssh/authorized_keys app@192.168.32.101:/home/app/.ssh

输入yes及fate101上app密码

fate101app执行

cat ~/.ssh/id_rsa.pub >> /home/app/.ssh/authorized_keys

scp ~/.ssh/authorized_keys app@192.168.32.100:/home/app/.ssh

输入yes及fate100上app密码

最后,分别在fate100和fate101上执行ssh测试成功免密即可

image-20240328110349161

image-20240328110521755

exit退出ssh

这里建议大家再额外对本机进行一次SSH访问

比如在fate100上 ssh fate100 由于是第一次访问需要手动输入yes验证,后续可以避免部署的时候出bug

关闭防火墙

这是偷懒做法喔,实际开发需要保证安全性还是要仔细配置端口进出规则哈

fate100和fate101上执行

(这里大家基于自己的防火墙类型执行,不同系统可能会有差异)

sudo systemctl disable firewalld
sudo systemctl stop firewalld

屏幕保护关闭

由于需要同时操作两个虚拟机,可能小伙伴们在切换工作窗口时会发现另一台虚拟机已经进入屏保状态,需要再次输入密码,非常影响体验,只需在设置里修改即可,如下图

image-20240327231001921

FATE部署

以下仅在fate100上执行

FATE安装包下载

这里我下载的是最新版本V2.1.0

首先当然是创建一个项目文件夹

cd ~
mkdir project && cd project/
wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/fate/2.1.0/release/fate_cluster_install_2.1.0_release.tar.gz
# 等待下载完成后解压
tar xzf fate_cluster_install_2.1.0_release.tar.gz

配置文件修改

vim fate_cluster_install_2.1.0_release/allInone/conf/setup.conf

这里也附上官方文档的配置项说明(长图警告)

image-20240328114420342

我的配置项如下,标红的为修改项,小伙伴们结合自己实际修改哦

image-20240329095021202

执行部署脚本

按照上述配置含义修改setup.conf文件对应的配置项后,在fate_cluster_install_2.1.0_release/allInone目录下执行部署脚本即可

cd fate_cluster_install_2.1.0_release/allInone
nohup bash ./deploy.sh > logs/boot.log 2>&1 &

yes!接下来只需等待部署完毕啦,曙光就在眼前,但是现在能做的也就是祈祷部署别报错啦哈哈哈,看到这里的小伙伴你已经很棒啦,久坐伤身,站起来伸个懒腰吧!

部署期间,大家也可以查看logs文件夹中的日志文件了解部署情况,这里附上官方说明

tail -f ./logs/deploy.log (部署结束,查看一下即可)
tail -f ./logs/deploy-guest.log (实时打印GUEST端的部署情况)
tail -f ./logs/deploy-mysql-guest.log  (实时打印GUEST端mysql的部署情况)
tail -f ./logs/deploy-host.log    (实时打印HOST端的部署情况)
tail -f ./logs/deploy-mysql-host.log    (实时打印HOST端mysql的部署情况)

如果在部署完毕后日志出现ERR等错误,大家可以去官方说明的以下目录查看错误日志

1)eggroll日志

/home/app/project/fate/eggroll/logs/eggroll/bootstrap.clustermanager.err

/home/app/project/fate/eggroll/logs/eggroll/clustermanager.jvm.err.log

/home/app/project/fate/eggroll/logs/eggroll/nodemanager.jvm.err.log

/home/app/project/fate/eggroll/logs/eggroll/bootstrap.nodemanager.err

2)fateflow日志

/home/app/project/fate/fate_flow/logs/fate_flow

3)fateboard日志

/home/app/project/fate/fateboard/logs

4)osx日志

/home/app/project/fate/osx/logs/broker/

测试

成功部署后,大家可以运行一下FATE官方文档中的两个基准测试,结果正确就是成功了!下面是测试的具体参数及案例

image-20250223164104593

FATE/deploy/cluster-deploy/allinone/fate-allinone_deployment_guide.zh.md at master · FederatedAI/FATE · GitHub

参考文献

GitHub - FederatedAI/FATE: An Industrial Grade Federated Learning Framework

FATE/deploy/cluster-deploy/allinone/fate-allinone_deployment_guide.zh.md at master · FederatedAI/FATE · GitHub

版权声明:除特殊说明,博客文章均为SATAKAUI原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇