PyTorch discrete note draft

Last modified 4 years ago / Edit on Github
Danger icon
The last modifications of this post were around 4 years ago, some information may be outdated!
Danger icon
This is a draft, the content is not complete and of poor quality!

This note is for things with PyTorch. Personal notes only.

Installation

  • Verify that your computer has a graphic card (NVIDIA): lspci -nn | grep '\[03'
  • Check the CUDA version on Ubuntu: nvidia-smi. If have problems, check this note.
  • Install the lates version: here.

Errors

Problem with CUDA version

For example, need to install corresponding versions: torch==1.2.0 <- torchvision==0.4.0 <- Pillow<7.0.0

pip3 install -U torch==1.2.0
pip3 install -U torchvision==0.4.0
pip3 install -U "pillow<7"

Another option (worked on XPS 15 7950): torch==1.5.1, torchvision==0.6.1, pillow==7.2.0 (with nvcc --version is 11.1).

NVIDIA too old

Problem The NVIDIA driver on your system is too old (found version 10010).

From this website, problem is solved by

  1. Switching from nvidia-driver-435 to nvidia-driver-440.
  2. Restart the computer.

It works on Dell XPS 7950 whose GPU is NVIDIA GTX 1650.

Others

🔅 RuntimeError: cuda runtime error (804) : forward compatibility was attempted on non supported HW at /pytorch/aten/src/THC/THCGeneral.cpp:47 (after update system including nvdia-cli, maybe): check this note.

Import

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim

Device's info

print('cuda is available? ', torch.cuda.is_available())
print('device_count: ', torch.cuda.device_count())
print('current device: ', torch.cuda.current_device())
print('device name: ', torch.cuda.get_device_name(0))
# Determine supported device
def get_device():
if torch.cuda.is_available():
device = torch.device('cuda:0') # or something else
else:
device = torch.device('cpu') # don't have GPU
return device

Convert DataFrame / Series to Tensor

def df_to_tensor(df):
device = get_device() # see other section
return torch.from_numpy(df.values).float().to(device)

💬 Comments

Support Thi Support Thi