跳转至

源码部署FATE单机版

1. 说明

服务器配置:

数量 1
配置 8 core / 16G memory / 500G hard disk
操作系统 Version: CentOS Linux release 7
用户 User: app owner:apps

注意,如下示例中的${version},请用实际的版本号替换,参考fate.env文件中的FATE版本

2. 部署前环境检查

本地8080、9360、9380端口是否被占用

netstat -apln|grep 8080
netstat -apln|grep 9360
netstat -apln|grep 9380

3. 获取源代码

请参考获取源代码, 完成后,

请设置部署所需环境变量(注意, 通过以下方式设置的环境变量仅在当前终端会话有效, 若打开新的终端会话, 如重新登录或者新窗口, 请重新设置)

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

样例:

cd /xxx/FATE
export FATE_PROJECT_BASE=$PWD
export version=`grep "FATE=" ${FATE_PROJECT_BASE}/fate.env | awk -F "=" '{print $2}'`

4. 安装并配置Python环境

4.1 安装Python环境(可选)

请安装或者使用已有的Python 3.6 或者 3.7 版本,最好使用3.6.5,其为FATE团队官方大量测试版本

4.2 为FATE配置虚拟环境

virtualenv --version

若能正常返回版本信息, 则虚拟环境工具已安装, 若提示命令不存在, 请自行安装,大多情况下可以使用类似命令安装

pip install virtualenv
cd(or create) {放置虚拟环境的根目录}
virtualenv {虚拟环境名称}
export FATE_VENV_BASE={放置虚拟环境的根目录}/{虚拟环境名称}
source ${FATE_VENV_BASE}/bin/activate

4.3 安装FATE所需要的Python依赖包

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

如果出现相关问题, 可以先参考可能遇到的问题

5. 配置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

6. 启动fate flow server

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

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

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)

7. 安装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."
}

8. 测试项

8.1 Toy测试

flow test toy -gid 10000 -hid 10000

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

success to calculate secure_sum, it is 2000.0

8.2 单元测试

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

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

there are 0 failed test

有些用例算法在 examples 文件夹下, 请尝试使用。 Please refer here for a quick start tutorial.

您还可以通过浏览器体验算法过程看板,请参照编译包安装fateboard

9. 编译包安装fateboard(建议可选)

使用fateboard可视化FATE Job

9.1 安装并配置Java环境

cd ${FATE_PROJECT_BASE};
mkdir -p env/jdk;
cd env/jdk
wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/fate/jdk-8u192.tar.gz;
tar xzf jdk-8u192.tar.gz

配置环境变量

cd ${FATE_PROJECT_BASE};
vim bin/init_env.sh;
sed -i.bak "s#JAVA_HOME=.*#JAVA_HOME=$PWD/env/jdk/jdk-8u192/#g" bin/init_env.sh

9.2 下载编译包安装fateboard

cd ${FATE_PROJECT_BASE};
mv fateboard fateboard_code;
wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/fate/${version}/release/fateboard.tar.gz;
tar xzf fateboard.tar.gz;
sed -i.bak "s#fateboard.datasource.jdbc-url=.*#fateboard.datasource.jdbc-url=jdbc:sqlite:$PWD/fate_sqlite.db#g" $PWD/fateboard/conf/application.properties;
sed -i.bak "s#fateflow.url=.*#fateflow.url=http://localhost:9380#g" $PWD/fateboard/conf/application.properties

9.3 启动fateboard

cd fateboard;
bash service.sh status;
bash service.sh start

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

JAVA_HOME=/data/project/deploy/FATE/env/jdk/jdk-8u192/
service start sucessfully. pid: 116985
status:
        app      116985  333  1.7 5087004 581460 pts/2  Sl+  14:11   0:06 /xx/FATE/env/jdk/jdk-8u192//bin/java -Dspring.config.location=/xx/FATE/fateboard/conf/application.properties -Dssh_config_file=/xx/FATE/fateboard/ssh/ -Xmx2048m -Xms2048m -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log -XX:+HeapDumpOnOutOfMemoryError -jar /xx/FATE/fateboard/fateboard.jar

访问:Http://${ip}:8080, ip为127.0.0.1或本机实际ip

10. 源码安装fateboard

请参考FATEBoard仓库

11. 可能会遇到的问题

  • 如果出现"Too many open files"类似错误,可能是因为操作系统句柄数配置过低
  • 对于MacOS, 可以尝试这里
  • 对于Linux, 可以尝试这儿

  • 如果在MacOS下面, 安装gmpy2这个python依赖包失败的话, 尝试先安装如下基础库后, 再安装依赖包

brew install gmp mpfr libmpc

最后更新: 2022-07-07