Building and Operating an OSS Data Science Platform

Building and Operating an OSS Data Science Platform

@joerg_schad #DataSciencePrinciples Building an Open Source Data Science Platform https://goo.gl/ZnrR98 Agenda Distributed TF, Horovod, Rendezvous Architecture, Serving Model Optimization, Feature Store, Hyperparameter Opt MLFlow, Jenkins Spark, KubeFlow, TF Serving TensorFlow, Jupyter What is Machine Learning? Monitoring & Operations TensorBoard Model Model Model Data & Streaming Model Serving Engineering Training Management Distributed Data Data Preparation Distributed Storage of trained Use trained Model Storage and and Analysis Training using Models and for Inference Streaming Machine Learning Metadata Frameworks Feature Catalogue Continuous Integration Model Library Resource and Service Management Challenge... Distributed TF, Horovod, Rendezvous Architecture, Serving Model Optimization, Feature Store, Who are you? Hyperparameter Opt What is your ML experience? MLFlow, Jenkins What do you expect to learn today? Spark, KubeFlow, TF Serving TensorFlow, Jupyter What is Machine Learning? Jörg Schad Technical Lead/Engineer Deep Learning ● Core Mesos developer at Mesosphere ● Twitter: @joerg_schad Distributed TF, Horovod, Rendezvous Architecture, Machine Learning Serving Model Optimization, TensorFlow Hub, ● Why do we care Feature Store ● What is Machine Learning ● Data Science Principles MLFlow, Jenkins ● Different Personas Spark, KubeFlow, TF Serving TensorFlow, Jupyter What is Machine Learning? Why is machine learning taking off? 8 9 CONFIDENTIAL 11 CONFIDENTIAL 12 CONFIDENTIAL What you want to be doing Get Train Run Write intelligent machine learning code Data Model Model Repeat 13 What you’re actually doing Sculley, D., Holt, G., Golovin, D. et al. Hidden Technical Debt in Machine Learning Systems 14 Data Science Principles 15 Software Engineering The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software IEEE Standard Glossary of Software Engineering Terminology Do we need Data Science Engineering Principles? 16 Software Engineering The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software IEEE Standard Glossary of Software Engineering Do weTerminology need Data Science Engineering Principles? 17 Challenge: Requirements Engineering • Do I need Machine Learning? * • Do I need {Neural Networks, Regression,...}* • What dataset(s)? – Quality? • What target/serving environment? • What model architecture? • Pre-trained model available? • How many training resources? • Required Model Freshness? * Can I actually use ... 18 Machine Learning http://btimmermans.com/2017/12/11/machine-learning-overview/ 19 Fast.ai 20 Deep Learning: The Promise 21 Deep Learning: Insights https://arxiv.org/pdf/1506.06579.pdf 22 Deep Learning: The Process Step 1: Training Step 2: Inference (In Data Center - Over Hours/Days/Weeks) (Endpoint or Data Center - Instantaneous) Input: New Input from Lots of Labeled Camera or Data Dog Sensor Trained Deep neural Trained Model network model Model Output: 97% Dog Output: Trained Model 3% Classification Panda 23 Deep Learning: The Process Step 1: Training Step 2: Inference (In Data Center - Over Hours/Days/Weeks) (Endpoint or Data Center - Instantaneous) Input: New Input from Lots of Labeled Camera or Data Dog Sensor Trained Deep neural Trained Model network model Model Output: 97% Dog Output: Trained Model 3% Classification Panda 24 Challenge: Persona(s) 25 The Rise of the DataOps Engineer Combines two key skills: - Data science - Distributed systems engineering The equivalent of DevOps for Data Science 26 Distributed TF, Horovod, TensorFlow & Rendezvous Architecture, Serving Jupyter Model Optimization, Feature Store, Hyperparameter Opt ● First Hands-On Machine Learning MLFlow, Jenkins ● Open Source Technologies ○ TensorFlow Spark, KubeFlow, TF ○ Jupyter Serving ● Labs ○ Mnist with Google Colab TensorFlow, Jupyter ○ Deploy and use Jupyter What is Machine Learning? TensorFlow Overview “An open-source software library for Machine Intelligence” - tensorflow.org ● Tensorflow is a software library that makes it easy for developers to construct artificial neural networks to analyze their data of interest Dataflow GPUs TensorFlow Executor, Python Compute Kernel Library Implementations, Networking, etc. CPUs 29 ML Frameworks Overview 30 Alternatives 31 Alternatives tf.enable_eager_execution() 32 33 Challenge: Writing Distributed Model Functions 34 TensorFlow Estimator & Keras APIs • Prefered APIs return tf.estimator.Estimator( model_fn=model_fn, # First-class function params=params, # HParams config=run_config # RunConfig ) 35 Lab 0: Fashion Mnist https://www.tensorflow.org/tutorials/keras/basic_classification 36 Lab 1: JupyterLab DataOps: Setup Environment Data Scientist: Use distributed resources 1. Install HDFS 2. Install Marathon-LB (Proxy) 3. Install Jupyter https://github.com/dcos/demos/tree/master/jupyterlab/1.11 37 Lab 1: Connect to Cluster USER: bootstrapuser Password:- deleteme 38 Lab 1: HDFS https://github.com/dcos/demos/tree/master/jupyterlab/1.11 39 Lab 1: Marathon-LB https://github.com/dcos/demos/tree/master/jupyterlab/1.11 40 Lab 1: Jupyter https://github.com/dcos/demos/tree/master/jupyterlab/1.11 41 Lab 1: Jupyter http://api.hdfs.marathon.l4lb.thisdcos.directory/v1/endpoints https://github.com/dcos/demos/tree/master/jupyterlab/1.11 42 Lab 1: Jupyter https://github.com/dcos/demos/tree/master/jupyterlab/1.11 43 <External>/jupyterlab-notebook PW: jupyter Lab 1: Jupyter https://github.com/dcos/demos/tree/master/jupyterlab/1.11 44 Lab 1: Jupyter val NUM_SAMPLES = 10000000 val count2 = spark.sparkContext.parallelize(1 to NUM_SAMPLES).map{i => val x = Math.random() val y = Math.random() if (x*x + y*y < 1) 1 else 0 }.reduce(_ + _) println("Pi is roughly " + 4.0 * count2 / NUM_SAMPLES) https://github.com/dcos/demos/tree/master/jupyterlab/1.11 45 Lab 1: Jupyter eval \ spark-submit \ ${SPARK_OPTS} \ --verbose \ --class org.apache.spark.examples.SparkPi \ /opt/spark/examples/jars/spark-example s_2.11-2.2.1.jar 100 https://github.com/dcos/demos/tree/master/jupyterlab/1.11 46 Lab 1: Jupyter https://github.com/dcos/demos/tree/master/jupyterlab/1.11 47 Distributed TF, Horovod, Rendezvous Architecture, First Pipeline Serving ● Model Optimization, Pipeline overview TensorFlow Hub, ○ KubeFlow Feature Store ○ TFX ○ Michelangelo MLFlow, Jenkins ● Open Source Technologies ○ Kubeflow Kubeflow, TF Serving ○ TF Serving ● Labs ○ [opt] Serving TensorFlow, Jupyter,Spark ○ [opt] KubeFlow What is Machine Learning? Challenge: Serving • How to Deploy Models? • TensorFlow Serving – Zero Downtime – Canary • Multiple Models? – Testing 50 Challenge: Serving Environment • How to Deploy Models? – Zero Downtime – Canary • Multiple Models? – Testing https://ai.googleblog.com/2016/02/running-your-models-in- production-with.html 51 Lab: (Optional) TensorFlow Serving # Download the TensorFlow Serving Docker image and repo docker pull tensorflow/serving git clone https://github.com/tensorflow/serving # Location of demo models TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata" # Start TensorFlow Serving container and open the REST API port docker run -t --rm -p 8501:8501 \ -v "$TESTDATA/saved_model_half_plus_two_cpu:/models/half_plus_two" \ -e MODEL_NAME=half_plus_two \ tensorflow/serving & # Query the model using the predict API curl -d '{"instances": [1.0, 2.0, 5.0]}' \ -X POST http://localhost:8501/v1/models/half_plus_two:predict # Returns => { "predictions": [2.5, 3.0, 4.5] } https://www.tensorflow.org/serving/serving_basic https://www.tensorflow.org/serving/serving_advanced 52 Pipeline.ai https://pipeline.ai/ 53 Pipeline.ai https://community.cloud.pipeline.ai/admin/app 54 Rendezvous Architecture https://mapr.com/ebooks/machine-learning-logistics/ch03.html 55 1. Data Preparation 2. Model Training 3. Monitoring 4. Debugging 5. Model Serving & Model Engineering Public Cloud Pipeline ... 7. Streaming of requests 1. Data Preparation using Spark 1. Data Preparation 2. Model Training 3. Monitoring 4. Debugging 5. Model Serving & Model Engineering DIY Open Source Pipeline 7. Kafka stream of 1. Data Preparation using requests Spark 1. Data Preparation 2. Model Training 3. Monitoring 4. Debugging 5. Model Serving & Model Engineering Data Science Pipeline Monitoring & Operations Tensorboard Model Model Model Data & Streaming Model Serving Engineering Training Management Distributed Data Data Preparation Distributed Storage of trained Use trained Model Storage and and Analysis Training using Models and for Inference Streaming Machine Learning Metadata Frameworks Continuous Integration Resource and Service Management 60 Data Science Platforms • AWS Sagemaker + Spark, MXNet, TF + Serving/AB - Cloud Only • Google Datalab/ML-Engine + TF, Keras, Scikit, XGBoost + Serving/AB - Cloud Only - No control of docker images • KubeFlow + TF Everywhere - TF only https://medium.com/intuitionmachine/google-and-ubers-best-practices-for-deep-learning-58488a8899b6 61 TFX: A TensorFlow-Based Production-Scale Machine Learning Platform http://www.kdd.org/kdd2017/papers/view/tfx-a-tensorflow-based-production-scale-machine-learning-platform https://www.youtube.com/watch?v=fPTwLVCq00U 62 Uber Michelangelo “..there were no systems in place to build reliable, uniform, and reproducible pipelines for creating and managing training and prediction data at scale.” • Feature store (later) https://eng.uber.com/michelangelo/ 63 Challenge: Data Quality • Data is typically not ready to be consumed by ML job* – Data Cleaning • Missing/incorrect

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    126 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us