This commit is contained in:
Wojciech Lidwin 2023-05-12 15:17:15 +02:00
parent 508f315ef4
commit 96e4c03d11
3 changed files with 40 additions and 18 deletions

View File

@ -17,6 +17,7 @@ RUN pip3 install matplotlib
RUN pip3 install sacred RUN pip3 install sacred
RUN pip3 install pymongo RUN pip3 install pymongo
RUN pip3 install dvc RUN pip3 install dvc
RUN pip3 install mlflow
WORKDIR /app WORKDIR /app

View File

@ -25,7 +25,7 @@ node {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 's487197', url: 'https://git.wmi.amu.edu.pl/s487197/ium_487197']]]) checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 's487197', url: 'https://git.wmi.amu.edu.pl/s487197/ium_487197']]])
} }
stage('Dockerfile'){ stage('Dockerfile'){
def testImage = docker.image('s487197/ium:52') def testImage = docker.image('s487197/ium:55')
testImage.inside{ testImage.inside{
copyArtifacts filter: 'baltimore_train.csv', projectName: 's487197-create-dataset' copyArtifacts filter: 'baltimore_train.csv', projectName: 's487197-create-dataset'
sh "python3 ium_sacred.py -epochs $EPOCHS -lr $LR -validation_split $VALIDATION_SPLIT" sh "python3 ium_sacred.py -epochs $EPOCHS -lr $LR -validation_split $VALIDATION_SPLIT"

View File

@ -11,6 +11,13 @@ import numpy as np
from sklearn.preprocessing import LabelEncoder from sklearn.preprocessing import LabelEncoder
import argparse import argparse
import shutil import shutil
import mlflow
import logging
logging.basicConfig(level=logging.WARN)
logger = logging.getLogger(__name__)
mlflow.set_tracking_uri("http://localhost:5000")
mlflow.set_experiment("s487197")
def get_x_y(data): def get_x_y(data):
@ -40,24 +47,38 @@ def train_model():
data_train, x_train, y_train = get_x_y(train) data_train, x_train, y_train = get_x_y(train)
normalizer = tf.keras.layers.Normalization(axis=1) normalizer = tf.keras.layers.Normalization(axis=1)
normalizer.adapt(np.array(x_train)) normalizer.adapt(np.array(x_train))
model = Sequential(normalizer) with mlflow.start_run() as run:
model.add(Dense(64, activation="relu")) print("MLflow run experiment_id: {0}".format(run.info.experiment_id))
model.add(Dense(10, activation='relu')) print("MLflow run artifact_uri: {0}".format(run.info.artifact_uri))
model.add(Dense(10, activation='relu')) mlflow.log_param("epochs", args.epochs)
model.add(Dense(10, activation='relu')) mlflow.log_param("lr", args.lr)
model.add(Dense(5, activation="softmax")) mlflow.log_param("validation_split", args.validation_split)
model.compile(Adam(learning_rate=args.lr), loss='sparse_categorical_crossentropy', metrics = ['accuracy'] ) model = Sequential(normalizer)
model.summary() model.add(Dense(64, activation="relu"))
model.add(Dense(10, activation='relu'))
model.add(Dense(10, activation='relu'))
model.add(Dense(10, activation='relu'))
model.add(Dense(5, activation="softmax"))
model.compile(Adam(learning_rate=args.lr), loss='sparse_categorical_crossentropy', metrics = ['accuracy'] )
model.summary()
history = model.fit( history = model.fit(
x_train, x_train,
y_train, y_train,
epochs=args.epochs, epochs=args.epochs,
validation_split=args.validation_split) validation_split=args.validation_split)
hist = pd.DataFrame(history.history) mlflow.log_metric("loss", float(, hist['loss']))
hist['epoch'] = history.epoch mlflow.log_metric('accuracy', float(hist['accuracy']))
model.save('baltimore_model') signature = mlflow.models.signature.infer_signature(train_x, model.predict(x_test))
shutil.make_archive('baltimore', 'zip', 'baltimore_model') if tracking_url_type_store != "file":
mlflow.sklearn.log_model(model, "wines-model", registered_model_name="ElasticnetWineModel", signature=signature)
else:
mlflow.sklearn.log_model(model, "model", signature=signature)
hist = pd.DataFrame(history.history)
hist['epoch'] = history.epoch
model.save('baltimore_model')
shutil.make_archive('baltimore', 'zip', 'baltimore_model')
train_model() train_model()