Vortrag im Rahmen des Nürnberg Digital Festivals beim DevBBQ@TeamBank.
conda
Umgebung erzeugen, aktivieren und weitere Pakete nachladen:
conda env create -f environment.yml
activate nuedigitalmlapi
DVC (data version control) muss manuell über pip installiert werden:
pip install dvc[s3]
dvc init
nuedigitalmlapi
Package installieren
pip install -e .
Credentials Datei credentials
im Projekt-Root ablegen:
[default]
aws_access_key_id = <AWS_ACCESS_KEYID>
aws_secret_access_key = <AWS_SECRET_ACCESS_KEY>
S3 Bucket in AWS anlegen: https://docs.aws.amazon.com/quickstarts/latest/s3backup/step-1-create-bucket.html
DVC für S3 Endpunkt konfigurieren:
dvc remote add -d modelrepo s3://<bucket_name>/<folder_name>
dvc remote modify modelrepo profile credentials
Alternativ: Minio Instanz (z.B. lokal) starten.
DVC für S3 Minio Endpunkt konfigurieren
dvc remote add -d modelrepo s3://<bucket_name>/<folder_name>
dvc remote modify modelrepo endpointurl https://<minio_endpoint>:<port>
dvc remote modify modelrepo credentialpath credentials
Pipeline ausführen, um Datensatz zu laden und Modell zu trainieren:
dvc repro model.pkl.dvc
Daten in DVC Remote Repository speichern:
dvc push
API testen.
SET FLASK_ENV=development
flask run
Unittests ausführen
pytest
OpenShift Instanz z.B. unter https://manage.openshift.com/ oder via Minishift bereitstellen und Projekt auswählen.
Login Kommando aus Web-Console kopieren und ausführen. Projekt/Namespace für Deployment setzen.
Folgende BasicAuth-Secrets in OpenShift anlegen.
Secret-Name | Username | Passwort | Verwendung |
---|---|---|---|
github | <GITHUB_USERNAME> | <GITHUB_ACCESS_TOKEN> | Zugriff auf Code |
# ImageStream und BildConfig erzeugen
oc apply -f deployment\imageStream.yml
oc apply -f deployment\buildConfig.yml
# Secret mit S3 credentials erzeugen
oc create secret generic aws-credentials --from-file=credentials
oc label secret aws-credentials app=nuedigitalmlapi
oc get secret/aws-credentials --export -o yaml
# DVC Config als Secret
oc create secret generic dvc-config --from-file .dvc\config
oc label secret dvc-config app=nuedigitalmlapi
# Build starten
oc start-build nuedigitalmlapi-build --from-repo .
# ConfigMap aus Datei erzeugen
oc create configmap neudigitalkiapi-gunicorn --from-file config.py
oc label configmap neudigitalkiapi-gunicorn app=nuedigitalmlapi
oc get cm/neudigitalkiapi-gunicorn --export -o yaml
# Pods deployen
oc apply -f deployment\deployment.yml
# Service und Route erzeugen
oc apply -f deployment\service.yml
oc apply -f deployment\route.yml
# Tag setzen für Deployment in Produktion
oc tag neudigitalkiapi:v1.0.0 neudigitalkiapi:latest
oc delete all,secret,configmap --selector app=nuedigitalmlapi