How to ensure your pipelines or steps run on GPU-backed hardware
ZenML allows for multiple ways to configure the hardware on which your steps run, from step operator stack components to custom per-step or per-pipeline requirements. For steps or pipelines that are required to run on GPUs, it is essential to ensure that the environment has the required CUDA tools installed. The following section describes what you need to do to ensure that you will actually get the performance boost that running your training on a GPU will give you.The steps that will run on GPU-backed hardware will all be running from a containerized environment, whether you’re using our local Docker orchestrator or on a cloud instance of Kubeflow. (Please see the section on configuration of the Docker environment for general context on this and what follows.) For this reason, you will need to make two amendments to your Docker settings for the relevant steps as follows:
Specify a CUDA-enabled parent image in your DockerSettings
For full details, see the whole section where we explain how to do this on the containerization page. As an example, if you wanted to use the latest CUDA-enabled official PyTorch image for your entire pipeline run, you could include the following code:
ZenML requires that ZenML itself be installed for the containers running our pipelines and steps, so you will also need to explicitly state that ZenML should be installed. There are lots of ways to specify this, but as one example, you could do the following (updating the code from above):
Adding these two extra settings options will be enough to ensure that CUDA is enabled for the specific steps that require GPU acceleration. Note that these configuration changes are required for the GPU hardware to be properly utilized. If you don’t update the settings, your steps might run but they will not see any boost in performance from the custom hardware.Note that you need to be quite careful with the image that you choose so that switching between local and remote environments doesn’t get muddled. For example, you might have one version of PyTorch installed locally with a particular CUDA version, but then when you switch to your remote stack or environment you might be forced to use a different CUDA version.The core cloud operators all offer prebuilt Docker images that fit with their hardware. You can find more information on them here:
Not all of these images are available on DockerHub, so your please ensure that the orchestrator environment your pipeline runs in has sufficient permission(s) to pull images from registries if you are using one of those.
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"ZenML","colors":{"primary":"#3E1F8D","light":"#7848F6","dark":"#7848F6"},"favicon":"/favicon.svg","logo":{"dark":"https://mintlify.s3-us-west-1.amazonaws.com/zenml/logo/dark.svg","light":"https://mintlify.s3-us-west-1.amazonaws.com/zenml/logo/light.svg"},"navbar":{"links":[{"label":"Home","href":"https://zenml.io/home"},{"label":"Blog","href":"https://blog.zenml.io"}],"primary":{"type":"button","label":"Get Started","href":"https://github.com/zenml-io/zenml/tree/main/examples/quickstart"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/zenml/","slack":"https://zenml.io/slack-invite","github":"https://github.com/zenml-io/zenml","twitter":"https://twitter.com/zenml_io","youtube":"https://www.youtube.com/@ZenML"}},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"zenml","hasAudioNarration":false,"actualSubdomain":"zenml","customDomains":[],"gitSource":{"type":"github","owner":"mintlify-onboarding","repo":"zenml","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6ae91426b34e8aacd7503b08:success","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Component Gallery","count":142},{"language":"default","tag":"Documentation","count":52},{"language":"default","tag":"Advanced Guide","count":20},{"language":"default","tag":"Orchestrators","count":11},{"language":"default","tag":"Starter Guide","count":11},{"language":"default","tag":"In-depth Configuration","count":9},{"language":"default","tag":"Getting Started","count":9},{"language":"default","tag":"Container Registries","count":8},{"language":"default","tag":"Secrets Managers","count":8},{"language":"default","tag":"Practical MLOps","count":7}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"advanced-guide/pipelines/gpu-hardware","slug":"/advanced-guide/pipelines/gpu-hardware","pageMetadata":{"title":"Enabling GPU-backed hardware","description":"How to ensure your pipelines or steps run on GPU-backed hardware","href":"/advanced-guide/pipelines/gpu-hardware"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"How to ensure your pipelines or steps run on GPU-backed hardware\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`ZenML allows for multiple ways to configure the hardware on which your steps run, from `,_jsx(_components.a,{href:`/component-gallery/step-operators`,children:`step operator stack components`}),` to `,_jsx(_components.a,{href:`/advanced-guide/pipelines/settings`,children:`custom per-step or per-pipeline requirements`}),`. For steps or pipelines that are required to run on GPUs, it is essential to ensure that the environment has the required CUDA tools installed. The following section describes what you need to do to ensure that you will actually get the performance boost that running your training on a GPU will give you.`]}),`\n`,_jsxs(_components.p,{children:[`The steps that will run on GPU-backed hardware will all be running from a containerized environment, whether you’re using our local Docker orchestrator or on a cloud instance of Kubeflow. (Please see `,_jsx(_components.a,{href:`/advanced-guide/pipelines/containerization`,children:`the section on configuration of the Docker environment`}),` for general context on this and what follows.) For this reason, you will need to make two amendments to your Docker settings for the relevant steps as follows:`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Specify a CUDA-enabled parent image in your `,_jsx(_components.code,{children:`DockerSettings`})]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`For full details, see the whole section where we explain how to do this `,_jsx(_components.a,{href:`/advanced-guide/pipelines/containerization`,children:`on the containerization page`}),`. As an example, if you wanted to use the latest CUDA-enabled official PyTorch image for your entire pipeline run, you could include the following code:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`5`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`docker_settings `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` DockerSettings(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`parent_image`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"pytorch/pytorch:1.12.1-cuda11.3-cudnn8-runtime\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`@pipeline`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`settings`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"docker\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: docker_settings})`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` my_pipeline`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(...):`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` ...`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`If you were using Tensorflow, perhaps you might use the `,_jsx(_components.code,{children:`tensorflow/tensorflow:latest-gpu`}),` image as detailed in `,_jsx(_components.a,{href:`https://www.tensorflow.org/install/docker#gpu%5Fsupport`,children:`the official TensorFlow documentation`}),` or in `,_jsx(_components.a,{href:`https://hub.docker.com/r/tensorflow/tensorflow`,children:`their DockerHub overview`}),`.`]}),`\n`,_jsxs(_components.ol,{start:`2`,children:[`\n`,_jsx(_components.li,{children:`Add ZenML as an explicit pip requirement`}),`\n`]}),`\n`,_jsx(_components.p,{children:`ZenML requires that ZenML itself be installed for the containers running our pipelines and steps, so you will also need to explicitly state that ZenML should be installed. There are lots of ways to specify this, but as one example, you could do the following (updating the code from above):`}),`\n`,_jsx(CodeBlock,{numberOfLines:`5`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`docker_settings `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` DockerSettings(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`parent_image`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"pytorch/pytorch:1.12.1-cuda11.3-cudnn8-runtime\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`requirements`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"zenml==0.20.5\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"torchvision\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`])`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`@pipeline`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`settings`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"docker\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: docker_settings})`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` my_pipeline`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(...):`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` ...`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Adding these two extra settings options will be enough to ensure that CUDA is enabled for the specific steps that require GPU acceleration. Note that these configuration changes are `,_jsx(_components.strong,{children:`required`}),` for the GPU hardware to be properly utilized. If you don’t update the settings, your steps might run but they will not see any boost in performance from the custom hardware.`]}),`\n`,_jsx(_components.p,{children:`Note that you need to be quite careful with the image that you choose so that switching between local and remote environments doesn’t get muddled. For example, you might have one version of PyTorch installed locally with a particular CUDA version, but then when you switch to your remote stack or environment you might be forced to use a different CUDA version.`}),`\n`,_jsx(_components.p,{children:`The core cloud operators all offer prebuilt Docker images that fit with their hardware. You can find more information on them here:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://github.com/aws/deep-learning-containers/blob/master/available%5Fimages.md`,children:`AWS`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://cloud.google.com/deep-learning-vm/docs/images`,children:`GCP`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://learn.microsoft.com/en-us/azure/machine-learning/concept-prebuilt-docker-images-inference`,children:`Azure`})}),`\n`]}),`\n`,_jsx(_components.p,{children:`Not all of these images are available on DockerHub, so your please ensure that the orchestrator environment your pipeline runs in has sufficient permission(s) to pull images from registries if you are using one of those.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Enabling GPU-backed hardware","description":"How to ensure your pipelines or steps run on GPU-backed hardware","href":"/advanced-guide/pipelines/gpu-hardware"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"subdomain":"zenml","siteName":"ZenML","title":"Enabling GPU-backed hardware - ZenML","navMaps":{"firstHrefInVersion":{"0.31.1":{"href":"/advanced-guide/pipelines/gpu-hardware","matchLevel":0}},"firstHrefInLanguage":{}},"originalFileLocation":"advanced-guide/pipelines/gpu-hardware.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"How to ensure your pipelines or steps run on GPU-backed hardware\">\u003cmeta data-mint-head name=\"application-name\" content=\"ZenML\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/zenml/_generated/favicon/apple-touch-icon.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/zenml/_generated/favicon/favicon-32x32.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/zenml/_generated/favicon/favicon-16x16.png?v=3\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/zenml/_generated/favicon/favicon.ico?v=3\">\u003cmeta data-mint-head property=\"og:title\" content=\"Enabling GPU-backed hardware - ZenML\">\u003cmeta data-mint-head property=\"og:description\" content=\"How to ensure your pipelines or steps run on GPU-backed hardware\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"ZenML\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://zenml.mintlify.app/advanced-guide/pipelines/gpu-hardware\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://zenml.mintlify.site/_mintlify/api/og/v2?division=In-depth+Configuration\u0026amp;title=Enabling+GPU-backed+hardware\u0026amp;description=How+to+ensure+your+pipelines+or+steps+run+on+GPU-backed+hardware\u0026amp;theme=d8a2be9d1cf4281f5cf2a416\u0026amp;signature=4d8ba3af74f4caddf3d85bb0f28ff023990452023673b7b3ef25b287f49019ea\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Enabling GPU-backed hardware - ZenML\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How to ensure your pipelines or steps run on GPU-backed hardware\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://zenml.mintlify.site/_mintlify/api/og/v2?division=In-depth+Configuration\u0026amp;title=Enabling+GPU-backed+hardware\u0026amp;description=How+to+ensure+your+pipelines+or+steps+run+on+GPU-backed+hardware\u0026amp;theme=d8a2be9d1cf4281f5cf2a416\u0026amp;signature=4d8ba3af74f4caddf3d85bb0f28ff023990452023673b7b3ef25b287f49019ea\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/zenml/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"ZenML\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3E1F8D\">\u003clink data-mint-head rel=\"canonical\" href=\"https://zenml.mintlify.app/advanced-guide/pipelines/gpu-hardware\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/advanced-guide/pipelines/gpu-hardware.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://zenml.mintlify.app/#organization\",\"name\":\"ZenML\",\"url\":\"https://zenml.mintlify.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintlify.s3-us-west-1.amazonaws.com/zenml/logo/light.svg\"}},{\"@type\":\"WebSite\",\"@id\":\"https://zenml.mintlify.app#website\",\"name\":\"ZenML\",\"url\":\"https://zenml.mintlify.app\",\"publisher\":{\"@id\":\"https://zenml.mintlify.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://zenml.mintlify.app/advanced-guide/pipelines/gpu-hardware#webpage\",\"url\":\"https://zenml.mintlify.app/advanced-guide/pipelines/gpu-hardware\",\"name\":\"Enabling GPU-backed hardware\",\"description\":\"How to ensure your pipelines or steps run on GPU-backed hardware\",\"isPartOf\":{\"@id\":\"https://zenml.mintlify.app#website\"},\"breadcrumb\":{\"@id\":\"https://zenml.mintlify.app/advanced-guide/pipelines/gpu-hardware#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://zenml.mintlify.app/advanced-guide/pipelines/gpu-hardware#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Advanced Guide\",\"item\":\"https://zenml.mintlify.app/advanced-guide/pipelines\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"In-depth Configuration\",\"item\":\"https://zenml.mintlify.app/advanced-guide/pipelines\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enabling GPU-backed hardware\",\"item\":\"https://zenml.mintlify.app/advanced-guide/pipelines/gpu-hardware\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://zenml.mintlify.app/advanced-guide/pipelines/gpu-hardware#article\",\"headline\":\"Enabling GPU-backed hardware\",\"name\":\"Enabling GPU-backed hardware\",\"description\":\"How to ensure your pipelines or steps run on GPU-backed hardware\",\"url\":\"https://zenml.mintlify.app/advanced-guide/pipelines/gpu-hardware\",\"mainEntityOfPage\":{\"@id\":\"https://zenml.mintlify.app/advanced-guide/pipelines/gpu-hardware#webpage\"},\"publisher\":{\"@id\":\"https://zenml.mintlify.app/#organization\"},\"isPartOf\":{\"@id\":\"https://zenml.mintlify.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"ZenML\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"ZenML","nav":{"global":null,"versions":[{"version":"0.31.1","anchors":[{"anchor":"Documentation","icon":"book-open","groups":[{"group":"Getting Started","pages":[{"title":"Introduction","href":"/getting-started/introduction"},{"title":"Core Concepts","href":"/getting-started/core-concepts"},{"title":"Installation","href":"/getting-started/installation"},{"group":"Deploying ZenML","pages":[{"title":"Deploying ZenML","href":"/getting-started/deploying-zenml"},{"title":"One Click Deployment using CLI","href":"/getting-started/deploying-zenml/cli"},{"title":"Deploying with Docker","href":"/getting-started/deploying-zenml/docker"},{"title":"Deploying with Helm","href":"/getting-started/deploying-zenml/helm"}]},{"title":"Architecture Diagrams","href":"/getting-started/architecture-diagrams"},{"title":"Examples","href":"/getting-started/examples"}]},{"group":"Starter Guide","pages":[{"group":"Pipelines","pages":[{"title":"Pipelines","href":"/starter-guide/pipelines"},{"title":"Dashboard Overview","href":"/starter-guide/pipelines/dashboard"},{"title":"Fetching Pipelines","href":"/starter-guide/pipelines/fetching-pipelines"},{"title":"Step Parameterization and Caching","href":"/starter-guide/pipelines/parameters-and-caching"}]},{"group":"Stacks","pages":[{"title":"Stacks","href":"/starter-guide/stacks"},{"title":"Registering Stacks","href":"/starter-guide/stacks/registering-stacks"},{"title":"Managing Stacks","href":"/starter-guide/stacks/managing-stacks"}]},{"group":"Collaboration","pages":[{"title":"Collaboration","href":"/starter-guide/collaborate"},{"title":"Connecting to a Deployed ZenML","href":"/starter-guide/collaborate/zenml-deployment"},{"title":"Inviting Users","href":"/starter-guide/collaborate/users"},{"title":"User Roles \u0026 Permissions","href":"/starter-guide/collaborate/roles-and-permissions"}]}]},{"group":"Advanced Guide","pages":[{"group":"In-depth Configuration","pages":[{"title":"In-depth Configuration","href":"/advanced-guide/pipelines"},{"title":"Runtime Settings","href":"/advanced-guide/pipelines/settings"},{"title":"Containerization (Docker)","href":"/advanced-guide/pipelines/containerization"},{"title":"Passing Custom Data Types through Steps (Materializers)","href":"/advanced-guide/pipelines/materializers"},{"title":"Specifying Step Resources","description":"How to specify per-step resources","href":"/advanced-guide/pipelines/step-resources"},{"title":"Enabling GPU-backed hardware","href":"/advanced-guide/pipelines/gpu-hardware"},{"title":"Scheduling Pipeline Runs","description":"Schedule runs to add automation to your pipelines","href":"/advanced-guide/pipelines/scheduling-runs"},{"title":"Accessing Metadata within Steps","href":"/advanced-guide/pipelines/step-metadata"},{"title":"Controlling the Step Execution Order","href":"/advanced-guide/pipelines/step-order"}]},{"group":"Extending Stacks","pages":[{"title":"Extending Stacks","href":"/advanced-guide/stacks"},{"title":"Writing Custom Flavors","href":"/advanced-guide/stacks/custom-flavors"},{"title":"Managing Stack Component States","href":"/advanced-guide/stacks/stack-state-management"},{"title":"Managing External Services","href":"/advanced-guide/stacks/manage-external-services"}]},{"group":"Practical MLOps","pages":[{"title":"Practical MLOps","href":"/advanced-guide/practical-mlops"},{"title":"Stack Recipes","href":"/advanced-guide/practical-mlops/stack-recipes"},{"title":"Switching Orchestration","href":"/advanced-guide/practical-mlops/switching-orchestration"},{"title":"Secrets Management","href":"/advanced-guide/practical-mlops/secrets-management"},{"title":"Tracking Experiments","href":"/advanced-guide/practical-mlops/tracking-experiments"},{"title":"Validating Data","href":"/advanced-guide/practical-mlops/validating-data"},{"title":"Deploying Models and Batch Inference","href":"/advanced-guide/practical-mlops/deploying-models"}]}]},{"group":"Guidelines","pages":[{"title":"Best Practices","href":"/guidelines/best-practices"},{"title":"Global Configuration","href":"/guidelines/global-config"},{"title":"System Environmental Variables","href":"/guidelines/system-environmental-variables"},{"title":"Migration Guide 0.20.0","href":"/guidelines/migration-zero-twenty"}]},{"group":"Misc","pages":[{"title":"Contribution Guide","href":"/misc/contributing"},{"title":"Debugging Guide","href":"/misc/debugging"},{"title":"External Integration Guide","href":"/misc/integrating"},{"title":"Usage Analytics","href":"/misc/usage-analytics"}]},{"group":"Reference","pages":[{"title":"Community \u0026 Content","href":"/reference/community-and-content"},{"title":"Glossary","href":"/reference/glossary"},{"title":"FAQ","href":"/reference/faq"},{"title":"CLI Cheat Sheet","href":"/reference/cheat-sheet"}]}]},{"anchor":"Component Gallery","icon":"grid-2","pages":[{"title":"Component Gallery","href":"/component-gallery/categories"}]},{"anchor":"CLI Reference","href":"https://apidocs.zenml.io/latest/cli/","icon":"rectangle-terminal"},{"anchor":"API Reference","href":"https://apidocs.zenml.io","icon":"code"},{"anchor":"Github","href":"https://github.com/zenml-io/zenml","icon":"github"}]}]},"basePath":"","title":"Enabling GPU-backed hardware - ZenML","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":[],"chunks":[]}