def run_experiment(dataset, network, model, proj_name, epoch, train_args): print(f"Running experiment with network '{network}' and dataset '{dataset}''") datasets_module = importlib.import_module("lab1.language_model.datasets.house_pred") dataset_class_ = getattr(datasets_module, dataset) # dataset_args = experiment_config.get("dataset_args", {}) models_module = importlib.import_module("lab1.language_model.models.base2") model_class_ = getattr(models_module, model) networks_module = importlib.import_module("lab1.language_model.networks.mlp") network_fn = getattr(networks_module, network) # save_net_artifact(project_name=proj_name, network=network_fn()) # network_args = experiment_config.get("network_args", {}) # mlflow.set_tracking_uri("sqlite:///mlruns.db") model = model_class_(dataset_cls=dataset_class_, network_fn=network_fn) # input_schema = Schema([TensorSpec(type=np.dtype(np.float32), shape=(-1, 13), name="house_attribs")]) # output_schema = Schema([TensorSpec(type=np.dtype(np.float32), shape=(-1, 1), name="predicted house price")]) # signature = ModelSignature(inputs=input_schema, outputs=output_schema) # input_example = np.array([[1., 2.5, 3. , 1.7, 2.1, 1.3, .5, .75, .89, 1.9, 2.15, 2.2, .6]]) # mlflow.pyfunc.save_model(path="my_model", python_model=model, signature=signature, input_example=input_example ) config = dict( dataset = dataset, network = network, model = model, epoch = epoch, train_args = train_args ) net_config = dict( input_shape=(13,), output_shape=(1), layer_size=64, dropout_amount=0.2, num_layers=3 ) save_net_artifact(project_name=proj_name, network_fn=network_fn) save_data_raw_artifact(project_name=proj_name, data_class=dataset_class_) save_data_processed_artifact(project_name=proj_name, data_class=dataset_class_) with wandb.init(project=proj_name, config=config) as run: config = wandb.config model.fit(dataset=config.dataset, callbacks=[WandbCallback()])
def run_experiment(config_yaml, train_args): exp_config = yaml_loader(config_yaml) model = exp_config.get("model") network = exp_config.get("network") net_cl_name = network["name"] net_config = network["network_args"] dataset = exp_config.get("dataset") data_cl_name = dataset["name"] dataset_args = dataset["dataset_args"] proj_name = exp_config.get("project_name") print( f"Running experiment with network '{net_cl_name}' and dataset '{data_cl_name}''" ) datasets_module = importlib.import_module( "lab1.language_model.datasets.house_pred") dataset_class_ = getattr(datasets_module, data_cl_name) models_module = importlib.import_module("lab1.language_model.models.base2") model_class_ = getattr(models_module, model) networks_module = importlib.import_module( "lab1.language_model.networks.mlp") network_fn = getattr(networks_module, net_cl_name) model = model_class_(dataset_cls=dataset_class_, network_fn=network_fn, dataset_args=dataset_args, network_args=net_config) # mlflow.set_tracking_uri("sqlite:///mlruns.db") # input_schema = Schema([TensorSpec(type=np.dtype(np.float32), shape=(-1, 13), name="house_attribs")]) # output_schema = Schema([TensorSpec(type=np.dtype(np.float32), shape=(-1, 1), name="predicted house price")]) # signature = ModelSignature(inputs=input_schema, outputs=output_schema) # input_example = np.array([[1., 2.5, 3. , 1.7, 2.1, 1.3, .5, .75, .89, 1.9, 2.15, 2.2, .6]]) # mlflow.pyfunc.save_model(path="my_model", python_model=model, signature=signature, input_example=input_example ) save_net_artifact(project_name=proj_name, network_fn=network_fn) save_data_raw_artifact(project_name=proj_name, data_class=dataset_class_) save_data_processed_artifact(project_name=proj_name, data_class=dataset_class_) with wandb.init(project=proj_name, config=exp_config) as run: config = wandb.config model.fit(dataset=config.dataset, callbacks=[WandbCallback()])
def run_experiment(dataset, network, model, proj_name, epoch, train_args): print( f"Running experiment with network '{network}' and dataset '{dataset}''" ) datasets_module = importlib.import_module( "lab1.language_model.datasets.house_pred") dataset_class_ = getattr(datasets_module, dataset) # dataset_args = experiment_config.get("dataset_args", {}) models_module = importlib.import_module("lab1.language_model.models.base2") model_class_ = getattr(models_module, model) networks_module = importlib.import_module( "lab1.language_model.networks.mlp") network_fn = getattr(networks_module, network) # save_net_artifact(project_name=proj_name, network=network_fn()) # network_args = experiment_config.get("network_args", {}) # mlflow.set_tracking_uri("sqlite:///mlruns.db") model = model_class_(dataset_cls=dataset_class_, network_fn=network_fn) # input_schema = Schema([TensorSpec(type=np.dtype(np.float32), shape=(-1, 13), name="house_attribs")]) # output_schema = Schema([TensorSpec(type=np.dtype(np.float32), shape=(-1, 1), name="predicted house price")]) # signature = ModelSignature(inputs=input_schema, outputs=output_schema) # input_example = np.array([[1., 2.5, 3. , 1.7, 2.1, 1.3, .5, .75, .89, 1.9, 2.15, 2.2, .6]]) # mlflow.pyfunc.save_model(path="my_model", python_model=model, signature=signature, input_example=input_example ) config = dict(dataset=dataset, network=network, model=model, epoch=epoch, train_args=train_args) net_config = dict(input_shape=(13, ), output_shape=(1), layer_size=64, dropout_amount=0.2, num_layers=3) # save_net_artifact(project_name=proj_name, network_fn=network_fn) # save_data_raw_artifact(project_name=proj_name, data_class=dataset_class_) # save_data_processed_artifact(project_name=proj_name, data_class=dataset_class_) with wandb.init(project=proj_name, config=config) as run: config = wandb.config save_net_artifact(project_name=proj_name, network_fn=network_fn) save_data_raw_artifact(project_name=proj_name, data_class=dataset_class_) save_data_processed_artifact(project_name=proj_name, data_class=dataset_class_) # Add model artifact # model_artifact = wandb.Artifact("convnet", type="model", description="Simple AlexNet style CNN", metadata=dict(net_config)) # model.network.save("initialized_model.keras") # model_artifact.new_file("initialized_model.keras") # wandb.save("initialized_model.keras") # run.log_artifact(model_artifact) # Add data artifact # raw data # raw_data = wandb.Artifact( # "mnist-raw", type="dataset", # description="sklearn.datasets.load_boston", # metadata={"source": "keras.datasets.mnist", # #"size (rows)": [model.dataset.X.shape[0]] # }) # with raw_data.new_file("raw" + ".npz", mode="wb") as file: # np.savez(file, x=model.data.X, y=model.data.y) # run.log_artifact(raw_data) # preprocessed data # preprocessed_data = wandb.Artifact( # "mnist-processed", type="dataset", # description="sklearn.datasets.load_boston", # metadata={"source": "keras.datasets.mnist", # #"size (rows)": [model.dataset.X.shape[0]] # }) # with preprocessed_data.new_file("training" + ".npz", mode="wb") as file: # np.savez(file, x=model.data.X_tr, y=model.data.y_tr) # run.log_artifact(preprocessed_data) model.fit(dataset=config.dataset, callbacks=[WandbCallback()])
def run_experiment(exp_config_yaml, epochs, activation_fn, optimizer): """ Run a single experiment. Parameters: ---------- exp_config: File path Path to a yaml file specifying the configuration for this experiment. The includes model the model to use along with it's hyperparamters and other args. sweep_config: File path Path to a yaml file specifying some information needed to run a sweep using wandb """ exp_config = yaml_loader(exp_config_yaml) exp_config["network"]["network_args"]["hyperparams"]["epochs"] = epochs exp_config["network"]["network_args"]["hyperparams"][ "activation_fn"] = activation_fn # exp_config["network"]["network_args"]["hyperparams"]["optimizer"] = optimizer yaml_dump(exp_config_yaml, exp_config) model = exp_config.get("model") network = exp_config.get("network") net_cl_name = network["name"] net_config = network["network_args"] dataset = exp_config.get("dataset") data_cl_name = dataset["name"] dataset_args = dataset["dataset_args"] proj_name = exp_config.get("project_name") print( f"Running experiment with network '{net_cl_name}' and dataset '{data_cl_name}''" ) datasets_module = importlib.import_module( "lab1.language_model.datasets.house_pred") dataset_class_ = getattr(datasets_module, data_cl_name) models_module = importlib.import_module("lab1.language_model.models.base2") model_class_ = getattr(models_module, model) networks_module = importlib.import_module( "lab1.language_model.networks.mlp") network_fn = getattr(networks_module, net_cl_name) model = model_class_(dataset_cls=dataset_class_, network_fn=network_fn, dataset_args=dataset_args, network_args=net_config) # mlflow.set_tracking_uri("sqlite:///mlruns.db") # input_schema = Schema([TensorSpec(type=np.dtype(np.float32), shape=(-1, 13), name="house_attribs")]) # output_schema = Schema([TensorSpec(type=np.dtype(np.float32), shape=(-1, 1), name="predicted house price")]) # signature = ModelSignature(inputs=input_schema, outputs=output_schema) # input_example = np.array([[1., 2.5, 3. , 1.7, 2.1, 1.3, .5, .75, .89, 1.9, 2.15, 2.2, .6]]) # mlflow.pyfunc.save_model(path="my_model", python_model=model, signature=signature, input_example=input_example ) save_net_artifact(project_name=proj_name, network_fn=network_fn, net_config=net_config) save_data_raw_artifact(project_name=proj_name, data_class=dataset_class_) save_data_processed_artifact(project_name=proj_name, data_class=dataset_class_) with wandb.init(project=proj_name, config=exp_config): config = wandb.config model.fit(dataset=config.dataset, callbacks=[WandbCallback()]) data = dataset_class_()