Supervisely
About SuperviselyEcosystemContact usSlack
  • 💻Supervisely Developer Portal
  • 🎉Getting Started
    • Installation
    • Basics of authentication
    • Intro to Python SDK
    • Environment variables
    • Supervisely annotation format
      • Project Structure
      • Project Meta: Classes, Tags, Settings
      • Objects
      • Tags
      • Image Annotation
      • Video Annotation
      • Point Clouds Annotation
      • Point Cloud Episode Annotation
      • Volumes Annotation
    • Python SDK tutorials
      • Images
        • Images
        • Image and object tags
        • Spatial labels on images
        • Keypoints (skeletons)
        • Multispectral images
        • Multiview images
        • Advanced: Optimized Import
        • Advanced: Export
      • Videos
        • Videos
        • Video and object tags
        • Spatial labels on videos
      • Point Clouds
        • Point Clouds (LiDAR)
        • Point Cloud Episodes and object tags
        • 3D point cloud object segmentation based on sensor fusion and 2D mask guidance
        • 3D segmentation masks projection on 2D photo context image
      • Volumes
        • Volumes (DICOM)
        • Spatial labels on volumes
      • Common
        • Iterate over a project
        • Iterate over a local project
        • Progress Bar tqdm
        • Cloning projects for development
    • Command Line Interface (CLI)
      • Enterprise CLI Tool
        • Instance administration
        • Workflow automation
      • Supervisely SDK CLI
    • Connect your computer
      • Linux
      • Windows WSL
      • Troubleshooting
  • 🔥App development
    • Basics
      • Create app from any py-script
      • Configuration file
        • config.json
        • Example 1. Headless
        • Example 2. App with GUI
        • v1 - Legacy
          • Example 1. v1 Modal Window
          • Example 2. v1 app with GUI
      • Add private app
      • Add public app
      • App Compatibility
    • Apps with GUI
      • Hello World!
      • App in the Image Labeling Tool
      • App in the Video Labeling Tool
      • In-browser app in the Labeling Tool
    • Custom import app
      • Overview
      • From template - simple
      • From scratch - simple
      • From scratch GUI - advanced
      • Finding directories with specific markers
    • Custom export app
      • Overview
      • From template - simple
      • From scratch - advanced
    • Neural Network integration
      • Overview
      • Serving App
        • Introduction
        • Instance segmentation
        • Object detection
        • Semantic segmentation
        • Pose estimation
        • Point tracking
        • Object tracking
        • Mask tracking
        • Image matting
        • How to customize model inference
        • Example: Custom model inference with probability maps
      • Serving App with GUI
        • Introduction
        • How to use default GUI template
        • Default GUI template customization
        • How to create custom user interface
      • Inference API
      • Training App
        • Overview
        • Tensorboard template
        • Object detection
      • High level scheme
      • Custom inference pipeline
      • Train and predict automation model pipeline
    • Advanced
      • Advanced debugging
      • How to make your own widget
      • Tutorial - App Engine v1
        • Chapter 1 Headless
          • Part 1 — Hello world! [From your Python script to Supervisely APP]
          • Part 2 — Errors handling [Catching all bugs]
          • Part 3 — Site Packages [Customize your app]
          • Part 4 — SDK Preview [Lemons counter app]
          • Part 5 — Integrate custom tracker into Videos Annotator tool [OpenCV Tracker]
        • Chapter 2 Modal Window
          • Part 1 — Modal window [What is it?]
          • Part 2 — States and Widgets [Customize modal window]
        • Chapter 3 UI
          • Part 1 — While True Script [It's all what you need]
          • Part 2 — UI Rendering [Simplest UI Application]
          • Part 3 — APP Handlers [Handle Events and Errors]
          • Part 4 — State and Data [Mutable Fields]
          • Part 5 — Styling your app [Customizing the UI]
        • Chapter 4 Additionals
          • Part 1 — Remote Developing with PyCharm [Docker SSH Server]
      • Custom Configuration
        • Fixing SSL Certificate Errors in Supervisely
        • Fixing 400 HTTP errors when using HTTP instead of HTTPS
      • Autostart
      • Coordinate System
      • MLOps Workflow integration
    • Widgets
      • Input
        • Input
        • InputNumber
        • InputTag
        • BindedInputNumber
        • DatePicker
        • DateTimePicker
        • ColorPicker
        • TimePicker
        • ClassesMapping
        • ClassesColorMapping
      • Controls
        • Button
        • Checkbox
        • RadioGroup
        • Switch
        • Slider
        • TrainValSplits
        • FileStorageUpload
        • Timeline
        • Pagination
      • Text Elements
        • Text
        • TextArea
        • Editor
        • Copy to Clipboard
        • Markdown
        • Tooltip
        • ElementTag
        • ElementTagsList
      • Media
        • Image
        • LabeledImage
        • GridGallery
        • Video
        • VideoPlayer
        • ImagePairSequence
        • Icons
        • ObjectClassView
        • ObjectClassesList
        • ImageSlider
        • Carousel
        • TagMetaView
        • TagMetasList
        • ImageAnnotationPreview
        • ClassesMappingPreview
        • ClassesListPreview
        • TagsListPreview
        • MembersListPreview
      • Selection
        • Select
        • SelectTeam
        • SelectWorkspace
        • SelectProject
        • SelectDataset
        • SelectItem
        • SelectTagMeta
        • SelectAppSession
        • SelectString
        • Transfer
        • DestinationProject
        • TeamFilesSelector
        • FileViewer
        • Dropdown
        • Cascader
        • ClassesListSelector
        • TagsListSelector
        • MembersListSelector
        • TreeSelect
        • SelectCudaDevice
      • Thumbnails
        • ProjectThumbnail
        • DatasetThumbnail
        • VideoThumbnail
        • FolderThumbnail
        • FileThumbnail
      • Status Elements
        • Progress
        • NotificationBox
        • DoneLabel
        • DialogMessage
        • TaskLogs
        • Badge
        • ModelInfo
        • Rate
        • CircleProgress
      • Layouts and Containers
        • Card
        • Container
        • Empty
        • Field
        • Flexbox
        • Grid
        • Menu
        • OneOf
        • Sidebar
        • Stepper
        • RadioTabs
        • Tabs
        • TabsDynamic
        • ReloadableArea
        • Collapse
        • Dialog
        • IFrame
      • Tables
        • Table
        • ClassicTable
        • RadioTable
        • ClassesTable
        • RandomSplitsTable
        • FastTable
      • Charts and Plots
        • LineChart
        • GridChart
        • HeatmapChart
        • ApexChart
        • ConfusionMatrix
        • LinePlot
        • GridPlot
        • ScatterChart
        • TreemapChart
        • PieChart
      • Compare Data
        • MatchDatasets
        • MatchTagMetas
        • MatchObjClasses
        • ClassBalance
        • CompareAnnotations
      • Widgets demos on github
  • 😎Advanced user guide
    • Objects binding
    • Automate with Python SDK & API
      • Start and stop app
      • User management
      • Labeling Jobs
  • 🖥️UI widgets
    • Element UI library
    • Supervisely UI widgets
    • Apexcharts - modern & interactive charts
    • Plotly graphing library
  • 📚API References
    • REST API Reference
    • Python SDK Reference
Powered by GitBook
On this page
  • Deploy Supervisely agent with GPU on Windows WSL
  • Table of Contents
  • Prerequisites
  • How to install
  • Step 1. Turn on WSL
  • Step 2. Install Windows Terminal
  • Step 3. Install Ubuntu
  • Step 4. Install NVIDIA GPU Driver
  • Step 5. Docker Desktop
  • Step 6. Install NVIDIA Container Toolkit
  • Step 7. Deploy Supervisely Agent

Was this helpful?

Edit on GitHub
  1. Getting Started
  2. Connect your computer

Windows WSL

Everything you need to know about deploying Supervisely agent on Windows WSL

PreviousLinuxNextTroubleshooting

Last updated 11 months ago

Was this helpful?

Poster

Deploy Supervisely agent with GPU on Windows WSL

This tutorial explains how to deploy the Supervisely agent with GPU support on Windows Subsystem for Linux (WSL). Whether you prefer following a video tutorial or a text-based guide, we've got you covered. In this guide, we'll walk you through the process step by step.

If you're a visual learner and prefer to watch along, check out our comprehensive video guide on deploying the Supervisely agent with GPU on Windows WSL. This guide will take you through each step visually, making it easier to follow along and set up the environment correctly.

Machine Specs used in video guide:

  • Operating System: Microsoft Windows 10 Enterprise (10.0.19045 Build 19045)

  • GPU: NVIDIA GeForce RTX 4090

  • GPU Driver Version: 536.67

  • UBUNTU: 22.04.2 LTS

  • Docker Desktop Version: 4.20.1 (110738)

If you prefer written instructions and a more detailed breakdown, here's how you can deploy the Supervisely agent with GPU on Windows WSL:

Machine Specs used in text guide:

  • Operating System: Microsoft Windows 11 Pro (10.0.22621 Build 22621)

  • GPU: NVIDIA GeForce RTX 3080 Ti (Laptop)

  • GPU Driver Version: 536.67

  • UBUNTU: 22.04.2 LTS

  • Docker Desktop Version: 4.1.1 (69879)

Table of Contents

Prerequisites

  • Windows 10 Home, Pro or Enterprise (64-bit edition). Version 1903 or higher, with Build 18362 or higher.

or

  • Windows 11 Home, Pro or Enterprise (64-bit edition).

and

How to install

Step 1. Turn on WSL

Use windows search to find "Turn Windows features on or off" and open it.

Scroll down and locate "Windows Subsystem for Linux", check the box and restart your computer. If the box is already checked proceed to the next step.

Step 2. Install Windows Terminal

Open Microsoft Store and find Windows Terminal and press Get.

Step 3. Install Ubuntu

Open Microsoft Store and find Ubuntu 22.04.2 and press Get.

Step 4. Install NVIDIA GPU Driver

Fill the form and press Search.

Press Download button and install the driver.

Step 5. Docker Desktop

If you have problems running Docker Desktop, check out the possible problems when running Docker Desktop just below.

Possible problems when running Docker Desktop

Docker Desktop -WSL Kernel version too low

Open Windows Terminal and run the following command:

wsl --update

Docker Desktop Windows Hypervision is not present

Restart you computer and go to BIOS settings and enable Virtualization.

Docker Desktop Resources - You don't have any WSL 2 distros installed

In this case you need to update your WSL distro to version 2.

Open Windows Terminal and run the following commands:

  1. Get name of your WSL distro

wsl -l -v

Output:

  NAME                   STATE           VERSION
* Ubuntu-22.04           Running         1
  docker-desktop-data    Running         2
  docker-desktop         Running         2
  1. Update your WSL distribution to version 2

wsl --set-version Ubuntu-22.04 2

Output:

Conversion in progress, this may take a few minutes.
The operation completed successfully.
  1. Set default WSL version to 2

wsl --set-default-version 2

Output:

The operation completed successfully.

Open Docker Desktop and go to Settings -> Resources -> WSL integration. Check "Enable integration with my default WSL distro" and "Ubuntu 22.04" and press Apply & Restart as shown below.

Open Docker Desktop and go to Settings -> Docker engine and add runtime to the docker config file as shown below and press Apply & Restart:

{
  "default-runtime": "nvidia",
  "runtimes": {
    "nvidia": {
      "path": "/usr/bin/nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}

Or you can copy and paste merged config file from here:

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "runtimes": {
    "nvidia": {
      "path": "/usr/bin/nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}

Step 6. Install NVIDIA Container Toolkit

Open Ubuntu terminal via Windows terminal

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

Update the APT repository cache and install the nvidia-container-toolkit package:

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker

Restart Docker Desktop.

Enter the following command to verify that the installation was successful:

sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:12.2.0-runtime-ubuntu22.04 nvidia-smi

After docker image is pulled, you will see nvidia-smi output.

Step 7. Deploy Supervisely Agent

Deploy Supervisely Agent with GPU support on Windows WSL.

Open Supervisely instance and go to the Start -> Team Cluster page and press "Add" button

Select "Supervisely agent".

Copy instructions bash command in the modal window. System will automatically recognize and add available GPU to the agent.

Copy the instructions command and run it in the Ubuntu terminal.

After the agent docker image is pulled you will see this message in the terminal. It means that agent is successfully deployed.

Go to the Team Cluster page and open your agent, check that agent is running. That's it! Now you can run GPU tasks on your Windows machine.

installed.

installed.

installed and running.

installed.

installed and running.

Turn Windows features on or off
Windows Subsystem for Linux
Windows Terminal
Ubuntu 22.04.2

Go to site and download the latest driver for your GPU.

NVIDIA Search
NVIDIA Download

Download and install it.

Docker Desktop Resources
Docker engine
Ubuntu Windows Terminal

Install repository for your distribution by running the following command:

If you have problems running this container, try upgrading to latest version.

NVIDIA SMI
Add Agent
Select Agent
Agent Instructions
Agent Instructions
Agent Running
🎉
Windows Terminal
Ubuntu 22.04.2
WSL 2
NVIDIA GPU Driver
Docker Desktop
NVIDIA
Docker Desktop
NVIDIA Container Toolkit
CUDA Toolkit
Prerequisites
How to install
Step 1. Turn on WSL
Step 2. Install Windows Terminal
Step 3. Install Ubuntu
Step 4. Install NVIDIA GPU Driver
Step 5. Docker Desktop
Step 6. Install NVIDIA Container Toolkit
Step 7. Deploy Supervisely Agent
Video guide
Agent Instructions