资源指基础引擎资源,主要指计算引擎的CPU资源和内存资源,传输引擎的CPU资源和网络资源,目前仅支持计算引擎CPU资源的管理
$FATE_PROJECT_BASE/conf/service_conf.yaml进行配置,也即当前引擎分配给FATE集群的资源大小FATE Flow Server启动时从配置文件获取所有基础引擎信息并注册到数据库表t_engine_registryFATE Flow Server已经启动,修改资源配置,可重启FATE Flow Server,也可使用命令:flow server reload,重新加载配置total_cores = nodes * cores_per_node样例
fate_on_standalone:是为执行在FATE Flow Server同台机器的单机引擎,一般用于快速实验,nodes一般设置为1,cores_per_node一般为机器CPU核数,也可适量超配
fate_on_standalone:
standalone:
cores_per_node: 20
nodes: 1
fate_on_eggroll:依据EggRoll集群实际部署情况进行配置,nodes表示node manager的机器数量,cores_per_node表示平均每台node manager机器CPU核数
fate_on_eggroll:
clustermanager:
cores_per_node: 16
nodes: 1
rollsite:
host: 127.0.0.1
port: 9370
fate_on_spark:依据在Spark集群中配置给FATE集群的资源进行配置,nodes表示Spark节点数量,cores_per_node表示平均每个节点分配给FATE集群的CPU核数
fate_on_spark:
spark:
# default use SPARK_HOME environment variable
home:
cores_per_node: 20
nodes: 2
注意:请务必确保在Spark集群分配了对应数量的资源于FATE集群,若Spark集群分配资源少于此处FATE所配置的资源,那么会出现可以提交FATE作业,但是FATE Flow将任务提交至Spark集群时,由于Spark集群资源不足,任务实际不执行
我们一般使用task_cores和task_parallelism进行配置作业申请资源,如:
{
"job_parameters": {
"common": {
"job_type": "train",
"task_cores": 6,
"task_parallelism": 2,
"computing_partitions": 8,
"timeout": 36000
}
}
}
作业申请的总资源为task_cores * task_parallelism,创建作业时,FATE Flow分发作业到各party时会依据上述配置、运行角色、本方使用引擎(通过$FATE_PROJECT_BASE/conf/service_conf.yaml#default_engines),适配计算出实际参数,如下
计算request_task_cores:
request_task_cores = task_coresrequest_task_cores = 1进一步计算task_cores_per_node:
task_cores_per_node" = max(1, request_task_cores / task_nodes)
若在上述job_parameters使用了eggroll_run或spark_run配置资源时,则task_cores配置无效;计算task_cores_per_node:
task_cores_per_node" = eggroll_run[“eggroll.session.processors.per.node”]
task_cores_per_node" = spark_run["executor-cores"]
转换为适配引擎的参数(该参数会在运行任务时,提交到计算引擎识别):
task_cores_per_nodetask_nodestask_cores_per_node最终计算结果可以查看job的job_runtime_conf_on_party.json,一般在$FATE_PROJECT_BASE/jobs/$job_id/$role/$party_id/job_runtime_on_party_conf.json
total_cores见上述总资源配置apply_cores见上述作业申请资源配置,apply_cores = task_nodes * task_cores_per_node * task_parallelism{{snippet('cli/resource.zh.md', header=False)}}