中文
luckfu的潦草笔记

最初的梦想绝对会到达!


  • 首页

  • 归档

  • 关于我

  • 公益404

  • 搜索

联邦学习框架 FATE 单机版源码部署 ARM主机

时间: 2021-12-15   |   分类: FATE   联邦学习   | 字数: 1035 字 | 阅读: 3分钟 | 阅读次数:

FATE(Federated AI Technology Enabler)是一个联邦学习框架。本文大部分内容来自官方文档整合,单独记录的原因是这次需要源码部署,官方部署文档 https://github.com/FederatedAI/FATE 中一些细节需要自己摸索,形成总结。

1.部署前环境检查

  • python环境
  • jdk
  • Maven
  • 本地8080、9360、9380端口是否被占用
netstat -apln|grep 8080
netstat -apln|grep 9360
netstat -apln|grep 9380

2. 设置环境变量

设置环境变量是因为FATA框架中,很多脚本要用到环境变量

export branch={分支名称, 若使用某个发布版本分支, 则为`v版本号`, 如`v1.7.0`}
export version={FATE版本号, 如1.7.0}
export version_tag={FATE版本标签, 如rc1/rc2/release}

3. 获取源码

git clone https://github.com/FederatedAI/FATE.git -b ${branch} --recurse-submodules --depth=1
#或者
git clone https://gitee.com/FederatedAI/FATE.git -b ${branch} --depth=1;

#更新代码
cd FATE;
bash build/common/update_submodule_from_gitee.sh
git pull
git submodule update --remote

4. 运行时环境变量

cd {上述代码的存放目录}
export FATE_PROJECT_BASE=$PWD
export version=`grep "FATE=" ${FATE_PROJECT_BASE}/fate.env | awk -F "=" '{print $2}'`

5. 安装FATE所需要的Python依赖包

5.1 修改依赖包说明文件

官方部署文档中 requirements版本要求非常严格,实际部署中,可能因为某些原因无法满足,比如我的环境是ARM版Ubuntu,tensorflow和pytouch的版本支持有限,这种情况下可以删除python/requirements.txt的版本描述。原则上版本高一点是可以的。

在 python/requirements.txt 增加

ruamel.yaml
peewee
apsw
dotenv
redis
cos-python-sdk-v5
beautifultable
kazoo
coverage
cloudpickle
lmdb
coverage
pycryptodomex
libsm3py

5.2 安装Python依赖包

cd ${FATE_PROJECT_BASE};
sh bin/install_os_dependencies.sh;
source ${FATE_VENV_BASE}/bin/activate;
pip install -r python/requirements.txt

6. 配置FATE

编辑bin/init_env.sh环境变量文件

cd ${FATE_PROJECT_BASE}
sed -i.bak "s#PYTHONPATH=.*#PYTHONPATH=$PWD/python:$PWD/fateflow/python#g" bin/init_env.sh;
sed -i.bak "s#venv=.*#venv=${FATE_VENV_BASE}#g" bin/init_env.sh

检查conf/service_conf.yaml全局配置文件中是否将基础引擎配置为单机版, 若default_engines显示如下,则为单机版

default_engines:
  computing: standalone
  federation: standalone
  storage: standalone

7. 启动fate flow server

cd ${FATE_PROJECT_BASE};
source bin/init_env.sh;
cd fateflow;
bash bin/service.sh status;
bash bin/service.sh start

显示如下类似则为启动成功,否则请依据提示查看日志

bash
service start sucessfully. pid: 111907
status:app      111907 75.7  1.1 3740008 373448 pts/2  Sl+  12:21   0:17 python /xx/FATE/fateflow/python/fate_flow/fate_flow_server.py
python  111907  app   14u  IPv4 3570158828      0t0  TCP localhost:boxp (LISTEN)
python  111907  app   13u  IPv4 3570158827      0t0  TCP localhost:9360 (LISTEN)

8. 安装fate client

cd ${FATE_PROJECT_BASE};
source bin/init_env.sh;
cd python/fate_client/;
python setup.py install

初始化fate flow client

cd ../../;
flow init -c conf/service_conf.yaml

显示如下类似则为初始化成功,否则请依据提示查看日志

{
    "retcode": 0,
    "retmsg": "Fate Flow CLI has been initialized successfully."
}

9. FATE-Board 安装

FATE-Board的部署需要java环境和Maven

9.1 配置修改

修改 ${FATE_PROJECT_BASE}/fateboard/src/main/resources/application.properties 文件

spring.datasource.driver-Class-Name=org.sqlite.JDBC
···
fateboard.datasource.jdbc-url=jdbc:sqlite:路径/数据库文件名

9.2 打包

cd fateboard/
mvn clean package -DskipTests

9.3 启动 FATE-Board

nohup \
java -Dspring.config.location=${FATE_PROJECT_BASE}/fateboard/src/main/resources/application.properties \
-Dssh_config_file=${FATE_PROJECT_BASE}/fateboard//src/main/resources/  \
-Xmx2048m -Xms2048m -XX:+PrintGCDetails  \
-Xloggc:gc.log -XX:+HeapDumpOnOutOfMemoryError  \
-jar ${FATE_PROJECT_BASE}/fateboard//target/fateboard-${version}.jar > /dev/null 2>&1 &

访问 http:127.0.0.1:8080 用户名 admin 密码 admin

10. 测试项

10.1 Toy测试

flow test toy -gid 10000 -hid 10000

如果成功,屏幕显示类似下方的语句:

success to calculate secure_sum, it is 2000.0

10.2 单元测试

cd ${FATE_PROJECT_BASE};
bash ./python/federatedml/test/run_test.sh

如果成功,屏幕显示类似下方的语句:

there are 0 failed test
#FATE# #FATE-Board# #联邦学习#

声明:联邦学习框架 FATE 单机版源码部署 ARM主机

链接:http://www.luckfu.com/post/2021-12-15_fate_install/

作者:luckfu

声明: 本博客文章除特别声明外,均采用 CC BY-NC-SA 3.0许可协议,转载请注明出处!

创作实属不易,如有帮助,那就打赏博主些许茶钱吧 ^_^
WeChat Pay

微信打赏

Alipay

支付宝打赏

paypal Pay

PayPal打赏

macOS Monterey中蓝牙PAN(Bluetooth PAN)到哪里去了? 😡
hugo + github action + github vscode 真香
  • 文章目录
  • 站点概览
luckfu

luckfu

一瞬间,过去的一切都离你而去,剩下的只有回忆!

31 日志
29 分类
41 标签
GitHub
标签云
  • 生活
  • Python
  • Oracle cloud
  • Free vps
  • Gpt
  • K8s
  • Vm.standard.a1.flex
  • Chatgpt
  • Github
  • Langchain
  • 5.1 修改依赖包说明文件
  • 5.2 安装Python依赖包
  • 9.1 配置修改
  • 9.2 打包
  • 9.3 启动 FATE-Board
  • 10.1 Toy测试
  • 10.2 单元测试
© 2010 - 2025 luckfu的潦草笔记
Powered by - Hugo v0.127.0 / Theme by - NexT
0%