<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Patrick Titzler</title>
    <description>The latest articles on Forem by Patrick Titzler (@ptitzler).</description>
    <link>https://forem.com/ptitzler</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F480528%2F7756ee49-b079-4909-8e95-5e751a011db0.gif</url>
      <title>Forem: Patrick Titzler</title>
      <link>https://forem.com/ptitzler</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ptitzler"/>
    <language>en</language>
    <item>
      <title>Introducing Elyra pipelines with custom component support</title>
      <dc:creator>Patrick Titzler</dc:creator>
      <pubDate>Tue, 10 Aug 2021 13:59:36 +0000</pubDate>
      <link>https://forem.com/ibmdeveloper/introducing-elyra-pipelines-with-custom-component-support-42ah</link>
      <guid>https://forem.com/ibmdeveloper/introducing-elyra-pipelines-with-custom-component-support-42ah</guid>
      <description>&lt;p&gt;The &lt;a href="https://github.com/elyra-ai/elyra" rel="noopener noreferrer"&gt;Elyra open source project&lt;/a&gt; for &lt;a href="https://jupyter.org/" rel="noopener noreferrer"&gt;JupyterLab&lt;/a&gt; aims to simplify common data science tasks. Its most popular feature is the Visual Pipeline Editor, which is used to create pipelines without the need for coding. You can run these pipelines in JupyterLab or on &lt;a href="https://www.kubeflow.org/docs/components/pipelines/overview/pipelines-overview/" rel="noopener noreferrer"&gt;Kubeflow Pipelines&lt;/a&gt; or &lt;a href="https://airflow.apache.org/" rel="noopener noreferrer"&gt;Apache Airflow&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg3pkl1uensn84x3rzdur.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg3pkl1uensn84x3rzdur.png" alt="pipelines-and-runtimes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Elyra 3.0 extends the pipeline capabilities by adding &lt;em&gt;experimental&lt;/em&gt; support for custom components. Before I dive into specifics and outline why support is still experimental in the initial releases, let's recap a few concepts.&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://elyra.readthedocs.io/en/stable/user_guide/pipelines.html" rel="noopener noreferrer"&gt;&lt;em&gt;pipeline&lt;/em&gt;&lt;/a&gt; comprises &lt;em&gt;nodes&lt;/em&gt; that are connected with each other to form a graph. The graph defines &lt;em&gt;dependencies&lt;/em&gt; between the nodes, governing the order in which the nodes are executed. The example pipeline shown below executes a Python script and several Jupyter notebooks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphpahcsrcs3dcbscuoya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphpahcsrcs3dcbscuoya.png" alt="pipeline-nodes-dependencies"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Nodes are implemented using &lt;a href="https://elyra.readthedocs.io/en/stable/user_guide/pipeline-components.html" rel="noopener noreferrer"&gt;components&lt;/a&gt;. To create the pipeline shown above, you'll need components that can execute Python scripts and Jupyter notebooks. Most components are configurable to make them re-usable. For file-based components, such a configuration might include the file name and the container image where the file is executed in.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fawvvk2yh291v0v4t6poe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fawvvk2yh291v0v4t6poe.png" alt="nodes-components"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;In Elyra, the processing of Jupyter notebooks, Python scripts, and R scripts is implemented using a single component. This component is referred to as a &lt;em&gt;generic component&lt;/em&gt; because it is supported in all runtime environments.&lt;/p&gt;

&lt;p&gt;The pipeline editor then exposes this component under different names in the palette, which is located on the left-hand side. (You can add nodes to the pipeline by selecting a component from the palette and dropping it on the canvas.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ijl7j5qto0d0yybajcp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ijl7j5qto0d0yybajcp.png" alt="generic-component-pipeline"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pipelines that only include generic components are referred to as &lt;em&gt;generic pipelines&lt;/em&gt; because you can run them in any runtime environment Elyra supports. &lt;/p&gt;

&lt;p&gt;Take a look at the &lt;a href="https://elyra.readthedocs.io/en/stable/getting_started/tutorials.html#tutorials" rel="noopener noreferrer"&gt;tutorials&lt;/a&gt; if you are new to Elyra and would like to learn more about how to use the Visual Pipeline Editor to create a pipeline. If you've used Elyra before, we recommend reviewing the  recently published &lt;a href="https://elyra.readthedocs.io/en/stable/user_guide/best-practices-file-based-nodes.html" rel="noopener noreferrer"&gt;&lt;em&gt;Best practices&lt;/em&gt; topic in the &lt;em&gt;User Guide&lt;/em&gt;&lt;/a&gt;. We've only now gotten around to documenting some of the things that make your life easier!&lt;/p&gt;

&lt;h3&gt;
  
  
  Experimental support for custom components
&lt;/h3&gt;

&lt;p&gt;Custom components are similar to generic components in that they only implement a single task, such as load data, train a model, or send an email. However, these components are only supported for &lt;a href="https://www.kubeflow.org/docs/components/pipelines/sdk/component-development/" rel="noopener noreferrer"&gt;Kubeflow Pipelines&lt;br&gt;
&lt;/a&gt; and &lt;a href="https://airflow.apache.org/docs/apache-airflow/stable/howto/operator/index.html" rel="noopener noreferrer"&gt;Apache Airflow&lt;/a&gt; and are implemented in a runtime specific form.&lt;/p&gt;

&lt;p&gt;The screen capture below depicts the pipeline editor for Apache Airflow pipelines. The palette, shown on the left, is by default divided into two categories — one for generic components and one for custom components. Note the Airflow specific components in the second category, such as the &lt;em&gt;BashOperator&lt;/em&gt; and the &lt;em&gt;SimpleHttpOperator&lt;/em&gt;, which process a bash command and an HTTP request, respectively.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3i0hhbjk0t1nl4ajxpl4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3i0hhbjk0t1nl4ajxpl4.png" alt="airflow-example-pipeline"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Pipelines that utilize custom components are called &lt;em&gt;runtime specific&lt;/em&gt; pipelines because it is not possible to run a pipeline that was created for Kubeflow Pipelines on Apache Airflow and vice versa.&lt;/p&gt;

&lt;h3&gt;
  
  
  Get started with pipelines
&lt;/h3&gt;

&lt;p&gt;Once you've &lt;a href="https://elyra.readthedocs.io/en/stable/getting_started/installation.html" rel="noopener noreferrer"&gt;installed Elyra&lt;/a&gt;, it is easy to get started with pipelines. The JupyterLab launcher now includes tiles for each pipeline type: one for generic pipelines, and one for each supported pipeline runtime platform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F41yljwt149i4bd2frevt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F41yljwt149i4bd2frevt.png" alt="pipeline-editor-launchers"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Click the desired pipeline editor tile and you are ready to compose a pipeline from the components that are supported for the selected platform.&lt;/p&gt;

&lt;p&gt;To get you going quickly, the component registry includes a few example custom components for each runtime platform. The &lt;a href="https://github.com/elyra-ai/examples" rel="noopener noreferrer"&gt;Elyra examples GitHub repository&lt;/a&gt; includes information about those components and pipelines that illustrate their usage. These components are included for illustrative purposes only. Unless stated otherwise, the components were not created by the Elyra community and are therefore provided as is.&lt;/p&gt;

&lt;h3&gt;
  
  
  Opportunities for growth
&lt;/h3&gt;

&lt;p&gt;In the initial 3.0 release, Elyra’s support for custom components is rather limited. Many features are still under development, planned for a future release, or in the backlog without a specific target release. Some of the high priority features for the next releases are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data exchange between custom components:&lt;/strong&gt; Components commonly produce outputs that other components require as input. Currently, custom components are isolated from each other and cannot exchange data. (Data exchange between generic components is already supported.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data exchange between generic components and custom components&lt;/strong&gt;: Same as above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manage component registry&lt;/strong&gt;: Provide a UI and/or CLI that allows for the addition, editing, or deletion of components. Currently, components &lt;a href="https://github.com/elyra-ai/elyra/discussions/1881" rel="noopener noreferrer"&gt;can only be managed manually&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For an up-to-date feature status please refer to &lt;a href="https://github.com/elyra-ai/elyra/discussions/1890" rel="noopener noreferrer"&gt;this forum thread&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Use Watson Studio services in pipelines&lt;br&gt;
Pipelines can also take advantage of external services using custom components. If you are looking for a managed solution for Watson Studio services, check out &lt;a href="https://medium.com/ibm-data-ai/automating-the-ai-lifecycle-with-ibm-watson-studio-orchestration-flow-4450f1d725d6" rel="noopener noreferrer"&gt;this IBM Watson Studio Pipeline article&lt;/a&gt;. It illustrates how to run notebooks, refine data, &lt;a href="https://medium.com/ibm-data-ai/watson-autoai-series-part-1-24be02171e51" rel="noopener noreferrer"&gt;run AutoAI experiments&lt;/a&gt;, and deploy a model.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbecraacjq3qh8js98wme.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbecraacjq3qh8js98wme.png" alt="Watson Studio Pipelines"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Your opportunity to help us improve Elyra
&lt;/h3&gt;

&lt;p&gt;Elyra is a fairly new open source project that is currently maintained by a small community of JupyterLab enthusiasts. We welcome contributions of any kind, such as feedback, bug reports, bug fixes, features, or documentation. To learn more about how you can make a difference refer to the &lt;a href="https://elyra.readthedocs.io/en/stable/getting_started/getting-help.html" rel="noopener noreferrer"&gt;&lt;em&gt;Getting help&lt;/em&gt; topic in the documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;On behalf of the community: Thank You!&lt;/p&gt;

</description>
      <category>jupyter</category>
      <category>kubeflow</category>
      <category>apacheairflow</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Elyra 2.2: R support, updated CLI, and more</title>
      <dc:creator>Patrick Titzler</dc:creator>
      <pubDate>Thu, 01 Apr 2021 20:43:11 +0000</pubDate>
      <link>https://forem.com/ibmdeveloper/elyra-2-2-r-support-updated-cli-and-more-4b2b</link>
      <guid>https://forem.com/ibmdeveloper/elyra-2-2-r-support-updated-cli-and-more-4b2b</guid>
      <description>&lt;p&gt;It's only been a couple weeks since the Elyra open source community published version 2.1, which introduced &lt;a href="https://dev.to/ibmdeveloper/automate-your-machine-learning-workflow-tasks-using-elyra-and-apache-airflow-1kpa"&gt;experimental support for Apache Airflow&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Version 2.2 delivers a couple of exciting enhancements that our growing user base had on their wishlist. In this blog post I'll summarize the highlights:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New R script editor&lt;/li&gt;
&lt;li&gt;Improved pipeline editor with support for R scripts&lt;/li&gt;
&lt;li&gt;Deployment on Kubeflow Notebook servers&lt;/li&gt;
&lt;li&gt;Extended command line interface with support for pipeline execution &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As always, you can find the complete list of features and bug fixes that made it into the release in the &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/changelog.html" rel="noopener noreferrer"&gt;changelog&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Edit and run R scripts
&lt;/h3&gt;

&lt;p&gt;The Elyra Script Editor was extended to support the R language. You can therefore now &lt;a href="https://elyra.readthedocs.io/en/latest/user_guide/enhanced-script-support.html#r-script-execution-support" rel="noopener noreferrer"&gt;create, edit, and run R scripts in JupyterLab&lt;/a&gt;  in addition to Python scripts. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff1j7x7s53ndo7mym4x1p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff1j7x7s53ndo7mym4x1p.png" alt="Script editors for Python and R in the Launcher"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By installing the optional &lt;a href="https://elyra.readthedocs.io/en/latest/user_guide/enhanced-script-support.html#r-editor-language-server-protocol" rel="noopener noreferrer"&gt;Language Server Protocol support for R&lt;/a&gt;, you can take advantage of productivity features you are likely familiar with from other IDEs, such as code linting and auto-completion.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjtjxaov3z9bw73a3bv49.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjtjxaov3z9bw73a3bv49.gif" alt="R script in editor shown with Language Server Protocol enabled"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We realize that this editor can't compete with RStudio, but its start!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you've used the Jupyter notebooks in an enterprise deployment, you are probably familiar with the &lt;a href="https://jupyter-enterprise-gateway.readthedocs.io/en/latest/?badge=latest" rel="noopener noreferrer"&gt;Jupyter Enterprise Gateway (JEG)&lt;/a&gt;. In fact, even if you are not familiar with it, you might have used it. What it does - in a nutshell - is to give you the ability to run notebooks in remote kernels, allowing for better resource allocation and usage.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Watson Studio is one example of a managed enterprise service that leverages the JEG.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because it is extending JupyterLab functionality, Elyra can take advantage of the Enterprise Gateway as well. One little known feature of Elyra though is it's ability to also allow for remote execution without the need for JEG  through it's support for Kubeflow Pipelines or Apache Airflow. &lt;/p&gt;

&lt;p&gt;If you have access to a Kubeflow Pipelines or Apache Airflow deployment, you can run R scripts (just like Python scripts and Jupyter notebooks) in those deployments directly from the editor. This is especially useful for scripts that require resources that are not available (or not sufficiently available) in your local environment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjct321dcrsy772xdbzd7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjct321dcrsy772xdbzd7.png" alt="Submit an R script for processing in Kubeflow Pipelines"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Run R scripts in pipelines
&lt;/h4&gt;

&lt;p&gt;In the Visual Pipeline Editor you can now assemble pipelines from multiple R scripts, or mix R scripts with Jupyter notebooks and Python scripts, as necessary. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdps8sgwpjjr6qhb7g6qg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdps8sgwpjjr6qhb7g6qg.png" alt="A pipeline comprising of a notebook, a Python script, and an R script"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can run these pipelines locally in JupyterLab or remotely on Kubeflow Pipelines or Apache Airflow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fue1oeky99u6hk7s6ih67.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fue1oeky99u6hk7s6ih67.png" alt="Processed pipeline in Kubeflow Pipelines GUI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are new to Elyra pipelines, take a look at &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/tutorials.html" rel="noopener noreferrer"&gt;the tutorials&lt;/a&gt;. They guide you through the process of creating and running a pipeline in various environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use Elyra to run Kubeflow-hosted notebooks
&lt;/h3&gt;

&lt;p&gt;Elyra can be deployed locally or in remote environments. &lt;/p&gt;

&lt;p&gt;A local deployment typically serves only a single user and is created by &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/installation.html" rel="noopener noreferrer"&gt;installing Elyra from PyPI, conda, source code, or pulling a ready-to-use container image&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Remote deployments, such as in a data center or the cloud, are typically used when support for many users is required.&lt;/p&gt;

&lt;p&gt;A common approach is to deploy &lt;a href="https://elyra.readthedocs.io/en/latest/recipes/deploying-elyra-in-a-jupyterhub-environment.html" rel="noopener noreferrer"&gt;JupyterHub on Kubernetes and configure it for Elyra&lt;/a&gt;, like it is done in &lt;a href="https://opendatahub.io" rel="noopener noreferrer"&gt;Open Data Hub on the Red Hat OpenShift Container platform&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;If you already have Kubeflow deployed and don't want to provision a dedicated instance of JupyterHub to serve notebooks, we've got great news for you. We've recently started to publish custom Elyra container images on Docker Hub and quay.io that you can use to run &lt;a href="https://elyra.readthedocs.io/en/latest/recipes/using-elyra-with-kubeflow-notebook-server.html" rel="noopener noreferrer"&gt;JupyterLab with Elyra on Kubeflow Notebook Servers&lt;/a&gt;. All you need to do is specify the Elyra container image name and (version) tag when you configure a new notebook server and you are good to go! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd2mze31qysi0k0uhv8g9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd2mze31qysi0k0uhv8g9.png" alt="Configuring an Elyra notebook server in Kubeflow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Extended command line interface
&lt;/h3&gt;

&lt;p&gt;As an extension to JupyterLab, Elyra is primarily GUI driven. However, there are certain tasks that can also be completed using the &lt;a href="https://elyra.readthedocs.io/en/latest/user_guide/command-line-interface.html#managing-metadata" rel="noopener noreferrer"&gt;&lt;code&gt;elyra-metadata&lt;/code&gt; command line interface&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://elyra.readthedocs.io/en/latest/user_guide/runtime-conf.html#managing-runtime-configurations-using-the-elyra-cli" rel="noopener noreferrer"&gt;Manage runtime configurations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://elyra.readthedocs.io/en/latest/user_guide/runtime-image-conf.html#managing-runtime-images-with-the-command-line-interface" rel="noopener noreferrer"&gt;Manage runtime images&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Manage code snippets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Elyra command line interface was extended in version 2.2 to support running of pipelines in local and remote environments. Initially this capability is only exposed through the &lt;a href="https://elyra.readthedocs.io/en/latest/user_guide/command-line-interface.html#running-pipelines" rel="noopener noreferrer"&gt;&lt;code&gt;elyra-pipeline&lt;/code&gt; command line interface&lt;/a&gt;, but work is on the way to provide a unified interface.&lt;/p&gt;

&lt;h4&gt;
  
  
  Run pipelines locally
&lt;/h4&gt;

&lt;p&gt;Specify the &lt;code&gt;run&lt;/code&gt; command to execute the pipeline locally, passing the pipeline file name as parameter, like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ elyra-pipeline run /path/to/hello-world.pipeline
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;This feature is still under active development, e.g. to visualize execution progress.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Run pipelines remotely
&lt;/h4&gt;

&lt;p&gt;Specify the &lt;code&gt;submit&lt;/code&gt; command to run the pipeline on Kubeflow Pipelines or Apache Airflow, passing the pipeline file name and the runtime configuration name as parameters, like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ elyra-metadata list runtimes
 Schema    Instance     Resource
 ------    --------     --------
 kfp       kfp_test_env  /.../runtimes/kfp_test_env.json 

$ elyra-pipeline submit --runtime-config kfp_test_env /path/to/hello-world.pipeline
  ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the pipeline was successfully submitted for execution, the command returns a GUI link that you can use to monitor the progress and a link to the cloud storage where the pipeline run artifacts are stored. &lt;/p&gt;

&lt;h3&gt;
  
  
  Improved usability
&lt;/h3&gt;

&lt;p&gt;If you've used previous releases of Elyra, you should notice quite a few usability improvements that we've made. There's no denying that the Elyra project has matured a lot, since it was started about a year ago.&lt;/p&gt;

&lt;h3&gt;
  
  
  Coming up next
&lt;/h3&gt;

&lt;p&gt;We've just started work for our next releases. There's plenty of stuff brewing in our lab. If you'd like to get the inside scoop, &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/getting-help.html" rel="noopener noreferrer"&gt;check out our discussion forum, chat with us, or join the weekly community meeting&lt;/a&gt;.  &lt;/p&gt;

</description>
      <category>jupyter</category>
      <category>datascience</category>
      <category>kubeflow</category>
      <category>apacheairflow</category>
    </item>
    <item>
      <title>Automate your machine learning workflow tasks using Elyra and Apache Airflow</title>
      <dc:creator>Patrick Titzler</dc:creator>
      <pubDate>Thu, 18 Mar 2021 14:19:44 +0000</pubDate>
      <link>https://forem.com/ibmdeveloper/automate-your-machine-learning-workflow-tasks-using-elyra-and-apache-airflow-1kpa</link>
      <guid>https://forem.com/ibmdeveloper/automate-your-machine-learning-workflow-tasks-using-elyra-and-apache-airflow-1kpa</guid>
      <description>&lt;p&gt;In this blog post I’ll introduce a GUI-driven approach to creating Apache Airflow workflows that implement machine learning pipelines using Jupyter notebooks and Python scripts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://airflow.apache.org/"&gt;Apache Airflow&lt;/a&gt; is an open source workflow management platform that allows for &lt;em&gt;programmatic&lt;/em&gt; creation, scheduling, and monitoring of workflows. In Apache Airflow a workflow (or pipeline) is called a &lt;a href="https://airflow.apache.org/docs/apache-airflow/stable/concepts.html#dags"&gt;Directed Acyclic Graph (DAG)&lt;/a&gt; that comprises of one or more related &lt;a href="https://airflow.apache.org/docs/apache-airflow/stable/concepts.html#tasks"&gt;tasks&lt;/a&gt;. A task represents a unit of work (such as the execution of a Python script) and is implemented by an operator. Airflow comes with built-in operators, such as the &lt;a href="https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/operators/python/index.html#airflow.operators.python.PythonOperator"&gt;&lt;code&gt;PythonOperator&lt;/code&gt;&lt;/a&gt;, and can be extended using &lt;a href="https://airflow.apache.org/docs/apache-airflow-providers/index.html"&gt;provider packages&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Let's say you want to use an Apache Airflow deployment on Kubernetes to periodically execute a set of notebooks or scripts that load and process data in preparation for machine learning model training. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Zbd6Sy1n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bhh0mfp6enza3m8gud9i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zbd6Sy1n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bhh0mfp6enza3m8gud9i.png" alt="notebook-script-pipeline"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Without going into details how, you could implement this workflow using the generic &lt;a href="https://airflow.apache.org/docs/apache-airflow/stable/howto/operator/python.html"&gt;&lt;code&gt;PythonVirtualEnvOperator&lt;/code&gt;&lt;/a&gt; to run the Python script and the special purpose  &lt;a href="https://airflow.apache.org/docs/apache-airflow-providers-papermill/stable/operators.html"&gt;&lt;code&gt;PapermillOperator&lt;/code&gt;&lt;/a&gt; to run the notebook. If the latter doesn't meet your needs, you'd have to implement its functionality yourself by developing code that performs custom pre-processing, uses the &lt;a href="https://papermill.readthedocs.io/en/latest/"&gt;papermill&lt;/a&gt; Python package to run the notebook, and performs custom post-processing.&lt;/p&gt;

&lt;p&gt;An easier way to create a pipeline from scripts and notebooks is to use &lt;a href="https://github.com/elyra-ai/elyra"&gt;Elyra&lt;/a&gt;'s Visual Pipeline Editor. This editor lets you assemble pipelines by dragging and dropping supported files onto the canvas and defining their dependencies.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YQNLs3pK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a7774l8lm63qqwlqxu8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YQNLs3pK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a7774l8lm63qqwlqxu8y.png" alt="pipeline-in-pipeline-editor"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you've assembled the pipeline and are ready to run it, the editor takes care of generating the Apache Airflow DAG code on the fly, eliminating the need for any coding.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you are new to the Elyra open source project, take a look at the &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/overview.html"&gt;overview documentation&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The pipeline editor can also generate code that runs the pipeline in JupyterLab or on &lt;a href="https://dev.to/ibmdeveloper/automate-your-machine-learning-workflow-tasks-using-elyra-and-kubeflow-pipelines-5d6n"&gt;Kubeflow Pipelines&lt;/a&gt; for greater flexibility.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--O7F5f5D8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ef2cus8klhprjv8c5d2k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--O7F5f5D8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ef2cus8klhprjv8c5d2k.png" alt="notebook-pipeline-local-and-remote"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Local execution is primarily intended for use during development or if no Kubeflow Pipelines or Apache Airflow deployment is available. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This article outlines how you would go about creating a pipeline from a set of files and running it on Apache Airflow. We have published a &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/tutorials.html#tutorials"&gt;set of tutorials&lt;/a&gt; that provide step-by-step instructions for each one of the supported runtime environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;JupyterLab 3.0 with the &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/installation.html"&gt;Elyra extensions v2.1 (or later) installed&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Apache Airflow v1.10.8 or later but not including v2

&lt;ul&gt;
&lt;li&gt;Must be configured to use the Kubernetes Executor with git-sync enabled&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://elyra.readthedocs.io/en/latest/recipes/configure-airflow-as-a-runtime.html"&gt;Must be enabled for Elyra&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Creating a pipeline
&lt;/h3&gt;

&lt;p&gt;Pipelines are created in Elyra with the Visual Pipeline Editor by &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;adding Python scripts or notebooks&lt;/li&gt;
&lt;li&gt;configuring their execution properties&lt;/li&gt;
&lt;li&gt;connecting the files to define dependencies &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JIMhTDft--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zf0nf2259n3puu6hxfnw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JIMhTDft--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zf0nf2259n3puu6hxfnw.gif" alt="assemble-pipeline"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each pipeline node represents a task in the DAG and is executed in Apache Airflow with the help of a custom &lt;a href="https://github.com/elyra-ai/airflow-notebook"&gt;&lt;code&gt;NotebookOp&lt;/code&gt; operator&lt;/a&gt;. The operator also performs pre- and post processing operations, that, for example, make it possible to share data between multiple tasks using shared cloud storage.&lt;/p&gt;

&lt;p&gt;Node properties define the container image that the operator will run in, optional CPU, GPU, or RAM resource requests, file dependencies, environment variables, and output files. Output files are files that need to be preserved after the node was processed. For example, a notebook that trains a model might want to save model files for later consumption, such as deployment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rBcjbvGu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jzn1zm2kt3iqqs5p6uf9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rBcjbvGu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jzn1zm2kt3iqqs5p6uf9.png" alt="configure node properties"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A pipeline that comprises only of file nodes (nodes that execute a Python script or Jupyter notebook) can be run as-is locally in JupyterLab, or remotely in Apache Airflow or Kubeflow Pipelines.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Future releases of Elyra might provide support for node types that are specific to a runtime platform. Pipelines that include such nodes can take advantage of platform specific features but won't be portable.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A pipeline definition does not include any target environment&lt;br&gt;
information, such as the host name of the Apache Airflow webserver. This information is encapsulated in runtime [environment] configurations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating a runtime configuration
&lt;/h3&gt;

&lt;p&gt;In Elyra &lt;a href="https://elyra.readthedocs.io/en/latest/user_guide/runtime-conf.html"&gt;runtime configurations&lt;/a&gt; store metadata that describes the target environment where pipelines are executed. A runtime configuration for Apache Airflow includes &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;connectivity information for the Airflow web server, &lt;/li&gt;
&lt;li&gt;details about the GitHub repository, where DAGs are stored,&lt;/li&gt;
&lt;li&gt;connectivity information for the cloud storage service, which Elyra uses to store pipeline-run specific artifacts &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--atal9_Xz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gprle8e1oti5ybqh1bw0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--atal9_Xz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gprle8e1oti5ybqh1bw0.png" alt="apache-airflow-runtime-configuration"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Elyra supports repositories on github.com and GitHub Enterprise. Note that some of the runtime configuration information is embedded in the generated DAGs to provide the &lt;code&gt;NotebookOp&lt;/code&gt; operator access to the configured cloud storage. Therefore you should always use a  private repository to store DAGs that were produced by Elyra.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Running pipelines on Apache Airflow
&lt;/h3&gt;

&lt;p&gt;Once you created a pipeline and a runtime configuration for your Apache Airflow cluster, you are ready to run the pipeline.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s----EJpAy7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2wgmu8xlnqej2v6zfaoz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s----EJpAy7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2wgmu8xlnqej2v6zfaoz.png" alt="submit pipeline for execution"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you submit a pipeline for execution from the Visual Pipeline Editor, Elyra performs the following pre-processing steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;package the input artifacts (files and dependencies) for each task in a compressed archive&lt;/li&gt;
&lt;li&gt;upload the archives to the cloud storage bucket referenced in the runtime configuration&lt;/li&gt;
&lt;li&gt;generate a DAG, comprising of one task for each notebook or Python script&lt;/li&gt;
&lt;li&gt;upload DAG to the GitHub repository that Apache Airflow is monitoring&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The uploaded DAG is pre-configured to run only once.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Within limits you can customize the generated DAG by exporting the pipeline instead of running it. The main difference between running and exporting a pipeline for Apache Airflow is that the latter does not upload the generated DAG file to the GitHub repository.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Monitoring a pipeline run on Apache Airflow
&lt;/h3&gt;

&lt;p&gt;How soon a DAG is executed after it was uploaded to the repository  depends on the git-sync refresh time interval setting and the scheduler in your Apache Airflow configuration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--niAnF0P9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k5rymi8p72pf7g8lr3wc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--niAnF0P9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k5rymi8p72pf7g8lr3wc.png" alt="listing of DAGs in the Airflow GUI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6NGUYtD---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ddc2m4yfmdrwm92haxvz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6NGUYtD---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ddc2m4yfmdrwm92haxvz.png" alt="Monitor task status"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each notebook or Python script in the pipeline is executed as a task using Elyra's &lt;a href="https://github.com/elyra-ai/airflow-notebook"&gt;&lt;code&gt;NotebookOp&lt;/code&gt; operator&lt;/a&gt;, in the order defined by it's dependencies.&lt;/p&gt;

&lt;p&gt;Once a task has been processed, its outputs can be downloaded from the associated cloud storage bucket. Outputs include the completed notebooks, an HTML version of each notebook, a log file for each Python script, and files that were declared as output files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x1f70Cmv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9htbxmlp8q4x7i2rjvi6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x1f70Cmv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9htbxmlp8q4x7i2rjvi6.png" alt="browse pipeline artifacts on cloud storage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting started
&lt;/h3&gt;

&lt;p&gt;If you have already have access to an v1.10 Apache Airflow cluster you can start running pipelines in minutes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://elyra.readthedocs.io/en/latest/recipes/configure-airflow-as-a-runtime.html"&gt;Prepare your cluster for use by Elyra&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/installation.html#pip"&gt;Install Elyra from PyPI&lt;/a&gt; or &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/installation.html#pulling-elyra-container-images"&gt;pull the ready-to-use container image&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/tutorials.html#running-notebook-pipelines-on-apache-airflow"&gt;Step through the tutorial&lt;/a&gt; to learn how to create a pipeline, configure a pipeline, and run/export it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are interested in running pipelines on Apache Airflow on the Red Hat OpenShift Container Platform, take a look at &lt;a href="https://opendatahub.io/"&gt;Open Data Hub&lt;/a&gt;. Open Data Hub is an open source project (just like Elyra) that should include everything you need to start running machine learning workloads in a Kubernetes environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Watson Studio services in pipelines
&lt;/h3&gt;

&lt;p&gt;We've introduced pipelines in Elyra to make it easy to run notebooks or scripts as batch jobs, and thus automate common repetitive tasks. &lt;/p&gt;

&lt;p&gt;The &lt;a href="https://yairschiff.medium.com/automating-the-ai-lifecycle-with-ibm-watson-studio-orchestration-flow-4450f1d725d6"&gt;recently launched beta of IBM Watson Studio Orchestration Flow&lt;/a&gt; takes this a step further. The flow orchestrator integrates with various data and AI services in Watson Studio, enabling users to ingest data, or train, test and deploy machine learning models at scale. &lt;/p&gt;

&lt;p&gt;The orchestration flow editor, which is shown in the screen capture below, is based on the &lt;a href="https://github.com/elyra-ai/canvas"&gt;Elyra canvas&lt;/a&gt; open source project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_zzsMaCO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e97vjo77dfn87kdukruh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_zzsMaCO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e97vjo77dfn87kdukruh.png" alt="Watson Studio Orchestration flow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Questions and feedback
&lt;/h4&gt;

&lt;p&gt;We'd love to hear from you! &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/getting-help.html"&gt;You can reach us in the community chatroom, the discussion forum, or by joining our weekly community call.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>jupyter</category>
      <category>kubernetes</category>
      <category>airflow</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>What's new in Elyra 2.0</title>
      <dc:creator>Patrick Titzler</dc:creator>
      <pubDate>Mon, 01 Feb 2021 22:39:19 +0000</pubDate>
      <link>https://forem.com/ibmdeveloper/what-s-new-in-elyra-2-0-odd</link>
      <guid>https://forem.com/ibmdeveloper/what-s-new-in-elyra-2-0-odd</guid>
      <description>&lt;p&gt;Earlier this month &lt;a href="https://blog.jupyter.org/jupyterlab-3-0-is-out-4f58385e25bb" rel="noopener noreferrer"&gt;JupyterLab 3.0 was released&lt;/a&gt;, providing a slew of new features. In this blog post, I recap a few highlights and how the Elyra 2.0 extensions take advantage of them. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;New to Elyra? Take a look at the &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/overview.html" rel="noopener noreferrer"&gt;overview documentation&lt;/a&gt;. TL;DR: Elyra provides productivity features for common data science and AI tasks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Support for Language Servers
&lt;/h4&gt;

&lt;p&gt;Many modern integrated development environments (IDEs) simplify development by providing editor features like autocomplete, "go to definition", "find references", or linting. &lt;/p&gt;

&lt;p&gt;JupyterLab optionally supports these features by integrating with &lt;a href="https://microsoft.github.io/language-server-protocol/" rel="noopener noreferrer"&gt;Language Servers&lt;/a&gt; using the &lt;a href="https://github.com/krassowski/jupyterlab-lsp" rel="noopener noreferrer"&gt;&lt;code&gt;jupyterlab-lsp&lt;/code&gt; extension&lt;/a&gt;. Language Servers are available for &lt;a href="https://jupyterlab-lsp.readthedocs.io/en/latest/Language%20Servers.html" rel="noopener noreferrer"&gt;many languages&lt;/a&gt;, including Python and R. Note that some Language Servers might not support every convenience feature.&lt;/p&gt;

&lt;p&gt;Elyra 2.0 includes the &lt;a href="https://pypi.org/project/python-language-server/" rel="noopener noreferrer"&gt;Python Language Server&lt;/a&gt;, enabling these features in the notebook editor and Python script editor, as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxzfier3nrsuogxpbfpfb.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxzfier3nrsuogxpbfpfb.gif" alt="Lint code, use auto-complete, open signature preview, find references and more using the Python Language Server integration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can add support for other languages by &lt;a href="https://jupyterlab-lsp.readthedocs.io/en/latest/Language%20Servers.html" rel="noopener noreferrer"&gt;installing the appropriate Language Server&lt;/a&gt; and its prerequisites.&lt;/p&gt;

&lt;h4&gt;
  
  
  Visual debugger
&lt;/h4&gt;

&lt;p&gt;JupyterLab includes a &lt;a href="https://jupyterlab.readthedocs.io/en/stable/user/debugger.html" rel="noopener noreferrer"&gt;visual debugger front-end&lt;/a&gt; that provides common debugging tasks. For example, you can set breakpoints,  step through code, or inspect data. The front-end requires a kernel with support for debugging.&lt;/p&gt;

&lt;p&gt;As of January 2021, the only Jupyter Python kernel that supports debugging is &lt;a href="https://github.com/jupyter-xeus/xeus-python" rel="noopener noreferrer"&gt;&lt;code&gt;xeus-python&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note that this kernel currently does not support all iPython features, such as cell magics.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Neither JupyterLab 3.0 nor Elyra 2.0 install &lt;code&gt;xeus-python&lt;/code&gt; by default. You therefore have to install it separately from PyPI, conda, or build from source code.&lt;br&gt;
 &lt;/p&gt;

&lt;h4&gt;
  
  
  Debugging a notebook
&lt;/h4&gt;

&lt;p&gt;To debug a notebook, associate it with a kernel that supports debugging and enable the debugger. The official &lt;a href="https://github.com/jupyterlab/debugger/blob/master/examples/index.ipynb" rel="noopener noreferrer"&gt;debugger example Python notebook&lt;/a&gt; provides a short introduction and is highly recommended!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4dbwe094oa8j9u7jbc8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4dbwe094oa8j9u7jbc8y.png" alt="Debug notebooks using debugger-enabled kernels"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Debugging a Python script
&lt;/h4&gt;

&lt;p&gt;Elyra's &lt;a href="https://elyra.readthedocs.io/en/latest/user_guide/enhanced-python-support.html" rel="noopener noreferrer"&gt;Python editor&lt;/a&gt; is also enabled for debugging. To debug a Python script: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the script in the Python editor.&lt;/li&gt;
&lt;li&gt;Right click on the canvas and select &lt;code&gt;Create Console for Editor&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Select a kernel that supports debugging.&lt;/li&gt;
&lt;li&gt;Enable the debugger in the console.&lt;/li&gt;
&lt;li&gt;Set one or more breakpoints in the source code.&lt;/li&gt;
&lt;li&gt;Run code to breakpoint and step through the code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvg09kpnhk1yul7mb7b04.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvg09kpnhk1yul7mb7b04.gif" alt="Debug a Python script using the debugger"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Elyra 2.0 also includes several enhancements that are not specific to JupyterLab 3.0.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pipeline editor enhancements for Kubeflow Pipelines
&lt;/h3&gt;

&lt;p&gt;Elyra's visual pipeline editor, which I introduced in &lt;a href="https://dev.to/ibmdeveloper/automate-your-machine-learning-workflow-tasks-using-elyra-and-kubeflow-pipelines-5d6n"&gt;this blog post&lt;/a&gt;, was extended to support custom resource allocation and the Tekton workflow engine.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Editor's note: Time flies! Elyra 2.1 (and later versions) also support &lt;a href="https://dev.to/ibmdeveloper/automate-your-machine-learning-workflow-tasks-using-elyra-and-apache-airflow-1kpa"&gt;running pipelines on Apache Airflow&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Customize resource allocation
&lt;/h4&gt;

&lt;p&gt;When a pipeline node is executed on Kubeflow Pipelines, it is processed in a container. The amount of CPU, GPU, and memory (RAM) resources that are allocated for the container is governed by configuration settings in Kubernetes.&lt;/p&gt;

&lt;p&gt;With the latest enhancement in Elyra, you can request additional CPU, GPU, or memory resources to speed up processing of your notebook or Python script during pipeline execution. You configure those resource requirements in the node's properties view:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select the notebook or Python script node in the pipeline editor.&lt;/li&gt;
&lt;li&gt;Right click, and select &lt;code&gt;Properties&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Enter the desired values.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvgdbd07c8ocyncyqb9n7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvgdbd07c8ocyncyqb9n7.png" alt="custom_resource_requirements"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you leave the properties empty, the Kubernetes default settings are applied.&lt;/p&gt;

&lt;h4&gt;
  
  
  Support for Tekton workflow engine
&lt;/h4&gt;

&lt;p&gt;Kubeflow Pipelines utilizes a container-native workflow engine to execute pipelines. As of January 2021,  &lt;a href="https://github.com/argoproj/argo" rel="noopener noreferrer"&gt;Argo&lt;/a&gt; and &lt;a href="https://github.com/kubeflow/kfp-tekton" rel="noopener noreferrer"&gt;Tekton&lt;/a&gt; are the only two supported engines. &lt;/p&gt;

&lt;p&gt;When you run (or export) a pipeline in the Elyra pipeline editor, it is compiled into a workflow engine-specific format. In previous releases, Elyra could only produce Argo-compatible outputs, but this restriction is lifted in version 2.0. Since Elyra cannot automatically determine which workflow engine your Kubeflow Pipelines installation leverages, you need to specify the type when you &lt;a href="https://elyra.readthedocs.io/en/latest/user_guide/runtime-conf.html" rel="noopener noreferrer"&gt;create a runtime configuration for your Kubeflow Pipelines deployment&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr2ty32o8a5cjiq2ugn12.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr2ty32o8a5cjiq2ugn12.png" alt="runtime_configuration_engine_type"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you don't specify an engine type in your configuration, Argo is assumed as default to retain backward compatibility with older Elyra releases. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you are unsure what engine your Kubeflow Pipelines deployment utilizes, check with the administrator. If you select the wrong engine type, your pipelines will fail to execute.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Code snippets
&lt;/h3&gt;

&lt;p&gt;Elyra 2.0 makes it easier to create code snippets. The &lt;a href="https://elyra.readthedocs.io/en/latest/user_guide/code-snippets.html" rel="noopener noreferrer"&gt;code snippet editor&lt;/a&gt; now allows for the creation of code snippets from highlighted code.&lt;/p&gt;

&lt;p&gt;To create a code snippet within an editor, select the desired piece of code, right click, and choose from the context menu &lt;code&gt;Save as Code Snippet&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcvkcdrns3n53z5or85nx.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcvkcdrns3n53z5or85nx.gif" alt="Create a code snippet from code, paste it as a new cell and run it"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To learn more about other enhancements or bug fixes that went into Elyra 2.0 please check the &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/changelog.html" rel="noopener noreferrer"&gt;changelog&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Get started
&lt;/h3&gt;

&lt;p&gt;If you are new to Elyra, it's easy to get started.&lt;/p&gt;

&lt;h4&gt;
  
  
  Install from PyPI or conda
&lt;/h4&gt;

&lt;p&gt;You can install the Elyra JupyterLab extensions from PyPI, conda, or from source code. Refer to the &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/installation.html#installation" rel="noopener noreferrer"&gt;installation guide&lt;/a&gt; for details.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;JupyterLab 3.0 introduces a new extension type named &lt;a href="https://jupyterlab.readthedocs.io/en/stable/extension/extension_dev.html#overview-of-extensions" rel="noopener noreferrer"&gt;&lt;em&gt;prebuilt extensions&lt;/em&gt;&lt;/a&gt;. These extensions don't need a JupyterLab rebuild or a Node.js installation. Unfortunately, we are unable to distribute Elyra 2.0 as prebuilt extensions, but are considering doing it for future releases.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h4&gt;
  
  
  Run JupyterLab/Elyra in a container image
&lt;/h4&gt;

&lt;p&gt;The Elyra community publishes Elyra container images on DockerHub and Quay.io. Take a look at &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/installation.html#docker" rel="noopener noreferrer"&gt;these instructions&lt;/a&gt; to learn more about the images and how to run them.&lt;/p&gt;

&lt;p&gt;The Elyra community publishes Elyra container images on DockerHub and Quay.io. Take a look at &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/installation.html#docker" rel="noopener noreferrer"&gt;these instructions&lt;/a&gt; to learn more about the images and how to run them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Get involved
&lt;/h3&gt;

&lt;p&gt;During the past year we have received many suggestions and feedback from users like you. We appreciate your input and encourage you to stay involved. Open &lt;a href="https://github.com/elyra-ai/elyra/issues" rel="noopener noreferrer"&gt;GitHub issues&lt;/a&gt;, reach out on &lt;a href="https://gitter.im/elyra-ai/community" rel="noopener noreferrer"&gt;gitter&lt;/a&gt;, post in our &lt;a href="https://github.com/elyra-ai/elyra/discussions" rel="noopener noreferrer"&gt;new forum&lt;/a&gt;, or join our &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/getting-help.html#join-the-weekly-community-meeting" rel="noopener noreferrer"&gt;weekly community meeting&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Use the forum to ask general questions or share things you've created, like &lt;a href="https://github.com/elyra-ai/elyra/discussions/1208" rel="noopener noreferrer"&gt;Nick Burdakous did&lt;/a&gt;. He recently published a pipeline viewer for &lt;a href="https://chrome.google.com/webstore/detail/elyra-pipeline-viewer/blomglkicbbfkbmppeljdnnakajnpnop" rel="noopener noreferrer"&gt;Google Chrome&lt;/a&gt; and &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/elyra-pipeline-viewer/" rel="noopener noreferrer"&gt;Mozilla Firefox&lt;/a&gt;. This viewer visualizes pipeline files on GitHub, like shown in the screen shot below. The &lt;a href="https://github.com/CODAIT/flight-delay-notebooks" rel="noopener noreferrer"&gt;depicted pipeline&lt;/a&gt; was created by Nick Pentreath and presented at the &lt;a href="https://www.youtube.com/watch?v=BFX0s4qr7HU" rel="noopener noreferrer"&gt;Big Things conference in November 2020&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fca2wtv49jj9gh1attctd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fca2wtv49jj9gh1attctd.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Elyra community has lot planned for the first half of this year. Follow us here on &lt;a href="https://dev.to/ibmdeveloper"&gt;dev.to/ibmdeveloper&lt;/a&gt; or on &lt;a href="https://twitter.com/codait_org" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; to stay in the loop.&lt;/p&gt;

</description>
      <category>jupyter</category>
      <category>datascience</category>
      <category>python</category>
    </item>
    <item>
      <title>Reusable code snippets in JupyterLab</title>
      <dc:creator>Patrick Titzler</dc:creator>
      <pubDate>Fri, 13 Nov 2020 20:06:49 +0000</pubDate>
      <link>https://forem.com/ibmdeveloper/reusable-code-snippets-in-jupyterlab-4ofk</link>
      <guid>https://forem.com/ibmdeveloper/reusable-code-snippets-in-jupyterlab-4ofk</guid>
      <description>&lt;p&gt;In my previous blog post &lt;em&gt;&lt;a href="https://dev.to/ibmdeveloper/automate-your-machine-learning-workflow-tasks-using-elyra-and-kubeflow-pipelines-5d6n"&gt;Automate your machine learning workflow tasks using Elyra and Kubeflow Pipelines&lt;/a&gt;&lt;/em&gt; I've introduced Elyra and the Visual Pipeline Editor, which enables you to assemble machine learning pipelines from notebooks and Python scripts.&lt;/p&gt;

&lt;p&gt;In this blog post I'll introduce the Elyra code snippet extension, which enables to to reuse arbitrary snippets of code in your notebooks, source code or markdown files in JupyterLab.&lt;/p&gt;

&lt;p&gt;Let's say you are working on a notebook and want to include a standard header or footer (like licensing text) or some code that you've previously created. For me this typically results in a hectic search. In which notebook did I use the code? Where's the most current version of the disclaimer I need to add? While maintaining a "scratch pad" might help, native support for reusable code or documentation assets in JupyterLab holds a lot more appeal. &lt;/p&gt;

&lt;h2&gt;
  
  
  Installing the code snippet extension
&lt;/h2&gt;

&lt;p&gt;You can install the code snippet extension as part of Elyra or individually using &lt;code&gt;pip&lt;/code&gt; or &lt;code&gt;conda&lt;/code&gt;. At the time of writing a rebuild of JupyterLab is required to make the extension available.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing the extension using pip
&lt;/h3&gt;

&lt;p&gt;Install all Elyra extensions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ pip install elyra &amp;amp;&amp;amp; jupyter lab build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install only the code snippet extension:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ pip install elyra-code-snippet-extension &amp;amp;&amp;amp; jupyter lab build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Installing the extension using conda
&lt;/h3&gt;

&lt;p&gt;Install all Elyra extensions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ conda install -c conda-forge elyra &amp;amp;&amp;amp; jupyter lab build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install only the code snippet extension:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ conda install -c conda-forge elyra-code-snippet-extension &amp;amp;&amp;amp; jupyter lab build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Managing and using code snippets
&lt;/h2&gt;

&lt;p&gt;Code snippets are accessed by opening the &lt;code&gt;code snippets&lt;/code&gt; tab on the JupyterLab sidebar:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3SRvTkvg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/or7n0a6mnaok7gnafual.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3SRvTkvg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/or7n0a6mnaok7gnafual.png" alt="access_code_snippets"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The code snippets UI is divided into two parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a quick search panel, and&lt;/li&gt;
&lt;li&gt;the code snippet list, providing access to code snippet specific actions, such as copy, insert, edit, and delete.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EmwGLXZR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rhtdj83ywwija1684jg7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EmwGLXZR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rhtdj83ywwija1684jg7.png" alt="manage_code_snippets"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating a snippet
&lt;/h3&gt;

&lt;p&gt;To create a snippet click &lt;code&gt;+&lt;/code&gt; above the search bar and provide the required information. You can optionally tag snippets to make them more easily discoverable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EZ91ooWD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zmnh3ggcafc6e9ahji69.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EZ91ooWD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zmnh3ggcafc6e9ahji69.png" alt="add_snippet"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If your code snippet language is not listed in the drop-down list, type it in the filter box to create a new entry.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In Elyra 2.0 we've added the ability to create a code snippet from text. Select the desired text, open the context menu, and choose &lt;code&gt;Save As Code Snippet&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Finding a snippet
&lt;/h3&gt;

&lt;p&gt;To locate a code snippet, enter a search term and/or pick one of the listed tags.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w7b7hzvR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/491b8camqqaff85ehue8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w7b7hzvR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/491b8camqqaff85ehue8.png" alt="locate_snippet"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Copying a snippet to the clipboard
&lt;/h3&gt;

&lt;p&gt;You copy the snippet content to the clipboard by clicking the snippet's &lt;em&gt;copy&lt;/em&gt; icon.&lt;/p&gt;

&lt;h3&gt;
  
  
  Inserting a snippet
&lt;/h3&gt;

&lt;p&gt;Use drag and drop or click the snippet's insert icon to paste the snippet content in the desired destination, such as cell in a notebook or an open editor window. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kBT368_x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7d5ivl8ks6skru9m7tnt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kBT368_x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7d5ivl8ks6skru9m7tnt.png" alt="insert_code_snippet"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do note that the editor does not keep track of where you've inserted a snippet. Also note that snippets don't act like macros and changes to a snippet are therefore not reflected in the locations where the snippet was embedded.&lt;/p&gt;

&lt;h3&gt;
  
  
  Editing a snippet
&lt;/h3&gt;

&lt;p&gt;You edit a snippet by clicking the snippet's pencil icon. &lt;/p&gt;

&lt;h3&gt;
  
  
  Deleting a code snippet
&lt;/h3&gt;

&lt;p&gt;You delete a code snippet by clicking the snippet's trash icon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sharing code snippets
&lt;/h2&gt;

&lt;p&gt;The code snippet extension currently doesn't provide any import or export capabilities. However, you can access the relevant metadata files that contain the definitions.&lt;/p&gt;

&lt;p&gt;The definitions are stored in the &lt;code&gt;$JUPYTER_DATA_DIR/metadata/code-snippets&lt;/code&gt; directory, where &lt;code&gt;$JUPYTER_DATA_DIR&lt;/code&gt; refers to the &lt;a href="https://jupyter.readthedocs.io/en/latest/use/jupyter-directories.html#id2"&gt;Jupyter data directory&lt;/a&gt;, which you can identify by running the following command in a terminal window:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ jupyter --data-dir
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In my environment, the code snippets are stored in &lt;code&gt;/Users/ptitzler/Library/Jupyter/metadata/code-snippets/&lt;/code&gt;. To back up or share my snippets, I typically create an archive from the content of this directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing thoughts
&lt;/h2&gt;

&lt;p&gt;To learn more about Elyra or if you have code snippet editor feedback head on over to &lt;a href="https://github.com/elyra-ai/elyra"&gt;https://github.com/elyra-ai/elyra&lt;/a&gt; and get a conversation started.&lt;/p&gt;

</description>
      <category>jupyter</category>
      <category>python</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Automate your machine learning workflow tasks using Elyra and Kubeflow Pipelines</title>
      <dc:creator>Patrick Titzler</dc:creator>
      <pubDate>Tue, 20 Oct 2020 13:14:11 +0000</pubDate>
      <link>https://forem.com/ibmdeveloper/automate-your-machine-learning-workflow-tasks-using-elyra-and-kubeflow-pipelines-5d6n</link>
      <guid>https://forem.com/ibmdeveloper/automate-your-machine-learning-workflow-tasks-using-elyra-and-kubeflow-pipelines-5d6n</guid>
      <description>&lt;p&gt;As a data scientist, Jupyter Notebooks are probably one of the most frequently used "tools" to get the job done. Whether you are loading or processing data, analyzing data, using data to train a model, or perform other tasks of the data science workflow, notebooks are usually key.&lt;/p&gt;

&lt;p&gt;Let's say you've created a set of notebooks that load, cleanse, and analyze time-series data, which is made available periodically. Instead of running each notebook manually (or performing all tasks in a single notebook, which limits reusability of task specific code) you could create and run a re-usable machine learning pipeline:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fom26v2wqjg9rbugjkyfh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fom26v2wqjg9rbugjkyfh.png" alt="pipeline"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With Elyra you can do this in JupyterLab or leverage  &lt;a href="https://www.kubeflow.org/docs/pipelines/overview/pipelines-overview/" rel="noopener noreferrer"&gt;Kubeflow Pipelines&lt;/a&gt;, a popular platform for building and deploying portable, scalable machine learning workflows based on Docker containers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In Elyra 2.1 (and later releases) you can run pipelines also on Apache Airflow, as &lt;a href="https://dev.to/ibmdeveloper/automate-your-machine-learning-workflow-tasks-using-elyra-and-apache-airflow-1kpa"&gt;outlined in this blog post&lt;/a&gt;. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Before I'll outline how you can create and run pipelines, a bit of background information.&lt;/p&gt;

&lt;p&gt;JupyterLab can be extended using &lt;a href="https://jupyterlab.readthedocs.io/en/stable/user/extensions.html" rel="noopener noreferrer"&gt;extensions&lt;/a&gt;, making it possible for anybody to customize the user experience by providing new functionality (like a CSV file editor or a visualization), integrating services (like git for sharing and version control), or themes. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/elyra-ai/elyra" rel="noopener noreferrer"&gt;Elyra&lt;/a&gt; is a set of AI-centric extension for JupyterLab that aim to simplify and streamline day-to-day activities. It's main feature is the Visual Pipeline Editor, which enables you to create workflows from Python notebooks or scripts and run them locally in JupyterLab, on Kubeflow Pipelines, or Apache Airflow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Folrcuna4zcpvpasgz00a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Folrcuna4zcpvpasgz00a.png" alt="notebook-pipeline-local-and-remote"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Assembling a pipeline
&lt;/h3&gt;

&lt;p&gt;Pipelines are assembled in Elyra using the Visual Pipeline Editor. The pipeline assembly process generally involves&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;creating a new pipeline,&lt;/li&gt;
&lt;li&gt;adding Python notebooks or Python scripts and defining  their runtime properties, and &lt;/li&gt;
&lt;li&gt;connecting the notebooks and scripts to define execution  dependencies. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6g06b5wwl6oy8iqq2or3.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6g06b5wwl6oy8iqq2or3.gif" alt="assemble_pipeline"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Creating a pipeline
&lt;/h4&gt;

&lt;p&gt;Pipelines are created by opening the Elyra Pipeline Editor from the Launcher.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fylsvm1xvu4pbss9qb6ty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fylsvm1xvu4pbss9qb6ty.png" alt="open_pipeline_editor"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Adding Python notebooks and scripts to the pipeline
&lt;/h4&gt;

&lt;p&gt;Python notebooks and scripts are added to the pipeline by dragging them from the JupyterLab File Browser onto the canvas. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhkqjeiug8joumjii6byl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhkqjeiug8joumjii6byl.png" alt="add_node"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each notebook or file is represented by a node that includes an input port and an output port.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwwieqymb2cimt4513zak.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwwieqymb2cimt4513zak.png" alt="a_node"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Runtime properties, which can be accessed via the context menu, define the execution environment (Docker image) in which the notebook or script is run during remote execution, inputs (file dependencies and environment variables), and output files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftnruihh019pvo8zqoyzs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftnruihh019pvo8zqoyzs.png" alt="node_properties"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nodes can optionally be associated with comments to describe their purpose. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fx5wmsn4assh7hiv2km8p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fx5wmsn4assh7hiv2km8p.png" alt="comment_node"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Defining dependencies between notebooks and scripts
&lt;/h4&gt;

&lt;p&gt;Dependencies between notebooks or scripts are defined by connecting output ports (on the right side of a node) to input ports (on the left side of a node).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frpmssfaoiy8lt0mg0dkw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frpmssfaoiy8lt0mg0dkw.png" alt="connecting_nodes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dependencies are used to determine the order in which the nodes will be executed during a pipeline run.&lt;/p&gt;

&lt;p&gt;The following rules are applied:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;circular dependencies are not allowed&lt;/li&gt;
&lt;li&gt;if two nodes are not connected (directly or indirectly), they can be executed in parallel&lt;/li&gt;
&lt;li&gt;if two nodes are connected, the node producing the inputs for the other node is executed first&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are some distinct differences between how pipelines are executed in JupyterLab and on a third-party workflow orchestration framework, such as Kubeflow Pipelines.&lt;/p&gt;

&lt;h3&gt;
  
  
  Running pipelines in JupyterLab
&lt;/h3&gt;

&lt;p&gt;Pipelines can be executed in JupyterLab as long as the environment provides access to the pipeline's prerequisites. For example, the kernels that the notebooks are associated with must be already installed, just like required packages (if they are not installed in the notebooks).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F60pqg134b7ns3t6dwem5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F60pqg134b7ns3t6dwem5.png" alt="run_locally"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Running pipelines in the JupyterLab environment should be a  viable approach if&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;you are assembling a new pipeline and are testing it using relatively small data volumes&lt;/li&gt;
&lt;li&gt;pipeline tasks don't require hardware resources in excess of what's available&lt;/li&gt;
&lt;li&gt;pipeline tasks complete in an acceptable amount of time, given existing resource constraints.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nodes are executed as a sub-process in the JupyterLab environment and always processed sequentially.&lt;/p&gt;

&lt;p&gt;Output files (like processed data files or training artifacts) are stored in the local file system and can be accessed using the JupyterLab File Browser.&lt;/p&gt;

&lt;p&gt;Processed notebooks are updated in place, meaning their output cells reflect the execution results.&lt;/p&gt;

&lt;p&gt;Python script output, such as messages sent to STDOUT or STDERR are displayed in the JupyterLab console.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwmrd9x5rafap1d5ump17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwmrd9x5rafap1d5ump17.png" alt="local_execution_output"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Elyra currently does not provide pipeline monitoring capability in the JupyterLab UI aside from a message after processing has completed. However, the relevant information is contained in the JupyterLab console output. &lt;/p&gt;

&lt;p&gt;To learn more about how to create a pipeline and run it in JupyterLab take a look at the &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/tutorials.html" rel="noopener noreferrer"&gt;Running notebook pipelines in JupyterLab&lt;/a&gt; tutorial.&lt;/p&gt;

&lt;h3&gt;
  
  
  Running pipelines on Kubeflow Pipelines
&lt;/h3&gt;

&lt;p&gt;While running pipelines locally might be feasible in some scenarios, it's rather impractical if large data volumes need to be processed or if compute tasks require special purpose hardware like GPUs or TPUs to perform resource intensive calculations.&lt;/p&gt;

&lt;p&gt;Elyra can be configured to access Kubeflow Pipeline instances (secured and unsecured) by defining a runtime configuration. Once configured the selected configuration is used to run the pipeline.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftvvs3181qnfk2pt7dspb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftvvs3181qnfk2pt7dspb.png" alt="remote_execution"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The main difference between local pipeline execution and execution on Kubeflow Pipelines is that each node is processed in an isolated Docker container, allowing for better portability, scalability, and manageability.&lt;/p&gt;

&lt;p&gt;The following chart illustrates this for two dependent notebook nodes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1drr64k040qcuoavtf1r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1drr64k040qcuoavtf1r.png" alt="node_isolation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Data is exchanged between nodes using S3-compatible cloud storage. Before a notebook or Python script is executed the declared &lt;em&gt;input file dependencies&lt;/em&gt; are automatically downloaded from cloud storage into the container. After  processing has completed the declared &lt;em&gt;output files&lt;/em&gt; are automatically uploaded from the container to cloud storage. &lt;/p&gt;

&lt;p&gt;Since Elyra is not yet a mature project it currently relies on the Kubeflow Pipelines UI for pipeline execution monitoring.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5w0oc93pmkln78tuegmz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5w0oc93pmkln78tuegmz.png" alt="monitor_remote"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Additional details, along with step-by-step instructions can be found in the &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/tutorials.html" rel="noopener noreferrer"&gt;Running notebook pipelines on Kubeflow Pipelines&lt;/a&gt; tutorial.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ways to try Elyra (and pipelines)
&lt;/h3&gt;

&lt;p&gt;The referenced tutorials are a great way to get started with pipelines. If you are looking for a more complex example this &lt;a href="https://github.com/CODAIT/covid-notebooks" rel="noopener noreferrer"&gt;COVID-19 pipeline&lt;/a&gt; might fit the bill.&lt;/p&gt;

&lt;p&gt;If you'd like to try out Elyra and start building your own pipelines, you have three options, outlined in the sections below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use a sandbox environment hosted on the cloud&lt;/li&gt;
&lt;li&gt;
Use Elyra Docker images &lt;/li&gt;
&lt;li&gt;Install JupyterLab and Elyra on your local machine&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Kubeflow Pipelines is not included in any of the Elyra installation options.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Running Elyra in a sandbox environment on the cloud
&lt;/h4&gt;

&lt;p&gt;You can test drive Elyra on &lt;a href="https://mybinder.readthedocs.io/en/latest/" rel="noopener noreferrer"&gt;mybinder.org&lt;/a&gt;, without having to install anything. Follow &lt;a href="https://github.com/elyra-ai/elyra#using-binder" rel="noopener noreferrer"&gt;this link&lt;/a&gt; to try out the latest stable release or the latest development version (if you feel adventurous) in a sandbox environment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsez28ki3vcm9y0q8l16k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsez28ki3vcm9y0q8l16k.png" alt="mybinder links"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The sandbox environment contains a &lt;code&gt;getting_started&lt;/code&gt; markdown document, which provides a short tour of the Elyra features:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fayp4h426zs6gx5659jm6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fayp4h426zs6gx5659jm6.png" alt="elyra_mybinder"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A couple of things to note:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performance can sometimes be sluggish since this is a shared environment.&lt;/li&gt;
&lt;li&gt;The sandbox environment is not persisted and any changes you make will be lost when it is shut down.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have Docker installed on your machine consider using one of the Docker images instead.&lt;/p&gt;

&lt;h4&gt;
  
  
  Running Elyra container images
&lt;/h4&gt;

&lt;p&gt;The Elyra community publishes &lt;a href="https://hub.docker.com/r/elyra/elyra/tags" rel="noopener noreferrer"&gt;ready-to-use container images on Docker Hub&lt;/a&gt;, which have JupyterLab and the Elyra extension pre-installed. Docker images are approximately one GB in size are tagged as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;elyra/elyra:latest&lt;/code&gt; is the latest stable release&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;elyra/elyra:x.y.z&lt;/code&gt; has the &lt;code&gt;x.y.z&lt;/code&gt; release installed&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;elyra/elyra:dev&lt;/code&gt; is automatically built each time a change is committed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you've decided which image to use (&lt;code&gt;elyra/elyra:latest&lt;/code&gt; is always an excellent choice because you won't miss out on the latest features!), you can spin up a sandbox container as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -it -p 8888:8888\
 -v ${HOME}/jupyter-notebooks/:/home/jovyan/work\
 -w /home/jovyan/work\
 elyra/elyra:latest jupyter lab
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open your web browser to the displayed URL and you are ready to start.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;To access the notebook, open this file in a browser:
        file:///home/jovyan/.local/share/jupyter/runtime/nbserver-6-open.html
    Or copy and paste one of these URLs:
        http://4d17829ecd4c:8888/?token=d690bde267ec75d6f88c64a39825f8b05b919dd084451f82
     or http://127.0.0.1:8888/?token=d690bde267ec75d6f88c64a39825f8b05b919dd084451f82
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsj5h9yx7lbq3f6sw8nyb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsj5h9yx7lbq3f6sw8nyb.png" alt="elyra_docker"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The caveat is, that in sandbox mode you cannot access existing files (such as notebooks) on your local machine and all changes you make are discarded when you shut down the container.&lt;/p&gt;

&lt;p&gt;Therefore it's better to launch the Docker container like so, replacing &lt;code&gt;${HOME}/jupyter-notebooks/&lt;/code&gt; and &lt;code&gt;${HOME}/jupyter-data-dir&lt;/code&gt; with the names of existing local directories:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -it -p 8888:8888\
 -v ${HOME}/jupyter-notebooks/:/home/jovyan/work\
 -w /home/jovyan/work\
 -v ${HOME}/jupyter-data-dir:/home/jovyan/.local/share/jupyter\
 elyra/elyra:latest jupyter lab 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This way all changes are preserved when you shut down the container and you won't have to start from scratch when you bring it up again. &lt;/p&gt;

&lt;h4&gt;
  
  
  Installing Elyra locally
&lt;/h4&gt;

&lt;p&gt;If your local environment meets the prerequisites, you can install JupyterLab and Elyra using &lt;code&gt;pip&lt;/code&gt;, &lt;code&gt;conda&lt;/code&gt;, or from source code, following the instructions in the &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/installation.html" rel="noopener noreferrer"&gt;installation guide&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Closing thoughts
&lt;/h3&gt;

&lt;p&gt;Elyra is a community-driven effort. We welcome contributions of any kind: bug reports, feature requests, and of course  pull requests. Head on over to &lt;a href="https://github.com/elyra-ai/elyra" rel="noopener noreferrer"&gt;https://github.com/elyra-ai/elyra&lt;/a&gt; and let's get started.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://developer.ibm.com/articles/create-ai-pipelines-using-elyra-and-kubeflow-pipelines/" rel="noopener noreferrer"&gt;IBM Developer&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>jupyter</category>
      <category>machinelearning</category>
      <category>kubeflow</category>
    </item>
    <item>
      <title>JupyterLab, Elyra, and quantum at JupyterCon 2020</title>
      <dc:creator>Patrick Titzler</dc:creator>
      <pubDate>Fri, 02 Oct 2020 17:33:21 +0000</pubDate>
      <link>https://forem.com/ibmdeveloper/jupyterlab-elyra-and-quantum-at-jupytercon-2020-47bi</link>
      <guid>https://forem.com/ibmdeveloper/jupyterlab-elyra-and-quantum-at-jupytercon-2020-47bi</guid>
      <description>&lt;p&gt;For this year's &lt;a href="https://jupytercon.com/"&gt;JupyterCon&lt;/a&gt;, which is held online October 5-17, we are excited to have the opportunity to share our experience with the Jupyter ecosystem and showcase some of the contributions IBM has made during the past year.&lt;/p&gt;

&lt;p&gt;Note that the time specified in the tutorial and general session links is &lt;a href="https://www.timeanddate.com/worldclock/converter-classic.html"&gt;UTC/GMT&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tutorial sessions (October 5-9, 2020)
&lt;/h2&gt;

&lt;p&gt;Tutorial sessions, which are 90-minute, instructor-led, hands-on activities, are held &lt;a href="https://cfp.jupytercon.com/2020/schedule/tutorial-sessions/"&gt;October 5-9, 2020&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developing extensions for JupyterLab&lt;/li&gt;
&lt;li&gt;Clustering algorithms using Python and scikit-learn&lt;/li&gt;
&lt;li&gt;Open source fundamentals&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Developing extensions for JupyterLab
&lt;/h3&gt;

&lt;p&gt;Introduced in JupyterLab v2 in 2019, &lt;a href="https://jupyterlab.readthedocs.io/en/stable/user/extensions.html"&gt;extensions&lt;/a&gt; can be used to customize and extend any part of JupyterLab. For example, an extension might add a new file editor, add &lt;a href="https://github.com/jupyterlab/jupyterlab-git"&gt;Git versioning support&lt;/a&gt;, or apply a theme. The &lt;em&gt;&lt;a href="https://cfp.jupytercon.com/2020/schedule/presentation/256/developing-extensions-for-jupyterlab/"&gt;Developing Extensions for JupyterLab&lt;/a&gt;&lt;/em&gt; tutorial on October 9 covers the basics and provides you with an opportunity to build a simple extension.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clustering algorithms using Python and scikit-learn
&lt;/h3&gt;

&lt;p&gt;If you want to learn about the theory and ideas behind unsupervised learning, attend the&lt;br&gt;
&lt;em&gt;&lt;a href="https://cfp.jupytercon.com/2020/schedule/presentation/218/clustering-algorithms-using-python-and-scikit-learn/"&gt;Clustering algorithms using Python and scikit-learn&lt;/a&gt;&lt;/em&gt; tutorial on October 6.&lt;/p&gt;

&lt;h3&gt;
  
  
  Open source fundamentals
&lt;/h3&gt;

&lt;p&gt;The &lt;em&gt;&lt;a href="https://cfp.jupytercon.com/2020/schedule/presentation/254/open-source-fundamentals/"&gt;Open source fundamentals&lt;/a&gt;&lt;/em&gt; sessions on October 9 discuss key ideas of open source development, such as licenses, governance, funding, and community.&lt;/p&gt;

&lt;h2&gt;
  
  
  General sessions (October 12-16, 2020)
&lt;/h2&gt;

&lt;p&gt;General sessions, which are 15- to 30-minute talks, are held &lt;a href="https://cfp.jupytercon.com/2020/schedule/general-sessions/"&gt;October 12-16, 2020&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Some of our JupyterCon sessions cover various aspects related to JupyterLab extensions, such as how to use, create, or debug them. Other sessions are dedicated to &lt;a href="https://github.com/elyra-ai/elyra"&gt;Elyra&lt;/a&gt;, a set of AI-centric extensions to JupyterLab, and its most prominent feature -- the Visual Pipeline Editor. Using this editor, you can assemble AI pipelines from notebooks or Python scripts and run them in JupyterLab or Kubeflows Pipelines, a popular platform for building and deploying portable, scalable machine learning workflows based on Docker containers.&lt;/p&gt;

&lt;p&gt;So whether you are new to JupyterLab or an experienced user, there's likely something interesting for you in our sessions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debugging notebooks and Python scripts in JupyterLab&lt;/li&gt;
&lt;li&gt;A generic metadata-store for JupyterLab extensions&lt;/li&gt;
&lt;li&gt;Introduction to Elyra: an AI-centric extension for JupyterLab&lt;/li&gt;
&lt;li&gt;What is new on Elyra: a set of AI-centric JupyterLab extensions&lt;/li&gt;
&lt;li&gt;Explore and extend AI pipeline runtimes with Elyra and JupyterLab&lt;/li&gt;
&lt;li&gt;Building AI pipelines with Elyra: a deep dive using COVID-19 analytics scenario&lt;/li&gt;
&lt;li&gt;IBM Quantum Experience notebooks. Serving JupyterHub at scale for the quantum computing community&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Debugging notebooks and Python scripts in JupyterLab
&lt;/h3&gt;

&lt;p&gt;If you are a Jupyter Notebook user reaching out to external IDEs to debug your code and haven't had the opportunity to familiarize yourself with the &lt;a href="https://github.com/jupyterlab/debugger"&gt;JupyterLab Debugger extension&lt;/a&gt;, you should consider adding &lt;a href="https://cfp.jupytercon.com/2020/schedule/presentation/166/debugging-notebooks-and-python-scripts-in-jupyterlab/"&gt;Karla's talk in the &lt;em&gt;Jupyter Community: Practices&lt;/em&gt;&lt;/a&gt; track on October 13 to your agenda. In her session, she will discuss how to set it up and demonstrate the main debugger features.&lt;/p&gt;

&lt;h3&gt;
  
  
  A generic metadata-store for JupyterLab extensions
&lt;/h3&gt;

&lt;p&gt;When we created Elyra, we needed a generic way to store metadata and a user-friendly approach to managing it in the JupyterLab user interface. In &lt;a href="https://cfp.jupytercon.com/2020/schedule/presentation/197/a-generic-metadata-store-for-jupyterlab-extensions/"&gt;their talk in the &lt;em&gt;Jupyter Community: Tools&lt;/em&gt;&lt;/a&gt; track on October 14, Martha explains how we implemented a generic metadata service extension front end and back end, and demonstrates how they can be utilized by other JupyterLab extensions, such as a file editor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction to Elyra: an AI-centric extension for JupyterLab
&lt;/h3&gt;

&lt;p&gt;Do you have a set of notebooks (or Python scripts) that download data, process and analyze data, train a model, or perform any other machine learning workflow tasks? With the introduction of the Visual Pipeline Editor in Elyra, you can now run them as part of a pipeline to automate repetitive steps. Join Yiwen, Edward, and Saishruthi in their session on October 12 in the &lt;a href="https://cfp.jupytercon.com/2020/schedule/presentation/187/intro-to-elyra-an-ai-centric-extension-for-jupyterlab/"&gt;&lt;em&gt;Jupyter Community: Tools&lt;/em&gt; track&lt;/a&gt; to learn how to use the Elyra Visual Pipeline Editor to create workflow pipelines and how to run them in JupyterLab or a Kubeflow Pipelines deployment. The demo scenario is based on a set of notebooks that process a popular time series data set from the &lt;a href="https://developer.ibm.com/exchanges/data/"&gt;Data Asset eXchange&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is new on Elyra: a set of AI-centric JupyterLab extensions
&lt;/h3&gt;

&lt;p&gt;Luciano and Karla provide an overview of Elyra and demonstrate the main features in their talk on October 12 in the &lt;a href="https://cfp.jupytercon.com/2020/schedule/presentation/201/whats-new-on-elyra-a-set-of-ai-centric-jupyterlab-extensions/"&gt;&lt;em&gt;Jupyter Community: Tools&lt;/em&gt; track&lt;/a&gt;. Covering Git integration, the code snippet editor, Python editor, Visual Pipelines Editor, and much more, this session is ideal if you are looking for ways to simplify common tasks in JupyterLab.&lt;/p&gt;

&lt;h3&gt;
  
  
  Explore and extend AI pipeline runtimes with Elyra and JupyterLab
&lt;/h3&gt;

&lt;p&gt;Elyra's Visual Pipeline Editor makes it easy to assemble machine learning workflows from Jupyter Notebooks or Python scripts. Alan's deep dive on October 12 in the &lt;a href="https://cfp.jupytercon.com/2020/schedule/presentation/259/explore-and-extend-ai-pipeline-runtimes-with-elyra-and-jupyterlab/"&gt;&lt;em&gt;Jupyter Community: Tools&lt;/em&gt; track&lt;/a&gt; provides interesting insights into how Elyra processes the pipeline with the help of a platform like Kubeflow Pipelines.&lt;/p&gt;

&lt;h3&gt;
  
  
  Building AI pipelines with Elyra: a deep dive using COVID-19 analytics scenario
&lt;/h3&gt;

&lt;p&gt;In their talk on October 15 in the &lt;a href="https://cfp.jupytercon.com/2020/schedule/presentation/265/building-ai-pipelines-with-elyra-a-deep-dive-using-covid-19-analytics-scenario/"&gt;&lt;em&gt;Jupyter Community: Practices&lt;/em&gt; track&lt;/a&gt;, Luciano, Fred, and Karla demonstrate how data scientists on our team used Elyra's Visual Pipeline Editor to create and run a Jupyter Notebook-based machine learning pipeline that downloads, transforms, cleanses, and analyzes COVID-19 time series data. You can find the notebooks and pipeline referenced in this talk in the &lt;a href="https://github.com/CODAIT/covid-notebooks"&gt;covid-notebooks&lt;/a&gt; GitHub repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  IBM Quantum Experience notebooks. Serving JupyterHub at scale for the quantum computing community
&lt;/h3&gt;

&lt;p&gt;Focusing on enterprise adoption of the Jupyter ecosystem, Juan covers in his &lt;a href="https://cfp.jupytercon.com/2020/schedule/presentation/179/ibm-quantum-experience-notebooks-serving-jupyterhub-at-scale-for-the-quantum-computing-community/"&gt;session in the &lt;em&gt;Enterprise Jupyter Infrastructure&lt;/em&gt;&lt;/a&gt; track on October 14 how the &lt;a href="https://quantum-computing.ibm.com/"&gt;IBM Quantum Experience&lt;/a&gt; uses a JupyterHub deployment on Kubernetes to serve notebooks to the quantum computing community, which has more than 200,000 users. No quantum computing experience is required to enjoy this talk!&lt;/p&gt;

&lt;h2&gt;
  
  
  Can't make it to JupyterCon this year?
&lt;/h2&gt;

&lt;p&gt;If you can't attend the conference this year but would like to learn more about Elyra and try it out, we've got you covered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/overview.html"&gt;overview&lt;/a&gt; summarizes the main features of Elyra.&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/installation.html"&gt;installation guide&lt;/a&gt; has details on how to install Elyra using &lt;code&gt;pip&lt;/code&gt;, &lt;code&gt;conda&lt;/code&gt;, and from source. You can also run Elyra in a Docker container, or, if you don't want to install anything at all, in the cloud at &lt;a href="https://github.com/elyra-ai/elyra#using-binder"&gt;mybinder.org&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If running your notebooks or Python scripts as a pipeline in JupyterLab or on Kubeflow Pipelines is something you would like to try, take a look at the &lt;a href="https://elyra.readthedocs.io/en/latest/getting_started/tutorials.html"&gt;tutorials&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Would you like to get in touch with us before, during, or after the conference?
&lt;/h2&gt;

&lt;p&gt;Elyra is a community-driven open source project that is maintained by a small number of developers and data scientists. If you'd like to file an enhancement request, report an issue, or simply ask a question, head over to &lt;a href="https://github.com/elyra-ai/elyra"&gt;https://github.com/elyra-ai/elyra&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>jupyter</category>
      <category>datascience</category>
      <category>kubeflow</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
