[PYTHON] Aufbau einer maschinellen Lernumgebung mit Tellus GPU-Server (Sakura High-Heat-Computing)

Einführung

Überprüfungsumgebung

Item Version
OS Ubuntu 18.04
OpenSSH 7.6p1

GPU-Server beantragen (über Tellus)

Tellus

Über den GPU-Server

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

Anwendungsablauf

  1. Beantragen Sie nach der Registrierung als Mitglied von Tellus (kostenlos) eine Entwicklungsumgebung.
  1. Der Zeitraum kann zwischen 1 Monat, 3 Monaten oder mehr gewählt werden (Beratung erforderlich)
  1. Nach einer Weile nach der Bewerbung werden Sie von der Operation mit Ihrer Login-ID kontaktiert.

Umgebungsbau (GPU)

Befolgen Sie grundsätzlich die Anweisungen unter Installationsverfahren für CUDA Toolkit / GPU-Kartentreiber.

Serverinformation

Tellus-Konto-Dashboard → Siehe Entwicklungsumgebung

Item Entsprechender Artikel
Server IP Umgebungshostname / IP
Anmelde-ID Per E-Mail vom Management gesendet
Erstes Passwort Token-Informationen / SSHPW-Informationen

tellus_dashboard.png

Verbinden zum Server

~/.ssh/config


Host tellus
     HostName [Umgebungshostname / IP]
     User [Anmelde-ID]
     IdentityFile ~/.ssh/id_rsa

Paketaktualisierung und Installation

Vorbereitung vor der Installation des GPU-Treibers

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/

Installationsbestätigung

nvidia-smi.png

Umgebungskonstruktion (Python)

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


export PYTHONPATH="/home/[Anmelde-ID]/anaconda3/envs/py38/lib/python3.8:/home/[Anmelde-ID]/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

~/.ssh/config


Host tellus
     HostName [Umgebungshostname / IP]
     User [Anmelde-ID]
     IdentityFile ~/.ssh/id_rsa
     LocalForward [Clientseitige Portnummer] localhost:5000

QGIS

conda install -c conda-forge qgis=3.10.8

Funktionsprüfung

GPU lernen

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)

CPU-Ergebnis cpu_batch_1024.png cpu_batch_1024_smi.png

GPU-Ergebnis gpu_batch_1024.png gpu_batch_1024_smi.png

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

Ergebnisbild mlflow_localforward.png mlflow_test.png mlflow_sinwave.png

QGIS

ssh -X tellus
qgis

VS-Code verwenden

conda install -c conda-forge ipykernel

abschließend

Referenzseite

Tellus FAQ Takenoko Blog-Erstellen einer PyTorch-Umgebung vom GPU-Server von Tellus

Recommended Posts

Aufbau einer maschinellen Lernumgebung mit Tellus GPU-Server (Sakura High-Heat-Computing)
Erstellen einer Python-Umgebung auf dem Sakura VPS-Server
Erstellen Sie eine Python-Umgebung für maschinelles Lernen mit Containern
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Konstruktionsnotiz für eine maschinelle Lernumgebung von Python
Erstellen Sie mit Winsows 10 eine maschinelle Lernumgebung von Grund auf neu
(Jetzt) Erstellen Sie eine GPU Deep Learning-Umgebung mit GeForce GTX 960
Erstellen einer Kubernetes-Umgebung mit ansible 2
Wie wäre es mit Anaconda zum Erstellen einer maschinellen Lernumgebung mit Python?
Eine Geschichte über maschinelles Lernen mit Kyasuket
Erstellen einer Python 3.6-Umgebung mit Windows + PowerShell
Erstellen einer Entwicklungsumgebung für maschinelles Lernen
Aufbau einer KI / maschinellen Lernumgebung mit Python
Erstellen einer Python-Umgebung mit virtualenv und direnv
So bereiten Sie die Umgebung mit Courseras fortgeschrittenem Kurs für maschinelles Lernen auf Google Colab vor
So erstellen Sie schnell eine maschinelle Lernumgebung mit Jupyter Notebook mit UbuntuServer 16.04 LTS
Bis Sie mit Python unter Windows 7 eine maschinelle Lernumgebung erstellen und ausführen
Empfehlung zum Erstellen einer tragbaren Python-Umgebung mit conda
Führen Sie eine Pipeline für maschinelles Lernen mit Cloud Dataflow (Python) aus.
Erstellen Sie eine Python-Umgebung für maschinelles Lernen unter Mac OS
Erstellen einer TensorFlow-Umgebung, die GPUs unter Windows 10 verwendet
conda Hinweis: Erstellen einer Python-Umgebung mit Spacon ITO
Windows10 (x64) Erstellen Sie nativ eine maschinelle Lernumgebung
So erstellen Sie schnell eine maschinelle Lernumgebung mit Jupyter Notebook mit UbuntuServer 16.04 LTS mit anaconda
Neuerstellung der Umgebung für maschinelles Lernen mit Miniconda (Windows-Version)
Erstellen Sie mit macOS sierra eine Python-Lernumgebung für maschinelles Lernen
Erstellen Sie eine maschinelle Lernumgebung auf einem Mac (pyenv, deeplearning, opencv).
Erstellen Sie eine App für maschinelles Lernen mit ABEJA Platform + LINE Bot
Zusammenfassung vom Erstellen von Python 3.4. * Von der Quelle zum Erstellen einer wissenschaftlichen Computerumgebung
Starten einer maschinellen Lernumgebung mit Google Compute Engine (GCE)
Einstellungen der Python3-basierten maschinellen Lernumgebung auf dem Mac (Koexistenz mit Python2)
Erstellen Sie eine PyData-Umgebung für eine Lernsitzung zum maschinellen Lernen (Januar 2017).
Aufbau einer Auto-Sklearn-Umgebung, die maschinelles Lernen halbautomatisiert (Mac & Docker)
Schnelle Schritte zum Erstellen einer maschinellen Lernumgebung mit Jupyter Notebook unter macOS Sierra mit anaconda
Maschinelles Lernen mit Pokemon gelernt
Maschinelles Lernen mit Python! Vorbereitung
Erstellen einer virtuellen Python-Umgebung
Maschinelles Lernen Minesweeper mit PyTorch
Versuchen Sie es mit Kaggle leicht maschinell
Eine Geschichte, die mit der Installation der maschinellen Lernbibliothek JAX zusammenhängt
Erstellen einer Entwicklungsumgebung mit Maven in Google App Engine [Java]
Erstellen Sie mit GCP + Docker + Jupyter Lab eine beliebige Umgebung für maschinelles Lernen
Erstellen einer Umgebung zum Ausführen von ChainerMN auf einer AWS-GPU-Instanz
So erstellen Sie mit AWS Lambda eine serverlose API für maschinelles Lernen