Saya ingin tahu apakah pytorch
menggunakan GPU saya. Ada kemungkinan untuk mendeteksi nvidia-smi
jika ada aktivitas dari GPU selama proses, tetapi saya ingin sesuatu yang ditulis dalam python
naskah.
Apakah ada cara untuk melakukannya?
Ini akan bekerja:
In [1]: import torch
In [2]: torch.cuda.current_device()
Out[2]: 0
In [3]: torch.cuda.device(0)
Out[3]: <torch.cuda.device at 0x7efce0b03be0>
In [4]: torch.cuda.device_count()
Out[4]: 1
In [5]: torch.cuda.get_device_name(0)
Out[5]: 'GeForce GTX 950M'
In [6]: torch.cuda.is_available()
Out[6]: True
Ini memberitahu saya GPU GeForce GTX 950M
sedang digunakan oleh PyTorch
.
torch.cuda.current_device()
sangat membantu saya. Sayangnya, GPU saya terlalu tua: "Ditemukan GPU0 GeForce GTX 760 yang berkapasitas 3.0. PyTorch tidak lagi mendukung GPU ini karena terlalu tua."torch.cuda.is_available()
$ watch -n 2 nvidia-smi
melakukan pekerjaan. Untuk detail lebih lanjut, silakan lihat jawaban saya di bawah ini .Karena belum diusulkan di sini, saya menambahkan metode menggunakan
torch.device
, karena ini cukup berguna, juga ketika menginisialisasi tensor pada yang benardevice
.Keluaran:
Seperti disebutkan di atas, menggunakan
device
itu adalah mungkin untuk :Untuk memindahkan tensor ke masing-masing
device
:Untuk membuat tensor langsung pada
device
:Yang membuat beralih antara CPU dan GPU nyaman tanpa mengubah kode yang sebenarnya.
Edit:
Karena ada beberapa pertanyaan dan kebingungan tentang memori yang di - cache dan dialokasikan, saya menambahkan beberapa informasi tambahan tentang itu:
torch.cuda.max_memory_cached(device=None)
Mengembalikan memori GPU maksimum yang dikelola oleh pengalokasi caching dalam byte untuk perangkat yang diberikan.
torch.cuda.memory_allocated(device=None)
Mengembalikan penggunaan memori GPU saat ini dengan tensor dalam byte untuk perangkat yang diberikan.
Anda juga dapat langsung menyerahkan
device
sebagaimana ditentukan lebih lanjut di atas di pos atau Anda dapat meninggalkan itu ada dan akan menggunakancurrent_device()
.sumber
## neural network in pytorch
, lalu saya tambahkan kode Anda di akhir. Itu masih menunjukkan Menggunakan perangkat: cuda; dan 0Gb untuk Alokasi dan Tembolok. Juga mencoba memasukkannya di akhir for loopfor i in range(epoch):
setelah back-propagation, masih semua 0GBmy_tensor_on_gpu * my_tensor_on_cpu
akan gagal.Found GPU0 GeForce GT 750M which is of cuda capability 3.0. PyTorch no longer supports this GPU because it is too old. The minimum cuda capability that we support is 3.5.
Setelah Anda mulai menjalankan loop pelatihan, jika Anda ingin menontonnya secara manual dari terminal apakah program Anda menggunakan sumber daya GPU dan sejauh mana, maka Anda dapat menggunakannya
watch
seperti pada:Ini akan terus memperbarui statistik penggunaan setiap 2 detik hingga Anda menekan ctrl+c
Jika Anda membutuhkan lebih banyak kontrol pada statistik GPU lebih mungkin Anda butuhkan, Anda dapat menggunakan versi yang lebih canggih dari
nvidia-smi
dengan--query-gpu=...
. Di bawah ini adalah ilustrasi sederhana ini:yang akan menampilkan statistik seperti:
Catatan : Seharusnya tidak ada spasi di antara nama kueri yang dipisahkan koma di
--query-gpu=...
. Jika tidak, nilai-nilai itu akan diabaikan dan tidak ada statistik yang dikembalikan.Anda juga dapat memeriksa apakah instalasi PyTorch mendeteksi instalasi CUDA Anda dengan benar dengan melakukan:
True
berarti status itu PyTorch dikonfigurasi dengan benar dan yang menggunakan GPU meskipun Anda harus memindahkan / menempatkan tensor dengan pernyataan yang diperlukan dalam kode Anda.Jika Anda ingin melakukan ini di dalam kode Python, lihat modul ini:
https://github.com/jonsafari/nvidia-ml-py atau di pypi di sini: https://pypi.python.org/pypi/nvidia-ml-py/
sumber
watch
bergunaDi situs kantor dan halaman mulai, periksa GPU untuk PyTorch seperti di bawah ini:
Referensi: PyTorch | Dapatkan Mulai
sumber
Dari sudut pandang praktis, hanya satu penyimpangan kecil:
Ini
dev
sekarang tahu apakah cuda atau cpu.Dan ada perbedaan bagaimana Anda berurusan dengan model dan dengan tensor ketika pindah ke cuda. Awalnya agak aneh.
Ini semua sulit dan memahaminya sekali, membantu Anda untuk menangani cepat dengan lebih sedikit debugging.
sumber
M()
? Di manaM
didefinisikan?Untuk memeriksa apakah ada GPU yang tersedia:
Jika fungsi di atas kembali
False
,CUDA_VISIBLE_DEVICES
. Ketika nilaiCUDA_VISIBLE_DEVICES
-1, maka semua perangkat Anda disembunyikan. Anda dapat memeriksa nilai itu dalam kode dengan baris ini:os.environ['CUDA_VISIBLE_DEVICES']
Jika fungsi di atas kembali
True
itu tidak berarti Anda menggunakan GPU. Di Pytorch Anda dapat mengalokasikan tensor ke perangkat saat Anda membuatnya. Secara default, tensor dialokasikan kecpu
. Untuk memeriksa di mana tensor Anda dialokasikan lakukan:Perhatikan bahwa Anda tidak dapat beroperasi pada tensor yang dialokasikan di perangkat yang berbeda. Untuk melihat bagaimana mengalokasikan tensor ke GPU, lihat di sini: https://pytorch.org/docs/stable/notes/cuda.html
sumber
Hampir semua jawaban di sini merujuk
torch.cuda.is_available()
. Namun, itu hanya satu bagian dari koin. Ini memberitahu Anda apakah GPU (sebenarnya CUDA) tersedia, bukan apakah itu benar-benar digunakan. Dalam pengaturan tipikal, Anda akan mengatur perangkat Anda dengan sesuatu seperti ini:tetapi dalam lingkungan yang lebih besar (mis. penelitian) juga umum untuk memberikan pengguna lebih banyak opsi, jadi berdasarkan input mereka dapat menonaktifkan CUDA, menentukan ID CUDA, dan sebagainya. Dalam kasus seperti itu, apakah GPU digunakan atau tidak tidak hanya didasarkan pada apakah GPU itu tersedia atau tidak. Setelah perangkat disetel ke perangkat obor, Anda dapat meminta
type
propertinya memverifikasi apakah itu CUDA atau tidak.sumber
Cukup dari command prompt atau lingkungan Linux jalankan perintah berikut.
Di atas harus dicetak
True
Yang ini harus mencetak yang berikut ini:
sumber
Jika Anda berada di sini karena pytorch Anda selalu memberi
False
untuktorch.cuda.is_available()
itu mungkin karena Anda menginstal versi pytorch Anda tanpa dukungan GPU. (Misalnya: Anda membuat kode di laptop lalu menguji di server).Solusinya adalah menghapus dan menginstal pytorch lagi dengan perintah yang benar dari halaman unduhan pytorch . Lihat juga masalah pytorch ini .
sumber
Buat tensor pada GPU sebagai berikut:
Jangan berhenti, buka terminal lain dan periksa apakah proses python menggunakan GPU menggunakan:
sumber
nvidia-smi
dari baris perintahnvidia-smi
.