配置¶
Fedflow的配置参数有很多项,可以使用配置文件的方式,也可以在代码中修改参数。
配置方式¶
使用配置文件
python -m fedflow generate-config在终端执行以上指令可以在当前文件夹下生成一个config.yaml文件,修改此文件即可。
Fedflow在执行的时候会尝试在当前文件夹下查找config.yaml文件,如果找到就会使用此文件中的配置,否则使用默认配置文件。
在运行中修改配置
from fedflow.config import Config Config.set_property("workdir", "work") Config.set_property("utilization-limit.memory", 0.9)
通过使用
fedflow.config.Config#set_property方法,可以修改单个参数。
参数介绍¶
# Fedflow 配置示例
# Fedflow 支持以下字节单位:
# B(b), KB(b), MB(b), GB(b), TB(b)
# 在大多数情况下,推荐使用'(K/M/G/T)B'而不是'(K/M/G/T)b',并且如果单位是'B', 可以省略。
# 在Fedflow运行过程中,所有的硬盘读写操作都在workdir中进行。
# 默认情况下, workdir是res文件夹
# 如果workdir不存在,运行中会自动创建,如果workdir存在,不会清空,但是会覆盖同名文件。
workdir: 'res'
# 是否开启debug模式,在debug模式下,会记录更详细的日志
debug: false
# 你可以指定一个GPU选择优先级, Fedflow会根据优先级选择GPU设备
gpu-priority:
stratety: 'TOTAL-MEM' # PCI, TOTAL-MEM, REMAIN-MEM, PERFORMANCE
reverse: false # 是否逆序
utilization-limit: # 系统资源的最大利用率,当前利用率超出最大利用率的时候,Fedflow会停止运行新任务
cpu: 0.8 # 所有逻辑CPU的平均利用率
memory: 0.8 # 系统内存的最大利用率
cuda-memory: 0.8 # 每个显卡的显存最大利用率
remain-limit: # 最低保留的系统资源
memory: '4GB'
cuda-memory: '2GB'
task: # 任务相关的参数
directory-grouping: true # 是否为每个任务组创建文件夹, 如果为true,则每个任务组单独创建文件夹,否则,所有任务的文件夹都组织在workdir下
allow-duplicate-id: true # 是否允许任务id重复, 同组的任务id不允许重复,如果此项参数为true,允许全局任务id重复
scheduler: # 任务调度相关的参数
default-memory: '2GB' # 默认任务占用内存
default-cuda-memory: '2GB' # 默认任务占用显存
auto-adjust: false # 是否自动调整任务占用内存和显存
# 如果同任务组的任务都相同,则可以开启此项功能,会根据已经运行完的任务动态修改默认占用内存和显存
max-waiting: 10 # 最大等待训练的任务数量
max-process: 20 # 最大启动进程数量
interval: 60 # 每轮调度间隔时间, 时间越长出现OOM的几率越低,一般不建议超出数据集加载时间
load-nretry: 3 # load操作最大重试次数
train-nretry: 3 # train操作最大重试次数
smtp: # 邮件相关的参数
enable: false # 是否启动发送邮件功能
server-host: 'smtp.example.com' # smtp服务器
server-port: 25
user: 'user@smtp.example.com' # 用户名和密码
password: '******'
receiver: 'user@smtp.example.com' # 邮件接收者
min-interval: 3600 # seconds # 两次发送同类邮件的最低间隔时间,防止邮件数量过多
max-numbers: 10 # 一次执行过程中最大邮件数量