Add plot for evaluation, add parameters to jenkins and fix mail sending

This commit is contained in:
s430705 2021-05-13 10:48:52 +02:00
parent 703c27c5f6
commit 64e1ead5c5
6 changed files with 56 additions and 30 deletions

View File

@ -7,23 +7,32 @@ pipeline {
defaultSelector: lastSuccessful(), defaultSelector: lastSuccessful(),
description: 'Which build to use for copying artifacts', description: 'Which build to use for copying artifacts',
name: 'WHICH_BUILD_DATA' name: 'WHICH_BUILD_DATA'
) )
buildSelector( buildSelector(
defaultSelector: lastSuccessful(), defaultSelector: lastSuccessful(),
description: 'Which build to use for copying artifacts', description: 'Which build to use for copying artifacts',
name: 'WHICH_BUILD_TRAIN' name: 'WHICH_BUILD_TRAIN'
) )
} buildSelector(
defaultSelector: lastSuccessful(),
description: 'Which build to use for copying artifacts',
name: 'WHICH_BUILD_EVAL'
)
gitParameter branchFilter: 'origin/(.*)', defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH'
}
stages { stages {
stage('checkout') { stage('copyArtifacts') {
steps { steps {
copyArtifacts fingerprintArtifacts: true, projectName: 's430705-create-dataset', selector: buildParameter('WHICH_BUILD_DATA') copyArtifacts fingerprintArtifacts: true, projectName: 's430705-create-dataset', selector: buildParameter('WHICH_BUILD_DATA')
copyArtifacts fingerprintArtifacts: true, projectName: 's430705-training/master', selector: buildParameter('WHICH_BUILD_TRAIN')
copyArtifacts optional: true, fingerprintArtifacts: true, projectName: 's430705-evaluation/master', selector: buildParameter('WHICH_BUILD_EVAL')
} }
} }
stage('Docker'){ stage('Evaluation){
steps{ steps{
copyArtifacts fingerprintArtifacts: true, projectName: 's430705-training/master', selector: buildParameter('WHICH_BUILD_TRAIN') sh 'python3 "./lab06-eval.py ${WHICH_BUILD_TRAIN}"'
sh 'python3 "./lab06-eval.py" >> eval.txt' sh 'python3 "./lab06-plot.py"'
sh 'python3 "./lab07_sacred01.py"' sh 'python3 "./lab07_sacred01.py"'
sh 'python3 "./lab07_sacred02.py"' sh 'python3 "./lab07_sacred02.py"'
} }
@ -32,14 +41,22 @@ pipeline {
steps { steps {
archiveArtifacts 'eval.txt' archiveArtifacts 'eval.txt'
archiveArtifacts 'lab07/**' archiveArtifacts 'lab07/**'
archiveArtifacts 'evaluation_plot.png'
} }
} }
stage('sendMail') { }
steps{ post {
emailext body: currentBuild.result ?: 'SUCCESS EVALUATION', success {
subject: 's430705 evaluation', mail body: 'SUCCESS', subject: 's430705', to: '26ab8f35.uam.onmicrosoft.com@emea.teams.ms'
to: '26ab8f35.uam.onmicrosoft.com@emea.teams.ms' }
} unstable {
mail body: 'UNSTABLE', subject: 's430705', to: '26ab8f35.uam.onmicrosoft.com@emea.teams.ms'
}
failure {
mail body: 'FAILURE', subject: 's430705', to: '26ab8f35.uam.onmicrosoft.com@emea.teams.ms'
}
changed {
mail body: 'CHANGED', subject: 's430705', to: '26ab8f35.uam.onmicrosoft.com@emea.teams.ms'
} }
} }
} }

View File

@ -16,7 +16,7 @@ pipeline {
stage('copyArtifacts') { stage('copyArtifacts') {
steps { steps {
copyArtifacts fingerprintArtifacts: true, projectName: 's430705-create-dataset', selector: buildParameter('BUILD_SELECTOR') copyArtifacts fingerprintArtifacts: true, projectName: 's430705-create-dataset', selector: buildParameter('BUILD_SELECTOR')
sh 'python3 lab06_training.py $epochs' sh 'python3 lab06_training.py ${epochs}'
} }
} }
@ -29,6 +29,8 @@ pipeline {
post { post {
success { success {
build job: 's430705-training/evaluation', parameters: ]
mail body: 'SUCCESS', mail body: 'SUCCESS',
subject: 's430705', subject: 's430705',
to: '26ab8f35.uam.onmicrosoft.com@emea.teams.ms' to: '26ab8f35.uam.onmicrosoft.com@emea.teams.ms'

View File

@ -1,22 +1,22 @@
from tensorflow.keras.models import Sequential import sys
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.layers import Dropout
from tensorflow.keras.callbacks import EarlyStopping
from sklearn.metrics import mean_squared_error, mean_absolute_error, accuracy_score
from tensorflow.keras.models import load_model
import pandas as pd
test_df = pd.read_csv('test.csv') import pandas as pd
from sklearn.metrics import mean_squared_error
from tensorflow.keras.models import load_model
test_df = pd.read_csv("test.csv")
test_df.drop(test_df.columns[0], axis=1, inplace=True) test_df.drop(test_df.columns[0], axis=1, inplace=True)
x_test = test_df.drop("rating", axis=1) x_test = test_df.drop("rating", axis=1)
y_test = test_df["rating"] y_test = test_df["rating"]
model = Sequential() model = load_model("model_movies")
model = load_model('model_movies')
y_pred = model.predict(x_test.values) y_pred = model.predict(x_test.values)
rmse = mean_squared_error(y_test, y_pred) rmse = mean_squared_error(y_test, y_pred)
build_number = sys.argv[1] if len(sys.argv) > 1 else 0
print(f"RMSE: {rmse}") d = {"rmse": [rmse], "build": [build_number]}
df = pd.DataFrame(data=d)
with open("evaluation.csv", "a") as f:
df.to_csv(f, header=f.tell() == 0, index=False)

6
lab06-plot.py Normal file
View File

@ -0,0 +1,6 @@
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("evaluation.csv")
df.plot(x="build", y="rmse")
plt.savefig("evaluation_plot.png")

View File

@ -1,7 +1,7 @@
import sys import sys
import mlflow import mlflow
import pandas as pd import pandas as pd
from sklearn.metrics import mean_squared_error from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split from sklearn.model_selection import train_test_split
from tensorflow.keras.callbacks import EarlyStopping from tensorflow.keras.callbacks import EarlyStopping

View File

@ -10,3 +10,4 @@ wget==3.2
gast==0.3.3 gast==0.3.3
sacred==0.8.2 sacred==0.8.2
GitPython==3.1.14 GitPython==3.1.14
matplotlib==3.4.2