| Item | Version | 
|---|---|
| OS | Ubuntu 18.04 | 
| OpenSSH | 7.6p1 | 
Tellus
| Item | Spec | 
|---|---|
| OS | Ubuntu 18.04(64bit) | 
| GPU | NVIDIA Tesla V100 (32GB) ×1 | 
| CPU | Xeon 4Core 3.7GHz 1CPU | 
| Disk | MLC SSD 480GB ×2 | 
| Memory | 64GB | 
En gros, suivez la procédure de Procédure d'installation du pilote de la carte CUDA Toolkit / GPU
Tableau de bord du compte Tellus → Voir l'environnement de développement
| Item | Article correspondant | 
|---|---|
| IP du serveur | Nom d'hôte / IP de l'environnement | 
| Identifiant de connexion | Envoyé par email de la direction | 
| Mot de passe initial | Informations sur les jetons / informations SSHPW | 

~ / .ssh / config~/.ssh/config
Host tellus
     HostName [Nom d'hôte / IP de l'environnement]
     User [Identifiant de connexion]
     IdentityFile ~/.ssh/id_rsa
ssh tellus sur le terminal et il vous sera demandé le mot de passe.Entrez le mot de passe initial pour terminer la connexion.Préparation avant d'installer le pilote GPU
sudo apt update
sudo apt upgrade
apt install build-essential
apt install dkms
CUDA Toolkit
wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
sudo sh cuda_10.2.89_440.33.01_linux.run
chmod +x cuda_10.2.89_440.33.01_linux.run
sudo ./cuda_10.2.89_440.33.01_linux.run --toolkit --samples --samplespath=/usr/local/cuda-samples --no-opengl-libs
/etc/profile.d/cuda.sh
export CUDA_HOME="/usr/local/cuda" 
export PATH="$CUDA_HOME/bin:$PATH" 
export LD_LIBRARY_PATH="/usr/local/lib:$CUDA_HOME/lib64:$LD_LIBRARY_PATH" 
export CPATH="/usr/local/include:$CUDA_HOME/include:$CPATH" 
export INCLUDE_PATH="$CUDA_HOME/include" 
shell:/etc/profile.d/cuda.csh
export CUDA_HOME="/usr/local/cuda" 
export PATH="$CUDA_HOME/bin:$PATH" 
export LD_LIBRARY_PATH="/usr/local/lib:$CUDA_HOME/lib64:$LD_LIBRARY_PATH" 
export CPATH="/usr/local/include:$CUDA_HOME/include:$CPATH" 
export INCLUDE_PATH="$CUDA_HOME/include" 
CUDA Driver
wget https://us.download.nvidia.com/tesla/440.95.01/NVIDIA-Linux-x86_64-440.95.01.run
chmod +x NVIDIA-Linux-x86_64-440.95.01.run
sudo ./NVIDIA-Linux-x86_64-440.95.01.run --no-opengl-files --no-libglx-indirect --dkms
cuDNN
client
scp -r cudnn-10.2-linux-x64-v8.0.3.33.tgz tellus:~/
server
tar xvzf cudnn-10.2-linux-x64-v8.0.3.33.tgz
sudo mv cuda/include/cudnn.h /usr/local/cuda/include/
sudo mv cuda/lib64/* /usr/local/cuda/lib64/
nvidia-smi
Anaconda
wget https://repo.anaconda.com/archive/Anaconda3-2020.07-Linux-x86_64.sh
sudo bash Anaconda3-2020.07-Linux-x86_64.sh
conda update -n base conda
.bashrc (py38 est le nom de l'environnement).bashrc
export PYTHONPATH="/home/[Identifiant de connexion]/anaconda3/envs/py38/lib/python3.8:/home/[Identifiant de connexion]/anaconda3/envs/py38/lib/python3.8/site-packages:$PYTHONPATH"
PyTorch
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
MLFlow
conda install -c conda-forge mlflow
Si vous entrez mlflow ui, l'interface utilisateur sera lancée à localhost: 5000, et vous pouvez vérifier les résultats expérimentaux avec le navigateur.

Ajoutez le paramètre LocalForward à ~ / .ssh / config afin qu'il puisse être affiché sur le navigateur côté client lorsque l'interface utilisateur est lancée côté serveur.
~/.ssh/config
Host tellus
     HostName [Nom d'hôte / IP de l'environnement]
     User [Identifiant de connexion]
     IdentityFile ~/.ssh/id_rsa
     LocalForward [Numéro de port côté client] localhost:5000
QGIS
conda install -c conda-forge qgis=3.10.8
nvidia-smi lors de l'exécution du codedevice = torch.device (" cpu ")cifar10.py
import os
import torch
import torch.nn as nn
import torch.optim as optim
import torchvision.models as models
import torchvision.transforms as transforms
from torch.utils.data import DataLoader
from torchvision.datasets import CIFAR10
from tqdm import tqdm
batch = 1024
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
def dataloader(is_train: bool, transform: transforms.Compose) -> DataLoader:
    dataset = CIFAR10(root='./data', train=is_train, download=True, transform=transform)
    return DataLoader(dataset, batch_size=batch, shuffle=is_train, num_workers=os.cpu_count())
def model() -> nn.Module:
    model = models.resnet18(pretrained=True)
    model.fc = nn.Linear(512, 10)
    return model.to(device)
def training(net: nn.Module, trainloader: DataLoader, epochs: int) -> None:
    # loss function & optimizer
    criterion = nn.CrossEntropyLoss()
    optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
    for epoch in range(epochs):  # loop over the dataset multiple times
        running_loss = 0.0
        bar = tqdm(trainloader, desc="training model [epoch:{:02d}]".format(epoch), total=len(trainloader))
        for data in bar:
            # get the inputs; data is a list of [inputs, labels]
            inputs, labels = data[0].to(device), data[1].to(device)
            # zero the parameter gradients
            optimizer.zero_grad()
            # forward + backward + optimize
            outputs = net(inputs)
            loss = criterion(outputs, labels)
            loss.backward()
            optimizer.step()
            running_loss += loss.item()
            bar.set_postfix(device=device, batch=batch, loss=(running_loss / len(trainloader)))
    print('Finished Training')
transform = transforms.Compose(
    [transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
trainloader = dataloader(True, transform)
net = model()
training(net, trainloader, 3)
Résultat CPU

Résultat GPU

MLFlow
record_sin.py
from math import pi, sin
import mlflow
mlflow.set_experiment('test')
amplitude = 2.0
with mlflow.start_run() as _:
    mlflow.log_param('amplitude', amplitude)
    for i in range(360):
        sin_val = amplitude * sin(i * pi / 180.)
        mlflow.log_metric('sin wave', sin_val, step=i)
~/test_code/
python record_sin.py
mlflow ui
Image de résultat

QGIS
ssh -X tellus
qgis
cifar10.py et record_sin.py

conda install -c conda-forge ipykernel
Tellus FAQ Blog Takenoko - Création d'un environnement PyTorch à partir du serveur GPU de Tellus
Recommended Posts