Ejemplo n.º 1
0
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()])
Ejemplo n.º 3
0
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_()