This project provides a desktop environment geared for machine learning development. It is meant as an example to using DevOps to provide a secure working environment for machine learning using the Kasm Workspaces platform.
Kasm Workspaces is a container streaming platform that provides browser-based access to desktops, applications, and web services. Kasm uses a modern DevSecOps approach for programmatic delivery of services via Containerized Desktop Infrastructure (CDI) technology to create on-demand Docker containers that are accessible via web browser. The rendering of the graphical-based containers is powered by the open-source project KasmVNC
Kasm Workspaces Community Edition is free for non-commercial use and is limited to 5 concurrent sessions. See the Kasm Website for details on tiers and pricing.
Kasm Workspaces was developed by a team of cybersecurity experts to meet the most demanding secure collaboration requirements. Our solution makes use of the latest technology in DevOps to establish an architecture that is highly scalable, customizable, and easy to maintain. Most importantly, Kasm provides a solution, rather than a service, so it is infinitely customizable to your unique requirements and includes a developer API so that it can be integrated with, rather than replace, your existing applications and workflows.
Get the link to the latest install package from Kasm Downloads. The following example installs the entire Kasm Workspaces stack on a single system, however, Workspaces can be installed on multiple systems for redundancy and scalability, see the Documentation for details.
wget https://<latest-kasm-version-url>
tar -xzvf kasm*.tar.gz
sudo kasm_release/install.sh
When the installation is complete it will output randomly generated credentials, be sure to save them in a safe place. You can login and change the user credentials and/or create new users.
This repo contains an example Desktop full of ML tools and development packages. You can use this image directly or create your own version. Ideally, the image would be built on a scheduled pipeline and push updated images to a central Docker registry. Kasm Workspaces will automatically check the registry for updates to the image and pull new layers down as needed. This ensures desktop images are always up to date without users ever experiencing downtime.
The following command will build the example image. Run this command locally on the system you have installed Kasm Workspaces on.
sudo docker build -t kasmweb/desktop-ml:1.9.0 .
If you wish to create your own custom image, be sure to base from the Kasm open-source CUDA based Ubuntu image and match the tag to the version of Kasm Workspaces that you have deployed. For example, if you are running Workspaces 1.9.0, you should be running images released from Kasm with the tag 1.9.0.
Kasm Workspaces (formally Kasm Server) version 1.9.0 and higher supports NVIDIA GPUs. The following requirements must be met.
- NVIDIA GPUs with Architecture >= Kepler (or compute capability 3.0)
- NVIDIA container toolkit must be installed on the host
The agent component will report to the API service the number of GPUs and if the Docker daemon is showing the "nvidia" runtime is available. In the Admin panel the Agents view will list all available compute (Agents) available along with the number of GPUs they are reporting. The following screenshot shows a deployment with two Agents, one with a GPU and one without.
Viewing the details of an Agent, you can see the GPU details on the host. The following example shows the host has a single Tesla T4 GPU.
If an image is configured to require a GPU, it will fail to provision if there is not at least one agent server with the number of GPUs set on the image.
Add a new Workspace image to the deployment and launch.
- Clone the Kasm Desktop Image
- Change the name field to "kasmweb/desktop-ml:1.9.0"
- Update the Friendly name and description as desired
- If your system has a GPU, check the require GPU box and set the desired number of GPUs to assign. Set to 0 to assign all available GPUs.
- Set the desired CPU cores and RAM that shall be assigned to an instance of this image
- Click Submit to save the changes
While this image is primarily built to run inside the Kasm Workspaces platform, it can also be executed manually by itself. Please note that certain functionality, such as audio, web filtering, uploads/downloads, etc, is only available within the Kasm platform.
sudo docker run --rm -it --shm-size=512m -p 6901:6901 -e VNC_PW=password kasmweb/desktop-ml:1.9.0
The container is now accessible via a browser : https://<IP>:6901
- User :
kasm_user
- Password:
password
Please make a merge request or submit an issue to help us make this a better product for the ML community. We would greatly appreciate your feedback.
-
Platform Documentation
Documentation: Instructions for installing and configuring Kasm Workspaces
-
Reporting Issues
BitBucket: Report an issue with Kasm Workspaces
-
Creating Custom Workspaces Images
Documentation: Info on configuring custom images and installing software.
BitBucket: Coding examples for creating custom images.
-
KasmVNC
GitHub: Kasm’s Open Source VNC server: browser-based, secure, high-performance.