Suport GPU pentru FastAI
- 2 minute de citit
- 4 exemple de cod în Python și Shell
- 2 imagini
Disponibil și în English
Salut tuturor 👋,
Acesta este primul meu articol de blog despre AI, este un articol scurt despre cum să activezi suportul GPU pentru biblioteca FastAI.
De ceva timp evit să intru în AI, credeam că ar presupune multă matematică complicată, și nu eram sigur că merită efortul, nu am avut note prea bune la matematica din facultate 😅.
Până la urmă am decis că vreau să încerc și am găsit cursul Practical Deep Learning care se bazează pe cartea Deep Learning for Coders with Fastai and PyTorch: AI Applications Without a PhD.
Ideea principală este că cursul predă mai întâi partea practică, cu exemple, și apoi teoria, ceea ce era exact ce căutam și modul meu preferat de a învăța. Imaginează-ți că înveți să construiești un API simplu, și începi prin a citi HTTP RFC, nu ar fi foarte distractiv (cel puțin pentru mine). Fiecare curs universitar te învață teorie, matematică grea, și apoi primești o privire asupra părții practice, din punctul meu de vedere asta nu funcționează prea bine. Lumea se mișcă repede, și putem construi lucruri pe umerii giganților, la fel cum folosim un framework web ca să construim o aplicație web, putem folosi o bibliotecă ca să construim aplicații AI.
În prima lecție a cursului vei construi un clasificator simplu de imagini care poate identifica ce imagine conține o pisică 🐈⬛.
Acesta este clasificatorul pe care l-am construit (bine, am copiat codul din curs 😅)
from fastai.vision.all import *path = untar_data(URLs.PETS)/'images'def is_cat(x): # Numele fișierelor cu pisici încep cu literă mare return x[0].isupper()dls = ImageDataLoaders.from_name_func( path, get_image_files(path), valid_pct=0.2, seed=42, label_func=is_cat, item_tfms=Resize(224))learn = vision_learner(dls, resnet34, metrics=error_rate)learn.fine_tune(1)Și folosesc următorul cod ca să-l testez:
from IPython.display import displayimages = ["cat.jpeg", "cat2.jpg", "cat3.jpg", "pantera-neagra.webp"]for image in images: img = PILImage.create(f"images/{image}") display(img.to_thumb(192)) is_cat,_,probs = learn.predict(img) print(f"Is this a cat?: {is_cat}.") print(f"Probability it's a cat: {probs[1].item():.6f}")Vei avea nevoie de un director images în rădăcina proiectului tău, și dacă rulezi totul într-un notebook Jupyter
vei obține următorul rezultat:

Dacă rulezi codul pe CPU vor fi necesare ~4 minute pe un Macbook Pro M1 Pro cu 32GB RAM, pe mașina mea cu Ryzen 5600X, RTX 3600 și 64GB RAM durează în jur de 10+ minute fără CUDA activat, cu CUDA durează 1-2 minute.
Ca să rulezi codul singur cu suport CUDA va trebui să urmezi următorii pași:
- Instalează cele mai noi drivere NVIDIA pentru GPU-ul tău de aici.
- Instalează CUDA Toolkit 11.8 de aici.
- Folosește un mediu virtual pentru python și instalează pachetul fastai.
python3 -m venv venvsource venv/bin/activatepip install fastai- Instalează Pytorch cu suport CUDA pentru Windows.

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118Instrucțiunile complete pentru celelalte sisteme de operare sunt disponibile aici.
- Rulează codul și bucură-te de accelerare.
Atât pentru azi, sper că ți-a plăcut acest articol, și ne vedem în următorul.