From b8504f0a07576e309d406e80f787ec4a9867a98e Mon Sep 17 00:00:00 2001 From: Jim Dowling Date: Tue, 26 Nov 2019 15:25:38 +0100 Subject: [PATCH 1/2] Add Hopsworks --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b530cc8..0e1646f 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,7 @@ by active learning (by developers of Spacy), text and image (Feature extraction could be computationally expensive and nearly impossible to scale, hence re-using features by different models and teams is a key to high performance ML teams). * [FEAST](https://github.com/gojek/feast) (Google cloud, Open Source) * [Michelangelo Palette](https://eng.uber.com/michelangelo/) (Uber) + * [Hopsworks](https://github.com/logicalclocks/hopsworks) (Hopsworks, Open Source) * Suggestion: At training time, copy data into a local or networked **filesystem** (NFS). [1](#fsdl) ### 1.4. Data Versioning @@ -133,6 +134,7 @@ by active learning (by developers of Spacy), text and image * [Comet](https://www.comet.ml/): lets you track code, experiments, and results on ML projects * [Weights & Biases](https://www.wandb.com/): Record and visualize every detail of your research with easy collaboration * [MLFlow Tracking](https://www.mlflow.org/docs/latest/tracking.html#tracking): for logging parameters, code versions, metrics, and output files as well as visualization of the results. + * [Hopsworks Experiments](https://github.com/logicalclocks/hopsworks): for logging hyperparameters, results, notebooks, datasets/features used for training, and any output files/images. * Automatic experiment tracking with one line of code in python * Side by side comparison of experiments * Hyper parameter tuning @@ -144,6 +146,7 @@ by active learning (by developers of Spacy), text and image * Random search * Bayesian optimization * HyperBand + * Asynchronous Successive Halving * Platforms: * [Katib](https://github.com/kubeflow/katib): Kubernete's Native System for Hyperparameter Tuning and Neural Architecture Search, inspired by [Google vizier](https://static.googleusercontent.com/media/ research.google.com/ja//pubs/archive/ bcb15507f4b52991a0783013df4222240e942381.pdf) and supports multiple ML/DL frameworks (e.g. TensorFlow, MXNet, and PyTorch). @@ -152,14 +155,16 @@ by active learning (by developers of Spacy), text and image * [Ray-Tune](https://github.com/ray-project/ray/tree/master/python/ray/ tune): A scalable research platform for distributed model selection (with a focus on deep learning and deep reinforcement learning) * [Sweeps](https://docs.wandb.com/library/sweeps) from [Weights & Biases] (https://www.wandb.com/): Parameters are not explicitly specified by a developer. Instead they are approximated and learned by a machine learning model. * [Keras Tuner](https://github.com/keras-team/keras-tuner): A hyperparameter tuner for Keras, specifically for tf.keras with TensorFlow 2.0. - + * [Maggy](https://github.com/logicalclocks/maggy): An asynchronous parallel hyperparameter tuning framework for TensorFlow/Keras, built on PySpark. + ### 2.6. Distributed Training * Data parallelism: Use it when iteration time is too long (both tensorflow and PyTorch support) * Model parallelism: when model does not fit on a single GPU * Other solutions: * Ray * Horovod - + * [TensorFlow CollectiveAllReduce on PySpark](https://www.logicalclocks.com/blog/goodbye-horovod-hello-collectiveallreduce) + ## 3. Troubleshooting [TBD] ## 4. Testing and Deployment @@ -231,6 +236,7 @@ Machine Learning production software requires a more diverse set of test suites * Catching service and data regressions * Cloud providers solutions are decent * [Kiali](https://kiali.io/):an observability console for Istio with service mesh configuration capabilities. It answers these questions: How are the microservices connected? How are they performing? +* [Hopsworks](https://github.com/logicalclocks/hopsworks): online models have their predictions logged to a Kafka topic, and a Spark Streaming of Flink application monitors the model for concept drift, data drift, model drift, and other anomalies. #### Are we done?

From cd112458f9a53176e7cdb94dfea4045e895a0c79 Mon Sep 17 00:00:00 2001 From: Jim Dowling Date: Tue, 26 Nov 2019 15:49:50 +0100 Subject: [PATCH 2/2] add file formats - url points to .png file stored in Alis master branch images folder --- README.md | 16 ++++++++++++++-- images/file-formats.png | Bin 0 -> 42585 bytes 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 images/file-formats.png diff --git a/README.md b/README.md index 0e1646f..b79a89a 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,19 @@ by active learning (by developers of Spacy), text and image * [Hopsworks](https://github.com/logicalclocks/hopsworks) (Hopsworks, Open Source) * Suggestion: At training time, copy data into a local or networked **filesystem** (NFS). [1](#fsdl) -### 1.4. Data Versioning +### 1.4. File Formats +* Different file formats may be used along different parts of the ML Pipeline, as shown in the figure below: +

+ +

+ +* Feature engineering may be performed on legacy tabular file formats like .csv, or modern columnar formats like .parquet, .orc. Nested file formats like .json, .avro are less often used. + +* Models are typically trained with data in files, and different frameworks have different native file formats. TensorFlow favors .tfrecords, PyTorch favors .npy, Scikit-Learn favors .csv files. Uber released .petastorm as a columnar file format with native readers for TensorFlow/Keras and PyTorch. + +* File formats for model serving include: .pb (TensorFlow), .onnx (framework independent), .pkl (Scikit-Learn - picked python objects), and legacy formats such as .pmml. + +### 1.5. Data Versioning * It's a "MUST" for deployed ML models: **Deployed ML models are part code, part data**. [1](#fsdl) No data versioning means no model versioning. * Data versioning platforms: @@ -66,7 +78,7 @@ by active learning (by developers of Spacy), text and image * [Pachyderm](https://www.pachyderm.com/): version control for data * [Dolt](https://www.liquidata.co/): versioning for SQL database -### 1.5. Data Processing +### 1.6. Data Processing * Training data for production models may come from different sources, including *Stored data in db and object stores*, *log processing*, and *outputs of other classifiers*. * There are dependencies between tasks, each needs to be kicked off after its dependencies are finished. For example, training on new log data, requires a preprocessing step before training. * Makefiles are not scalable. "Workflow manager"s become pretty essential in this regard. diff --git a/images/file-formats.png b/images/file-formats.png new file mode 100644 index 0000000000000000000000000000000000000000..d9277f7a9dfba99905f68766913d3823a919349d GIT binary patch literal 42585 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 V5dx8S{