Ce este Fastai?

Fastai este o bibliotecă open-source de deep learning pe PyTorch, concepută pentru a democratiza AI-ul prin facilitarea dezvoltării și implementării rețelelor neuronale.

Componentele principale ale Fastai

1. Biblioteca Fastai

Biblioteca Fastai este construită peste framework-ul PyTorch și are scopul de a face deep learning-ul mai accesibil. Oferă un API de nivel înalt care abstractizează multe dintre complexitățile asociate cu deep learning-ul, permițând utilizatorilor să se concentreze pe sarcinile specifice aplicației și nu pe detaliile complicate de programare. Această abstractizare este realizată printr-un design de API pe straturi, care furnizează atât componente de nivel înalt cât și de nivel scăzut pentru diverse sarcini de deep learning. Funcționalitatea bibliotecii se extinde de la procesarea viziunii și textului, la date tabelare și filtrare colaborativă.

Fastai v2 reprezintă o rescriere completă menită să îmbunătățească viteza, flexibilitatea și ușurința de utilizare. Este construită pe biblioteci de bază precum fastcore și fastgpu, care susțin componentele de nivel înalt ale Fastai și sunt utile pentru mulți programatori și data scientists.

2. API pe straturi

API-ul pe straturi al Fastai este structurat pentru a răspunde nevoilor diferite ale utilizatorilor — de la începători la cercetători avansați. API-ul de nivel înalt oferă funcții gata de folosit pentru antrenarea modelelor în mai multe domenii, inclusiv viziune, text, date tabelare și filtrare colaborativă. Aceste funcții vin cu valori implicite sensibile care simplifică procesul de creare a modelelor. API-ul de nivel mediu furnizează metode de bază pentru deep learning și procesare de date, în timp ce API-ul de nivel scăzut oferă primitive optimizate și fundații pentru dezvoltarea de modele personalizate.

O caracteristică cheie a arhitecturii pe straturi a Fastai este capacitatea de a exprima tipare comune de bază ale multor tehnici de deep learning și procesare de date prin abstracții decuplate. Acest lucru este posibil datorită dinamismului Python și flexibilității PyTorch, permițând un echilibru între ușurința de utilizare, flexibilitate și performanță.

3. Cursul „Practical Deep Learning for Coders”

Fastai oferă un curs online gratuit și masiv (MOOC) intitulat „Practical Deep Learning for Coders”. Acest curs oferă experiență practică cu deep learning-ul, având ca singură condiție prealabilă cunoștințele de Python. Acoperă diverse teme de deep learning precum clasificarea imaginilor, procesarea limbajului natural și rețele generative adversariale (GAN), cu accent pe aplicații reale. Cursul este completat de cartea „Deep Learning for Coders with Fastai and PyTorch”, care aprofundează aplicații AI fără a necesita un doctorat.

Caracteristici cheie ale Fastai

1. API de nivel înalt

API-ul de nivel înalt din Fastai simplifică antrenarea modelelor de deep learning prin integrarea arhitecturii, datelor și optimizării într-un sistem coerent. Selectează automat funcțiile de pierdere și algoritmii de optimizare potriviți, reducând riscul de erori din partea utilizatorului. Acest API este deosebit de util pentru începători și pentru cei care doresc să aplice metode existente de deep learning fără a se aprofunda în complexitatea codului de bază.

2. Învățare prin transfer

Una dintre caracteristicile remarcabile ale Fastai este suportul pentru învățarea prin transfer, care permite antrenarea rapidă și eficientă a modelelor folosind rețele pre-antrenate. Fastai optimizează acest proces prin tehnici precum batch-normalization, înghețarea straturilor și rate de învățare diferențiate. Aceste tehnici accelerează procesul de învățare și îmbunătățesc performanța modelului pe diverse sarcini.

3. Data Block API

Data block API este un sistem flexibil pentru definirea fluxurilor de procesare a datelor. Permite utilizatorilor să specifice sursele de date, transformările și mecanismele de încărcare într-un mod modular. Acest API este esențial pentru gestionarea dataseturilor complexe și asigură pregătirea corectă a datelor pentru antrenarea modelelor. Oferă o abordare unitară pentru diverse domenii, facilitând aplicarea tehnicilor de deep learning pe diferite tipuri de date.

4. Sistem de callback bidirecțional

Fastai introduce un sistem nou de callback bidirecțional, care oferă hooks în bucla de antrenare, permițând modificări dinamice asupra datelor, modelelor sau optimizerilor în orice moment al antrenamentului. Acest sistem sporește flexibilitatea și personalizarea proceselor de antrenare, permițând implementarea de abordări inovatoare cu efort minim de codare.

5. Open Source și susținut de comunitate

Fastai este un proiect open-source găzduit pe GitHub, licențiat sub Apache License 2.0. Beneficiază de o comunitate vibrantă de dezvoltatori și cercetători care contribuie constant la dezvoltarea și îmbunătățirea sa. Natura open-source a bibliotecii asigură accesul utilizatorilor la tehnici de ultimă generație și le permite să contribuie la evoluția acesteia. Comunitatea Fastai este, de asemenea, o sursă de învățare colaborativă și suport pentru utilizatori din întreaga lume.

Cazuri de utilizare și aplicații

Viziune

Fastai simplifică dezvoltarea modelelor de viziune computerizată cu cod minim. De exemplu, un model ImageNet poate fi ajustat pe un dataset specific precum Oxford IIT Pets, atingând acuratețe ridicată cu doar câteva linii de cod. Integrarea bibliotecii cu PyTorch asigură utilizarea facilă a arhitecturilor și tehnicilor de ultimă generație.

Text

Fastai este echipată cu instrumente pentru procesarea limbajului natural (NLP), permițând sarcini precum analiza sentimentelor, clasificarea textului și modelarea limbajului. Integrarea cu PyTorch permite folosirea arhitecturilor NLP moderne, facilitând dezvoltarea de modele robuste capabile să înțeleagă și să genereze limbaj uman.

Date tabelare

Fastai oferă componente pentru procesarea datelor tabelare, susținând sarcini precum regresia și clasificarea. Data block API este deosebit de util pentru transformarea și încărcarea dataseturilor tabelare, asigurând procesarea eficientă și corectă a datelor pentru antrenarea modelelor. Această funcționalitate este esențială pentru aplicații din analiza de afaceri, sănătate și finanțe, unde datele tabelare sunt predominante.

Filtrare colaborativă

Filtrarea colaborativă este un alt domeniu în care Fastai excelează, oferind instrumente pentru construirea sistemelor de recomandare. API-ul de nivel înalt al bibliotecii simplifică crearea și evaluarea modelelor de filtrare colaborativă, facilitând dezvoltarea de recomandări personalizate pentru utilizatori pe baza preferințelor și comportamentelor lor.

Implementare

Fastai susține implementarea modelelor antrenate în medii de producție, permițând dezvoltatorilor să integreze capabilități AI în aplicații fără efort. Accentul bibliotecii pe aspectele practice asigură abordarea considerentelor de implementare de la început, permițând soluții eficiente și scalabile pentru aplicații reale.

Fastai în lucrări de cercetare

Fastai este o bibliotecă de deep learning concepută pentru a oferi componente de nivel înalt practicienilor pentru a obține rapid și ușor rezultate de top în domeniile standard de deep learning. În același timp, oferă componente de nivel scăzut pentru cercetătorii care vor să creeze noi abordări fără a compromite ușurința de utilizare, flexibilitatea sau performanța. Această dublă capabilitate este obținută printr-o arhitectură atent structurată care valorifică dinamismul Python și flexibilitatea PyTorch. Biblioteca introduce mai multe funcționalități inovatoare, inclusiv un sistem de tip dispatch pentru Python, o bibliotecă de viziune computerizată optimizată pentru GPU, un optimizer care simplifică algoritmii moderni de optimizare și un sistem nou de callback bidirecțional. Fastai a fost folosit cu succes pentru realizarea unui curs complet de deep learning și este larg utilizată în cercetare, industrie și educație. Pentru mai multe detalii, poți accesa lucrarea pe arXiv.

  • Exemplu din agricultură:
    În domeniul agriculturii, Fastai a fost aplicată eficient pentru a construi un model de clasificare pentru recunoașterea bolilor plantelor folosind un dataset cu imagini de frunze de măr. Utilizând un model ResNet34 pre-antrenat cu Fastai, studiul a obținut o acuratețe de clasificare de 93.765%. Aceasta demonstrează capacitatea bibliotecii de a economisi timp de antrenare și de a îmbunătăți performanța modelului în aplicații practice. Mai multe informații pot fi găsite în studiul de pe arXiv.

  • Exemplu de compresie a modelelor:
    De asemenea, sistemul de callback al Fastai a fost folosit în alte biblioteci precum FasterAI, care se concentrează pe tehnici de compresie a rețelelor neuronale, precum sparsificarea și pruning-ul. Acest lucru demonstrează versatilitatea Fastai și ușurința de integrare cu alte instrumente pentru a efectua eficient tehnici de ultimă generație. Detalii despre această implementare sunt disponibile în lucrarea FasterAI pe arXiv.

Exemple de utilizare

Instalare

Pentru a începe să folosești fastai, o poți instala ușor folosind conda sau pip. Iată cum:

  • Conda (Recomandat pentru Linux sau Windows):
    conda install -c fastai fastai
  • Pip (Funcționează pe toate platformele):
    pip install fastai
  • Google Colab:
    Utilizează fastai fără instalare folosind Google Colab, care suportă runtime GPU pentru calcule mai rapide.

În plus, utilizatorii pot explora documentația oficială fastai și forumurile comunității pentru a rezolva probleme obișnuite de instalare sau pentru a găsi soluții la configurații specifice. Integrarea bibliotecii cu Jupyter notebooks și Google Colab îi sporește și mai mult utilitatea, oferind un mediu interactiv pentru experimentare și învățare.

API de nivel înalt

API-ul de nivel înalt din fastai este conceput pentru ușurință în utilizare și dezvoltare rapidă. Abstractizează mare parte din complexitate, permițând utilizatorilor să se concentreze pe construirea și antrenarea modelelor cu cod minim. API-ul este deosebit de benefic pentru prototiparea rapidă a modelelor și iterarea pe idei fără a intra în detaliile de jos ale framework-ului PyTorch.

Exemple de utilizare a API-ului de nivel înalt

1. Clasificare de imagini

from fastai.vision.all import * 
path = untar_data(URLs.PETS) 
dls = ImageDataLoaders.from_name_re(
    path=path, 
    fnames=get_image_files(path/"images"),
    pat=r'/([^/]+)_\d+.jpg$', 
    item_tfms=RandomResizedCrop(450, min_scale=0.75), 
    batch_tfms=[*aug_transforms(size=224, max_warp=0.), Normalize.from_stats(*imagenet_stats)]
)
learn = cnn_learner(dls, resnet34, metrics=error_rate)
learn.fit_one_cycle(4)

Acest exemplu demonstrează cum se configurează și antrenează un clasificator de imagini pe datasetul Oxford IIT Pets folosind API-ul de nivel înalt din fastai.

2. Analiza sentimentului pe text

from fastai.text.all import *
path = untar_data(URLs.IMDB)
dls = TextDataLoaders.from_folder(path, valid='test')
learn = text_classifier_learner(dls, AWD_LSTM, drop_mult=0.5, metrics=accuracy)
learn.fine_tune(1)

Aici, fastai este folosit pentru a construi un model de analiză a sentimentului pe datasetul IMDB.

3. Date tabelare

from fastai.tabular.all import *
path = untar_data(URLs.ADULT_SAMPLE)
dls = TabularDataLoaders.from_csv(
    path/'adult.csv', path=path, y_names="salary",
    cat_names=['workclass', 'education', 'marital-status', 'occupation', 'relationship', 'race'],
    cont_names=['age', 'fnlwgt', 'education-num'],
    procs=[Categorify, FillMissing, Normalize]
)
learn = tabular_learner(dls, metrics=accuracy)
learn.fit_one_cycle(3)

Acest exemplu ilustrează utilizarea fastai pentru date tabelare, în special pentru datasetul Adult.

API de nivel mediu

API-ul de nivel mediu din fastai oferă mai multe posibilități de personalizare decât API-ul de nivel înalt, permițând utilizatorilor să modifice diverse aspecte ale procesului de antrenare fără a intra în detaliile de jos. Oferă un echilibru între ușurința de utilizare și flexibilitate, adresându-se utilizatorilor care au nevoie de mai mult control asupra modelelor lor, dar apreciază totodată comoditatea componentelor predefinite.

Componentele API-ului de nivel mediu

  • Learner: O componentă de bază care încapsulează modelul, datele și bucla de antrenare. Poate fi personalizată cu diferite arhitecturi, optimizatori și metrici.
  • Callbacks: Funcții care permit extinderea buclei de antrenare cu comportamente personalizate, cum ar fi salvarea checkpoint-urilor, ajustarea ratelor de învățare sau logarea metricilor.

Exemplu de utilizare

learn = cnn_learner(dls, resnet18, metrics=accuracy, cbs=[SaveModelCallback(monitor='accuracy')])
learn.fine_tune(2)

În acest exemplu, un callback este folosit pentru a salva modelul cu cea mai bună acuratețe în timpul antrenamentului, evidențiind flexibilitatea API-ului de nivel mediu.

API de nivel scăzut

Pentru utilizatorii avansați și cercetătorii care au nevoie de control total asupra modelelor, API-ul de nivel scăzut al fastai oferă acces la funcționalitățile de bază PyTorch și primitive optimizate. Acest nivel de API este destinat celor care doresc să depășească limitele deep learning-ului prin proiectarea de arhitecturi noi sau implementarea de rutine personalizate de antrenament.

Caracteristici ale API-ului de nivel scăzut

  • Pipeline și Transforms: Secvențe de procesare a datelor personalizabile, adaptabile nevoilor specifice.
  • Tensori orientați pe obiect: Extensii pentru tensorii PyTorch care facilitează manipularea mai intuitivă.
  • Operațiuni optimizate: Operațiuni eficiente pe tensori valorificând capacitățile PyTorch.

Exemplu de utilizare

from fastai.data.all import *
pipe = Pipeline([PILImage.create, Resize(128), ToTensor])
img = pipe('path/to/image.jpg')

Acest fragment demonstrează cum se creează un pipeline de procesare a datelor personalizat folosind API-ul de nivel scăzut din fastai, aplicând o serie de transformări pe o imagine.

Fastai în practică: exemple publicate

  1. Fastai: A Layered API for Deep Learning
    Autori: Jeremy Howard, Sylvain Gugger
    Fastai este o bibliotecă de deep learning concepută pentru a facilita prototiparea rapidă și implementarea modelelor de deep learning. Aceasta realizează acest lucru oferind componente de nivel înalt pentru sarcinile standard, permițând totodată cercetătorilor să lucreze direct cu componente de nivel scăzut pentru soluții personalizate. Lucrarea detaliază arhitectura bibliotecii, care valorifică dinamismul Python și flexibilitatea PyTorch pentru a crea abstracții decuplate pentru sarcini de deep learning. Inovațiile Fastai includ un sistem de tip dispatch, o bibliotecă de viziune computerizată optimizată pentru GPU, un design nou de optimizer și un sistem de callback bidirecțional, printre altele. Ușurința de utilizare și capacitatea de a genera rezultate de top au făcut-o populară în cercetare, industrie și educație. Citește mai mult

  2. Microvasculature Segmentation in Human BioMolecular Atlas Program (HuBMAP)
    Autori: Youssef Sultan, Yongqiang Wang, James Scanlon, Lisa D’lima
    Acest studiu utilizează Fastai pentru segmentarea imaginilor în Human BioMolecular Atlas Program (HuBMAP), concentrându-se pe segmentarea structurilor microvasculare din rinichii umani. Metodologia începe cu un model U-Net Fastai, explorând arhitecturi alternative și modele profunde pentru a îmbunătăți acuratețea segmentării. Lucrarea evidențiază capacitatea Fastai de a servi ca instrument de bază în imagistica medicală, oferind perspective asupra tehnicilor avansate de segmentare și a comparației lor cu modele de referință. Citește mai mult

  3. Egglog Python: A Pythonic Library for E-graphs
    Autor: Saul Shanabrook
    Deși nu este direct despre Fastai, această lucrare introduce legături Python pentru biblioteca egglog, subliniind integrarea tehnicilor e-graph în Python. Această abordare se aliniază cu filosofia Fastai de a valorifica punctele forte ale Python pentru a îmbunătăți inovațiile în machine learning și computing științific. Ilustrează cum API-urile Python facilitează colaborarea și inovația între domenii, putând completa versatilitatea Fastai. [Citește mai mult](https://arxiv.org/abs/2404

Întrebări frecvente

Ce este Fastai?

Fastai este o bibliotecă completă și open-source de deep learning construită peste PyTorch. Ea simplifică crearea și antrenarea rețelelor neuronale prin API-uri de nivel înalt, suportă sarcini de viziune, NLP, date tabelare și filtrare colaborativă, și are ca scop democratizarea deep learning-ului pentru utilizatori de toate nivelurile.

Cine a dezvoltat Fastai?

Fastai a fost dezvoltată de Jeremy Howard și Rachel Thomas ca parte a unei misiuni de a face deep learning-ul accesibil și practic pentru toată lumea.

Ce face Fastai unic?

Fastai oferă un API pe straturi cu componente de nivel înalt, mediu și scăzut, abstracții prietenoase pentru utilizator, suport pentru învățare prin transfer, un API modular pentru data block și un sistem puternic de callback-uri. Este open-source și susținut de o comunitate vibrantă.

Care sunt cazurile de utilizare comune pentru Fastai?

Fastai este folosit pentru viziune computerizată, procesare a limbajului natural (NLP), analiză de date tabelare, filtrare colaborativă (sisteme de recomandare) și implementarea modelelor în producție. Este popular în cercetare, industrie și educație.

Cum instalez Fastai?

Poți instala Fastai cu conda folosind 'conda install -c fastai fastai' sau cu pip folosind 'pip install fastai'. Funcționează perfect și în Google Colab și Jupyter notebooks.

Fastai este gratuit?

Da, Fastai este complet open-source sub licența Apache 2.0. Tot software-ul, cercetările și cursurile sunt disponibile gratuit pentru a asigura accesibilitatea globală.

Explorează Fastai și Construiește Soluții AI

Descoperă cum API-urile de nivel înalt și instrumentele open-source ale Fastai pot accelera proiectele și parcursul tău de învățare în AI. Încearcă FlowHunt pentru dezvoltare AI fără efort.

Află mai multe

Keras

Keras

Keras este o API open-source, puternică și ușor de utilizat, pentru rețele neuronale de nivel înalt, scrisă în Python și capabilă să ruleze peste TensorFlow, CN...

5 min citire
Keras Deep Learning +3
DL4J

DL4J

DL4J, sau DeepLearning4J, este o bibliotecă open-source, distribuită, de deep learning pentru Java Virtual Machine (JVM). Parte a ecosistemului Eclipse, permite...

5 min citire
Deep Learning Java +4
PyTorch

PyTorch

PyTorch este un cadru open-source de învățare automată dezvoltat de Meta AI, renumit pentru flexibilitatea sa, grafurile de calcul dinamice, accelerarea GPU și ...

9 min citire
PyTorch Deep Learning +4