Skip to content

Bedra11/mlopslabs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mlops_aws

Cette repository contient la mise en place d'une simple (formulaire web) basé sur un model IA exploité via un API Flask. L'objective c'est d'avoir ce modèle suivant un pipeline MLOPS complet, déployé sur l'infrastructure AWS. Les technologies utilisé : Python, Flask, MLFLow, dvc, AWS EC2, AWS IAM, AWS S3, HTML, CSS, JS (maybe)

1. Mise de l'environement MLFLOW sur AWS :

  1. Allez dans votre compte AWS,
  2. Crée un utilisateur dans IAM, avec permissions admin, et crée un clé d'accès et le telecharger.
  3. Crée un bucket s3, (rendre son accès public - pour minimiser les configuration nécessaire entre s3 et MLFLOW)
  4. Crée une machine Ec2 (type medium, OS:ubuntu), crée un key paire pour cette machine.
  5. sur cette machine on doit configurer notre MLFLOW avec les commandes suivantes :
sudo apt update
sudo apt install python3-pip
sudo apt install pipenv
sudo apt install virtualenv
mkdir mlflow
cd mlflow
pipenv install mlflow
pipenv install awscli
pipenv install boto3
pipenv shell
  1. Maintenant configurer les accès à s3 pour MLflow depuis la machine (grace au clé que vous avez crée pour l'utilisateur)
# Set aws credentials
aws configure
  1. Maintenant vous pouvez lancer mlflow dans cette machine en y précisant le nom de votre bucket (NB: le bucket sera utiliser pour stoker le cash de MLFLOW les runs, les experiments, les artefacts logé, les models ...)
    # run mlflow server to be accessible globaly
    mlflow server -h 0.0.0.0 --default-artifact-root s3://YOUR_BUCKET_NAME
  1. Mlflow est running donc vous pouvez l'accéder depuis l'adresse le lien http://ADDRESS_IP_EC2:5000
  2. Si vous avez stopper la machine et vous avez connecter à nouveau il faut reactiver l'environement pipenv et relancer votre mlflow.

pipenv est un gestionaire d'environement python basé sur le dossier (dans ce cas "mlflow") ce n'est pas commes les autres packageurs d'environnement qui peuvent etre activé globalement avec un chemin absolue.

cd mlflow
pipenv shell
mlflow server -h 0.0.0.0 --default-artifact-root s3://YOUR_BUCKET_NAME
  1. Maintenant vous pouvez ajouter ce lien http://ADDRESS_IP_EC2:5000 comme votre mlflow_tracking_uri dans vos scripts ou notebook locales, et grace à ça les modèles que vous crée sont maintenant en ligne.

2.Repository git:

  1. Crée une repository git sur github, cloner la sur un dossier vide locale
  2. Ajouter les fichier que vous avez crée dans votre code dans le dossier contenant le git
  3. Faitez un push : git add .; git commit -m "first commit"; git push

3.Repository dvc sur s3 :

  1. initier dvc avec dvc init
  2. crée une repository dvc
    dvc init
    conda install dvc[s3]
    dvc remote add -d dvcstore s3://YOUR_BUCKET_NAME/dvc
    dvc remote modify dvcstore access_key_id   *******
    dvc remote modify dvcstore secret_access_key ********
    dvc add data/raw
    dvc push # now you can check on your s3 to see the result

4. Adjuster votre fichier params :

ex:

preprocess:
  #input : data/raw/diabetes.csv
  #output : data/preprocessed/data.csv
  input : data/raw/diabetes.csv # for this to work you need to pull from dvc first or bring the file manually.
  output : s3://VOTRE_BUCKET_S3/data/preprocessed/data.csv

train : 
  data : s3://VOTRE_BUCKET_S3/data/preprocessed/data.csv
  model_path : models.pkl
  random_state : 42
  n_estimators: 100
  max_depth: 5

mlflow: 
  MLFLOW_TRACKING_URI : http://EC2-PUBLIC-IP-ADRESS:5000
aws :
  aws_access_key_id: YOUR_ACCESS_KEY
  aws_secret_access_key: YOUR_SECRET_ACESS_KEY
  region_name: AWS_REGION

Ce fichier assume que votre code preprocessing (utilise des données diabetes csv local [ou traked avec dvc et pulled]), applique le preprocessing pour sauvergarder une version preprocessed sur s3, et utlise la version sauvegardé sur s3 pour faire le training. EN suite le fichier evaluate utilise le mlflow running sur ec2 pour recuperer la version nommé dans le code de votre modèle pour l'appeler.

Complemenatires :

  1. Comment connecter à votre machine EC2 depuis votre propre terminale:
ssh -i path/to/your-key.pem ec2-user@<your-ec2-public-ip>
# ex:
ssh -i "C:\Users\yana\Downloads\mlflow-server-ya.pem" ubuntu@13.53.36.3

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors