• 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
163 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 (346,320 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 (346,320 p.)

Możesz wkleić wynik

import cupy; cupy.show_config()

?

+2 głosów
odpowiedź 3 lutego przez reaktywny Nałogowiec (41,090 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ź 620 wizyt
pytanie zadane 21 stycznia 2022 w Python przez Marak123 Stary wyjadacz (11,190 p.)
0 głosów
1 odpowiedź 273 wizyt
0 głosów
0 odpowiedzi 286 wizyt
pytanie zadane 6 lutego 2022 w Sprzęt komputerowy przez AleOlek Nowicjusz (120 p.)

92,682 zapytań

141,585 odpowiedzi

320,071 komentarzy

62,042 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

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!

...