FATE学习:跟着日志读源码(二)fate_flow server 启动

日志走读 fate_flow server 启动部分

综述

  • 代码:python/fate_flow/fate_flow_server.py
  • web框架:Flask

流程为:

  1. 执行 python fate_flow_server.py ,这部分会在容器中打出相应日志。
  2. fate_flow_server 执行启动过程。这里可以看下logs目录
(app-root) bash-4.2# pwd
/data/projects/fate/logs
(app-root) bash-4.2# ls
fate_flow
(app-root) bash-4.2# ls fate_flow/
DEBUG.log  fate_flow_detect.log  fate_flow_schedule.log  fate_flow_stat.log  INFO.log  peewee.log

可以看到,由于没有提交任何任务,当前只有一个fate_flow的目录,这里记录的是fate_flow_server启动的日志。具体而言

* peewee.log:fate中操作db,使用了peewee,这里记录所有通过peewee操作数据库的日志
* fate_flow_detect.log:探测器日志
* fate_flow_schedule.log:调度器日志
* fate_flow_stat.log:除以上3部分外的其余状态日志
* DEBUG.log、INFO.log、WARNING.log、ERROR.log:各级别日志,会将以上各部分(除了fate_flow_detect.log,这个后续单独说明逻辑)中对应级别的日志收集。

因fate_flow_server 启动的日志,均输出在fate_flow 目录中,故本文所述的日志,均为fate_flow目录中的对应日志。

执行 fate_flow_server.py

由于是KubeFATE 部署,直接查看容器日志即可。

+ mkdir -p /data/projects/fate/conf/
+ cp /data/projects/fate/conf1/transfer_conf.yaml /data/projects/fate/conf/transfer_conf.yaml
+ cp /data/projects/fate/conf1/service_conf.yaml /data/projects/fate/conf/service_conf.yaml
+ cp /data/projects/fate/conf1/pipeline_conf.yaml /data/projects/fate/conf/pipeline_conf.yaml
+ sed -i 's/host: fateflow/host: 10.200.96.237/g' /data/projects/fate/conf/service_conf.yaml
+ sed -i 's/ip: fateflow/ip: 10.200.96.237/g' /data/projects/fate/conf/pipeline_conf.yaml
+ cp -r /data/projects/fate/examples /data/projects/fate/examples-shared-for-client
+ sleep 5
+ python ./fate_flow/fate_flow_server.py
 * Running on http://10.200.96.237:9380/ (Press CTRL+C to quit)

从上述命令可以看出,涉及操作是创建目录->复制配置文件->启动 fate_flow_server.py。

fate_flow_server 启动细节

fate_flow server 启动uml图

  1. fate_flow_server.py:定义app变量,定义server能提供的服务,这一部分源码如下:
    app = DispatcherMiddleware(
        manager,
        {
            '/{}/data'.format(API_VERSION): data_access_app_manager,
            '/{}/model'.format(API_VERSION): model_app_manager,
            '/{}/job'.format(API_VERSION): job_app_manager,
            '/{}/table'.format(API_VERSION): table_app_manager,
            '/{}/tracking'.format(API_VERSION): tracking_app_manager,
            '/{}/pipeline'.format(API_VERSION): pipeline_app_manager,
            '/{}/permission'.format(API_VERSION): permission_app_manager,
            '/{}/version'.format(API_VERSION): version_app_manager,
            '/{}/party'.format(API_VERSION): party_app_manager,
            '/{}/initiator'.format(API_VERSION): initiator_app_manager,
            '/{}/tracker'.format(API_VERSION): tracker_app_manager,
            '/{}/forward'.format(API_VERSION): proxy_app_manager
        }
    )

不同的manager对应不同模块的功能。详细说明参照REF1,

  1. fate_flow_server.py:调用db_models.init_database_tables()具体执行在 3 中。这里代码里是init_flow_db(),实际是db_models.init_database_tables()的别名。用来和init_arch_db()区分。
  2. fate_flow/db/db_models.py: 初始化fate_flow相关表。注意,在类初始化时,这里会进行一次判断,cluster模式使用mysql,standalone 模式使用sqlite。这一部分日志会输出到fate_flow_stat.log 中:
### FATE联邦学习框架概述 FATE(Federated AI Technology Enabler)是一个开源的联邦学习框架,旨在提供安全、高效的多方联合建模解决方案。它支持多种类型的联邦学习模式,包括但不限于横向联邦学习和纵向联邦学习。 #### 横向联邦学习案例 在实际应用中,当参与方的数据特征空间相同而样本ID不同的情况下,可以采用横向联邦学习的方式进行协作建模[^1]。这种方式能够有效利用各方数据的优势,提升模型性能的同时保护隐私。 #### 终端命令操作指南 为了方便用户管理任务流程,在FATE框架中可以通过`flow`命令来完成一系列的操作,比如提交任务等。具体而言,通过编写配置文件(通常是JSON格式),定义好训练所需的各种参数之后,即可运行相应的脚本启动作业[^2]。例如: ```bash flow job submit -c test_hetero_linr_train_job_conf.json -d test_hetero_linr_train_job_dsl.json ``` 上述命令中的两个JSON文件分别代表了DSL(Domain Specific Language)描述以及具体的配置选项集合。 #### 可视化工具——FATEBoard 除了强大的后台处理能力之外,FATE还配备了一个图形界面叫做FATEBoard,用于监控整个实验过程的状态变化情况以及其他重要指标展示功能[^3]。这使得研究人员无需频繁切换窗口查看日志信息就能直观理解当前进展如何。 ### 安装部署与文档获取途径 对于初次接触该系统的开发者来说,可以从官方仓库下载最新版本源码包或者进制分发版来进行本地环境搭建测试;与此同时也可以查阅项目主页上的详细介绍资料进一步加深认识程度。通常情况下这些资源会被托管于GitHub平台之上供全球访问者自由取阅。 以下是几个可能对你有帮助的相关链接地址模板(需自行替换为真实URL): - **官方网站**: https://fate.apache.org/ - **GitHub Repository**: https://github.com/FederatedAI/FATE - **User Documentation**: https://fate.readthedocs.io/ 请注意以上仅为示意性质的内容结构安排建议,请根据自己实际情况调整适用范围内的细节部分。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值