PyTorch

PyTorch to otwartoźródłowa biblioteka przeznaczona do uczenia głębokiego, utrzymywana i rozwijana przez grupę Facebook AI Research. Charakteryzuje się dynamicznym podejściem do definiowania sieci neuronowych oraz elastycznym interfejsem, który ułatwia eksperymentowanie z modelami i różnorodnymi strukturami sieci neuronowych. Jednym z istotnych atutów PyTorch jest jego ścisła integracja z akceleracją obliczeń na GPU za pomocą technologii NVIDIA CUDA. Za sprawą takiego podejścia, programiści mogą łatwo przenieść zarówno modele, jak i tensory na GPU za pomocą pojedynczych metod, co znacząco przyspiesza obliczenia. PyTorch wspiera również optymalizację operacji GPU poprzez asynchroniczne wykonywanie obliczeń oraz automatycznej optymalizacji kodu na GPU.

Biblioteka PyTorch wspiera równoległe dokonywanie operacji algebraicznych na tensorach w postaci obiektów klasy Tensor. W związku z tym, programista korzystający z tego podejścia nie ma bezpośredniej kontroli nad procesami transferu i przydziału pamięci oraz nad schematem organizacji wątków.

Implementacja

Cel: funkcja zwracająca zredukowaną sumę wektora pomnożonego przez skalar.

import torch

Do sprawdzenia dostępności GPU z poziomu biblioteki PyTorch przeznaczona jest funkcja is_available() ****dostępna w module cuda.

torch.cuda.is_available()

Funkcja ta zwraca wartość logiczną, więc może z powodzeniem zostać wykorzystana w utworzeniu obiektu automatycznie wskazującego docelowe urządzenie, na którym będą wykonywane obliczenia.

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

Funkcje dokonujące obliczeń równoległych to zwykłe funkcje języka Python, bez żadnych dekoratorów, ani funkcji specjalnych. Należy pamiętać jednak o istotnym założeniu, które wymusza stosowanie obiektów klasy Tensor ****jako parametrów wejściowych.

def compute_on_gpu(x):
    x_device = x.to(device)
    result = (x_device * 2).sum()

    return result.item()
v = torch.randn(1000)
result = compute_on_gpu(v)

Tensorflow

TensorFlow to otwartoźródłowa biblioteka open-source przeznaczona do uczenia głębokiego, rozwijana przez grupę Google Brain. TensorFlow oferuje natywną obsługę akceleracji GPU za pomocą technologii NVIDIA CUDA, co pozwala znacząco przyspieszyć trenowanie modeli. Dzięki dekoratorowi tf.function, biblioteka potrafi automatycznie optymalizować kod i kompilować operacje do postaci wydajnych grafów obliczeniowych, co dodatkowo zwiększa szybkość obliczeń. Ponadto, TensorFlow wykorzystuje kompilator XLA (Accelerated Linear Algebra) do dalszych optymalizacji obliczeń na GPU, a jego menedżer urządzeń automatycznie przypisuje obciążenie do dostępnych rdzeni GPU.