Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Projekt "pixelpick" - CUDA problém?  (Přečteno 4203 krát)

Thomas_Kr

  • Návštěvník
  • Příspěvků: 30
Projekt "pixelpick" - CUDA problém?
« kdy: 30 Listopadu 2022, 14:45:18 »
Dobrý den,
rozjel jsem projekt "pixelpick", kde mi asi polovina modulů chodí, ale v jedné části stále narážím na chybu.

Příkazy spouštím z příkazového řádku Ubuntu 20.04 instalovaného přes WSL na Windows 10.
Zdroj projektu je na adrese https://github.com/NoelShin/PixelPick
v úložišti GitHub.

Z příkazového řádku spouštím skript sh pixelpick-dl-cv.sh:
#!/home/gishin-temp/bin/sh
python3 ../main_al.py  --dataset_name 'cv' --n_pixels_by_us 10 -qs "margin_sampling"


Thomas_Kr

  • Návštěvník
  • Příspěvků: 30
Re:Projekt "pixelpick" - CUDA problém?
« Odpověď #1 kdy: 30 Listopadu 2022, 14:48:51 »
Dostávám chybu:
Traceback (most recent call last):
   File "../main_al.py", line 20, in <module>
     args = Arguments().parse_args()
   File "/usr/local/pixelpick/args.py", line 79, in parse_args
     if args.p_dataset_config is not None:
AttributeError: 'Namespace' object has no attribute 'p_dataset_config'

Mám podezření na nastavení proměnné prostředí CUDA_VISIBLE_DEVICES, o které není v readme souborech žádná zmínka. Také zde není žádná zmínka o GPU. Používám jen jednu GPU, která by měla mít podle příkazu nvidia_smi číslo 0.
Zkoušel jsem nastavení export CUDA_VISIBLE_DEVICES=0 (případně =1) beze změny.

Proměnná --p_dataset_config je v jiném případě nastavena na:
  "/usr/local/pixelpick/datasets/configs/custom.yaml"
Významné soubory jsou v příloze. V souboru args.py jsou upraveny cesty k adresářům.

Thomas_Kr

  • Návštěvník
  • Příspěvků: 30
Re:Projekt "pixelpick" - CUDA problém?
« Odpověď #2 kdy: 20 Prosince 2022, 08:59:15 »
Dobrý den,
tak tu první chybu jsem již vyřešil a teď jsem se ve stejném modulu o kousek
dále zasekl na chybě: No module named 'datasets.custom_dataset'

pip list:
dataset                  1.5.2
datasets                 2.8.0

system1@pc-xxxxx:/usr/local/PixelPick/scripts$ sh pixelpick-dl-cv.sh
model name: camvid_deeplab_margin_sampling_10_p0.05_0
Traceback (most recent call last):
  File "../main_al.py", line 21, in <module>
    main(args)
  File "../main_al.py", line 15, in main
    Model(args)()
  File "/usr/local/PixelPick/model.py", line 34, in __init__
    self.dataloader = get_dataloader(deepcopy(args), val=False, query=False,
  File "/usr/local/PixelPick/utils/utils.py", line 98, in get_dataloader
    from datasets.custom_dataset import CustomDataset
ModuleNotFoundError: No module named 'datasets.custom_dataset'
system1@pc-xxxxx:/usr/local/PixelPick/scripts$

Když na úroveň /usr/local/PixelPick/ umístím fiktivní soubor
"dataset.py" vytvořený z textového souboru s obsahem:
fff

........ změní se chyba na:
File "/usr/local/PixelPick/utils/utils.py", line 98, in get_dataloader
    from datasets.custom_dataset import CustomDataset
  File "/usr/local/PixelPick/datasets.py", line 1, in <module>
    fff
NameError: name 'fff' is not defined
system1@pc-xxxxx:/usr/local/PixelPick/scripts$

Tedy na nějaký modul datasets.py to reaguje, ale žádný takový v projektu
není. Přitom na úrovni /usr/local/PixelPick/ je adresář /datasets/, který by
mohl mít tuto úlohu, např. pokud by byl nastaven jako symbolický link.
Ta chyba je okamžitě po čisté instalaci, a toto je první modul, který se v rámci
projektu spouští. Nějak to autorům přece muselo chodit, ale nemohu přijít na to,
co je špatně.
« Poslední změna: 09 Února 2023, 09:09:53 od Thomas_Kr »

Thomas_Kr

  • Návštěvník
  • Příspěvků: 30
Re:Projekt "pixelpick" - CUDA problém?
« Odpověď #3 kdy: 21 Prosince 2022, 08:52:04 »
Je tady změna. Chybu jsem odstranil docela zajímavým způsobem.

Tu knihovnu datasets jsem nainstaloval už jako součást instalace python 3.8,
což byl základní předpoklad další instalace projektu PixelPick.

Asi na 20-ti webech jsem našel doporučení na tu chybu ModuleNotFoundError:
No module named 'datasets.....:  pip install datasets

Ze zoufalství jsem zkusil, jak se to projeví, když naopak knihovnu
datasets odinstaluji:   pip uninstall datasets

A paradoxně ta původní chyba zmizela. Sice to později zase na něčem
skončilo, ale hlavně jsem se posunul a vypadá to nadějně.

ramael

  • Stálý člen
  • **
  • Příspěvků: 746
Re:Projekt "pixelpick" - CUDA problém?
« Odpověď #4 kdy: 21 Prosince 2022, 21:16:49 »
Jen technická poznámka. Pokud se koukneš do souboru utils.py tak tam najdeš mimo jiné toto:
Kód: [Vybrat]
else:
        # add your dataset script
        from datasets.custom_dataset import CustomDataset
        dataset = CustomDataset(args, val=val, query=query, generate_init_queries=generate_init_queries)
        # raise ValueError(args.dataset_name)
Což dle mne znamená, že si máš přidat svůj vlastní script custom_dataset s třídou nebo funkcí CustomDataset a to v rámci knihovny(namespace) datasets.  Nebo aby ses této chybě vyhnul měl bys použít jeden z těchto argumentů:
cs
cv
voc
Pakliže je nepoužiješ, dojde na konečné vyhodnocení podmínky else a jsme tam co jsem psal hned v úvodu.
Lenovo: ThinkPad X380 Yoga
Joutůůůůb

Thomas_Kr

  • Návštěvník
  • Příspěvků: 30
Re:Projekt "pixelpick" - CUDA problém?
« Odpověď #5 kdy: 09 Února 2023, 09:14:23 »
Takže pokračování.
Je to opět projekt "pixelpick", kde mi všechno chodí, ale nedostávám očekávané výsledky. Chtěl bych ještě opravit jednu chybu, kterou jsem na začátku překlenul jednoduchou úpravou.

Stále Ubuntu 20.04, WSL, W10.
https://github.com/NoelShin/PixelPick

Z příkazového řádku spouštím skript sh pixelpick-dl-cv.sh:
#!/usr/bin/bash    # opraveno, ale nepomohlo
python3 ../main_al.py  --dataset_name 'cv' --n_pixels_by_us 10 -qs "margin_sampling"

Původně jsem dostával chybu:
Traceback (most recent call last):
   File "../main_al.py", line 20, in <module>
     args = Arguments().parse_args()
   File "/usr/local/pixelpick/args.py", line 79, in parse_args
     if args.p_dataset_config is not None:
AttributeError: 'Namespace' object has no attribute 'p_dataset_config',

kterou jsem dočasně odstranil a nyní bych jí chtěl definitivně vyřešit.
Úprava je na řádku s popisem # zde uměle nastavuji None

Část upraveného kódu v args.py:
         args.stride_total = 8 if args.use_dilated_resnet else 32

        ---  args.p_dataset_config = None   # zde uměle nastavuji None
         if args.p_dataset_config is not None:
             assert os.path.exists(args.p_dataset_config),
FileNotFoundError(args.p_dataset_config)
             #args: Namespace = parser.parse_args()
             dataset_config =
yaml.safe_load(open(f"{args.p_dataset_config}", 'r'))
             args: dict = vars(args)
             args.update(dataset_config)


Pokud vložím řádek: args.p_dataset_config = None   # zde uměle nastavuji
None,
pak to testem if args.p_dataset_config is not None: neprojde a chyba
nenastane.

V args.p_dataset_config je nějaká hodnota, protože testem is not None
projde,
ale nástrojem pdb se mi jí nepodařilo vypsat.

Myslím, že problém je v tom, že args.p_dataset_config je nedefinovaná a tedy
by měla být v prvním průchodu None, ale není. Předpokládám, že v dalším
průchodu
se již naplní platnou hodnotou z modulu query.py.

Jediný důvod, který mne napadá je nějaká špatná verze knihovny, která se
vztahuje
k args, argparse, ArgumentParser, Namespace atd., ale mohu se mýlit.

Otázky:
-- Proč obsah args.p_dataset config není None?
-- Napadá Vás nějaká jiná příčina vzniku té chyby?
« Poslední změna: 09 Února 2023, 09:16:48 od Thomas_Kr »

Ventero

  • Závislák
  • ***
  • Příspěvků: 3665
Re:Projekt "pixelpick" - CUDA problém?
« Odpověď #6 kdy: 09 Února 2023, 09:22:53 »
Nauč se prosím dávat výpisy do "kódu" a citace do "citace".
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Thomas_Kr

  • Návštěvník
  • Příspěvků: 30
Re:Projekt "pixelpick" - CUDA problém?
« Odpověď #7 kdy: 09 Února 2023, 11:10:44 »
Nauč se prosím dávat výpisy do "kódu" a citace do "citace".

Jasny.

Kód: [Vybrat]
Dikyy

Ventero

  • Závislák
  • ***
  • Příspěvků: 3665
Re:Projekt "pixelpick" - CUDA problém?
« Odpověď #8 kdy: 09 Února 2023, 12:18:45 »
Děkuji - je to opravdu užitečné - mohl by jsi to ale opravit i zpětně - alespoň v tomto vlákně, když už o tom víš ..
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Thomas_Kr

  • Návštěvník
  • Příspěvků: 30
Re:Projekt "pixelpick" - CUDA problém?
« Odpověď #9 kdy: 14 Února 2023, 11:36:32 »
Měl jsem dojem, že někde v projektu nemám nastavenou nějakou cestu, nebo příznak, což způsobuje, že se args.p_dataset_config nedotahuje do args.py z jiného modulu.
Teď jsem ověřil, že příkaz if args.xxxx is not None nebo args.xxxx způsobí chybu 'Namespace' object has no attribut 'xxxx', ale příkaz args.xxxx=None chybu nezpůsobí!!!!
Přebírám projekt, o kterém jsem přesvědčen, že autorům fungoval správně.
Proto si myslím, že jediné, co mohu změnit, jsou knihovny instalované jako prostředí.
Hledám nějakou verzi knihovny instalující funkce args, Namespece, argparse, ArgumentParser, parser (případně jiné), která tuto chybu nezpůsobuje.
K projektu není přiložen žádný soubor requirements.txt (výpis autora, na kterých verzích knihoven projekt ladil), abych si mohl ověřit proti výpisu pip list, jestli mám všechny knihovny instalovány se správnou verzí.

Je šance něco instalovat nebo nastavit bez zásahu do kódu projektu, aby mi ta nedefinovaná hodnota xxxx zapsaná do args.xxxx nekončila chybou:
'Namespace' object has no attribut 'xxxx'.
?

ramael

  • Stálý člen
  • **
  • Příspěvků: 746
Re:Projekt "pixelpick" - CUDA problém?
« Odpověď #10 kdy: 15 Února 2023, 21:27:59 »
Moc se mi nechtělo reagovat, ale přece jen... Bez urážky, měl by sis alespoň trochu osvojit nějaký programovací jazyk. A python je v tomto ohledu nejjednodušší. Nikomu se nebude chtít studovat komplet skripty aby našel o čem tu píšeš. Je to jak věštění z koule. Nabyl jsem dojmu, že nemáš ani tucha co provádíš. Jen pro malé upřesnění. Toto je podmínka:
Kód: [Vybrat]
if args.xxxx is not None
Chyba kterou to vyhodí, ti říká že objekt args nemá vlastnost/attribut se jménem xxxx. Nemůžeš testovat něco co není. Respektive, ne takto. Buď to dáš do bloku (try except) zachycujícího výjimku. Což je v OOP nedoporučované řízení programu. Nebo tu podmínku napíšeš nějak takto
Kód: [Vybrat]
# Test jestli atribut existuje
if hasattr(args, 'xxxx'):
    # existuje tak si zde s ním dělej co je třeba
    ...
else:
    # neexistuje tak to dej nějak najevo nebo ho vytvoř
    ....
A toto
Kód: [Vybrat]
args.xxxx=None
Je přiřazení nebo také vytvoření (v tomto případě) vlastnosti xxxx s hodnotou None objektu args. A pokud to nemá objekt args přímo zakázaný, tak mu tam můžeš vytvořit vlastnost třeba
Kód: [Vybrat]
args.postavsenahlavu="a stejně chybu nevyhodím"
Lenovo: ThinkPad X380 Yoga
Joutůůůůb

Thomas_Kr

  • Návštěvník
  • Příspěvků: 30
Re:Projekt "pixelpick" - CUDA problém? (asi vyřešeno)
« Odpověď #11 kdy: 14 Března 2023, 09:12:12 »
Vypadáto, že pomohla úprava if v args.py.

-        if args.p_dataset_config is not None:
+        if hasattr(args, "p_dataset_config"):

 

Provoz zaštiťuje spolek OpenAlt.