机器学习离线任务中的配置管理

  |  

摘要: 机器学习离线任务中常见的配置管理

【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】
我的网站:潮汐朝夕的生活实验室
我的公众号:潮汐朝夕
我的知乎:潮汐朝夕
我的github:FennelDumplings
我的leetcode:FennelDumplings


在文章 机器学习离线系统中常用的工具代码 中,我们总结了机器学习离线系统中的常见工具代码。

本文我们记录一下,机器学习离线任务中常见的配置管理。机器学习任务中,需要管理的有以下几项

  1. 路径管理
  2. 数据管理
  3. 中间结果管理(实验管理)
  4. 推送管理(结果管理)

Shell 入口

入口一般是一个 shell,大致如下。

首先进入项目根目录。然后执行某个目录的代码 name.py,带上 --config 参数,该参数的值是项目下的某个与 name.py 对应的 config.yml。

1
2
3
4
5
6
7
8
#!/bin/bash

ROOT=.../project_name/
export PYTHONPATH=${ROOT}
cd ${ROOT}

python ${ROOT}.../name.py \
--config ${ROOT}.../config.yml

Python 入口

然后在 Python 代码 name.py 中,对应的入口大致是下面这样。

首先通过 argparse 读入命令行参数中的配置文件地址。然后用 load_config 读取配置文件,load_config 具体见 机器学习离线系统中常用的工具代码 中的 config.py

FunctionModule 是该文件 name.py 的功能。在其 __init__() 方法中处理配置文件信息。然后 __call__() 方法具体执行功能。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import argparse
from config import load_config

class FunctionModule:
def __init__(self, cfg):
# 处理配置文件

def __call__(self):
# 具体执行功能

def func1(self):
# 内部组件1

def func2(self):
# 内部组件2


def main():
parser = argparse.ArgumentParser('Function Module')
parser.add_argument('--config', type=str, required=True)
args = parser.parse_args()
cfg = load_config(args.config_path)
functionmodule = FunctionModule(cfg=cfg)
functionmodule()


if __name__ == "__main__":
main()

套用以上入口代码,可以快速将配置化的代码骨架搭起来,一些管理问题放到 config.yml__init__() 中解决,将精力聚焦到具体功能(func1(), func2(), __call__())的实现上。

yaml 配置文件

对应机器学习离线任务,config.yml 的通常写法如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 1. 路径管理
# 2. 数据管理
# 3. 中间结果管理(实验管理)
# 4. 推送管理(结果管理)

input: # 输入数据, 模型

preprocess: # 预处理

feature: # 特征工程

model: # 模型

hyperparameter: # 超参数

log: # 日志管理

output: # 输出数据, 图表, 模型

Share