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

Numpy vs PyTorch - przekazywanie tablic, GPU

0 głosów
322 wizyt
pytanie zadane 13 lutego 2025 w Python przez J0ker Pasjonat (15,530 p.)
Cześć, mam taki problem; moim zadaniem jest przeniesienie kodu z NumPy na PyTorch.

w wersji NumPy jest podwójna pętla for, i w wewnętrznej pętli jest:
for i in rangę(x):
b = a
a = np.ones(C)
// jakieś obliczenia na nowym a
// jakieś porównanie miedzy b ("starym a") i nowym a

Gdy te sama pętle napisałem w torchu,

po prostu piszac

a = torch.ones(C)
to kod nagle zaczął działać nieakceptowanie wolno (jest to powiązane z tym, ze działa on na GPU, i kod cały czas alokuje i inicjalizuje te zmienna od nowa na GPU)

początkowo rozwiązałem to w taki sposób, ze
przed pętla for stworzyłem zmienna a_pattern = torch.ones(C)
a w pętli for robiłem przypisanie a = a_pattern
I to działa bardzo szybko, bo zmienna jest inicjalizowana tylko raz, ale prowadzi do złych wyników, bo teraz b = a = a_pattern i b przyjmuje wartość a_pattern,  bo tensorki się przekazują przez referencje (jak chyba wszystko w Pythonie)

Próbowałem funkcje .clone, .copy, .detach,  .empty i .fill, przepisywanie w pętli for zamiast całej zmiennej od razu,  - nic nie działa - wszystko albo działa wolno i daje dobry wynik (jak a = torch.ones()), albo działa szybko i daje zły wynik (jak a = a_pattern). Potrzebuje rozwiązania które działa szybko i dobrze. Kod jako calom jest przyspieszony w porównaniu do wersji numpy, wiec jak Wasze rozwiazanie będzie działać kilka % wolniej od wersji numpy to nie ma problemu, ale niestety w mojej sytuacji instrukcja a = torch.ones(C) to 99% czasu działania programu, co jest nie do przyjęcia.

Przepraszam ze nie załączam kodu ale i tak go nie odpalicie bo to wiele plików i duży dataset; ale zdiagnozowałem ze problemem jest tylko i aż ta jedna instrukcja.

Czy ktoś ma pomysł jak to rozwiązać?

Jakby co: przeniesienie kodu na GPU działa, nvtop pokazuje, ze zarówno pamięć jak i mcc obliczeniowa GPU jest mocno utylizowana

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+2 głosów
2 odpowiedzi 614 wizyt
pytanie zadane 2 lutego 2024 w Python przez MichaelM Gaduła (3,000 p.)
+2 głosów
1 odpowiedź 1,592 wizyt
pytanie zadane 21 stycznia 2022 w Python przez Marak123 Stary wyjadacz (11,190 p.)
0 głosów
0 odpowiedzi 305 wizyt
pytanie zadane 26 listopada 2023 w Offtop przez reaktywny Nałogowiec (46,230 p.)

93,729 zapytań

142,668 odpowiedzi

323,283 komentarzy

63,288 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...