Jenkins training script
This commit is contained in:
parent
2377076904
commit
d2a813c9c6
@ -24,7 +24,3 @@ RUN /load_data.sh
|
|||||||
|
|
||||||
RUN chmod +x /grab_avocado.py
|
RUN chmod +x /grab_avocado.py
|
||||||
RUN python3 /grab_avocado.py
|
RUN python3 /grab_avocado.py
|
||||||
|
|
||||||
# Run the model and train it
|
|
||||||
RUN chmod +x /model.py
|
|
||||||
RUN python3 /model.py
|
|
61
jenkins/training.Jenkinsfile
Normal file
61
jenkins/training.Jenkinsfile
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
pipeline {
|
||||||
|
agent {
|
||||||
|
dockerfile true
|
||||||
|
}
|
||||||
|
parameters {
|
||||||
|
string(
|
||||||
|
defaultValue: '5',
|
||||||
|
description: 'epochs number',
|
||||||
|
name: 'epochs'
|
||||||
|
),
|
||||||
|
string {
|
||||||
|
defaultValue: '--save',
|
||||||
|
description: 'save model after training',
|
||||||
|
name: 'save_model'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stages {
|
||||||
|
stage('Checkout') {
|
||||||
|
steps {
|
||||||
|
checkout([$class: 'GitSCM', branches: [[name: '*/develop']], extensions: [], userRemoteConfigs: [
|
||||||
|
[url: 'https://git.wmi.amu.edu.pl/s478841/ium_478841.git']]])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Copy Artifacts') {
|
||||||
|
steps {
|
||||||
|
copyArtifacts filter: '*.csv', fingerprintArtifacts: true, projectName: 's478841-create-dataset', selector: lastSuccessful()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Model training') {
|
||||||
|
steps {
|
||||||
|
sh "chmod +x -R ${env.WORKSPACE}"
|
||||||
|
sh 'python model.py -e $epochs $save_model'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Archive artifacts') {
|
||||||
|
steps {
|
||||||
|
|
||||||
|
archiveArtifacts artifacts: '*data/predictions.csv', onlyIfSuccessful: true
|
||||||
|
archiveArtifacts artifacts: '*data/model_scripted*', onlyIfSuccessful: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
post {
|
||||||
|
success {
|
||||||
|
emailtext body: 'SUCCESS', subject: "s478841-training", to: 'e19191c5.uam.onmicrosoft.com@emea.teams.ms'
|
||||||
|
}
|
||||||
|
|
||||||
|
failure {
|
||||||
|
emailtext body: 'FAILURE', subject: "s478841-training", to: 'e19191c5.uam.onmicrosoft.com@emea.teams.ms'
|
||||||
|
}
|
||||||
|
|
||||||
|
unstable {
|
||||||
|
emailtext body: 'UNSTABLE', subject: "s478841-training", to: 'e19191c5.uam.onmicrosoft.com@emea.teams.ms'
|
||||||
|
}
|
||||||
|
|
||||||
|
changed {
|
||||||
|
emailtext body: 'CHANGED', subject: "s478841-training", to: 'e19191c5.uam.onmicrosoft.com@emea.teams.ms'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,3 +1,5 @@
|
|||||||
|
import argparse
|
||||||
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from sklearn.metrics import mean_squared_error
|
from sklearn.metrics import mean_squared_error
|
||||||
@ -111,6 +113,21 @@ def predict(row, model):
|
|||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
||||||
|
# * Model parameters
|
||||||
|
parser = argparse.ArgumentParser(description="Script performing logistic regression model training",
|
||||||
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
||||||
|
parser.add_argument(
|
||||||
|
"-e", "--epochs", default=100, help="Number of epochs the model will be trained for")
|
||||||
|
parser.add_argument("--save", action="store_true",
|
||||||
|
help="Save trained model to file 'trained_model.h5'")
|
||||||
|
|
||||||
|
args = vars(parser.parse_args())
|
||||||
|
|
||||||
|
epochs = args['epochs']
|
||||||
|
save_model = args['save']
|
||||||
|
print(
|
||||||
|
f"Your model will be trained for {epochs} epochs. Trained model will {'not ' if save_model else ''}be saved.")
|
||||||
|
|
||||||
# * Paths to data
|
# * Paths to data
|
||||||
avocado_train = './data/avocado.data.train'
|
avocado_train = './data/avocado.data.train'
|
||||||
avocado_valid = './data/avocado.data.valid'
|
avocado_valid = './data/avocado.data.valid'
|
||||||
@ -135,7 +152,7 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
# * Train model
|
# * Train model
|
||||||
print("Let's start the training, mate!")
|
print("Let's start the training, mate!")
|
||||||
train_model(train_dl, model)
|
train_model(train_dl, model, int(epochs))
|
||||||
|
|
||||||
# * Evaluate model
|
# * Evaluate model
|
||||||
mse = evaluate_model(validate_dl, model)
|
mse = evaluate_model(validate_dl, model)
|
||||||
@ -144,5 +161,12 @@ if __name__ == '__main__':
|
|||||||
# * Prediction
|
# * Prediction
|
||||||
predictions = [(predict(row, model)[0], row[1].item()) for row in test_dl]
|
predictions = [(predict(row, model)[0], row[1].item()) for row in test_dl]
|
||||||
preds_df = pd.DataFrame(predictions, columns=["Prediction", "Target"])
|
preds_df = pd.DataFrame(predictions, columns=["Prediction", "Target"])
|
||||||
print("\nNow predictions - hey ho, let's go!\n", preds_df.head())
|
print("\nNow predictions - hey ho, let's go!\n",
|
||||||
|
preds_df.head(), "\n\n...let's save them\ndum...\ndum...\ndum dum dum...\n\tDUM\n")
|
||||||
preds_df.to_csv("./data/predictions.csv", index=False)
|
preds_df.to_csv("./data/predictions.csv", index=False)
|
||||||
|
|
||||||
|
# * Save the trained model
|
||||||
|
if save_model:
|
||||||
|
print("Your model has been saved - have a nice day!")
|
||||||
|
scripted_model = torch.jit.script(model)
|
||||||
|
scripted_model.save('./data/model_scripted.pt')
|
||||||
|
Loading…
Reference in New Issue
Block a user