Wat is Fastai?

Fastai is een open-source deep learning-bibliotheek op PyTorch, ontworpen om AI te democratiseren door de ontwikkeling en implementatie van neurale netwerken eenvoudig en toegankelijk te maken.

Kerncomponenten van Fastai

1. Fastai-bibliotheek

De Fastai-bibliotheek is gebouwd bovenop het PyTorch-framework en is bedoeld om deep learning toegankelijker te maken. Het biedt een hoog-niveau API die veel van de complexiteiten van deep learning abstraheert, waardoor gebruikers zich kunnen concentreren op toepassingsspecifieke taken in plaats van ingewikkelde programmeerdetails. Deze abstractie wordt bereikt via een gelaagd API-ontwerp, dat zowel hoog- als laag-niveau componenten biedt voor verschillende deep learning-taken. De functionaliteit van de bibliotheek strekt zich uit van beeld- en tekstverwerking tot tabeldata en collaborative filtering.

Fastai v2 is een volledige herziening gericht op meer snelheid, flexibiliteit en gebruiksgemak. Het is gebouwd op basisbibliotheken zoals fastcore en fastgpu, die de hoog-niveau componenten van Fastai ondersteunen en nuttig zijn voor veel programmeurs en data scientists.

2. Gelaagde API

Fastai’s gelaagde API is gestructureerd voor verschillende gebruikersbehoeften—van beginners tot gevorderde onderzoekers. De hoog-niveau API biedt kant-en-klare functies voor het trainen van modellen in diverse domeinen, waaronder beeld, tekst, tabeldata en collaborative filtering. Deze functies zijn voorzien van verstandige standaardinstellingen die het bouwen van modellen versnellen. De midden-niveau API biedt kernmethoden voor deep learning en dataverwerking, terwijl de laag-niveau API geoptimaliseerde bouwstenen en fundamenten biedt voor het ontwikkelen van aangepaste modellen.

Een belangrijk kenmerk van Fastai’s gelaagde architectuur is het vermogen om gemeenschappelijke onderliggende patronen van veel deep learning- en dataverwerkingstechnieken te uiten via losgekoppelde abstracties. Dit wordt mogelijk gemaakt door het gebruik van de dynamiek van Python en de flexibiliteit van PyTorch, waardoor een balans ontstaat tussen gebruiksgemak, flexibiliteit en prestaties.

3. Practical Deep Learning for Coders-cursus

Fastai biedt een gratis, massale open online cursus (MOOC) genaamd “Practical Deep Learning for Coders.” Deze cursus biedt praktische ervaring met deep learning, waarbij alleen kennis van Python als vereiste geldt. Er komen uiteenlopende deep learning-onderwerpen aan bod zoals beeldclassificatie, natuurlijke taalverwerking en generative adversarial networks (GANs), met een focus op toepassingen in de praktijk. De cursus wordt aangevuld met het boek “Deep Learning for Coders with Fastai and PyTorch”, dat ingaat op AI-toepassingen zonder dat een PhD vereist is.

Belangrijkste kenmerken van Fastai

1. Hoog-niveau API

Fastai’s hoog-niveau API vereenvoudigt het trainen van deep learning-modellen door architectuur, data en optimalisatie samen te brengen in één samenhangend systeem. Het selecteert automatisch geschikte verliesfuncties en optimalisatie-algoritmen, waardoor de kans op gebruikersfouten wordt verminderd. Deze API is bijzonder geschikt voor beginners en voor iedereen die bestaande deep learning-methoden wil toepassen zonder zich te verdiepen in de onderliggende code.

2. Transfer Learning

Een van de opvallende kenmerken van Fastai is de ondersteuning voor transfer learning, waarmee modellen snel en efficiënt getraind kunnen worden door gebruik te maken van voorgetrainde netwerken. Fastai optimaliseert dit proces met technieken als batch-normalisatie, het bevriezen van lagen en gedifferentieerde leersnelheden. Deze technieken versnellen het leerproces en verbeteren de prestaties van modellen voor verschillende taken.

3. Data Block API

De datablock-API is een flexibel systeem voor het definiëren van dataverwerkingspijplijnen. Gebruikers kunnen hiermee gegevensbronnen, transformaties en laadmechanismen op een modulaire manier specificeren. Deze API is essentieel bij het beheren van complexe datasets en zorgt ervoor dat data correct voorbereid wordt voor het trainen van modellen. Het biedt een consistente aanpak voor verschillende domeinen, waardoor deep learning-technieken eenvoudiger toepasbaar zijn op uiteenlopende datatypes.

4. Tweewegs Callback-systeem

Fastai introduceert een innovatief tweewegs callback-systeem dat hooks biedt in de trainingslus, waardoor dynamische aanpassingen aan data, modellen of optimizers op elk moment mogelijk zijn. Dit systeem vergroot de flexibiliteit en aanpasbaarheid van het trainingsproces, zodat innovatieve benaderingen geïmplementeerd kunnen worden met minimale code.

5. Open Source en Community-Gedreven

Fastai is een open-source project dat wordt gehost op GitHub en is gelicentieerd onder de Apache License 2.0. Het profiteert van een levendige community van ontwikkelaars en onderzoekers die bijdragen aan de voortdurende ontwikkeling en verbetering. De open-source aard van de bibliotheek zorgt ervoor dat gebruikers toegang hebben tot de nieuwste technieken en kunnen bijdragen aan de evolutie ervan. Fastai’s community is bovendien een bron van gezamenlijke kennis en ondersteuning voor gebruikers wereldwijd.

Toepassingen en Gebruiksscenario’s

Beeldherkenning

Fastai vereenvoudigt de ontwikkeling van computer vision-modellen met minimale code. Zo kan een ImageNet-model eenvoudig worden fijngetuned op een specifieke dataset, zoals de Oxford IIT Pets dataset, en met slechts enkele regels code hoge nauwkeurigheid bereiken. Door de integratie met PyTorch kunnen gebruikers moeiteloos gebruikmaken van de meest geavanceerde architecturen en technieken.

Tekst

Fastai is uitgerust met tools voor natuurlijke taalverwerking (NLP), waarmee taken als sentimentanalyse, tekstclassificatie en taalmodellering mogelijk zijn. Dankzij de integratie met PyTorch kunnen moderne NLP-architecturen worden gebruikt, wat de ontwikkeling van robuuste taalmodellen vergemakkelijkt die menselijke taal kunnen begrijpen en genereren.

Tabeldata

Fastai biedt componenten voor het verwerken van tabeldata, met ondersteuning voor taken zoals regressie en classificatie. De datablock-API is bijzonder nuttig voor het transformeren en laden van tabeldatasets, zodat data efficiënt en nauwkeurig verwerkt wordt voor modeltraining. Dit is essentieel voor toepassingen in business analytics, gezondheidszorg en financiën, waar tabeldata veel voorkomt.

Collaborative Filtering

Collaborative filtering is een ander domein waarin Fastai uitblinkt, met tools om aanbevelingssystemen te bouwen. De hoog-niveau API van de bibliotheek vereenvoudigt het opzetten en evalueren van collaborative filtering-modellen, waardoor gepersonaliseerde aanbevelingen voor gebruikers op basis van hun voorkeuren en gedrag eenvoudig te ontwikkelen zijn.

Implementatie

Fastai ondersteunt het uitrollen van getrainde modellen naar productie-omgevingen, waardoor ontwikkelaars AI-mogelijkheden naadloos in applicaties kunnen integreren. Door de focus op praktische toepasbaarheid worden implementatieaspecten vanaf het begin meegenomen, wat efficiënte en schaalbare oplossingen voor echte toepassingen mogelijk maakt.

Fastai in Wetenschappelijke Publicaties

Fastai is een deep learning-bibliotheek ontworpen om hoog-niveau componenten te bieden waarmee gebruikers snel en eenvoudig state-of-the-art resultaten kunnen behalen in standaard deep learning-domeinen. Tegelijkertijd biedt het laag-niveau componenten waarmee onderzoekers nieuwe benaderingen kunnen ontwikkelen zonder concessies te doen aan gebruiksgemak, flexibiliteit of prestaties. Deze dubbele functionaliteit wordt bereikt door een zorgvuldig gestructureerde architectuur die gebruikmaakt van de dynamiek van Python en de flexibiliteit van PyTorch. De bibliotheek introduceert verschillende innovatieve functies, waaronder een type dispatch-systeem voor Python, een GPU-geoptimaliseerde computer vision-bibliotheek, een optimizer die moderne optimalisatie-algoritmen vereenvoudigt, en een nieuw 2-wegs callback-systeem. Fastai is succesvol ingezet voor het samenstellen van een uitgebreide deep learning-cursus en wordt breed gebruikt in onderzoek, industrie en onderwijs. Voor meer details kun je het artikel raadplegen op arXiv.

  • Voorbeeld uit de landbouw:
    In de landbouw is Fastai effectief toegepast om een classificatiemodel te bouwen voor het herkennen van plantenziekten met behulp van een dataset van appelbladafbeeldingen. Door het gebruik van een voorgetraind ResNet34-model met het Fastai-framework behaalde de studie een classificatienauwkeurigheid van 93,765%. Dit toont aan dat de bibliotheek in staat is om trainingstijd te besparen en de modelprestaties in praktische toepassingen te verbeteren. Meer informatie is te vinden in het onderzoek op arXiv.

  • Voorbeeld van modelcompressie:
    Daarnaast is het callback-systeem van Fastai ingezet in andere bibliotheken zoals FasterAI, dat zich richt op compressietechnieken voor neurale netwerken zoals sparsificatie en pruning. Dit illustreert Fastai’s veelzijdigheid en eenvoudige integratie met andere tools voor het efficiënt toepassen van geavanceerde technieken. Details van deze implementatie zijn beschikbaar in het FasterAI-artikel op arXiv.

Voorbeelden van Gebruik

Installatie

Om met fastai aan de slag te gaan, kun je het eenvoudig installeren met conda of pip. Zo doe je dat:

  • Conda (Aanbevolen voor Linux of Windows):
    conda install -c fastai fastai
  • Pip (Werkt op alle platformen):
    pip install fastai
  • Google Colab:
    Gebruik fastai zonder installatie via Google Colab, dat GPU-ondersteuning biedt voor snellere berekeningen.

Daarnaast kunnen gebruikers de officiële documentatie en community-forums van fastai raadplegen voor het oplossen van veelvoorkomende installatieproblemen of voor specifieke configuratievragen. De integratie van de bibliotheek met Jupyter notebooks en Google Colab vergroot de bruikbaarheid door een interactieve omgeving te bieden voor experimenteren en leren.

Hoog-niveau API

De hoog-niveau API in fastai is ontworpen voor gebruiksgemak en snelle ontwikkeling. Veel complexiteit wordt geabstraheerd zodat gebruikers zich kunnen richten op het bouwen en trainen van modellen met minimale code. De API is vooral nuttig voor het snel prototypen van modellen en het uitproberen van ideeën zonder in de laagste details van het onderliggende PyTorch-framework te hoeven duiken.

Voorbeelden van gebruik van de Hoog-niveau API

1. Beeldclassificatie

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)

Dit voorbeeld laat zien hoe je een beeldclassificatiemodel op de Oxford IIT Pets dataset opzet en traint met fastai’s hoog-niveau API.

2. Tekst Sentimentanalyse

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)

Hier wordt fastai gebruikt voor het bouwen van een sentimentanalysemodel op de IMDB-dataset.

3. Tabeldata

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)

Dit voorbeeld illustreert het gebruik van fastai voor tabeldata, specifiek de Adult-dataset.

Midden-niveau API

De midden-niveau API van fastai biedt meer aanpassingsmogelijkheden dan de hoog-niveau API, zodat gebruikers verschillende aspecten van het trainingsproces kunnen aanpassen zonder zich te verdiepen in de laagste details. Het biedt een balans tussen gebruiksgemak en flexibiliteit en is geschikt voor gebruikers die meer controle willen over hun modellen, maar toch profiteren van vooraf gedefinieerde componenten.

Componenten van de Midden-niveau API

  • Learner: Een kerncomponent die het model, de data en de trainingslus omvat. Kan aangepast worden met verschillende architecturen, optimizers en metrics.
  • Callbacks: Functies waarmee de trainingslus kan worden uitgebreid met eigen gedrag, zoals het opslaan van checkpoints, aanpassen van leersnelheden of het loggen van metrics.

Voorbeeldgebruik

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

In dit voorbeeld wordt een callback gebruikt om het model met de beste nauwkeurigheid tijdens de training op te slaan, wat de flexibiliteit van de midden-niveau API aantoont.

Laag-niveau API

Voor gevorderde gebruikers en onderzoekers die volledige controle over hun modellen willen, biedt fastai’s laag-niveau API toegang tot de onderliggende PyTorch-functionaliteiten en geoptimaliseerde bouwstenen. Dit niveau van de API is bedoeld voor wie de grenzen van deep learning wil verleggen met eigen architecturen of aangepaste trainingsroutines.

Kenmerken van de Laag-niveau API

  • Pipeline en Transforms: Aanpasbare dataverwerkingssequenties die op specifieke behoeften kunnen worden afgestemd.
  • Objectgeoriënteerde Tensors: Uitbreidingen op PyTorch-tensors voor intuïtiever gebruik.
  • Geoptimaliseerde Operaties: Efficiënte tensorbewerkingen die gebruikmaken van de mogelijkheden van PyTorch.

Voorbeeldgebruik

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

Deze code laat zien hoe je een aangepaste dataverwerkingspipeline maakt met fastai’s laag-niveau API, waarbij een reeks transformaties op een afbeelding worden toegepast.

Fastai in de praktijk: Gepubliceerde Voorbeelden

  1. Fastai: A Layered API for Deep Learning
    Auteurs: Jeremy Howard, Sylvain Gugger
    Fastai is een deep learning-bibliotheek ontworpen om snelle prototyping en implementatie van deep learning-modellen mogelijk te maken. Dit wordt bereikt door hoog-niveau componenten te bieden voor standaard deep learning-taken, terwijl onderzoekers zich kunnen verdiepen in laag-niveau componenten voor eigen oplossingen. Dit artikel beschrijft de architectuur van de bibliotheek, die gebruikmaakt van de dynamiek van Python en de flexibiliteit van PyTorch om losgekoppelde abstracties te creëren voor deep learning-taken. Innovaties in Fastai zijn onder andere een type dispatch-systeem, een GPU-geoptimaliseerde computer vision-bibliotheek, een nieuw optimizer-ontwerp en een tweewegs callback-systeem. Het gebruiksgemak en het vermogen om state-of-the-art resultaten te behalen maken de bibliotheek populair in onderzoek, industrie en onderwijs. Lees meer

  2. Microvasculature Segmentation in Human BioMolecular Atlas Program (HuBMAP)
    Auteurs: Youssef Sultan, Yongqiang Wang, James Scanlon, Lisa D’lima
    In deze studie wordt Fastai gebruikt voor beeldsegmentatie in het Human BioMolecular Atlas Program (HuBMAP), met als focus het segmenteren van microvasculaire structuren in menselijke nieren. De methodologie start met een Fastai U-Net-model, waarbij alternatieve architecturen en deep models worden onderzocht om de segmentatienauwkeurigheid te verbeteren. Dit werk illustreert Fastai’s capaciteit als basis-tool in medische beeldvorming, met inzichten in geavanceerde segmentatietechnieken en hun benchmarking tegen basismodellen. Lees meer

  3. Egglog Python: A Pythonic Library for E-graphs
    Auteur: Saul Shanabrook
    Hoewel niet direct over Fastai, introduceert dit artikel Python-bindings voor de egglog-bibliotheek, met nadruk op de integratie van e-graph-technieken in Python. Deze aanpak sluit aan bij Fastai’s filosofie om het potentieel van Python te benutten voor innovatie in machine learning en wetenschappelijke computing. Het laat zien hoe Pythonic API’s samenwerking en innovatie in verschillende domeinen kunnen faciliteren, wat mogelijk aansluit bij de veelzijdigheid van Fastai. [Lees meer](https://arxiv.org/abs/2404

Veelgestelde vragen

Wat is Fastai?

Fastai is een uitgebreide, open-source deep learning-bibliotheek gebouwd op PyTorch. Het vereenvoudigt het maken en trainen van neurale netwerken via hoog-niveau API’s, ondersteunt beeldherkenning, NLP, tabeldata en collaborative filtering-taken, en heeft als doel deep learning te democratiseren voor gebruikers van elk niveau.

Wie heeft Fastai ontwikkeld?

Fastai is ontwikkeld door Jeremy Howard en Rachel Thomas als onderdeel van een missie om deep learning toegankelijk en praktisch te maken voor iedereen.

Wat maakt Fastai uniek?

Fastai biedt een gelaagde API met hoog-, midden- en laag-niveau componenten, gebruiksvriendelijke abstracties, ondersteuning voor transfer learning, een modulaire datablock-API en een krachtig callback-systeem. Het is open-source en wordt ondersteund door een levendige community.

Wat zijn veelvoorkomende toepassingen van Fastai?

Fastai wordt gebruikt voor computer vision, natural language processing (NLP), analyse van tabeldata, collaborative filtering (aanbevelingssystemen) en het uitrollen van modellen naar productie. Het is populair in onderzoek, industrie en onderwijs.

Hoe installeer ik Fastai?

Je kunt Fastai installeren via conda met 'conda install -c fastai fastai' of via pip met 'pip install fastai'. Het werkt ook naadloos in Google Colab en Jupyter notebooks.

Is Fastai gratis te gebruiken?

Ja, Fastai is volledig open-source onder de Apache License 2.0. Alle software, onderzoek en cursussen worden gratis aangeboden om wereldwijde toegankelijkheid te garanderen.

Ontdek Fastai en Bouw AI-oplossingen

Ontdek hoe Fastai's hoog-niveau API's en open-source tools jouw AI-projecten en leertraject kunnen versnellen. Probeer FlowHunt voor naadloze AI-ontwikkeling.

Meer informatie