• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Akceleracja obliczeń GPU

Object Storage Arubacloud
+2 głosów
128 wizyt
pytanie zadane 2 lutego w Python przez MichaelM Bywalec (2,540 p.)

Cześć,
jestem początkujący w Machine Learning i dotychczas korzystałem z NumPy. Chce akcelerować swoje modele za pomocą GPU (posiadam GeForce RTX 4070). Znalazłem informacje o tym, że należy użyć do tego celu CuPy. Niestety nic nie działa, dostaje błąd. Kroki, które wykonywałem przy instalacji CuPy:
1. Instalacja VS Community 2022
2. Instalacja CUDA Toolkit
3. Wejście w PyCharm i instalacja cupy-cuda12x (nie działało więc odinstalowałem i zainstalowałem cupy, ciągle nic)

4. Uruchomienie programu
5. Błąd (przedstawiony niżej):
 

Traceback (most recent call last):
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 677, in compile
    nvrtc.compileProgram(self.ptr, options)
  File "cupy_backends\cuda\libs\nvrtc.pyx", line 125, in cupy_backends.cuda.libs.nvrtc.compileProgram
  File "cupy_backends\cuda\libs\nvrtc.pyx", line 138, in cupy_backends.cuda.libs.nvrtc.compileProgram
  File "cupy_backends\cuda\libs\nvrtc.pyx", line 53, in cupy_backends.cuda.libs.nvrtc.check_status
cupy_backends.cuda.libs.nvrtc.NVRTCError: NVRTC_ERROR_COMPILATION (6)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "cupy\_core\_reduction.pyx", line 681, in cupy._core._reduction._SimpleReductionKernel._get_function
  File "cupy\_util.pyx", line 64, in cupy._util.memoize.decorator.ret
  File "cupy\_core\_reduction.pyx", line 706, in cupy._core._reduction._SimpleReductionKernel_get_cached_function
  File "cupy\_core\_reduction.pyx", line 138, in cupy._core._reduction._create_reduction_function
  File "cupy\_core\_reduction.pyx", line 125, in cupy._core._reduction._create_reduction_function_from_code
  File "cupy\_core\core.pyx", line 2254, in cupy._core.core.compile_with_cache
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 484, in _compile_module_with_cache
    return _compile_with_cache_cuda(
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 562, in _compile_with_cache_cuda
    ptx, mapping = compile_using_nvrtc(
                   ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 319, in compile_using_nvrtc
    return _compile(source, options, cu_path,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 303, in _compile
    compiled_obj, mapping = prog.compile(options, log_stream)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 696, in compile
    raise CompileException(log, self.src, self.name, options,
cupy.cuda.compiler.CompileException: C:\Users\malec\AppData\Local\Temp\tmpkkrsbom1\653691e482d780494f33cf05efa51234681955e4.cubin.cu(1): catastrophic error: cannot open source file "cupy/complex.cuh"
  #include <cupy/complex.cuh>
                             ^

1 catastrophic error detected in the compilation of "C:\Users\malec\AppData\Local\Temp\tmpkkrsbom1\653691e482d780494f33cf05efa51234681955e4.cubin.cu".
Compilation terminated.

Exception ignored in: 'cupy._core._reduction._AbstractReductionKernel._launch'
Traceback (most recent call last):
  File "cupy\_core\_reduction.pyx", line 681, in cupy._core._reduction._SimpleReductionKernel._get_function
  File "cupy\_util.pyx", line 64, in cupy._util.memoize.decorator.ret
  File "cupy\_core\_reduction.pyx", line 706, in cupy._core._reduction._SimpleReductionKernel_get_cached_function
  File "cupy\_core\_reduction.pyx", line 138, in cupy._core._reduction._create_reduction_function
  File "cupy\_core\_reduction.pyx", line 125, in cupy._core._reduction._create_reduction_function_from_code
  File "cupy\_core\core.pyx", line 2254, in cupy._core.core.compile_with_cache
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 484, in _compile_module_with_cache
    return _compile_with_cache_cuda(
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 562, in _compile_with_cache_cuda
    ptx, mapping = compile_using_nvrtc(
                   ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 319, in compile_using_nvrtc
    return _compile(source, options, cu_path,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 303, in _compile
    compiled_obj, mapping = prog.compile(options, log_stream)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 696, in compile
    raise CompileException(log, self.src, self.name, options,
cupy.cuda.compiler.CompileException: C:\Users\malec\AppData\Local\Temp\tmpkkrsbom1\653691e482d780494f33cf05efa51234681955e4.cubin.cu(1): catastrophic error: cannot open source file "cupy/complex.cuh"
  #include <cupy/complex.cuh>
                             ^

1 catastrophic error detected in the compilation of "C:\Users\malec\AppData\Local\Temp\tmpkkrsbom1\653691e482d780494f33cf05efa51234681955e4.cubin.cu".
Compilation terminated.

Traceback (most recent call last):
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 677, in compile
    nvrtc.compileProgram(self.ptr, options)
  File "cupy_backends\cuda\libs\nvrtc.pyx", line 125, in cupy_backends.cuda.libs.nvrtc.compileProgram
  File "cupy_backends\cuda\libs\nvrtc.pyx", line 138, in cupy_backends.cuda.libs.nvrtc.compileProgram
  File "cupy_backends\cuda\libs\nvrtc.pyx", line 53, in cupy_backends.cuda.libs.nvrtc.check_status
cupy_backends.cuda.libs.nvrtc.NVRTCError: NVRTC_ERROR_COMPILATION (6)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\gpt.py", line 11, in <module>
    X_mean = cp.mean(metraz_pokoje_array, axis=0)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\_statistics\meanvar.py", line 162, in mean
    return a.mean(axis=axis, dtype=dtype, out=out, keepdims=keepdims)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "cupy\_core\core.pyx", line 1111, in cupy._core.core._ndarray_base.mean
  File "cupy\_core\core.pyx", line 1120, in cupy._core.core._ndarray_base.mean
  File "cupy\_core\_routines_statistics.pyx", line 169, in cupy._core._routines_statistics._ndarray_mean
  File "cupy\_core\core.pyx", line 512, in cupy._core.core._ndarray_base.astype
  File "cupy\_core\core.pyx", line 580, in cupy._core.core._ndarray_base.astype
  File "cupy\_core\_kernel.pyx", line 1375, in cupy._core._kernel.ufunc.__call__
  File "cupy\_core\_kernel.pyx", line 1402, in cupy._core._kernel.ufunc._get_ufunc_kernel
  File "cupy\_core\_kernel.pyx", line 1082, in cupy._core._kernel._get_ufunc_kernel
  File "cupy\_core\_kernel.pyx", line 94, in cupy._core._kernel._get_simple_elementwise_kernel
  File "cupy\_core\_kernel.pyx", line 82, in cupy._core._kernel._get_simple_elementwise_kernel_from_code
  File "cupy\_core\core.pyx", line 2254, in cupy._core.core.compile_with_cache
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 484, in _compile_module_with_cache
    return _compile_with_cache_cuda(
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 562, in _compile_with_cache_cuda
    ptx, mapping = compile_using_nvrtc(
                   ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 319, in compile_using_nvrtc
    return _compile(source, options, cu_path,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 303, in _compile
    compiled_obj, mapping = prog.compile(options, log_stream)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\malec\Pulpit\Projekty\Projekty AI\2024\Ceny Mieszkań\venv\Lib\site-packages\cupy\cuda\compiler.py", line 696, in compile
    raise CompileException(log, self.src, self.name, options,
cupy.cuda.compiler.CompileException: C:\Users\malec\AppData\Local\Temp\tmpr4cql57a\dac40a27f66c11638c540f0f0f03f66475c48a8e.cubin.cu(1): catastrophic error: cannot open source file "cupy/complex.cuh"
  #include <cupy/complex.cuh>
                             ^

1 catastrophic error detected in the compilation of "C:\Users\malec\AppData\Local\Temp\tmpr4cql57a\dac40a27f66c11638c540f0f0f03f66475c48a8e.cubin.cu".
Compilation terminated.


Process finished with exit code 1

Mój kod to prosty program przerobiony z NumPy na CuPy:
 

import cupy as cp
import numpy as np

# Odczytaj dane z pliku
with open('datashet.txt', 'r') as file:
    dane = [list(map(int, wiersz.split())) for wiersz in file.readlines()]

# Podziel dane na dwie tablice CuPy: metraz_pokoje_array i cena_array
metraz_pokoje_array = cp.array([wiersz[:2] for wiersz in dane])
cena_normalized = cp.array([wiersz[2] for wiersz in dane])
X_mean = cp.mean(metraz_pokoje_array, axis=0)
X_std = cp.std(metraz_pokoje_array, axis=0)
metraz_pokoje_normalized = (metraz_pokoje_array - X_mean) / X_std

wagi = cp.random.randn(3)
print(wagi)
alfa = 0.01

def backProp(wagi, Z, L, metraz_pokoje_normalized, alfa):
    gradients = -2/len(Z) * cp.mean((cena_normalized - Z) * metraz_pokoje_normalized.T, axis=1)
    wagi[:2] = wagi[:2] - alfa * gradients
    wagi[2] = wagi[2] - alfa * cp.mean(-2/len(Z) * (cena_normalized - Z))

    return wagi

def ReLU_vector(x):
    result_array = cp.maximum(x, 0)
    return result_array

def error(y, y_hat):
    mse = cp.mean(cp.square(y - y_hat))
    return mse

for i in range(100000):
    warstwa_0 = metraz_pokoje_normalized
    Z = cp.dot(warstwa_0, wagi[:2]) + wagi[2]
    a = ReLU_vector(Z)
    L = error(cena_normalized, a)
    wagi = backProp(wagi, Z, L, metraz_pokoje_normalized, alfa)
print(wagi)

pokoje = float(input("Wprowadź liczbę pokoi: "))
metraz = float(input("Wprowadź metraż: "))

# Normalizacja liczby pokoi
input_data = cp.array([metraz, pokoje])
input_data_normalized = (input_data - X_mean) / X_std

wejscie = input_data_normalized

warstwa_0 = wejscie
Z = cp.dot(warstwa_0, wagi[:2]) + wagi[2]
a = ReLU_vector(Z)

print("Przewidywana cena:", float(a))

 

2 odpowiedzi

+2 głosów
odpowiedź 2 lutego przez adrian17 Ekspert (344,860 p.)

Po pierwsze,

Wejście w PyCharm i instalacja cupy-cuda12x (nie działało więc odinstalowałem i zainstalowałem cupy, ciągle nic)

Ale co nie działało? Bo to samo z siebie nic nie mówi. Jakie dostajesz błędy z pipa? Czy mówisz o tym samym błędzie co wkleiłeś?

Po drugie,

Znalazłem informacje o tym, że należy użyć do tego celu CuPy. 

TBH nie słyszałem wcześniej o tej bibliotece. Jak chcesz mieć sieć neuronową do uczenia, to czemu nie użyjesz standardowego PyTorcha zamiast ręcznie bawić się z macierzami? Definiujesz że model ma jedną zwykłą warstwę i ReLU i w zasadzie tyle, biblioteka ma już wbudowaną całą logikę do backprop etc.

 

komentarz 3 lutego przez MichaelM Bywalec (2,540 p.)

Ale co nie działało? Bo to samo z siebie nic nie mówi. Jakie dostajesz błędy z pipa? Czy mówisz o tym samym błędzie co wkleiłeś?

Tak, to co wkleiłem to to co wywala interpreter.
 

czemu nie użyjesz standardowego PyTorcha zamiast ręcznie bawić się z macierzami? 

ciągle się uczę i chcę poznać to od podstaw, myślę że lepiej zrozumiem. 
Biblioteka cupy to biblioteka do akceleracji obliczeń na GPU wydana przez NVIDIA. Zawiera w sobie to samo co numpy i scipy tylko przekształcone dla gpu

komentarz 3 lutego przez adrian17 Ekspert (344,860 p.)

Możesz wkleić wynik

import cupy; cupy.show_config()

?

+2 głosów
odpowiedź 3 lutego przez reaktywny Nałogowiec (41,050 p.)

Zamiast CuPy czy podobnych (jest ich sporo) użyj narzędzie od Ciotki Google - JAX. To jest taki NumPy na GPU. Fajna jest też NUMBA, część pakietu Anaconda.

komentarz 3 lutego przez MichaelM Bywalec (2,540 p.)
JAX wygląda ciekawie, poczytam i dam znać

Podobne pytania

+2 głosów
1 odpowiedź 601 wizyt
pytanie zadane 21 stycznia 2022 w Python przez Marak123 Stary wyjadacz (11,190 p.)
0 głosów
1 odpowiedź 249 wizyt
0 głosów
0 odpowiedzi 283 wizyt
pytanie zadane 6 lutego 2022 w Sprzęt komputerowy przez AleOlek Nowicjusz (120 p.)

92,583 zapytań

141,434 odpowiedzi

319,669 komentarzy

61,966 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...