Wandb 에서 sweep 을 이용하여 autoML 을 제공한다.

 

해당기능을 위해 소스에서는 function 을 호출하고,

sweep_id 

function : wandb 로 실행될 function 객체

count : 반복할 횟수

 sweep_id = wandb.sweep(sweep_config, project=project_name)
 wandb.agent(sweep_id, function=lambda: main(model_name, dataset_name, window=window), count=x_num)

 

config.json 은 아래와 같은 형태로 제공가

{
    "method": "bayes",
    "metric": {"name": "max_auc", "goal": "maximize"},
    "parameters": {
        "learning_rate": {
            "distribution": "uniform",
            "min": 1e-4,
            "max": 1e-3
        },
        "batch_size": {
            "values": [32]
        },
        "num_epochs": {
            "values": [50]
        },
        "optimizer": {
            "values": ["adam"]
        },
        "hidden_size": {
            "values": [64]
        },
        "emb_size": {
            "values": [64]
        },
        "layer_num": {
            "values": [3]
        },
        "dropout": {
            "values" : [0.2]
        },
        "seq_len":{
            "distribution": "q_uniform",
            "min": 50,
            "max": 100
        }
    },
    "early_terminate": {
        "type" : "hyperband",
        "min_iter": 5
    }
}

 

function 안에는 init 과 finish 를 구현하고 사이에 동기화 를 할 수 있다.

wandb.init(project=project_name, entity='id')
learning_rate = wandb.config.learning_rate
    batch_size = wandb.config.batch_size
    num_epochs = wandb.config.num_epochs
    optimizer = wandb.config.optimizer
    logging_epochs = wandb.config.logging_epochs

모델 train

모델 test

 

wandb.finish()

간략하게 이런식으로 구현하면된다.

+ Recent posts