feat: add jenkins for evaluate pipeline, create saving accuracy in file

This commit is contained in:
Filip Patyk 2023-05-10 14:47:19 +02:00
parent 7df11da81d
commit d66f44a3dc
4 changed files with 101 additions and 3 deletions

84
Jenkinsfile-eval Normal file
View File

@ -0,0 +1,84 @@
node {
stage('Preparation') {
properties([
pipelineTriggers([
// TODO change auto run after train
upstream(
threshold: hudson.model.Result.SUCCESS,
upstreamProjects: 's424714-create-dataset'
)
]),
copyArtifactPermission('*'),
parameters([
buildSelector(
defaultSelector: lastSuccessful(),
description: 'Which build to use for copying artifacts',
name: 'BUILD_SELECTOR'
),
])
])
}
stage('Git clone') {
//cloning git repo
checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 's424714', url: 'https://git.wmi.amu.edu.pl/s424714/ium_424714']]])
}
stage('Dockerfile build') {
sh "chmod +x -R ${env.WORKSPACE}"
copyArtifacts fingerprintArtifacts: true, projectName: 's424714-create-dataset', selector: buildParameter('BUILD_SELECTOR')
//TODO from train
// copyArtifacts fingerprintArtifacts: true, projectName: 's424714-create-dataset', selector: buildParameter('BUILD_SELECTOR')
def dockerImage = docker.build("s424714-model")
dockerImage.inside {
withEnv(["TRANSFORMERS_CACHE=./.cache"]) {
stage("Docker: cloning artifacts"){
sh 'mkdir -p ./data/dataset'
sh 'mv -t ./data/dataset train.csv test.csv val.csv'
sh 'mv -t ./data True.csv Fake.csv'
sh 'mv model.pt ./results/model.pt'
}
stage("Docker: Running training model")
{
sh 'mkdir -p ./.cache'
// sh ""
sh 'python ./src/main.py --test '
sh "cp ./results/*.csv ${WORKSPACE}"
}
}
}
}
stage('Saving artefacts') {
echo 'Goodbye!'
sh 'ls'
archiveArtifacts artifacts: '*.csv'
}
stage('Drawing plot') {
plot csvFileName: 'plot-accuracy.csv',
csvSeries: [[
file: 'acc.csv',
exclusionValues: '',
displayTableFlag: false,
inclusionFlag: 'OFF',
url: '']],
group: 'Plot Group',
title: 'Accuracy',
style: 'line',
exclZero: false,
keepRecords: false,
logarithmic: false,
numBuilds: '',
useDescr: false,
yaxis: '',
yaxisMaximum: '',
yaxisMinimum: ''
}
}

View File

@ -44,5 +44,6 @@ def evaluate(
results.extend(output.argmax(dim=1).tolist())
total_acc_test += acc
print(f"Test Accuracy: {total_acc_test / len(test_data): .3f}")
return results
accuracy = round(total_acc_test / len(test_data), 3)
print(f"Test Accuracy: {accuracy: .3f}")
return results, accuracy

View File

@ -75,9 +75,10 @@ if __name__ == "__main__":
# evaluating model
if args.test:
model = utils.load_model(model=BertClassifier(), model_path=args.model_path) # loading model from model.pt file
results = evaluate(
results, accuracy = evaluate(
model=model,
test_data=test_data,
batch_size=BATCH_SIZE,
)
utils.save_results(labels=test_data["label"], results=results, file_path=args.results_path)
utils.save_data_to_csv("./results/acc.csv", accuracy)

View File

@ -32,3 +32,15 @@ class utils:
df = pd.DataFrame({"labels": labels, "results": results})
df.to_csv(file_path, index=False)
@staticmethod
def save_data_to_csv(file_path: str, data: float) -> None:
file_path = Path(file_path)
df = pd.DataFrame([data])
df.to_csv(file_path, mode="a", header=False, index=False)
if __name__ == "__main__":
x = 1.2
utils.save_data_to_csv("./results/eval.csv", x)