{"id":32091,"date":"2018-04-06T18:26:45","date_gmt":"2018-04-06T15:26:45","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=32091"},"modified":"2018-06-04T14:32:36","modified_gmt":"2018-06-04T11:32:36","slug":"kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/","title":{"rendered":"Kubeflow: Automating Deployment of TensorFlow Models on Kubernetes"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/#DevOps_behind_machine_learning\" >DevOps behind machine learning<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/#How_it_works\" >How it works<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/#What_it_means_for_a_data_scientist\" >What it means for a data scientist?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/#Want_details_Watch_the_video\" >Want details? Watch the video!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/#Related_slides\" >Related slides<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/#Further_reading\" >Further reading<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/#About_the_expert\" >About the expert<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"DevOps_behind_machine_learning\"><\/span>DevOps behind machine learning<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Machine learning needs an infrastructure to handle all the operations underlying building a model and pushing it into production. For instance, such operations include infrastructure serving, machine resource management, configuration, monitoring, etc. To ensure composability, portability, and scalability of a machine learning model, a data scientist has to go through extra pain of tweaking this and that. <a href=\"https:\/\/www.altoros.com\/blog\/building-a-keras-based-image-classifier-using-tensorflow-for-a-back-end\/\">Containerization<\/a> is the way out when you need to automate all the DevOps things and lay your hands on pure machine learning. So, what are the tools to employ?<\/p>\n<div id=\"attachment_32132\" style=\"width: 160px\" class=\"wp-caption alignright\"><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/barbara-fusinska-tensorflow-meetup.jpg\"><img decoding=\"async\" aria-describedby=\"caption-attachment-32132\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/barbara-fusinska-tensorflow-meetup.jpg\" alt=\"\" width=\"150\" class=\"size-full wp-image-32132\" \/><\/a><p id=\"caption-attachment-32132\" class=\"wp-caption-text\"><small>Barbara Fusinska<\/small><\/p><\/div>\n<p>In the domain of machine learning, TensorFlow has gained a reputation of a state-of-the-art framework to experiment with models on anything from desktops to clusters of servers to mobile and edge devices. Meanwhile, Kubernetes is a popular choice of those who seek a usable way to automate deployment, scaling, and management of a containerized application.<\/p>\n<p>Why not using the solutions together? This comes as a reasonable answer to those who are proficient in both machine learning and container orchestration. However, there are data scientists who just want to do their job without a need to think about the infrastructure.<\/p>\n<p>At the recent <a href=\"https:\/\/www.meetup.com\/ru-RU\/TensorFlow-London\/events\/248433535\/\" rel=\"noopener\" target=\"_blank\">TensorFlow meetup<\/a> in London, <a href=\"https:\/\/www.linkedin.com\/in\/barbarafusinska\/\" rel=\"noopener\" target=\"_blank\">Barbara Fusinska<\/a> from Google demoed the Kubeflow project\u2014designed to automate the deployment of TensorFlow-based models on Kubernetes.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How_it_works\"><\/span>How it works<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/kubernetes.io\/blog\/2017\/12\/introducing-kubeflow-composable\/\" rel=\"noopener\" target=\"_blank\">Open-sourced<\/a> on December 21, 2017, <a href=\"https:\/\/github.com\/kubeflow\/kubeflow\" rel=\"noopener\" target=\"_blank\">Kubeflow<\/a> aims at relieving constraints of infusing machine learning into production-grade solutions with multiple modules and components. These components may be both vendor and hand-rolled, and Kubeflow is to ensure they faultlessly interact. To enable sufficient connectivity and convenient management across a fleet of components is not a trivial task even across moderate setups. As Barbara noted, being a data scientist, she would rather not wasting time on tweaking infrastructure when it could be automated.<\/p>\n<blockquote><p><em>&#8220;All the components that data scientists have to think about and hate to think about. We would love to have a tool to say I want to play with this model, I want to create this model, I want to publish it, and I want something to pipe it.&#8221; \u2014Barbara Fusinska, Google<\/em><\/p><\/blockquote>\n<p>Kubeflow is designed to address the challenges of deploying TensorFlow on Kubernetes. At the moment, the tool allows for:<\/p>\n<ul>\n<li style=\"padding-bottom: 6px;\">Using <a href=\"https:\/\/jupyterhub.readthedocs.io\/en\/latest\/\" rel=\"noopener\" target=\"_blank\">JupyterHub<\/a> to build and manage interactive Jupyter notebooks<\/li>\n<li style=\"padding-bottom: 6px;\">Enabling <a href=\"https:\/\/github.com\/kubeflow\/training-operator\" rel=\"noopener\" target=\"_blank\">TensorFlow Training Controller<\/a> that can be configured to use either CPUs or GPUs, as well as can be dynamically customized to the size of a cluster with a single setting<\/li>\n<li>Using the <a href=\"https:\/\/www.tensorflow.org\/serving\/\" rel=\"noopener\" target=\"_blank\">TensorFlow Serving<\/a> container to export trained TensorFlow models to Kubernetes<\/li>\n<\/ul>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/katacoda-deploying-kubeflow-to-a-kubernetes-cluster-tutorial-v12.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/katacoda-deploying-kubeflow-to-a-kubernetes-cluster-tutorial-v12-1024x587.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-32167\" \/><\/a><small>Deploying Kubeflow to a Kubernetes cluster in Katacoda&#8217;s interactive environment (<a href=\"https:\/\/www.katacoda.com\/kubeflow\" rel=\"noopener\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<p>Kubeflow uses <a href=\"https:\/\/ksonnet.io\/\" rel=\"noopener\" target=\"_blank\">ksonnet<\/a>\u2014a command line tool that eases management of complex deployments consisting of multiple components. With ksonnet, it is possible to generate Kubernetes manifests from parameterized templates. This way, Kubernetes manifests can be customized up to your needs. For instance, one may generate manifests for TensorFlow Serving with a user supplied URI for the model.<\/p>\n<p>Kubeflow also employs <a href=\"https:\/\/argoproj.io\/\" rel=\"noopener\" target=\"_blank\">Argo<\/a>\u2014an open-source container-native workflow engine for Kubernetes. Argo allows for checking out workflow information about Kubeflow&#8217;s end-to-end examples.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/kubeflow-argo-workflow-details-v2.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/kubeflow-argo-workflow-details-v2-1024x518.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-32160\" \/><\/a><small>Details of Kubeflow&#8217;s end-to-end examples workflows using Argo (<a href=\"http:\/\/testing-argo.kubeflow.org\/workflows\" rel=\"noopener\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<p>With Kubeflow, you are able to train and serve TensorFlow models in the environment of choice, be it a local, on-premises, or a cloud one. There is also a possibility to combine TensorFlow with other processes. For instance, using TensorFlow agents that will run simulations to generate data for training <a href=\"https:\/\/www.altoros.com\/blog\/deep-q-networks-and-practical-reinforcement-learning-with-tensorflow\/\">reinforcement learning models<\/a>.<\/p>\n<p>Currently, Kubeflow makes use of <a href=\"https:\/\/github.com\/kubeflow\/training-operator\" rel=\"noopener\" target=\"_blank\">tf-operator<\/a> (<code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">v1alpha1<\/code>) for running TensorFlow jobs on Kubernetes. After the community <a href=\"https:\/\/github.com\/kubeflow\/training-operator\/issues?q=is%3Aissue+is%3Aopen+label%3Akind%2Fapi-change\" rel=\"noopener\" target=\"_blank\">suggested<\/a> a number of improvements to this API, it was decided to upgrade to the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">v1alpha2<\/code> version, and the work is in progress now.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"What_it_means_for_a_data_scientist\"><\/span>What it means for a data scientist?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Barbara shared an example of a machine learning workflow from a data scientist perspective. Her very example can be broadly divided into three stages. Within the first stage, you choose an algorithm, tune hyperparameters, and adjust the architecture. At the second stage, you build a model, run production code, and exploit hardware. The third stage comes with model serving and consumption.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/machine-learning-workflow-tensorflow-from-a-data-scientist-perspective-v1.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/machine-learning-workflow-tensorflow-from-a-data-scientist-perspective-v1-1024x590.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-32123\" \/><\/a><small>An example of a machine learning workflow from a data scientist perspective (<a href=\"https:\/\/www.slideshare.net\/seldon_io\/tensorflow-london-13-barbara-fusinska-hassle-free-scalable-machine-learning-with-kubeflow\" rel=\"noopener\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<p>Kubeflow can be used at all the three stages, automating operations a data scientist would rather not deal with.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/kubeflow-to-automate-machine-learning-workflow-v1.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/kubeflow-to-automate-machine-learning-workflow-v1-1024x595.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-32125\" \/><\/a><small>A machine learning workflow with Kubeflow (<a href=\"https:\/\/www.slideshare.net\/seldon_io\/tensorflow-london-13-barbara-fusinska-hassle-free-scalable-machine-learning-with-kubeflow\" rel=\"noopener\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<p>With Kubeflow, one uses Jupyter notebooks and TensorFlow jobs for experimentation at the first stage and further on for building models, while using TensorFlow Serving for model serving. To show how it works in real life, Barbara provided a demo of Kubeflow in action.<\/p>\n<p>If you want to try out Kubeflow, use <a href=\"https:\/\/www.katacoda.com\/kubeflow\" rel=\"noopener\" target=\"_blank\">this interactive environment<\/a>, which simulates a two-node Kubernetes cluster. In addition, you may examine <a href=\"https:\/\/github.com\/kubeflow\/examples\/tree\/master\/github_issue_summarization\" rel=\"noopener\" target=\"_blank\">this tutorial<\/a> that provides an end-to-end Kubeflow example using a sequence-to-sequence model. You may also check out <a href=\"https:\/\/github.com\/kubeflow\/kubeflow\" rel=\"noopener\" target=\"_blank\">Kubeflow&#8217;s GitHub repo<\/a> and the <a href=\"https:\/\/github.com\/kubeflow\/kubeflow\/blob\/master\/user_guide.md\" rel=\"noopener\" target=\"_blank\">tool&#8217;s user guide<\/a>.<\/p>\n<p>The Kubeflow&#8217;s team will deliver a <a href=\"https:\/\/kccnceu18.sched.com\/event\/Dquu\/write-once-train-predict-everywhere-portable-ml-stacks-with-kubeflow-jeremy-lewi-google-stephan-fabel-canonical-intermediate-skill-level\" rel=\"noopener\" target=\"_blank\">talk<\/a> on the project&#8217;s evolution at the upcoming KubeCon + CloudNativeCon Europe 2018.<\/p>\n<p>Anyone interested in Kubeflow is encouraged to subscribe to the <a href=\"https:\/\/groups.google.com\/forum\/#!forum\/kubeflow-discuss\" rel=\"noopener\" target=\"_blank\">project&#8217;s mailing list<\/a> or join <a href=\"https:\/\/kubeflow.slack.com\/\" rel=\"noopener\" target=\"_blank\">Kubeflow&#8217;s Slack channel<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Want_details_Watch_the_video\"><\/span>Want details? Watch the video!<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/Cvake6tZtwo\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen><\/iframe><\/center><\/p>\n<p><small>In this video, <a href=\"https:\/\/www.linkedin.com\/in\/benhall0\/\" rel=\"noopener\" target=\"_blank\">Ben Hall<\/a> of Katacoda demonstrates how to deploy the GitHub issue summarization with Kubeflow.<\/small><\/p>\n<p><center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/yIOSTHVhero\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen><\/iframe><\/center> <\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Related_slides\"><\/span>Related slides<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><center><iframe loading=\"lazy\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/key\/FrjcMZlScpJitz\" width=\"595\" height=\"485\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" style=\"border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;\" allowfullscreen><\/iframe><\/center><\/p>\n<p><small>These slides by <a href=\"https:\/\/www.linkedin.com\/in\/benhall0\/\" rel=\"noopener\" target=\"_blank\">Ben Hall<\/a> highlight the approach to deploying the GitHub issue summarization with Kubeflow.<\/small><\/p>\n<p><center><iframe loading=\"lazy\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/key\/bAlwYpbWDpmNKM\" width=\"595\" height=\"485\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" style=\"border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;\" allowfullscreen> <\/iframe><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/ins-and-outs-of-integrating-tensorflow-with-existing-infrastructure\/\">Ins and Outs of Integrating TensorFlow with Existing Infrastructure<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/tensorflow-in-the-cloud-accelerating-resources-with-elastic-gpus\/\">TensorFlow in the Cloud: Accelerating Resources with Elastic GPUs<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/visuals\/tensorflow-cheat-sheet\/\" rel=\"noopener\" target=\"_blank\">TensorFlow Cheat Sheet<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_expert\"><\/span>About the expert<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/barbara-fusinska-tensorflow-meetup.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/barbara-fusinska-tensorflow-meetup.jpg\" alt=\"\" width=\"150\" class=\"alignright size-full wp-image-32132\" \/><\/a><\/p>\n<p><small><a href=\"https:\/\/www.linkedin.com\/in\/barbarafusinska\/\" rel=\"noopener\" target=\"_blank\">Barbara Fusinska<\/a> is a Machine Learning Strategic Cloud Engineer at Google with strong software development background. While working with a variety of different companies, she gained experience in building diverse software systems. This experience brought Barbara&#8217;s focus to the field of data science and big data. She believes in the importance of data and metrics when growing a successful business. Alongside collaborating around data architectures, Barbara still enjoys programming activities. She is also a frequent speaker at conferences of different scale.<\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>DevOps behind machine learning<\/p>\n<p>Machine learning needs an infrastructure to handle all the operations underlying building a model and pushing it into production. For instance, such operations include infrastructure serving, machine resource management, configuration, monitoring, etc. To ensure composability, portability, and scalability of a machine learning model, a data scientist has [&#8230;]<\/p>\n","protected":false},"author":3,"featured_media":32163,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[873,912,748,749],"class_list":["post-32091","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-cloud-native","tag-kubernetes","tag-machine-learning","tag-tensorflow"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kubeflow: Automating Deployment of TensorFlow Models on Kubernetes | Altoros<\/title>\n<meta name=\"description\" content=\"Learn how the Kubeflow project facilitates deployment of TensorFlow-based models locally, on premises, or in the cloud.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubeflow: Automating Deployment of TensorFlow Models on Kubernetes | Altoros\" \/>\n<meta property=\"og:description\" content=\"DevOps behind machine learning Machine learning needs an infrastructure to handle all the operations underlying building a model and pushing it into production. For instance, such operations include infrastructure serving, machine resource management, configuration, monitoring, etc. To ensure composability, portability, and scalability of a machine learning model, a data scientist has [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2018-04-06T15:26:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-06-04T11:32:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/kubeflow-to-automate-deployment-of-tensorflow-models-on-kubernetes-v14.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"372\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Sophia Turol\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sophia Turol\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\\\/\"},\"author\":{\"name\":\"Sophia Turol\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/58194952af19fe7b2b830846e077a58e\"},\"headline\":\"Kubeflow: Automating Deployment of TensorFlow Models on Kubernetes\",\"datePublished\":\"2018-04-06T15:26:45+00:00\",\"dateModified\":\"2018-06-04T11:32:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\\\/\"},\"wordCount\":1025,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/kubeflow-to-automate-deployment-of-tensorflow-models-on-kubernetes-v14.gif\",\"keywords\":[\"Cloud-Native\",\"Kubernetes\",\"Machine Learning\",\"TensorFlow\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.altoros.com\\\/blog\\\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\\\/\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\\\/\",\"name\":\"Kubeflow: Automating Deployment of TensorFlow Models on Kubernetes | Altoros\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/kubeflow-to-automate-deployment-of-tensorflow-models-on-kubernetes-v14.gif\",\"datePublished\":\"2018-04-06T15:26:45+00:00\",\"dateModified\":\"2018-06-04T11:32:36+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/58194952af19fe7b2b830846e077a58e\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.altoros.com\\\/blog\\\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/kubeflow-to-automate-deployment-of-tensorflow-models-on-kubernetes-v14.gif\",\"contentUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/kubeflow-to-automate-deployment-of-tensorflow-models-on-kubernetes-v14.gif\",\"width\":640,\"height\":372},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubeflow: Automating Deployment of TensorFlow Models on Kubernetes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/58194952af19fe7b2b830846e077a58e\",\"name\":\"Sophia Turol\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/05\\\/trello_card-96x96.jpg\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/05\\\/trello_card-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/05\\\/trello_card-96x96.jpg\",\"caption\":\"Sophia Turol\"},\"description\":\"Sophia Turol is passionate about delivering well-structured articles that cater for picky technical audience. With 3+ years in technical writing and 5+ years in editorship, she enjoys collaboration with developers to create insightful, yet intelligible technical tutorials, overviews, and case studies. Sophie is enthusiastic about deep learning solutions\u2014TensorFlow in particular\u2014and PaaS systems, such as Cloud Foundry.\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/author\\\/sophie-turol\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kubeflow: Automating Deployment of TensorFlow Models on Kubernetes | Altoros","description":"Learn how the Kubeflow project facilitates deployment of TensorFlow-based models locally, on premises, or in the cloud.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/","og_locale":"en_US","og_type":"article","og_title":"Kubeflow: Automating Deployment of TensorFlow Models on Kubernetes | Altoros","og_description":"DevOps behind machine learning Machine learning needs an infrastructure to handle all the operations underlying building a model and pushing it into production. For instance, such operations include infrastructure serving, machine resource management, configuration, monitoring, etc. To ensure composability, portability, and scalability of a machine learning model, a data scientist has [...]","og_url":"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/","og_site_name":"Altoros","article_published_time":"2018-04-06T15:26:45+00:00","article_modified_time":"2018-06-04T11:32:36+00:00","og_image":[{"width":640,"height":372,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/kubeflow-to-automate-deployment-of-tensorflow-models-on-kubernetes-v14.gif","type":"image\/gif"}],"author":"Sophia Turol","twitter_misc":{"Written by":"Sophia Turol","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/#article","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/"},"author":{"name":"Sophia Turol","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e"},"headline":"Kubeflow: Automating Deployment of TensorFlow Models on Kubernetes","datePublished":"2018-04-06T15:26:45+00:00","dateModified":"2018-06-04T11:32:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/"},"wordCount":1025,"commentCount":0,"image":{"@id":"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/kubeflow-to-automate-deployment-of-tensorflow-models-on-kubernetes-v14.gif","keywords":["Cloud-Native","Kubernetes","Machine Learning","TensorFlow"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/","url":"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/","name":"Kubeflow: Automating Deployment of TensorFlow Models on Kubernetes | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/kubeflow-to-automate-deployment-of-tensorflow-models-on-kubernetes-v14.gif","datePublished":"2018-04-06T15:26:45+00:00","dateModified":"2018-06-04T11:32:36+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/kubeflow-to-automate-deployment-of-tensorflow-models-on-kubernetes-v14.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/04\/kubeflow-to-automate-deployment-of-tensorflow-models-on-kubernetes-v14.gif","width":640,"height":372},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/kubeflow-automating-deployment-of-tensorflow-models-on-kubernetes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kubeflow: Automating Deployment of TensorFlow Models on Kubernetes"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e","name":"Sophia Turol","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg","caption":"Sophia Turol"},"description":"Sophia Turol is passionate about delivering well-structured articles that cater for picky technical audience. With 3+ years in technical writing and 5+ years in editorship, she enjoys collaboration with developers to create insightful, yet intelligible technical tutorials, overviews, and case studies. Sophie is enthusiastic about deep learning solutions\u2014TensorFlow in particular\u2014and PaaS systems, such as Cloud Foundry.","url":"https:\/\/www.altoros.com\/blog\/author\/sophie-turol\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/32091","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=32091"}],"version-history":[{"count":60,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/32091\/revisions"}],"predecessor-version":[{"id":33668,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/32091\/revisions\/33668"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/32163"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=32091"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=32091"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=32091"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}