diff --git a/config.toml b/config.toml
index 02848fe725..fc477a187c 100644
--- a/config.toml
+++ b/config.toml
@@ -45,7 +45,7 @@ Paginate = 20
[[menu.main]]
name = "Blog"
weight = -100
- url = "/blog/"
+ url = "https://medium.com/kubeflow"
[[menu.main]]
name = "GitHub"
weight = -99
diff --git a/content/_redirects b/content/_redirects
index 5ff2ff6709..0cbdf0b635 100644
--- a/content/_redirects
+++ b/content/_redirects
@@ -1,4 +1,11 @@
# Redirects from what the browser requests to what we serve
-/version/stable/gke/scripts/deploy.sh https://raw.githubusercontent.com/kubeflow/kubeflow/v0.2.2/scripts/gke/deploy.sh
+/version/stable/gke/scripts/deploy.sh https://raw.githubusercontent.com/kubeflow/kubeflow/v0.2.2/scripts/gke/deploy.sh
/version/stable/scripts/deploy.sh https://raw.githubusercontent.com/kubeflow/kubeflow/v0.2.2/scripts/deploy.sh
/version/stable/source.tar.gz https://github.com/kubeflow/kubeflow/archive/v0.2.2.tar.gz
+/blog/ https://medium.com/kubeflow
+/blog/why_kubeflow/ https://medium.com/kubeflow/why-kubeflow-in-your-infrastructure-56b8fabf1f3e
+/blog/announcing_kubeflow_0.3/ https://medium.com/kubeflow/kubeflow-0-3-simplifies-setup-improves-ml-development-98b8ca10bd69
+/blog/blog_posts/ https://medium.com/kubeflow/blog-posts-about-kubeflow-7068688359f3
+/blog/nvidia_tensorrt/ https://medium.com/kubeflow/gpu-accelerated-inference-for-kubernetes-with-the-nvidia-tensorrt-inference-server-and-kubeflow-63061305fff2
+/blog/kaggle_on_kubeflow/ https://medium.com/kubeflow/kaggle-on-kubeflow-185a29e27c53
+/blog/announcing_kubeflow_0.2/ https://medium.com/kubeflow/kubeflow-0-2-offers-new-components-and-simplified-setup-735e4c56988d
diff --git a/content/blog/Central_UI_Screenshot.svg b/content/blog/Central_UI_Screenshot.svg
deleted file mode 100644
index 14e6cb4db1..0000000000
--- a/content/blog/Central_UI_Screenshot.svg
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
diff --git a/content/blog/_index.md b/content/blog/_index.md
deleted file mode 100644
index 7e3b33a66d..0000000000
--- a/content/blog/_index.md
+++ /dev/null
@@ -1,4 +0,0 @@
-+++
-title = "The Kubeflow Blog"
-description = ""
-+++
diff --git a/content/blog/announcing_kubeflow_0.2.md b/content/blog/announcing_kubeflow_0.2.md
deleted file mode 100644
index 25a2bc18c2..0000000000
--- a/content/blog/announcing_kubeflow_0.2.md
+++ /dev/null
@@ -1,111 +0,0 @@
-+++
-title = "Kubeflow 0.2 Offers New Components and Simplified Setup"
-description = "Announcing Kubeflow 0.2"
-weight = 20
-publishDate = 2018-08-06T11:52:19-07:00
-draft = false
-+++
-
-## Since Last We Met
-It has been 6 months since Google announced Kubeflow at KubeCon Austin, and just 3 months since the Kubeflow community delivered 0.1 at KubeCon EU. We have been both humbled and delighted by the amazing progress since then. The community has grown even faster than we could have imagined, with nearly 100 contributors in 20 different organizations and more than 4,000 GitHub stars. But what really shocked us was how many supporting projects are collaborating with the Kubeflow community to extend and expand what Kubeflow can do. Just a small summary include:
-
- - [Argo](https://github.com/kubeflow/kubeflow/tree/master/kubeflow/argo) for managing ML workflows
- - [Caffe2 Operator](https://github.com/kubeflow/caffe2-operator) for running Caffe2 jobs
- - [Horovod & OpenMPI](https://github.com/kubeflow/kubeflow/tree/master/kubeflow/openmpi) for improved distributed training performance of TensorFlow
- - [Identity Aware Proxy](https://github.com/kubeflow/kubeflow/blob/master/docs/gke/iap.md), which enables using security your services with identities, rather than VPNs and Firewalls
- - [Katib](https://github.com/kubeflow/katib) for hyperparameter tuning
- - [Kubernetes volume controller](https://github.com/kubeflow/experimental-kvc) which provides basic volume and data management using volumes and volume sources in a Kubernetes cluster.
- - [Kubebench](https://github.com/kubeflow/kubebench ) for benchmarking of HW and ML stacks
- - [MPI operator](https://github.com/kubeflow/mpi-operator) for running MPI jobs
- - [Pachyderm](https://github.com/kubeflow/kubeflow/tree/master/kubeflow/pachyderm) for managing complex data pipelines
- - [PyTorch operator](https://github.com/kubeflow/pytorch-operator) for running PyTorch jobs
- - [Seldon Core](https://github.com/kubeflow/kubeflow/tree/master/kubeflow/seldon) for running complex model deployments and non-TensorFlow serving
-
-To everyone who has contributed so far, we would like to offer a huge thank you! We are getting ever closer to realizing our vision: letting data scientists and software engineers focus on the things they do well by giving them an easy-to-use, portable and scalable ML stack.
-
-## Introducing Kubeflow 0.2
-We’re proud to announce the availability of Kubeflow 0.2. The new release offers significant performance upgrades, a simplified getting started experience, and alpha support for advanced features. Let’s walk through some of the highlights:
-
-### Improved Getting Started Experience
-We know that many data scientists and ML engineers are new to Kubernetes and Kubernetes concepts. We’ve done a number of investments to minimize the amount of work they have to do to get started on the platform. This includes:
-
- - A new deployment script which makes getting started on an existing cluster a single command. To get a default deployment running on Kubernetes *anywhere* just execute:
-
- ```
- export KUBEFLOW_VERSION=0.2.2
- curl https://raw.githubusercontent.com/kubeflow/kubeflow/v${KUBEFLOW_VERSION}/scripts/deploy.sh | bash
- ```
-
- - We also offer cloud-specific versions of these deployment scripts so that you can auto create a cluster if you don’t have one available. For example:
- ```
- export KUBEFLOW_VERSION=0.2.2
- curl https://raw.githubusercontent.com/kubeflow/kubeflow/${KUBEFLOW_VERSION}/scripts/gke/deploy.sh | bash
- ```
- - A central UI that gives you visibility into all the components running in your cluster - Central UI - To make it easier to navigate among components
-
- ![Central UI Dashboard](../Central_UI_Screenshot.svg)
-
- - A declarative deployment process that first creates Cloud resources including your Kubernetes cluster and then deploys Kubeflow. We have an example for GCP using Deployment Manager, and plan to add support for other clouds using tools like Terraform.
-
-### New and Improved Components Available
-The essence of Kubeflow is all about extending the project with new components, and making the existing components more feature rich. Some examples of the improvements we made in 0.2 include:
-
- - Adding TFX components TFMA & TFT
- - Several TF Job improvements
- - Event driven implementation making running even faster.
- - Preservation of logs after job finishes.
- - A master/chief is no longer required; expanding the number of TF programs that just run
- - Simplified ksonnet prototypes for TFJob; make it easier to do advanced customization
- - Alpha support for advanced tooling including:
- - Katib for Hyperparameter search
- - PyTorch operator
- - MPI operator
- - Horvod / MPI integration
-
-### Leveraging Kubernetes for deeper platform integrations
-Part of our goals with Kubeflow is to enable platform extensions so that users can customize their deployments based on their needs. These include:
-
- - Simplified networking integration including auto provisioning of endpoints and identity aware proxysetup
- - Using Kubernetes Persistent Volumes to simplify persistent storage (both locally and in the cloud) - PVC for Jupyter notebooks
- - Kubernetes native monitoring which works with both Prometheus and cloud-based monitoring (such as Stackdriver)
-
-And many more. For a more comprehensive list, please see the [issues closed in 0.2.0 on github](https://github.com/kubeflow/kubeflow/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aclosed+label%3Arelease%2F0.2.0+).
-
-## Learning More
-If you’d like to try out Kubeflow, we have a number of options for you:
-
- - You can use [sample walkthroughs](https://www.katacoda.com/kubeflow) hosted on Katacoda
- - You can follow a guided tutorial with existing models from the [examples repository](https://github.com/kubeflow/examples). We recommend the [GitHub Issue Summarization](https://github.com/kubeflow/examples/tree/master/github_issue_summarization) for a complete E2E example.
- - You can start a cluster on your own and try your own model. Any Kubernetes conformant cluster will support Kubeflow including those from contributors Alibaba Cloud, [Caicloud](https://www.prnewswire.com/news-releases/caicloud-releases-its-kubernetes-based-cluster-as-a-service-product-claas-20-and-the-first-tensorflow-as-a-service-taas-11-while-closing-6m-series-a-funding-300418071.html),
- [Canonical](https://jujucharms.com/canonical-kubernetes/),
- Cisco, Dell,
- [Google](https://cloud.google.com/kubernetes-engine/docs/how-to/creating-a-container-cluster),
- [Heptio](https://heptio.com/products/kubernetes-subscription/),
- Intel,
- [Mesosphere](https://github.com/mesosphere/dcos-kubernetes-quickstart),
- [Microsoft](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough),
- [IBM](https://console.bluemix.net/docs/containers/cs_tutorials.html#cs_cluster_tutorial),
- [Red Hat/Openshift](https://docs.openshift.com/container-platform/3.3/install_config/install/quick_install.html#install-config-install-quick-install) and
- [Weaveworks](https://www.weave.works/product/cloud/).
-
-
-## What’s Next
-Our next major release will be 0.3 coming this fall. In it, we expect to land the following new features:
-
- - Hyperparameter tuning jobs can be submitted without writing any code
- - Job operators - Consistent APIs across supported frameworks
- - Getting Started - Click to Deploy
-
-## Come Help!
-As always, we’re listening! Please tell us the feature (or features) you’d really like to see that aren’t there yet. Some options for making your voice heard include:
-
- - The [Kubeflow Slack channel](https://join.slack.com/t/kubeflow/shared_invite/enQtMjgyMzMxNDgyMTQ5LWUwMTIxNmZlZTk2NGU0MmFiNDE4YWJiMzFiOGNkZGZjZmRlNTExNmUwMmQ2NzMwYzk5YzQxOWQyODBlZGY2OTg)
- - The [Kubeflow-discuss](https://groups.google.com/forum/#!forum/kubeflow-discuss) email list
- - The [Kubeflow Twitter](http://twitter.com/kubeflow) account
- - Our [weekly community meeting](https://github.com/kubeflow/community)
- - Please download and run [Kubeflow](https://github.com/kubeflow/kubeflow/), and submit bugs!
-
-Thank you for all your support so far!
-
-*Jeremy Lewi & David Aronchick Google*
-
diff --git a/content/blog/announcing_kubeflow_0.3.md b/content/blog/announcing_kubeflow_0.3.md
deleted file mode 100644
index c8446d0c7d..0000000000
--- a/content/blog/announcing_kubeflow_0.3.md
+++ /dev/null
@@ -1,149 +0,0 @@
-+++
-title = "Kubeflow 0.3 Simplifies Setup & Improves ML Development"
-description = "Announcing Kubeflow 0.3"
-weight = 20
-publishDate = 2018-10-29T05:52:19-07:00
-draft = false
-+++
-
-## Since Last We Met
-
-It has been 3 months since landing [0.2](https://www.kubeflow.org/blog/announcing_kubeflow_0.2/) and we have continued to be amazed by the support from the community. The community continues to grow, with 100+ members from 20 different organizations and more than 4,500 Github stars!
-
-In September, we held our first [contributor summit](http://bit.ly/kf-summit-2018-overview)! We were thrilled to have over 60 participants join in person along with 10 remote contributors from 4 continents! We are tentatively planning our next summit for early 2019.
-
-![Contributor Summit](../contributor_summit.jpg)
-
-To all our contributors, we want to share our deep appreciation for your support! We are getting closer to our vision of letting data scientists and ML engineers focus on building models and products by giving them a Kubernetes native platform for ML that is easy-to-use, portable and scalable.
-
-## Upcoming Events
-We have a number of upcoming events where you can connect with us and learn more about Kubeflow
-
-* [KubeCon, Seattle](https://events.linuxfoundation.org/events/kubecon-cloudnativecon-north-america-2018/), 11-13 December, 2018
-* [YOW!, Melbourne](https://melbourne.yowconference.com.au/), 4-7 December, 2018
- * [Kubeflow Explained: NLP Architectures on Kubernetes](https://melbourne.yowconference.com.au/proposal/?id=6858): Michelle Casbon
-* [YOW!, Brisbane](https://brisbane.yowconference.com.au/), 3-4 December, 2018
- * [Kubeflow Explained: NLP Architectures on Kubernetes](https://brisbane.yowconference.com.au/proposal/?id=6859): Michelle Casbon
-* [YOW!, Sydney](https://sydney.yowconference.com.au/), 27-30 November, 2018
- * [Kubeflow Explained: NLP Architectures on Kubernetes](https://sydney.yowconference.com.au/proposal/?id=6860): Michelle Casbon
-* [KubeCon, Shanghai](https://www.lfasiallc.com/events/kubecon-cloudnativecon-china-2018/), 14-15 November, 2018
-
-For the latest information please refer to our [events calendar](https://www.kubeflow.org/docs/about/events/).
-
-## Introducing Kubeflow 0.3
-
-We're thrilled to announce the availability of Kubeflow 0.3. This release provides easier deployment and customization of components and better multi-framework support. Let's walk through some of the highlights:
-
-### Deploy
-
-Combining existing services and applications into a cohesive, unified ML platform is one of the biggest obstacles to leveraging Kubernetes for ML. We are pleased to announce several features as part of our ongoing effort to tackle this problem.
-
-**Declarative and Extensible Deployment**
-
-We continue to simplify the deployment experience with a new deployment command line script; **kfctl.sh**. This tool allows Kubeflow to easily be configured and deployed like this:
-
-```
-${KUBEFLOW_REPO}/scripts/kfctl.sh init ${KFAPP} `--platform gcp --project ${PROJECT}`
-cd ${KFAPP}
-${KUBEFLOW_REPO}/scripts/kfctl.sh generate platform
-${KUBEFLOW_REPO}/scripts/kfctl.sh apply platform
-${KUBEFLOW_REPO}/scripts/kfctl.sh generate k8s
-${KUBEFLOW_REPO}/scripts/kfctl.sh apply k8s
-```
-
-The new tool allows Kubernetes resources and non-K8s resources (e.g. clusters, filesystems, etc...) to be created and deployed consistently. We've divided the deployment process into two steps: 1) creating declarative configs describing your deployment and 2) applying these configs. This makes it easy to customize your deployment and check it into source control for repeatable deployments.
-
-**More options for local development**
-
- * Minikube deployment now provides a single command shell script based deployment.
-
- * In addition to minikube, you can now use MicroK8s to easily run Kubeflow on your laptop.
-
-### Develop
-
-In order to deliver a complete platform for building ML products, we are continuing to add and improve the services included in Kubeflow.
-
-**Inference**
-
-We are pleased to announce a number of improvements to our inference capabilities.
-
-Using [Apache Beam](https://beam.apache.org/), it is now possible to do batch inference with GPUs (but non distributed) for [TensorFlow](https://www.kubeflow.org/docs/guides/components/tfbatchpredict/). Apache Beam makes it easy to write batch and streaming data processing jobs that run on a variety of execution engines.
-
-We are continuing our efforts to make it easy to run TFServing in production by adding a Liveness probe and using fluentd to log [request and responses](https://www.kubeflow.org/docs/guides/components/tfserving/#request-logging) to enable model retraining.
-
-In collaboration with NVIDIA we are really excited to be offering more options for online prediction using both CPUs and GPUs by taking advantage of the [NVIDIA TensorRT Inference Server.](https://www.kubeflow.org/blog/nvidia_tensorrt/) The TensorRT Inference Server is a containerized, production-ready AI inference server that maximizes utilization of GPU servers by running multiple models concurrently on the GPU and supports all the top AI frameworks.
-
-**Hyperparameter tuning**
-
-Finding optimal hyperparameters is one of the biggest barriers to producing high quality models. In order to make it easy to use hyperparameter tuning without writing any code, we are introducing a new K8s custom controller, StudyJob, that allows a hyperparameter search to be defined using YAML. This [manifest](https://github.com/kubeflow/katib/blob/master/examples/hypb-example.yaml) shows how easy it is to tune your models using the hyperband algorithm.
-
-**Training**
-
-We continue to expand the list of supported frameworks by offering an apha release of a K8s custom controller for Chainer([docs](https://www.kubeflow.org/docs/guides/components/chainer/)).
-
-Cisco has created a v1alpha2 API for PyTorch that brings parity and consistency with our TFJob operator.
-
-For PyTorch and TFJob we've added a number of highly requested features needed to handle production workloads. We've added support for gang-scheduling using Kube Arbitrator ([docs](https://www.kubeflow.org/docs/guides/job-scheduling/)) to avoid stranding resources and deadlockings in clusters under heavy load. We've added a TTL to allow garbage collecting old, completed jobs to avoid taxing the K8s API server. To support multi-tenant clusters, the operators can now be scoped to only claim resources in a specified namespace.
-
-**Examples**
-
-We've added numerous examples to illustrate the growing number of ways in which you can leverage Kubeflow.
-
-* The XGBoost [example](https://github.com/kubeflow/examples/tree/master/xgboost_ames_housing) illustrates how to use non-DL frameworks with Kubeflow
-* The object detection [example-](https://github.com/kubeflow/examples/commits/master/object_detection) illustrates how to leverage GPUs for online and batch inference.
-* The financial time series prediction example illustrates how to leverage Kubeflow for time series analysis ([blog](https://blog.ml6.eu/using-kubeflow-for-analyzing-financial-time-series-part-i-18580ef5df0b), [code](https://github.com/kubeflow/examples/tree/master/financial_time_series)).
-
-
-**Kubebench**
-
-Benchmarking is critical to identifying performance bottlenecks that slow development or waste expensive resources. To address these needs, Cisco created [Kubebench](https://github.com/kubeflow/kubebench), a framework for benchmarking ML workloads on Kubeflow.
-
-**TFX Libraries**
-
-The 0.3 Kubeflow Jupyter images ship with [TF Data-Validation](https://github.com/tensorflow/data-validation). TF Data-Validation is a library for exploring and validating machine learning data.
-
-And many more. For a complete list of updates, see the 0.3 [Change Log](https://github.com/kubeflow/kubeflow/blob/master/CHANGELOG.md) on GitHub.
-
-## Getting Started
-
-To get started with Kubeflow we suggest following the steps below:
-
-
-1. Follow our getting [started guide](https://www.kubeflow.org/docs/started/getting-started/) to deploy Kubeflow
-1. Try out Kubeflow using one of the existing models in the [examples repository](https://github.com/kubeflow/examples).
-
-
-## What's Next
-
-Our next major release, 0.4, will be coming by the end of this year. Here are some key areas we are working on.
-
-
-### Ease of Use
-
-To make Kubeflow more accessible to data scientists, we want to make it possible to perform common ML tasks without having to learn Kubernetes. In 0.4, we hope to provide an initial version of tooling that makes it possible for data scientists to train and deploy models entirely from a notebook.
-
-
-### Model Tracking
-
-Keeping track of experiments is a major source of toil for data scientists and ML Engineers. In 0.4, we plan on making it easier to track models by providing a simple API and database for tracking models.
-
-
-### Production Readiness
-
-With 0.4 we want to continue to push Kubeflow towards production readiness by graduating our PyTorch and TFJob operators to beta.
-
-
-## Come Help!
-
-As always, we're listening! Please tell us the feature (or features) you'd really like to see that aren't there yet. Some options for making your voice heard include:
-
-
-* Join the Kubeflow [Slack channel](https://join.slack.com/t/kubeflow/shared_invite/enQtMjgyMzMxNDgyMTQ5LWUwMTIxNmZlZTk2NGU0MmFiNDE4YWJiMzFiOGNkZGZjZmRlNTExNmUwMmQ2NzMwYzk5YzQxOWQyODBlZGY2OTg)
-* File GitHub issues in [kubeflow/kubeflow](https://github.com/kubeflow/kubeflow)
-* Email the [Kubeflow-discuss](https://groups.google.com/forum/#!forum/kubeflow-discuss) mailing list
-* Follow us at [Kubeflow Twitter](http://twitter.com/kubeflow) account
-* Attend our [weekly community meeting](https://github.com/kubeflow/community)
-
-Thank you for all your support so far!
-
-*Jeremy Lewi, Abhishek Gupta, & Chris Cho (Google)*
diff --git a/content/blog/blog_posts.md b/content/blog/blog_posts.md
deleted file mode 100644
index 1c4ff02868..0000000000
--- a/content/blog/blog_posts.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-title = "Blog posts about Kubeflow"
-description = "Links to interesting blog posts related to Kubeflow"
-weight = 20
-publishDate = 2018-10-27T11:52:19-07:00
-draft = false
-+++
-Blog posts:
-
- * [Deploy Kubeflow with Oracle Cloud Infrastructure](https://blogs.oracle.com/cloud-infrastructure/deploy-kubeflow-with-oracle-cloud-infrastructure-container-engine-for-kubernetes)
- * [Integrating MapR with KubeFlow](https://mapr.com/blog/kubernetized-machine-learning-and-ai-using-kubeflow/)
diff --git a/content/blog/contributor_summit.jpg b/content/blog/contributor_summit.jpg
deleted file mode 100644
index 0dc5936820..0000000000
Binary files a/content/blog/contributor_summit.jpg and /dev/null differ
diff --git a/content/blog/kaggle-api.svg b/content/blog/kaggle-api.svg
deleted file mode 100644
index 47515378a1..0000000000
--- a/content/blog/kaggle-api.svg
+++ /dev/null
@@ -1,530 +0,0 @@
-
-
-
-
diff --git a/content/blog/kaggle_on_kubeflow.md b/content/blog/kaggle_on_kubeflow.md
deleted file mode 100644
index 51f9c5f202..0000000000
--- a/content/blog/kaggle_on_kubeflow.md
+++ /dev/null
@@ -1,112 +0,0 @@
-+++
-title = "Kaggle on Kubeflow"
-description = "Kubeflow Project Provides Ready-to-Go Kaggle Image"
-weight = 20
-publishDate = 2018-08-24T14:01:31-04:00
-draft = false
-+++
-
-## Kaggle
-[Kaggle](http://kaggle.com/) is home to the world's largest community of data scientists and AI/ML researchers. It's a diverse community ranging from newcomers to accredited research scientists, where participants collaborate and compete online to refine algorithms and techniques. In organized competitions, judges decide on the entries that produce the best model. The competitions can be organized by anyone but many companies and institutions award significant cash prizes to the winners. Beyond the academic benefit of the competitions, it also provides a means to identify top candidates for data science careers with these corporations as they increase their investments in AI and ML.
-
-What kind of solutions are being sought by these money competitions? Here's just a few:
-
-- DHS Passenger Screening Algorithm Challenge: $1,500,000
-- Zillow Prize: Zillow’s Home Value Prediction (Zestimate): $1,200,000
-- Heritage Health Prize (Identify patient hospital admission probability): $500,000
-- The Nature Conservancy Fisheries Monitoring (Detect and classify species of fish): $150,000
-- TGS Salt Identification Challenge (Segment salt deposits beneath the Earth's surface): $100,000
-
-For new data scientists, there are competitions that are interesting thought experiments. The most notable of these is predicting which persons would survive the Titanic disaster, which in fact we will use for our example below.
-
-The Kaggle development platform itself is organized into competitions, "kernels", and datasets which are used to derive the models submitted to the competitions. There are also short form online classes for introductions to Python and machine learning. The kernels are considered [more than just the usual notion of a notebook](http://blog.kaggle.com/2016/07/08/kaggle-kernel-a-new-name-for-scripts/) combining environment, input, code, and output under version control.
-
-## Yes, but what about Kubeflow?
-Kaggle hosts its kernels at its site, so users can choose to run all their data science notebooks online there, but the underlying infrastucture is hosted and shared by over a million users. Individuals and institutions may have superior resource options at their disposal that are more performant, highly available, and private. Indeed, perhaps some institutions want to prepare and announce a new Kaggle competition, and want to do some basic modelling to frame the problem space. However, they potentially can't know in advance which combination of ML frameworks and libraries will achieve the win.
-
-And this is where Kubeflow comes in. Due to its portability and scalability Kubeflow can be deployed into many different cloud providers: GKE, Azure, AKS, on-premise. It can provide the underlying infrastructure on Kubernetes that maximizes the compute resources (both CPU and GPU) to meet the demands of the data scientists who need to run their model experiments and serving. So, assuming you buy all that, we'll take a closer look...
-
-## Images
-### Kubeflow notebooks
-The Kubeflow project early on made a decision to curate, build, and maintain Jupyter notebook images with specific content in them. Since TensorFlow ranks highest in popularity among ML frameworks, it was an obvious choice to have that anchor the notebooks starting with TF 1.4.1. After that there is Keras, Sci-Kit Learn, pandas, and various libraries for JupyterHub widgets and so on. But we had to draw a line somewhere: the more content and layers that go into a Dockerfile, the more the derived image grows in size. Also, we wanted to support both CPU and GPU flavors of TF.
-
-Kubeflow opted for an opinionated balance between images that had somewhat manageable sizes (3-4GB) and core content, as opposed to installing all of the many different frameworks that are available. However, we modified ownership within the images to allow users to install any frameworks or libraries they wanted. We didn't want the initial experience for new developers using Kubeflow to be impacted by long download latency during docker pulls from the Kubeflow `gcr.io/kubeflow-images-public` container registry.
-
-### Kaggle notebook
-Kaggle maintains [its own Python Docker image project](https://github.com/Kaggle/docker-python) which is used as the basis for Kubeflow to provide an image that has all the rich goodness of virtually every available Python ML framework and tool while also having the necessary mods for it to be easily deployed into a Kubeflow environment. But as I mentioned previously, there is some cost associated with that.
-
-- it's a very large notebook, over 21 GB in size. Docker pulls and notebook launches can take a lengthy period of time
-- the versions of TensorFlow, Theano, Torch, XGBoost, and the other libraries included may change at any time
-- the base image size for Docker devicemapper is 10 GB, which won't be large enough to run this image, so look to alternate Docker storage drivers
-- the Kaggle image includes TensorFlow 1.9 or greater built with [AVX2 support](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2), so the image may not run on some older CPU
-- unlike the Kubeflow curated notebooks, the default notebook user (`jovyan`) does not have the permissions to install new packages to global locations (but more on that below)
-
-## Let's try this out
-
-### kaggle-api
-The great team at the Kaggle project has developed [a Python CLI tool](https://github.com/Kaggle/kaggle-api) which essentially interacts with the REST API for the site. We'll use it for downloading datasets and for our kernel.
-
-### Spawning the Kaggle notebook
-The Kubeflow website has [instructions for setting up a new deployment](https://www.kubeflow.org/docs/started/getting-started/) and I will assume that is in place. Once you navigate to the spawner UI, enter the most recent Kubeflow Kaggle image `gcr.io/kubeflow-images-public/kaggle-notebook:v20180713` and click "Spawn". As indicated previously, it can take several minutes for the spawn to complete due to the size of the image.
-
-![Spawner UI](../spawner-ui-kaggle-nb.svg)
-
-### Kaggle CLI
-
-Once the notebook has successfully spawned, go to the "New" menu and open a terminal so that we can set a few things up.
-
-![Terminal](../terminal-menu.svg)
-
-Ironically, the upstream Kaggle image currently does not come with the kaggle-api client pre-installed. Also note that our `jovyan` user doesn't have permission in _this_ image to install to the site package directory. So, we will do a local install of `kaggle` and add the script to our path.
-
-```
-export PYTHONUSERBASE=/home/jovyan/.local
-pip install --user kaggle
-export PATH=/home/jovyan/.local/bin:$PATH
-```
-
-You must register with Kaggle so that you can obtain an API key.
-
-![Kaggle API](../kaggle-api.svg)
-
-Once you are registered, you can either put the key in your notebook at `~/.kaggle/kaggle.json` or use the contents to set the following environment variables.
-
-
-```
-export KAGGLE_USERNAME=
-export KAGGLE_KEY=xxxxxxxxxxxxxx
-```
-
-### Prepare your environment
-
-Next we'll grab the dataset from the Titanic competition. It's important to note that you must agree to the terms and conditions of the competition before downloading its datasets.
-
-```
-mkdir ~/input && cd ~/input
-kaggle competitions download -c titanic
-```
-
-Next, we'll use the Kaggle python client to pull down an existing kernel that has been used to analyze the Titanic data set in the competition. Just like the GitHub model, you can fork an existing kernel and iterate on it by pushing your changes back to your account. Kaggle will track the kernel versions for you.
-
-```
-cd ~/work
-kaggle kernels pull arthurtok/introduction-to-ensembling-stacking-in-python
-```
-
-### Run it
-
-Finally we are ready to run our Titanic notebook. I'll assume at this point that the reader knows their way around a Jupyter notebook.
-
-![Run Notebook](../nb-run.svg)
-
-I chose this [particular public notebook](https://www.kaggle.com/arthurtok/introduction-to-ensembling-stacking-in-python) based on the high number of votes it has as a kernel for the Titanic competition, the richness of some of the visualizations, and also because it uses XGBoost, a library that Kubeflow does not currently include in its supported TensorFlow notebooks.
-
-![Titanic Barplot](../titanic-barplot.svg)
-
-
-I hope this blog post gives readers enough information to get started on their own data science journey. If you have questions or want to contribute to Kubeflow join us on [Slack](https://join.slack.com/t/kubeflow/shared_invite/enQtMjgyMzMxNDgyMTQ5LWUwMTIxNmZlZTk2NGU0MmFiNDE4YWJiMzFiOGNkZGZjZmRlNTExNmUwMmQ2NzMwYzk5YzQxOWQyODBlZGY2OTg), follow us on [Twitter](http://twitter.com/kubeflow), or reach out to us at [our community maillist](https://groups.google.com/forum/#!forum/kubeflow-discuss).
-
-
-Enjoy, and happy Kubeflowing! (and Kaggling!)
-
-*Pete MacKinnon*
diff --git a/content/blog/kubeflow_in_infra_premise.png b/content/blog/kubeflow_in_infra_premise.png
deleted file mode 100644
index e39ca6b677..0000000000
Binary files a/content/blog/kubeflow_in_infra_premise.png and /dev/null differ
diff --git a/content/blog/nb-run.svg b/content/blog/nb-run.svg
deleted file mode 100644
index b6db2c52e6..0000000000
--- a/content/blog/nb-run.svg
+++ /dev/null
@@ -1,2569 +0,0 @@
-
-
-
-
diff --git a/content/blog/nvidia_tensorrt.md b/content/blog/nvidia_tensorrt.md
deleted file mode 100644
index a04421cb3d..0000000000
--- a/content/blog/nvidia_tensorrt.md
+++ /dev/null
@@ -1,70 +0,0 @@
-+++
-title = "GPU-Accelerated Inference for Kubernetes with the NVIDIA TensorRT Inference Server and Kubeflow"
-description = "Scaling inference with GPUs"
-weight = 20
-publishDate = 2018-09-14T09:00:19-07:00
-draft = false
-+++
-
-The need to deploy and serve AI models in production-scale environments has increased in step with the rapid growth of machine learning (ML) and deep learning (DL) development. However, creating an inference solution to deploy these models is a difficult task.
-
-Performance is critical since these AI-backed services most often power end-user applications. Support for multiple AI frameworks is also key because AI use cases — spanning recommender systems, convolutional networks, natural language processing, and more — often employ different ones.
-
-The last mile when deploying in production environments is transitioning from a development setup to a production deployment cluster, since a large number of interconnected components must be integrated to enable portability and scalability.
-
-To solve these challenges, NVIDIA has worked closely with the Kubeflow community to bring support for its new [NVIDIA TensorRT inference server](https://developer.nvidia.com/tensorrt) to Kubeflow.
-
-## About NVIDIA TensorRT Inference Server
-
-The NVIDIA TensorRT inference server is a containerized, production-ready AI inference server for data center deployments. It maximizes utilization of GPU servers, supports all the top AI frameworks, and provides metrics for dynamic deployments.
-
-Capable of running multiple models (including versioned models or models from different frameworks) concurrently on the same GPU, it solves scaling problems with support for clusters that have multiple homogeneous or heterogeneous GPUs.
-
-Figure 1 shows the internal architecture of the NVIDIA TensorRT inference server including how requests are scheduled to be sent to the model necessary to fulfill the client request. Client requests come in via HTTP or gRPC, depending on the developer’s choice. The requests are handled and passed on to the per-model scheduling queues, managed by the internal scheduler. Each request is passed through the appropriate model, whether it is for image classification, recommendation, or speech-to-text and so forth. The models are loaded onto GPU memory from the Model Repository and the Model Management component migrates models across and within GPUs based on model usage and resource availability. The result is sent back for response handling. Using HTTP endpoints, reporting metrics can be used to autoscale in your Kubernetes cluster. Figure 2 lists the metrics the NVIDIA TensorRT inference server provides.
-
-
-
- Figure 2. The NVIDIA TensorRT inference server provides the above metrics for users to autoscale and monitor usage.
-
-
-The NVIDIA TensorRT inference server is one major component of a larger inference ecosystem. In today’s Kubeflow and TensorRT inference server integration, you can use the TensorRT inference server with a model store either on a local disk or in Google Cloud Storage. In the future, we plan to add integration of the Prometheus metrics service and autoscaling load balancers with Kubeflow. Figure 3 shows this future version of the ecosystem, including the NVIDIA TensorRT inference server microservice in collaboration with Kubeflow. Users can utilize their own components outside of the NVIDIA TensorRT inference server or use CNCF recommended components.
-
-
-
-## NVIDIA TensorRT Inference Server and Kubeflow
-Kubernetes has become the platform of choice for managing containerized workloads. Kubeflow extends the platform to make machine learning composable, portable, and scalable.
-
-Using the NVIDIA TensorRT inference server on a Kubernetes cluster facilitated by Kubleflow’s components enables a powerful ML/DL workflow and allows Kubeflow users to get maximum utilization of their NVIDIA GPUs when deploying models at scale. NVIDIA TensorRT inference server uses NVIDIA® CUDA® streams to exploit the GPU’s hardware scheduling capabilities to simultaneously execute multiple models.
-
-## Getting Started Using the NVIDIA TensorRT Inference Server and Kubeflow
-Getting started requires some initial setup. At a high level, start with setting up a Google Kubernetes Engine (GKE) cluster suitable for running the NVIDIA TensorRT inference server and install the NVIDIA CUDA® driver on the GPU nodes.
-
-Once that’s complete, pull the NVIDIA TensorRT inference server image from the [NVIDIA GPU Cloud](https://www.nvidia.com/en-us/gpu-cloud/) (NGC) container registry using a Kubernetes secret. Next, configure and place your model repository into a Google Cloud Storage bucket.
-
-Then use the io.ksonnet.pkg.nvidia-inference-server prototype to generate Kubernetes YAML and deploy to that cluster.
-
-For a more detailed explanation and step-by-step guidance for this process, refer to this [GitHub repo](https://github.com/kubeflow/kubeflow/tree/master/kubeflow/nvidia-inference-server).
-
-
-## Learn More About Kubeflow and NVIDIA TensorRT Inference Server
-Using Kubeflow with the NVIDIA TensorRT inference server makes it simple to deploy GPU-accelerated inference services into data center production environments.
-
-To get involved in the Kubeflow project, learn how to contribute [here](https://www.kubeflow.org/docs/about/contributing/) and try [Getting Started with Kubeflow](https://www.kubeflow.org/docs/started/getting-started/).
-
-For more information on the NVIDIA TensorRT inference server, please refer to the following resources:
-
- - [User Guide](https://docs.nvidia.com/deeplearning/sdk/inference-user-guide/index.html)
- - [Client SDK](https://github.com/NVIDIA/dl-inference-server)
- - [Release Notes](https://docs.nvidia.com/deeplearning/sdk/inference-release-notes/index.html)
- - [DevTalk Forum](https://devtalk.nvidia.com/default/board/262/container-inference-server/)
-
-*Tripti Singhal (Product Manager – Deep Learning Software, NVIDIA)
-David Goodwin (Principal Software Engineer – Machine Learning, NVIDIA)*
diff --git a/content/blog/spawner-ui-kaggle-nb.svg b/content/blog/spawner-ui-kaggle-nb.svg
deleted file mode 100644
index 48c5d452b8..0000000000
--- a/content/blog/spawner-ui-kaggle-nb.svg
+++ /dev/null
@@ -1,1445 +0,0 @@
-
-
-
-
diff --git a/content/blog/tensorrt_architecture.svg b/content/blog/tensorrt_architecture.svg
deleted file mode 100644
index 1bd8e3a850..0000000000
--- a/content/blog/tensorrt_architecture.svg
+++ /dev/null
@@ -1,874 +0,0 @@
-
-
-
diff --git a/content/blog/tensorrt_inference_server.svg b/content/blog/tensorrt_inference_server.svg
deleted file mode 100644
index fdf19f040d..0000000000
--- a/content/blog/tensorrt_inference_server.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/content/blog/tensorrt_metrics.svg b/content/blog/tensorrt_metrics.svg
deleted file mode 100644
index a33c4241f7..0000000000
--- a/content/blog/tensorrt_metrics.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/content/blog/terminal-menu.svg b/content/blog/terminal-menu.svg
deleted file mode 100644
index 5b903760fe..0000000000
--- a/content/blog/terminal-menu.svg
+++ /dev/null
@@ -1,318 +0,0 @@
-
-
-
-
diff --git a/content/blog/titanic-barplot.svg b/content/blog/titanic-barplot.svg
deleted file mode 100644
index ae05d8cb2f..0000000000
--- a/content/blog/titanic-barplot.svg
+++ /dev/null
@@ -1,1477 +0,0 @@
-
-
-
-
diff --git a/content/blog/why_kubeflow.md b/content/blog/why_kubeflow.md
deleted file mode 100644
index 1af277f7c0..0000000000
--- a/content/blog/why_kubeflow.md
+++ /dev/null
@@ -1,68 +0,0 @@
-+++
-title = "Why Kubeflow in your Infrastructure?"
-description = "Answering the 'why' about Kubeflow in an organization's Infrastructure."
-weight = 20
-publishDate = 2018-11-09T02:00:00+01:00
-draft = false
-+++
-
-![Figure 1: Premise of Kubeflow is that ML products are complex distributed systems involving multiple components working together.](../kubeflow_in_infra_premise.png)
-
-*Figure 1: Premise of Kubeflow is that ML products are complex distributed systems involving multiple components working together.*
-
-CEOs and CTOs are being challenged by customers, analysts and investors to define how Artificial Intelligence and Machine Learning will impact their revenues and costs. The leading research and development organizations are quickly migrating to open source machine learning frameworks, especially those that take advantage of the operational and infrastructure efficiencies provided by containers, microservices and [Kubernetes](https://kubernetes.io/). This trend is demonstrated in a recent [451 Research survey](https://www.zdnet.com/article/kubernetes-leads-container-orchestration/) which found that over 70% of enterprise organizations surveyed are using Kubernetes. GitHub has over [95M projects](https://octoverse.github.com/projects), and Kubernetes and Tensorflow are frequently in the top 10 projects, in terms of contributors, discussions, forks, and reviews. With an ever increasing availability of data and compute power, machine learning is turning out to be a powerful tool to solve various problems and helping achieve state of the art results. In such interesting times, [Kubeflow](https://www.kubeflow.org/) has grown very quickly to be one of the most promising ML toolkits in the cloud native open source world.
-
-We at [Cliqz](http://cliqz.com/en/) (a privacy focussed web browser with built-in web search operational in ~7 countries) are also solving some of the most complex problems around user privacy and web search using self managed Kubernetes ([kops](https://github.com/kubernetes/kops)) on AWS. Since January 2017, we started our cloud native journey and have been building Web Search solutions using Kubernetes. Since December 2017, the Search-Recency system has been in production, helping us towards near-real time index updates leading to most recent and up-to-date search results. To solve this problem at that scale, we heavily use Machine Learning, Natural Language Processing, Deep Learning and core Information Retrieval techniques which led us to explore Kubeflow. We are currently evaluating Kubeflow as a general alternative to our custom ML workflow. We would like to present some initial assessments and how Kubeflow might work well for one’s k8s infrastructure, as follows:
-
-### Know Thy Users
-
-It’s important that the target audience which would be interested in Kubeflow should be looked up closely. Most organizations which have an established infrastructure might be reluctant to even move to kubernetes. For example, it took a good amount of time for most teams to migrate to Terraform based deployments and because of this investment in time, switching to kubernetes is sometimes not appreciated. For a cloud native strategy where Kubernetes is preferred, Kubeflow becomes a good candidate for deploying and working with ML components. This brings to light, the following types of teams who can potentially be interested:
-
-* A team (within an organization) starting out their cloud native journey with K8s, who might want to leverage the consistency offered by Kubeflow for ML workloads for new projects.
-* A very early stage startup which has started out with K8s as base.
-* Teams interested in ML at Scale and want to ease deployment of existing multiple services and reduce management of resources by switching to kubeflow and k8s.
-* Research Teams / Institutes who want to minimize the complexity of managing an infrastructure for a data scientist or a researcher and instead provide a clean and consistent interface which eases setting things up using a few clicks.
-* Teams interested in on-premise / multi-cloud deployments where there is no service offered which can provide a consistent experience.
-
-### Consistency in Infrastructure
-
-One of the greatest advantage using a k8s based deployment is the consistency and features offered out of the box. Often times each new service tries to implement the same fundamental requisites: monitoring, health checks, replication etc. Kubeflow provides a native way to extend the same features to an organization’s ML needs. This is particularly useful to augment existing services without rewriting deployments from scratch. Having Kubeflow in the organization means one needs to worry more on the problem at hand and less worry about how to set things up and manage it over time.
-
-### Multiple Use Cases
-
-* Team is researching a problem which can be solved with an ML technique. They just can focus on the problem and not on the infrastructure. A Jupyter Notebook pinned to a GPU instance or a cluster abstracts this out cleanly. Several Researchers can work on shared notebooks and also use the same data backends instead of copying the data over to individual instances.
-* Road to production for ML projects is simplified. The end to end solution offered in Kubeflow helps to productionize an ML model in the fastest way. This allows a team of researchers to finish testing a model for accuracy on a Jupyter Notebook, Build a continuous data pipeline to keep this model updated via argo and then test production workloads using Serving / Seldon.
-* [Katib](https://github.com/kubeflow/katib) can be a central solution for hyper parameter tuning across several applications. Hyperparameter optimization is one of the most underappreciated yet most important aspects of machine learning. Katib provides the ground framework to extend this to multiple applications and have a shared view of this tuning with historical data. For example, [Hyperopt](https://github.com/hyperopt/hyperopt) is a python library for such optimizations, but it largely is limited to only the scope of the project. For an organization where multiple teams and services are backed by ML they can leverage the common interface which Katib provides to learn more complex but powerful optimizations which can significantly impact the product at large. Also having an infrastructure leads to more teams trying out implementing some solution which can leverage the benefits offered via such optimization.
-* With multiple frameworks being supported ([Tensorflow](https://www.tensorflow.org/), [PyTorch](https://pytorch.org/) and [Mxnet](https://mxnet.apache.org/)), writing a distributed training or serving application ([TFServing](https://www.tensorflow.org/serving/) or [Seldon](https://www.seldon.io/)) becomes a lot more easier.
-
-### Onboarding ease
-
-It becomes easier to onboard a new developer and a researcher to introduce him to a single cloud independent platform. One can provide templates for deployment based on tasks, which can be easily scheduled on low cost infrastructure as compared to starting instances for test applications. Even for ML workloads, the researcher or a research engineer can abstract the use-case effectively without worrying about underlying cloud deployment.
-Secure and Better control over Infrastructure
-In an organization, moving towards K8s, helps to standardize some processes. Not only one can make the infrastructure more secure, but can also achieve better control over the same.
-
-
-**We would also like to highlight some requested features (currently missing) for an enterprise rollout.**
-
-### Billing of cloud resources per pod / service
-
-Currently, when using a cloud provider one is billed per instance or resource used. If the resources are properly tagged the billing works perfectly. Most teams and organizations use this information for cost assessments per project or per team and also view this as an opportunity to minimize costs wherever possible. In a Kubernetes based world, this slightly changes. Its highly likely that on the same base instance a number of other pods are scheduled and this may mean that the resources are shared by teams or projects. Now this helps with resource utilization but it also means we do not have a view of the resource usage per project. In ideal world, teams can be charged on average, but this may not work in practice as its highly likely the resource utilization varies.
-
-### Conformance with other package managers (Ex. Helm)
-
-We use Helm for almost all our package management needs. With features like templating, release management, upgrades and rollback. It forms the backbone of how we deploy our services and even core addons on our k8s cluster. We operate multiple clusters, spread across various regions / availability zones, housing production, staging and dev workloads. Helm allows us to schedule workloads on these clusters seamlessly by utilizing its decent templating support. When working with Kubeflow, Helm is not supported by default. Although, [ksonnet](https://ksonnet.io/) is feature rich, using it means that we break our tried and tested helm workflow. The rationale of choosing helm was its popularity (CNCF Project, 7800+ Stars, 382 Contributors), incredible community support and public chart store which provides a good starting point to install packages into K8s cluster with ease. This speeds up initial development, as one can easily modify charts / inject values and get an enterprise grade deployment ready in limited time, geared towards ones organisation practices. We believe that a lot of teams using k8s might have the same mindset and a proper helm support for Kubeflow might be of interest to many.
-
-### Resource utilization by the Training / Serving modules
-
-There is a need to understand the amount of compute resources being used by a said workload inside a k8s cluster. Can a deep learning training task using some GPU / Memory / CPU, can allow another task (e.g. Serving) to be allocated on the same GPU / node pools. Shared allocation requires continuous monitoring/probing of resources that should result in useful metrics, which can be used to gauge infrastructure scaling events and cost estimations.
-
-### Configurable tear down of Infrastructure after use
-
-An interesting theme, common to all teams as described before is cost control. Large or small organizations alike would like to only pay for infrastructure, till its useful. Which means if cloud instances / resources are not used anymore then its best to shut them down. Since cloud infrastructure is not directly tied to the lifecycle of the service, even after a training job (TFJob) finishes, the instances are left idle. This might incur unnecessary cost to an organization. Also native solution around scheduled downscaling of Serving Infrastructure during low RPS or using spot instances (targeted instance choices) for marginal redundancy can help significantly in cost reduction. These use-cases are common to a K8s app and we can write custom auto-scalers and/or bring about improvements to upstream auto-scalers to ease Kubeflow adoption significantly.
-
-We truly believe that Kubernetes is the tool to truly democratize big data and AI. Toolkits like Kubeflow really reinforces the dream where running AI tasks and serving them is not just limited to a handful of organizations but it is easily accessible to everyone. We would like to continue our efforts towards exploring Kubeflow, as we plan to ship it in our production cluster soon. Feel free to reach out to us with your questions or comments here:
-
-*Ankit Bahuguna (ankit@cliqz.com; [Linkedin](https://www.linkedin.com/in/ankitbahuguna/))*,
-*Faheem Nadeem (faheem@cliqz.com; [Linkedin](https://www.linkedin.com/in/faheemnadeem/))*
-[Software Engineer, Cliqz GmbH]
-