development to main periodic update #77

Merged
mik-tf merged 15 commits from development into main 2024-05-14 22:14:40 +00:00
7 changed files with 237 additions and 2 deletions
Showing only changes of commit 71bd49d905 - Show all commits

View File

@ -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)

View File

@ -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)

View File

@ -0,0 +1,125 @@
<h1> AI & ML Workloads </h1>
<h2> Table of Contents </h2>
- [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=<insert_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.

View File

@ -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)
- [File Transfer](file_transfer.md)
- [Screenshots](screenshots.md)

View File

@ -0,0 +1,75 @@
<h1> Screenshots </h1>
<h2>Table of Contents</h2>
- [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
```

View File

@ -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
```

View File

@ -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)
- [IPFS on a Micro VM](ipfs_microvm.md)
- [AI & ML Workloads](ai_ml_workloads.md)