diff --git a/Dockerfile b/Dockerfile index 248e76d..7ccfd05 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,7 +16,8 @@ RUN pip3 install pandas RUN pip3 install seaborn RUN pip3 install matplotlib RUN pip3 install --no-cache-dir tensorflow +RUN pip3 install sacred +RUN pip3 install pymongo CMD ./run.sh -CMD ./run_training.sh diff --git a/Jenkinsfile_training b/Jenkinsfile_training index 9b50c26..2e9bee9 100644 --- a/Jenkinsfile_training +++ b/Jenkinsfile_training @@ -27,7 +27,7 @@ pipeline { } stage('Archive artifacts') { steps{ - archiveArtifacts artifacts: 'model_movies.h5' + archiveArtifacts artifacts: 'model_movies.h5,my_runs/**' } } } diff --git a/ium_zadanie6_training.py b/ium_zadanie6_training.py index 0eb28ce..5a0e995 100644 --- a/ium_zadanie6_training.py +++ b/ium_zadanie6_training.py @@ -6,28 +6,56 @@ from tensorflow import convert_to_tensor import numpy as np import pandas as pd from sklearn.metrics import mean_squared_error +from sacred.observers import FileStorageObserver, MongoObserver +from sacred import Experiment +from sacred.observers import MongoObserver +from datetime import datetime -movies_train = pd.read_csv('movies_train.csv') -x_train = movies_train.copy() -y_train = x_train.pop('rottentomatoes_audience_score') -x_train.pop('Unnamed: 0') +ex = Experiment("434684", interactive=False, save_git_info=False) +ex.observers.append(MongoObserver(url='mongodb://mongo_user:mongo_password_IUM_2021@172.17.0.1:27017', db_name='sacred')) +ex.observers.append(FileStorageObserver('my_runs')) -learning_rate = float(sys.argv[1]) -model = Sequential() -model.add(layers.Input(shape=(22,))) -model.add(layers.Dense(64)) -model.add(layers.Dense(64)) -model.add(layers.Dense(32)) -model.add(layers.Dense(1)) +@ex.config +def my_config(): + learning_rate = float(sys.argv[1]) -model.compile(loss='mean_absolute_error', optimizer=Adam(learning_rate)) -model.fit( - x = convert_to_tensor(x_train, np.float32), - y = y_train, - verbose=0, epochs=99) +def prepare_train_model(learning_rate, _run): + _run.info["prepare_model"] = str(datetime.now()) + + movies_train = pd.read_csv('movies_train.csv') + + x_train = movies_train.copy() + y_train = x_train.pop('rottentomatoes_audience_score') + x_train.pop('Unnamed: 0') + + learning_rate = float(sys.argv[1]) + model = Sequential() + model.add(layers.Input(shape=(22,))) + model.add(layers.Dense(64)) + model.add(layers.Dense(64)) + model.add(layers.Dense(32)) + model.add(layers.Dense(1)) + + model.compile(loss='mean_absolute_error', optimizer=Adam(learning_rate)) -model.save('model_movies.h5') + _run.info["train model"] = str(datetime.now()) + history = model.fit( + x = convert_to_tensor(x_train, np.float32), + y = y_train, + verbose=0, epochs=99) + + loss = history.history['loss'][-1] + _run.info["Loss"] = str(loss) + model.save('model_movies.h5') + +@ex.main +def my_main(learning_rate): + print(prepare_train_model()) + + +r = ex.run() +ex.add_artifact("model_movies.h5")