From 71bd49d9052d321239241272c372741abfd0b168 Mon Sep 17 00:00:00 2001 From: Mik-TF Date: Tue, 14 May 2024 16:21:27 -0400 Subject: [PATCH] manual, update new pr --- books/manual/SUMMARY.md | 2 + .../advanced/advanced.md | 1 + .../advanced/ai_ml_workloads.md | 125 ++++++++++++++++++ .../computer_it_basics/computer_it_basics.md | 3 +- .../computer_it_basics/screenshots.md | 75 +++++++++++ .../mycelium/information.md | 29 ++++ .../system_administrators.md | 4 +- 7 files changed, 237 insertions(+), 2 deletions(-) create mode 100644 collections/system_administrators/advanced/ai_ml_workloads.md create mode 100644 collections/system_administrators/computer_it_basics/screenshots.md diff --git a/books/manual/SUMMARY.md b/books/manual/SUMMARY.md index 3526b9b..ee96d88 100644 --- a/books/manual/SUMMARY.md +++ b/books/manual/SUMMARY.md @@ -242,6 +242,7 @@ - [UFW Basics](system_administrators/computer_it_basics/firewall_basics/ufw_basics.md) - [Firewalld Basics](system_administrators/computer_it_basics/firewall_basics/firewalld_basics.md) - [File Transfer](system_administrators/computer_it_basics/file_transfer.md) + - [Screenshots](system_administrators/computer_it_basics/screenshots.md) - [Advanced](system_administrators/advanced/advanced.md) - [Token Transfer Keygenerator](system_administrators/advanced/token_transfer_keygenerator.md) - [Cancel Contracts](system_administrators/advanced/cancel_contracts.md) @@ -251,6 +252,7 @@ - [IPFS](system_administrators/advanced/ipfs/ipfs_toc.md) - [IPFS on a Full VM](system_administrators/advanced/ipfs/ipfs_fullvm.md) - [IPFS on a Micro VM](system_administrators/advanced/ipfs/ipfs_microvm.md) + - [AI & ML Workloads](system_administrators/advanced/ai_ml_workloads.md) - [ThreeFold Token](threefold_token/threefold_token.md) - [TFT Bridges](threefold_token/tft_bridges/tft_bridges.md) - [TFChain-Stellar Bridge](threefold_token/tft_bridges/tfchain_stellar_bridge.md) diff --git a/collections/system_administrators/advanced/advanced.md b/collections/system_administrators/advanced/advanced.md index fbe0fc7..fbf2a94 100644 --- a/collections/system_administrators/advanced/advanced.md +++ b/collections/system_administrators/advanced/advanced.md @@ -12,3 +12,4 @@ In this section, we delve into sophisticated topics and powerful functionalities - [IPFS](ipfs_toc.md) - [IPFS on a Full VM](ipfs_fullvm.md) - [IPFS on a Micro VM](ipfs_microvm.md) +- [AI & ML Workloads](ai_ml_workloads.md) \ No newline at end of file diff --git a/collections/system_administrators/advanced/ai_ml_workloads.md b/collections/system_administrators/advanced/ai_ml_workloads.md new file mode 100644 index 0000000..bc5760e --- /dev/null +++ b/collections/system_administrators/advanced/ai_ml_workloads.md @@ -0,0 +1,125 @@ +

AI & ML Workloads

+ +

Table of Contents

+ +- [Introduction](#introduction) +- [Prerequisites](#prerequisites) +- [Prepare the System](#prepare-the-system) +- [Install the GPU Driver](#install-the-gpu-driver) +- [Set a Python Virtual Environment](#set-a-python-virtual-environment) +- [Install PyTorch and Test Cuda](#install-pytorch-and-test-cuda) +- [Set and Access Jupyter Notebook](#set-and-access-jupyter-notebook) +- [Run AI/ML Workloads](#run-aiml-workloads) + +*** + +## Introduction + +We present a basic method to deploy artificial intelligence (AI) and machine learning (ML) on the TFGrid. For this, we make use of dedicated nodes and GPU support. + +In the first part, we show the steps to install the Nvidia driver of a GPU card on a full VM Ubuntu 22.04 running on the TFGrid. + +In the second part, we show how to use PyTorch to run AI/ML tasks. + +## Prerequisites + +You need to reserve a [dedicated GPU node](../../dashboard/deploy/node_finder.md#dedicated-nodes) on the ThreeFold Grid. + +## Prepare the System + +- Update the system + ``` + dpkg --add-architecture i386 + apt-get update + apt-get dist-upgrade + reboot + ``` +- Check the GPU info + ``` + lspci | grep VGA + lshw -c video + ``` + +## Install the GPU Driver + +- Download the latest Nvidia driver + - Check which driver is recommended + ``` + apt install ubuntu-drivers-common + ubuntu-drivers devices + ``` + - Install the recommended driver (e.g. with 535) + ``` + apt install nvidia-driver-535 + ``` + - Reboot and reconnect to the VM +- Check the GPU status + ``` + nvidia-smi + ``` + +Now that the GPU node is set, let's work on setting PyTorch to run AI/ML workloads. + +## Set a Python Virtual Environment + +Before installing Python package with pip, you should create a virtual environment. + +- Install the prerequisites + ``` + apt update + apt install python3-pip python3-dev + pip3 install --upgrade pip + pip3 install virtualenv + ``` +- Create a virtual environment + ``` + mkdir ~/python_project + cd ~/python_project + virtualenv python_project_env + source python_project_env/bin/activate + ``` + +## Install PyTorch and Test Cuda + +Once you've created and activated a virtual environment for Pyhton, you can install different Python packages. + +- Install PyTorch and upgrade Numpy + ``` + pip3 install torch + pip3 install numpy --upgrade + ``` + +Before going further, you can check if Cuda is properly installed on your machine. + +- Check that Cuda is available on Python with PyTorch by using the following lines: + ``` + import torch + torch.cuda.is_available() + torch.cuda.device_count() # the output should be 1 + torch.cuda.current_device() # the output should be 0 + torch.cuda.device(0) + torch.cuda.get_device_name(0) + ``` + +## Set and Access Jupyter Notebook + +You can run Jupyter Notebook on the remote VM and access it on your local browser. + +- Install Jupyter Notebook + ``` + pip3 install notebook + ``` +- Run Jupyter Notebook in no-browser mode and take note of the URL and the token + ``` + jupyter notebook --no-browser --port=8080 --ip=0.0.0.0 + ``` +- On your local machine, copy and paste on a browser the given URL but make sure to change `127.0.0.1` with the WireGuard IP (here it is `10.20.4.2`) and to set the correct token. + ``` + http://10.20.4.2:8080/tree?token= + ``` + +## Run AI/ML Workloads + +After following the steps above, you should now be able to run Python codes that will make use of your GPU node to compute AI and ML workloads. + +Feel free to explore different ways to use this feature. For example, the [HuggingFace course](https://huggingface.co/learn/nlp-course/chapter1/1) on natural language processing is a good introduction to machine learning. \ No newline at end of file diff --git a/collections/system_administrators/computer_it_basics/computer_it_basics.md b/collections/system_administrators/computer_it_basics/computer_it_basics.md index a78bebd..d6ae44c 100644 --- a/collections/system_administrators/computer_it_basics/computer_it_basics.md +++ b/collections/system_administrators/computer_it_basics/computer_it_basics.md @@ -12,4 +12,5 @@ In this section, tailored specifically for system administrators, we'll delve in - [Firewall Basics](firewall_basics.md) - [UFW Basics](ufw_basics.md) - [Firewalld Basics](firewalld_basics.md) -- [File Transfer](file_transfer.md) \ No newline at end of file +- [File Transfer](file_transfer.md) +- [Screenshots](screenshots.md) \ No newline at end of file diff --git a/collections/system_administrators/computer_it_basics/screenshots.md b/collections/system_administrators/computer_it_basics/screenshots.md new file mode 100644 index 0000000..5d23b74 --- /dev/null +++ b/collections/system_administrators/computer_it_basics/screenshots.md @@ -0,0 +1,75 @@ +

Screenshots

+ +

Table of Contents

+ +- [Introduction](#introduction) +- [Linux](#linux) +- [MAC](#mac) +- [Windows](#windows) + +*** + +## Introduction + +In this section, we show how to easily take screenshots on Linux, MAC and Windows. + +## Linux + +- Copy to the clipboard a full screenshot +``` +PrintScreen +``` +- Copy to the clipboard a screenshot of an active window +``` +Alt + PrintScreen +``` +- Copy to the clipboard a screenshot of an active app +``` +Control + Alt + PrintScreen +``` +- Copy to the clipboard a screenshot of a selected area +``` +Shift + PrintScreen +``` + +## MAC + +- Save to the desktop a full screenshot +``` +Shift + Command (⌘) + 3 +``` +- Save to the desktop a screenshot of an active window +``` +Shift + Command (⌘) + 4 + Spacebar +``` +- Copy to the clipboard a screenshot of an active window +``` +Shift + Control + Command (⌘) + 3 +``` +- Save to the desktop a screenshot of a selected area +``` +Shift + Command (⌘) + 4 +``` +- Copy to the clipboard a screenshot of a selected area +``` +Shift + Control + Command (⌘) + 4 +``` + +## Windows + +- Copy to the clipboard a full screenshot +``` +PrintScreen +``` +- Save to the pictures directory a full screenshot +``` +Windows key + PrintScreen +``` +- Copy to the clipboard a screenshot of an active window +``` +Alt + PrintScreen +``` +- Copy to the clipboard a selected area of the screen +``` +Windows key + Shift + S +``` \ No newline at end of file diff --git a/collections/system_administrators/mycelium/information.md b/collections/system_administrators/mycelium/information.md index a9eee41..4fbd80d 100644 --- a/collections/system_administrators/mycelium/information.md +++ b/collections/system_administrators/mycelium/information.md @@ -14,6 +14,7 @@ - [API](#api) - [Message System](#message-system) - [Inspecting Node Keys](#inspecting-node-keys) +- [Permanently Enable Mycelium](#permanently-enable-mycelium) *** @@ -150,4 +151,32 @@ Where the output could be something like this: ```sh Public key: a47c1d6f2a15b2c670d3a88fbe0aeb301ced12f7bcb4c8e3aa877b20f8559c02 Address: 27f:b2c5:a944:4dad:9cb1:da4:8bf7:7e65 +``` + +## Permanently Enable Mycelium + +It is possible to permenently enable Mycelium on your client. + +For Linux, we use systemd to manage the mycelium daemon in `/storage/`. Here's an example: + +``` +[Unit] +Description=End-2-end encrypted IPv6 overlay network +Wants=network.target +After=network.target +Documentation=https://github.com/threefoldtech/mycelium +[Service] +ProtectHome=true +ProtectSystem=true +SyslogIdentifier=mycelium +CapabilityBoundingSet=CAP_NET_ADMIN +StateDirectory=mycelium +StateDirectoryMode=0700 +ExecStartPre=+-/sbin/modprobe tun +ExecStart=/storage/mycelium --no-tun --disable-peer-discovery -k %S/mycelium/key.bin --peers tcp://[2a01:4f8:221:1e0b::2]:9651 tcp://[2a01:4f8:212:fa6::2]:9651 tcp://[2a02:1802:5e:0:8478:51ff:fee2:3331]:9651 tcp://[2a02:1802:5e:0:8c9e:7dff:fec9:f0d2]:9651 tcp://[2a01:4f9:5a:1042::2]:9651 +Restart=always +RestartSec=5 +TimeoutStopSec=5 +[Install] +WantedBy=multi-user.target ``` \ No newline at end of file diff --git a/collections/system_administrators/system_administrators.md b/collections/system_administrators/system_administrators.md index f76b33a..9779656 100644 --- a/collections/system_administrators/system_administrators.md +++ b/collections/system_administrators/system_administrators.md @@ -72,6 +72,7 @@ For complementary information on ThreeFold grid and its cloud component, refer t - [UFW Basics](ufw_basics.md) - [Firewalld Basics](firewalld_basics.md) - [File Transfer](file_transfer.md) + - [Screenshots](screenshots.md) - [Advanced](advanced.md) - [Token Transfer Keygenerator](token_transfer_keygenerator.md) - [Cancel Contracts](cancel_contracts.md) @@ -80,4 +81,5 @@ For complementary information on ThreeFold grid and its cloud component, refer t - [Redis](grid3_redis.md) - [IPFS](ipfs_toc.md) - [IPFS on a Full VM](ipfs_fullvm.md) - - [IPFS on a Micro VM](ipfs_microvm.md) \ No newline at end of file + - [IPFS on a Micro VM](ipfs_microvm.md) + - [AI & ML Workloads](ai_ml_workloads.md) \ No newline at end of file