Install JupyterLab on Azure
You'll use an Azure Resource Manager (ARM) template provided by Teradata to install JupyterLab, and the AI Unlimited kernel, from the Azure Portal.
This deploys a server instance, with JupyterLab running in a container controlled by systemd.
For installation support, email the support team or ask the community.
Prepare your Azure account
-
Work with your cloud admin to ensure your Azure account has the permissions needed to create the cloud resources defined in the JupyterLab template.
-
Networking requirements: Your Azure resource group must have an Azure Virtual Network (VNet) configured with a subnet. Use an existing VNet or subnet, or create your own, depending on your account permissions.
-
If you'll need to access the JupyterLab instance to run commands or debug, you can use a key pair to securely connect using Secure Shell (SSH). You'll need the key pair when you specify the instance details.
Clone the repository
The deployments
folder in the AI Unlimited GitHub repository provided by Teradata contains template, parameter, and policy files for installing AI Unlimited.
Open a terminal window, and clone the repository.
Locate the Jupyter template
ARM templates for JupyterLab are here in the AI Unlimited GitHub repository:
deployments/azure/templates/arm/jupyter
Choose a template based on whether you intend to use a load balancer and what type.
You might want to ask a cloud admin at your organization for guidance.
jupyter-with-alb.json
—Hosts JupyterLab behind an application load balancerjupyter-with-nlb.json
—Hosts JupyterLab behind a network load balancerjupyter-without-lb.json
—No load balancer
Load the template
- Sign in to the Azure Portal.
Note
References to Azure Portal are up-to-date as of May 29, 2024.
- Search for custom deployment, then select Deploy a custom template.
- Select Build your own template in the editor, then Load file.
- Select the template file you chose to use, and select Save.
Specify instance details
Review the parameters. Provide values for the required ones. Your organization might require others.
Azure and JupyterLab parameters
Parameter | Description | Notes |
---|---|---|
Subscription | The Azure subscription you want to use for deploying AI Unlimited. | Required Default: NA We recommend using an account that is not a Free Trial. |
Region | The region where you want to deploy AI Unlimited. | Required Default: NA Select the Azure region closest to your work location and the data resources to use with AI Unlimited. |
Resource Group Name | The name of the container that groups together related AI Unlimited resources. | Required Default: ai-unlimited-jupyter |
OS Version | The versions of the operating systems that are available in the current subscription. | Optional with default Default: Ubuntu-2004 |
Instance Type | The instance type that you want to use for AI Unlimited. | Optional Default: STANDARD_D2_V3 We recommend using the default instance type to save costs. The default instance type is the standard Dv3 series with 2 vCPUs and 8.0 GiB of memory. |
Network | The name of the network to which you want to deploy the AI Unlimited instance. | Optional Default: NA |
Subnet | The subnetwork to which you want to deploy the AI Unlimited instance. | Required Default: NA The subnet must reside in the selected availability zone. |
Security Group | The virtual firewall that controls inbound and outbound traffic to the instance. | Optional Default: JupyterSecurityGroup Security Group is implemented as a set of rules that specify which protocols, ports, and IP addresses or CIDR blocks are allowed to access the instance. Define at least one of Access CIDR, or Security Group to allow inbound traffic unless you create custom security group ingress rules. |
Access CIDR | The CIDR IP address range that is permitted to access the instance. | Optional Default: 0.0.0.0/0 We recommend setting this value to a trusted IP range. Define at least one of Access CIDR, or Security Group to allow inbound traffic unless you create custom security group ingress rules. |
Source App Sec Groups (ASG) | The source application security groups that have permission to connect to the AI Unlimited instance. ASGs let you organize your virtual machines (VMs) based on their specific network security policies. These security policies determine what traffic is or is not permissible on your virtual machine. | Optional Default: NA Select an application security group in the same region as the network interface. |
Destination App Sec Groups | The destination application security Groups that have permission to connect to the AI Unlimited instance. | Optional Default: NA Select an application security group in the same region as the network interface. |
Role Definition ID | The ID of the role to use with AI Unlimited. | Required Default: NA Use Azure CLI command- Get-AzRoleDefinition command to get your Role Definition ID. |
Allow Public SSH | Specifies whether you can use secure shell (SSH) keys to connect to VMs in Azure. | Optional Default: true |
Public Key | The public SSH Key that you can use to connect to a VM over SSH. | Optional Default: NA This value must start with ssh-rsa . |
Use Persistent Volume | Specifies whether you want to use a new or existing persistent volume to store data. See Learn more: Using a persistent volume below the parameters section. | Optional with default Default: New Supported options are a new persistent volume or an existing one, depending on your use case. |
Persistent Volume Size | The size of the persistent volume that you can attach to the instance, in GB. | Optional Default: 100 Supports values between 8 and 1000. |
Existing Persistent Volume | The ID of the existing persistent volume that you can attach to the instance. | Required if Use Persistent Volume is set to Existing Default: NA The persistent volume must be in the same availability zone as the AI Unlimited instance. |
JupyterHttpPort | The port to access the JupyterLab service UI. | Required with default Default: 8888 |
JupyterVersion | The version of JupyterLab you want to deploy. | Required with default Default: latest The value is a container version tag, for example, latest. |
JupyterToken | The token or password used to access JupyterLab from the UI. | Required Default: NA The token must begin with a letter and contain only alphanumeric characters. The allowed pattern is ^[a-zA-Z][a-zA-Z0-9-]*. |
Learn more: Using a persistent volume
The JupyterLab instance runs in a container and saves its configuration data in a database in the root volume of the instance. This data persists if you shut down, restart, or snapshot and relaunch the instance.
But a persistent volume stores data for a containerized application beyond the lifetime of the container, pod, or node in which it runs.
Without a persistent volume
If the container, pod, or node crashes or terminates, you lose the JupyterLab configuration data. You can deploy a new JupyterLab instance, but not to the same state as the one that was lost.
With a persistent volume
If the container, pod, or node crashes or terminates, and the JupyterLab configuration data is stored in a persistent volume, you can deploy a new JupyterLab instance that has the same configuration as the one that was lost.
Example
- Deploy JupyterLab, and include these parameters:
UsePersistentVolume
: New
- After you create the stack, on the Outputs tab, note the
volume-id
. - Use JupyterLab.
- If the JupyterLab instance is lost, deploy JupyterLab again, and include these parameters:
UsePersistentVolume
: NewExistingPersistentVolumeId
: the value you noted in step 2
The new JupyterLab instance has the same configuration as the one that was lost.
Create the instance
- Select Review + create.
- Select Create.
On the Notifications page, you can monitor progress.
When deployment is complete, the Outputs page shows the URL for accessing JupyterLab.