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))