AMD ROCm ja PyTorch
Kui mu eelmine läpakas katki läks, otsustasin natuke raha kulutada ja endale sellise uue arvuti osta, et saaksin muretult kõik oma erialased tööd tehtud: koodid progetud, mudelid arendatud, treenitud ja jooksutatud. Möödunud nädalavahetusel kulutasin aga ajuvaba arvu tunde ja oma väärtuslikke ajurakke, et selles arvutis PyTorchi GPU tugi tööle saada.
Arhetüüpne lugu
PyTorchi avalehel välja pakutud juhise järgi tundub nende paketi paigaldamise protsess lihtne ja kiire. Kasutada tuleb ühtainsat käsklust:
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/rocm7.1
Kuna ma ei soovinud neid pakette paigaldada globaalselt, vaid ühte konkreetsesse uv projekti, siis pidin selle rea juba ümber kirjutama.
uv dokumentatsioonis on õnneks olemas üks näide täpselt sellest, mida mul vaja oli: PyTorchi lisamine projekti indeksi alusel.
Täiendasin oma pyproject.toml faili vastavalt juhistele, jooksutasin projekti kaustas uv sync jaaa...
Error.
Because there is no version of triton-rocm{sys_platform == 'linux'}==3.6.0 and torch==2.10.0+rocm7.1 depends on triton-rocm{sys_platform == 'linux'}==3.6.0, we can conclude that torch==2.10.0+rocm7.1 cannot be used.
And because we know from (1) that torch<=2.0.1 cannot be used, we can conclude that all versions of torch cannot be used.
And because your project depends on torch, we can conclude that your project's requirements are unsatisfiable.
Tuleb välja, et AMD ROCm platvormil tuleb paigaldada lisaks pakett triton-rocm, mida PyTorchi dokumentatsioon ei maini.
Õnneks on see pakett nende indeksis siiski olemas, mistõttu lisasin pyproject.toml faili vastavad read ka selle jaoks.
Jooksutasin uuesti uv sync jaaa...
Imeline, pakettide installimine töötab!
Kuid kas kood ka jooksma läheb?
Avasin koodifaili, proovisin torch paketti importida ning sain ootuspärase pettumuse osaliseks.
Teineteise järel hakkasid mulle ette hüppama igasugu erinevad veateated.
Näiteks
ImportError: libMIOpen.so.1: cannot open shared object file: No such file or directory
või
ImportError: libroctx64.so.4: cannot open shared object file: No such file or directory
või
opt/amdgpu/share/libdrm/amdgpu.ids: No such file or directory
või
Problem: ocl-icd-2.3.4-1.fc43.i686 from fedora has inferior architecture
ja paljud teised, mida ma ei taibanud õigel hetkel üles täheldada.
Pikalt tundus mulle, et viga võis olla torch ja triton-rocm pakettide installatsiooniga ning et PyTorchi enda indeks ikkagi ei päde.[1]
Avastasin seepeale AMD ROCm dokumentatsioonist nende enda PyTorchi paigaldamise juhendid (näiteks samanimelised Install PyTorch for ROCm ja Install PyTorch for ROCm), kuid need olid juba omajagu keerulisemad kui lihtsalt "jooksuta pip install torch".
Ühtlasi jäi mulle segaseks, millised AMD lehel kirjutatud juhistest on minu jaoks olulised, kas mulle peaks piisama ühest või tuleb läbida mitu, ja kui mitu, siis millised neist ja millises järjekorras...
Ega see segadus ei tahtnud lahtuda. Töötasin läbi kümneid Github issue-sid, foorumite postitusi ja nii PyTorchi kui ka ROCm-i dokumentatsiooni (kes oleks osanud arvata, et AMD-l on nii palju erinevaid PyTorchi paigaldamise juhiseid?) läbisegi kõigi leitud potentsiaalsete lahenduste katsetamisega. Kokku kulutasin PyTorchi tööle saamise peale kaks tervet õhtut.
Lahendus
Teise õhtu lõpuks sain PyTorchi ja GPU arvutused tööle. Kokku katsetasin paljusid erinevaid asju, kuid olen üsna kindel, et määravaks osutusid just need sammud.
-
Lisasin ROCm paketi kõige uuema versiooni paigaldamiseks kaks uut repot[2].
sudo tee /etc/yum.repos.d/rocm.repo << EOF [rocm] name=ROCm 7.2.0 repository baseurl=https://repo.radeon.com/rocm/el10/7.2/main enabled=1 priority=50 gpgcheck=1 gpgkey=https://repo.radeon.com/rocm/rocm.gpg.key [amdgraphics] name=AMD Graphics 7.2.0 repository baseurl=https://repo.radeon.com/graphics/7.2/el/10/main/x86_64/ enabled=1 priority=50 gpgcheck=1 gpgkey=https://repo.radeon.com/rocm/rocm.gpg.key EOF sudo dnf clean all -
Installisin ROCm-i.
sudo dnf install rocm -
Installisin arvutisse ROCm-i toetavad paketid ühes Mediumi postituses[3] kirjeldatud sammude järgi.
sudo usermod -a -G video $LOGNAME sudo dnf install rocminfo rocm-opencl rocm-clinfo rocm-hip miopen-hip echo “export HSA_OVERRIDE_GFX_VERSION=11.5.0” >> ~/.zshrc source ~/.zshrcMuutujale
HSA_OVERRIDE_GFX_VERSIONleidsin sobiva versiooninumbri siit: Linux support matrices by ROCm version. -
Alles siis lisasin
uvprojekti moodulidtriton,torchjatorchvisionAMD lehelt[4] võetud allikatest, muutes ära Pythoni versiooni (cp312->cp313) ja uuendades moodulite endi versioone:- triton
3.5.1->3.6.0, - torch
2.9.1->2.10.0ja - torchvision
0.24.0->0.25.0.
uv add https://repo.radeon.com/rocm/manylinux/rocm-rel-7.2/triton-3.6.0%2Brocm7.2.0.gita272dfa8-cp313-cp313-linux_x86_64.whl uv add https://repo.radeon.com/rocm/manylinux/rocm-rel-7.2/torch-2.10.0%2Brocm7.2.0.lw.git7e1940d4-cp313-cp313-linux_x86_64.whl uv add https://repo.radeon.com/rocm/manylinux/rocm-rel-7.2/torchvision-0.25.0%2Brocm7.2.0.gitb919bd0c-cp313-cp313-linux_x86_64.whl - triton
Nüüd seda nimekirja vaadates tundub kõik muidugi selge ja lihtne. Ometi oli seda "retsepti" välja selgitades terve aeg tunne, nagu taoks peaga vastu seina.
Tagantjärele pole ma selles enam kindel. Mõistsin hiljem, et ainult Pythoni pakettide paigaldamisest ei oleks niikuinii piisanud, ja too hetk olid mul arvutis teised eeldused rahuldamata. ↩︎
Setting up ROCm and PyTorch on Fedora: A Step-By-Step Guide ↩︎