From f6f0047a36625f8bec3ce64a3bdadd708942ecac Mon Sep 17 00:00:00 2001 From: Jake Hutchinson Date: Mon, 9 Oct 2023 15:03:10 +0100 Subject: [PATCH] Workstation 22.04 docs update --- .../images/jupyter-notebook-interface.png | Bin 0 -> 59661 bytes docs/platforms/linux-workstation.md | 119 +++++++++++++++++- docs/platforms/slurm.md | 2 +- 3 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 docs/assets/images/jupyter-notebook-interface.png diff --git a/docs/assets/images/jupyter-notebook-interface.png b/docs/assets/images/jupyter-notebook-interface.png new file mode 100644 index 0000000000000000000000000000000000000000..1f92d2316f558a2df0d27aa8e97021fd513076c8 GIT binary patch literal 59661 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 N002ovPDHLkV1huV(O3Wg literal 0 HcmV?d00001 diff --git a/docs/platforms/linux-workstation.md b/docs/platforms/linux-workstation.md index f527ec5..f54aba0 100644 --- a/docs/platforms/linux-workstation.md +++ b/docs/platforms/linux-workstation.md @@ -4,7 +4,7 @@ hide: --- ### Introduction -The Linux Workstation platform provides a flexible [Ubuntu](https://ubuntu.com/) 20.04 cloud instance, with web-browser access to the graphical desktop or shell. Optionally, users may add an external IP address, which allows the instance to be accessed from a machine outside of the project using [SSH](https://en.wikipedia.org/wiki/Secure_Shell). +The Linux Workstation platform provides a flexible [Ubuntu](https://ubuntu.com/) 22.04 cloud instance, with web-browser access to the graphical desktop or shell. Optionally, users may add an external IP address, which allows the instance to be accessed from a machine outside of the project using [SSH](https://en.wikipedia.org/wiki/Secure_Shell). The workstation instance has a cloud volume (or virtual disk) available at `/data`, which may be useful for working with large datasets. The capacity of this cloud volume is configurable when launching the platform. @@ -23,3 +23,120 @@ The workstation instance has a cloud volume (or virtual disk) available at `/dat ### Advanced #### Platform monitoring A [Grafana](https://grafana.com/oss/grafana/) dashboard for system monitoring is included in the platform, and is accessible from the platforms page. General current and historical system information is visible. + +#### EESSI +The [EESSI](http://www.eessi.io/docs/) suite of software is included in the Workstation appliance. This suite includes a diverse collection of toolkits and modules for research computing purposes. More details on the architecture of the EESSI suite can be found [here](http://www.eessi.io/docs/overview/). + +To assess whether the EESSI suite is functioning correctly, you can run some of their demo environments avaliable in the EESSI demo [Github](https://github.com/EESSI/eessi-demo/tree/main) repository. You can clone the repository using the command below. + +```git clone https://github.com/EESSI/eessi-demo.git``` + +As an example, we can run the TensorFlow demo environment to ensure the environment is setup correctly. It is first neccessary to source the EESSI bash environment, to do this please run the following command. + +```source /cvmfs/pilot.eessi-hpc.org/versions/2021.12/init/bash``` + +This script will initialize the Lua modules for the Software layer in the EESSI stack and source the neccessary environment variables for you to interact with them. To assess whether the script completed successfully, you can try run the ``module avail`` command to list all modules avaliable to you in the environment. A successful initialization should result in an output resembling the one below. + +``` +[EESSI pilot 2021.12] $ module avail + +------ /cvmfs/pilot.eessi-hpc.org/versions/2021.12/software/linux/x86_64/intel/haswell/modules/all ------ + ant/1.10.8-Java-11 + Arrow/0.17.1-foss-2020a-Python-3.8.2 + Bazel/3.6.0-GCCcore-9.3.0 + ... +``` +Now you have a functioning environment, you can begin experimenting with the software included in EESSI. Enter the directory of the EESSI-demo repository we cloned earlier, then enter the TensorFlow directory. + +This TensorFlow project contains a demonstration 4-layer neural network model which runs against the MNIST digits dataset. You can tinker with the ``TensorFlow-2.x_mnist-test.py`` script to setup a different model architecture as you like. To run the default configuration, you can execute the ``run.sh`` script inside the directory, which should produce an evaluation output like below. + +``` +[EESSI pilot 2021.12] $ ./run.sh +2023-10-09 13:15:04.546828: I tensorflow/core/common_runtime/process_util.cc:146] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance. +Epoch 1/5 +1875/1875 [==============================] - 5s 3ms/step - loss: 0.2951 - accuracy: 0.9138 +Epoch 2/5 +1875/1875 [==============================] - 14s 7ms/step - loss: 0.1445 - accuracy: 0.9568 +Epoch 3/5 +1875/1875 [==============================] - 6s 3ms/step - loss: 0.1070 - accuracy: 0.9669 +Epoch 4/5 +1875/1875 [==============================] - 3s 2ms/step - loss: 0.0886 - accuracy: 0.9732 +Epoch 5/5 +1875/1875 [==============================] - 3s 2ms/step - loss: 0.0766 - accuracy: 0.9763 +313/313 - 0s - loss: 0.0745 - accuracy: 0.9774 + +real 0m41.002s +user 2m24.151s +sys 1m54.599s +``` +Guides on how to utilise EESSI further can be found [here](http://www.eessi.io/docs/using_eessi/eessi_demos/). + + +#### Podman + +Podman is a container framework provided in the Workstation appliance for the purpose of installing, managing and developing OCI containers. We **strongly** recommend installing any software you wish to add to the your Workstation via podman, as software installed via the package manager or otherwise located outside of ``/home`` will be removed during image upgrades. In-place upgrades are not supported in the Workstation appliance as to reduce dependancy issues between migrations, instead your ``/home`` directory is kept as a seperate partition and re-mounted after the Workstation has been re-imaged. + +The podman is syntatically similar to the Docker CLI. For instance, we can build and deploy a Jupyter notebook as an example using Podman and access our deployment in the web interface: + +To begin, clone the Jupyter notebook docker repository and navigate to the notebook directory as below: + +```https://github.com/jupyter/docker-stacks.git && cd docker-stacks/images/base-notebook``` + +Build the Jupyter notebook image, and select the docker.io remote when promoted by podman: + +```podman build . --tag jupyter-notebook``` + +Query the list locally available images to ensure the Jupyter notebook built correctly: + +```podman image ls | grep jupyter-notebook``` + +Start the Jupyter notebook container: + +```podman run --name notebook -p 8888:8888 jupyter-notebook``` + +Once the container has finished starting Jupyter notebook will print an access link to the web interface in the console, after navigating to this link in your web browser you should see the Jupyter notebook web interface as shown below: + +![Jupyter notebook web interface](/docs/assets/images/jupyter-notebook-interface.png) + +As this is a base notebook it won't contain many applications for you to explore, you can find more notebooks to build in the [docker-stacks](https://github.com/jupyter/docker-stacks) repository and re-use our previous steps. If setting up the notebook didn't produce any unexpected behaviour, podman is running correctly in your Workstation appliance. For more advanced information about using podman, you can check out the docs [here](https://docs.podman.io/en/latest/). + +#### Apptainer + +Apptainer is another container framework included in the Workstation appliance commonly used in HPC applications, we can use it in a similar way to Podman as both frameworks support OCI containers. We can pull OCI images from Docker Hub similar to Podman: + +```apptainer run docker://base-notebook``` + +The Apptainer console log should contain an access link to the dashboard like Podman. + +#### Custom Images + +Building custom images is supported in Azimuth and there may be several reasons why you want to do this. For introductory purposes we will focus on only adding a single program in this guide. There may be cases where you want to modify the community images more than this, we will briefly touch on upstreaming images, using 'Continuous Integration' and maintaing a downstream repository at the end of this guide. + +You can build your own custom images for Azimuth using the 'azimuth-images' repository as a base. To begin exploring, clone the repository as below: + +```git clone https://github.com/stackhpc/azimuth-images.git``` + +You'll notice several different directories here each with their own purpose, for now we wil focus on the ``ansible`` directory. This directory contains playbooks that add configuration and packages to the 'base' images. In the case of a Workstation appliance, base images will typically be an empty Ubuntu image, we use these playbooks to add VNC/Guacamole configuration, Podman and Zenith support allowing these images to be used in the Azimuth ecosystem. + +In the ``roles`` directory you can see each indivdual component modularised as Ansible roles, in this architecture we can re-purpose code that we may use on multiple different applicances/images (e.g. Zenith). To make a direct change to the Workstation appliance, we can edit the ``linux-webconsole`` role. To have Ansible install 'GNU Octave' as an example, we need to add a task to the `main.yml` playbook as below: + +``` +- name: Install Octave + apt: + name: octave + state: present +``` +Now we have modifed the playbook to install another package, we can use 'Packer' to generate the image. Using Packer requires that you have access to a cloud with a floating IP. Assuming this is the case, you need to define a Packer configuration file for the cloud you're building on. The configuration file used for building images on Sausage Cloud (sausage.pkvars.hcl) looks like this: + +``` +source_image_name = "packer-d32bd27c-3b34-4fab-b8ad-e491147a60da" + +network = "4ca2399f-3040-4686-82fa-e99bd50d215a" +floating_ip = "842fd1f3-0e6f-42e2-aa42-045cf58535b9" +security_groups = ["default"] + +flavor = "cumberland" +distro_name = "ubuntu-jammy" +ssh_username = "ubuntu" +volume_size = 20 +``` diff --git a/docs/platforms/slurm.md b/docs/platforms/slurm.md index 9be584d..668b0b5 100644 --- a/docs/platforms/slurm.md +++ b/docs/platforms/slurm.md @@ -24,4 +24,4 @@ The Slurm platform provides a multi-node HPC environment based on the [Slurm wor #### Platform monitoring A [Grafana](https://grafana.com/oss/grafana/) dashboard for system monitoring is included in the platform, and is accessible from the platforms page. General current and historical system information is visible. -Additionally, Open OnDemand presents monitoring dashboards for each Slurm job. \ No newline at end of file +Additionally, Open OnDemand presents monitoring dashboards for each Slurm job.