AI-tools 101
Volledige beginnershandleiding voor het knuffelen van gezicht LLM Tools

Hugging Face is een AI-onderzoekslaboratorium en -hub die een gemeenschap van wetenschappers, onderzoekers en enthousiastelingen heeft opgebouwd. In korte tijd heeft Hugging Face een substantiële aanwezigheid verworven in de AI-ruimte. Tech reuzen waaronder Google, Amazon en Nvidia hebben de AI-startup Hugging Face met aanzienlijke investeringen ondersteund, waardoor de waardering is gerealiseerd $ 4.5 miljard.
In deze gids introduceren we transformatoren, LLM's en hoe de Hugging Face-bibliotheek een belangrijke rol speelt bij het bevorderen van een opensource AI-gemeenschap. We zullen ook de essentiële functies van Hugging Face doornemen, inclusief pijplijnen, datasets, modellen en meer, met praktische Python-voorbeelden.
Transformatoren in NLP
In 2017 publiceerde Cornell University een invloedrijk artikel waarin dit werd geïntroduceerd transformers. Dit zijn deep learning-modellen die in NLP worden gebruikt. Deze ontdekking stimuleerde de ontwikkeling van grote taalmodellen zoals ChatGPT.
Grote taalmodellen of LLM's zijn AI-systemen die transformatoren gebruiken om mensachtige tekst te begrijpen en te creëren. Het maken van deze modellen is echter duur en vergt vaak miljoenen dollars, wat de toegankelijkheid ervan voor grote bedrijven beperkt.
Gezicht knuffelen, gestart in 2016, heeft als doel NLP-modellen voor iedereen toegankelijk te maken. Ondanks dat het een commercieel bedrijf is, biedt het een scala aan open-sourcebronnen die mensen en organisaties helpen om op betaalbare wijze transformatormodellen te bouwen en te gebruiken. Machine learning gaat over het leren van computers om taken uit te voeren door patronen te herkennen, terwijl deep learning, een subset van machine learning, een netwerk creëert dat zelfstandig leert. Transformers zijn een soort deep learning-architectuur die effectief en flexibel invoergegevens gebruikt, waardoor het een populaire keuze is voor het bouwen van grote taalmodellen vanwege de lagere trainingstijdvereisten.
Hoe het knuffelen van gezicht NLP- en LLM-projecten vergemakkelijkt
Hugging Face heeft het werken met LLM's eenvoudiger gemaakt door het volgende aan te bieden:
- Keuze uit een reeks vooraf getrainde modellen.
- Tools en voorbeelden om deze modellen af te stemmen op uw specifieke behoeften.
- Eenvoudige implementatieopties voor verschillende omgevingen.
Een geweldige hulpbron die beschikbaar is via Hugging Face is de LLM-klassement openen. Het functioneert als een alomvattend platform en monitort, rangschikt en meet systematisch de efficiëntie van een spectrum van Large Language Models (LLM's) en chatbots, waardoor een scherpe analyse wordt geboden van de vorderingen in het open-sourcedomein
LLM Benchmarks meet modellen aan de hand van vier statistieken:
- AI2 Redeneer-uitdaging (25-shot) - een reeks vragen rond de syllabus van de elementaire natuurwetenschappen.
- HellaSwag (10-shot) – een op gezond verstand gebaseerde gevolgtrekkingstest die, hoewel eenvoudig voor mensen, deze metriek een aanzienlijke uitdaging vormt voor geavanceerde modellen.
- MMLU (5-shot) — een veelzijdige evaluatie die de vaardigheid van een tekstmodel in 57 verschillende domeinen raakt, waaronder onder meer elementaire wiskunde, rechten en informatica.
- waarheidsgetrouwe QA (0-shot) — een hulpmiddel om de neiging van een model vast te stellen om veel voorkomende online desinformatie te weerspiegelen.
De benchmarks, die worden beschreven met termen als ‘25-shot’, ‘10-shot’, ‘5-shot’ en ‘0-shot’, geven het aantal snelle voorbeelden aan dat een model tijdens het evaluatieproces krijgt. om zijn prestaties en redeneervermogen op verschillende domeinen te meten. In ‘few-shot’-paradigma’s worden modellen voorzien van een klein aantal voorbeelden om hun antwoorden te helpen begeleiden, terwijl in een ‘0-shot’-setting modellen geen voorbeelden ontvangen en uitsluitend moeten vertrouwen op hun reeds bestaande kennis om op de juiste manier te kunnen reageren. .
Onderdelen van knuffelgezicht
Pijpleidingen
'pijpleidingen' maken deel uit van de Transformers-bibliotheek van Hugging Face, een functie die helpt bij het eenvoudig gebruik van vooraf getrainde modellen die beschikbaar zijn in de Hugging Face-repository. Het biedt een intuïtieve API voor een reeks taken, waaronder sentimentanalyse, het beantwoorden van vragen, gemaskerde taalmodellering, herkenning van benoemde entiteiten en samenvattingen.
Pijpleidingen integreren drie centrale Hugging Face-componenten:
- tokenizer: Bereidt uw tekst voor op het model door deze om te zetten in een formaat dat het model begrijpt.
- Model: Dit is het hart van de pijplijn waar de daadwerkelijke voorspellingen worden gedaan op basis van de voorbewerkte invoer.
- Post-processor: Transformeert de ruwe voorspellingen van het model in een voor mensen leesbare vorm.
Deze pijplijnen verminderen niet alleen de uitgebreide codering, maar bieden ook een gebruiksvriendelijke interface om verschillende NLP-taken uit te voeren.
Transformer-applicaties die de Hugging Face-bibliotheek gebruiken
Een hoogtepunt van de Hugging Face-bibliotheek is de Transformers-bibliotheek, die NLP-taken vereenvoudigt door een model te verbinden met de noodzakelijke voor- en nabewerkingsfasen, waardoor het analyseproces wordt gestroomlijnd. Gebruik de volgende opdrachten om de bibliotheek te installeren en te importeren:
pip install -q transformers from transformers import pipeline
Nadat u dat hebt gedaan, kunt u NLP-taken uitvoeren, te beginnen met sentimentanalyse, waarbij tekst wordt gecategoriseerd in positieve of negatieve sentimenten. De krachtige pipeline()-functie van de bibliotheek dient als een hub die andere pipelines omvat en taakspecifieke toepassingen in audio-, vision- en multimodale domeinen mogelijk maakt.
Praktische toepassingen
Tekstclassificatie
Tekstclassificatie wordt een fluitje van een cent met de pipeline()-functie van Hugging Face. Zo kunt u een pijplijn voor tekstclassificatie initiëren:
classifier = pipeline("text-classification")
Voor een praktische ervaring voert u een tekenreeks of een lijst met tekenreeksen in uw pijplijn in om voorspellingen te verkrijgen, die netjes kunnen worden gevisualiseerd met behulp van de Pandas-bibliotheek van Python. Hieronder staat een Python-fragment dat dit demonstreert:
sentences = ["I am thrilled to introduce you to the wonderful world of AI.", "Hopefully, it won't disappoint you."] # Get classification results for each sentence in the list results = classifier(sentences) # Loop through each result and print the label and score for i, result in enumerate(results): print(f"Result {i + 1}:") print(f" Label: {result['label']}") print(f" Score: {round(result['score'], 3)}\n")
uitgang
Result 1: Label: POSITIVE Score: 1.0 Result 2: Label: POSITIVE Score: 0.996
Erkenning van benoemde entiteiten (NER)
NER is cruciaal bij het extraheren van objecten uit de echte wereld die 'benoemde entiteiten' worden genoemd uit de tekst. Gebruik de NER-pijplijn om deze entiteiten effectief te identificeren:
ner_tagger = pipeline("ner", aggregation_strategy="simple") text = "Elon Musk is the CEO of SpaceX." outputs = ner_tagger(text) print(outputs)
uitgang
Elon Musk: PER, SpaceX: ORG
Vraag beantwoorden
Bij het beantwoorden van vragen gaat het om het extraheren van precieze antwoorden op specifieke vragen uit een bepaalde context. Initialiseer een vraag-antwoordpijplijn en voer uw vraag en context in om het gewenste antwoord te krijgen:
reader = pipeline("question-answering") text = "Hugging Face is a company creating tools for NLP. It is based in New York and was founded in 2016." question = "Where is Hugging Face based?" outputs = reader(question=question, context=text) print(outputs)
uitgang
{'score': 0.998, 'start': 51, 'end': 60, 'answer': 'New York'}
De pijplijnfunctie van Hugging Face biedt een reeks vooraf gebouwde pijplijnen voor verschillende taken, naast tekstclassificatie, NER en het beantwoorden van vragen. Hieronder vindt u details over een subset van beschikbare taken:
Tabel: Pijplijntaken knuffelgezicht
Taak | Technische Beschrijving | Pijpleiding-ID |
Tekst genereren | Genereer tekst op basis van een bepaalde prompt | pijplijn(taak=”tekstgeneratie”) |
Samenvattend | Vat een lange tekst of document samen | pipeline(taak=”samenvatting”) |
Afbeeldingsclassificatie | Label een invoerafbeelding | pipeline(task=”image-classification”) |
Audio Classificatie | Categoriseer audiogegevens | pijplijn(taak=”audio-classificatie”) |
Visuele vraag beantwoorden | Beantwoord een vraag met zowel een afbeelding als een vraag | pijplijn(taak=”vqa”) |
Voor gedetailleerde beschrijvingen en meer taken raadpleegt u de pijplijndocumentatie op de website van Hugging Face.
Waarom Hugging Face de focus verlegt naar Rust
Het Hugging Face (HF)-ecosysteem begon Rust te gebruiken in zijn bibliotheken, zoals safesensors en tokenizers.
Hugging Face heeft zeer recent ook een nieuw machine-learning framework uitgebracht genaamd Kaars. In tegenstelling tot traditionele raamwerken die Python gebruiken, is Candle gebouwd met Rust. Het doel achter het gebruik van Rust is om de prestaties te verbeteren en de gebruikerservaring te vereenvoudigen en tegelijkertijd GPU-bewerkingen te ondersteunen.
Het belangrijkste doel van Candle is het vergemakkelijken van serverloze inferentie, waardoor de inzet van lichtgewicht binaire bestanden mogelijk wordt en Python uit de productieworkloads wordt verwijderd, wat soms processen kan vertragen vanwege de overheadkosten. Dit raamwerk is een oplossing om de problemen op te lossen die je tegenkomt bij volledige machine learning-frameworks zoals PyTorch, die groot en traag zijn bij het maken van instanties op een cluster.
Laten we onderzoeken waarom Rust veel meer een favoriete keuze wordt dan Python.
- Snelheid en prestaties – Rust staat bekend om zijn ongelooflijke snelheid en presteert beter dan Python, dat traditioneel wordt gebruikt in machine learning-frameworks. De prestaties van Python kunnen soms worden vertraagd vanwege de Global Interpreter Lock (GIL), maar Rust heeft hier geen last van en belooft een snellere uitvoering van taken en vervolgens verbeterde prestaties in projecten waar het wordt geïmplementeerd.
- Veiligheid – Rust biedt geheugenveiligheidsgaranties zonder een garbage collector, een aspect dat essentieel is voor het waarborgen van de veiligheid van gelijktijdige systemen. Dit speelt een cruciale rol op gebieden zoals safetensors, waar veiligheid bij het omgaan met datastructuren een prioriteit is.
Beveiligingen
Beveiligingen profiteer van de snelheids- en veiligheidsfuncties van Rust. Safetensors omvat de manipulatie van tensoren, een complexe wiskundige entiteit, en Rust zorgt ervoor dat de bewerkingen niet alleen snel, maar ook veilig zijn, waardoor veelvoorkomende bugs en beveiligingsproblemen worden vermeden die kunnen voortvloeien uit verkeerd gebruik van het geheugen.
tokenizer
Tokenizers omgaan met het opsplitsen van zinnen of woordgroepen in kleinere eenheden, zoals woorden of termen. Rust helpt bij dit proces door de uitvoeringstijd te versnellen en ervoor te zorgen dat het tokenisatieproces niet alleen nauwkeurig maar ook snel is, waardoor de efficiëntie van natuurlijke taalverwerkingstaken wordt vergroot.
De kern van de tokenizer van Hugging Face is het concept van tokenisatie van subwoorden, waarbij een delicate balans wordt gevonden tussen tokenisatie op woord- en karakterniveau om het onthouden van informatie en de omvang van de woordenschat te optimaliseren. Het functioneert door het creëren van subtokens, zoals “##ing” en “##ed”, waarbij de semantische rijkdom behouden blijft en een opgeblazen vocabulaire wordt vermeden.
Subwoord-tokenisatie omvat een trainingsfase om de meest effectieve balans tussen tokenisatie op karakter- en woordniveau te identificeren. Het gaat verder dan louter voorvoegsel- en achtervoegselregels, en vereist een uitgebreide analyse van taalpatronen in uitgebreide tekstcorpora om een efficiënte tokenizer voor subwoorden te ontwerpen. De gegenereerde tokenizer is bedreven in het omgaan met nieuwe woorden door ze op te splitsen in bekende subwoorden, waardoor een hoog niveau van semantisch begrip behouden blijft.
Tokenisatiecomponenten
De tokenizers-bibliotheek verdeelt het tokenisatieproces in verschillende stappen, die elk een ander facet van tokenisatie behandelen. Laten we ons verdiepen in deze componenten:
- Normalizer: Voert initiële transformaties uit op de invoertekenreeks, waarbij de nodige aanpassingen worden toegepast, zoals conversie van kleine letters, Unicode-normalisatie en strippen.
- PreTokenizer: Verantwoordelijk voor het fragmenteren van de invoerreeks in pre-segmenten, het bepalen van de splitsingen op basis van vooraf gedefinieerde regels, zoals ruimteafbakeningen.
- Model: houdt toezicht op de ontdekking en creatie van subtokens, past zich aan de specifieke kenmerken van uw invoergegevens aan en biedt trainingsmogelijkheden.
- Post-processor: Verbeterde constructiefuncties om de compatibiliteit met veel op transformatoren gebaseerde modellen, zoals BERT, te vergemakkelijken door tokens toe te voegen zoals [CLS] en [SEP].
Om aan de slag te gaan met Hugging Face-tokenizers installeert u de bibliotheek met behulp van de opdracht pip install tokenizers
en importeer het in uw Python-omgeving. De bibliotheek kan in zeer korte tijd grote hoeveelheden tekst tokeniseren, waardoor kostbare computerbronnen worden bespaard voor intensievere taken zoals modeltraining.
De tokenizers-bibliotheek gebruikt Roest die de syntactische gelijkenis van C++ erft en tegelijkertijd nieuwe concepten introduceert in het ontwerp van programmeertalen. In combinatie met Python-bindingen zorgt het ervoor dat u kunt genieten van de prestaties van een taal op een lager niveau terwijl u in een Python-omgeving werkt.
datasets
Datasets vormen de basis van AI-projecten. Hugging Face biedt een grote verscheidenheid aan datasets, geschikt voor een reeks NLP-taken, en meer. Om ze efficiënt te kunnen gebruiken, is het essentieel om het proces van het laden en analyseren ervan te begrijpen. Hieronder vindt u een goed becommentarieerd Python-script dat demonstreert hoe u datasets kunt verkennen die beschikbaar zijn op Hugging Face:
from datasets import load_dataset # Load a dataset dataset = load_dataset('squad') # Display the first entry print(dataset[0])
Dit script gebruikt de functie load_dataset om de SQuAD-gegevensset te laden, wat een populaire keuze is voor het beantwoorden van vragen.
Door gebruik te maken van vooraf getrainde modellen en alles samen te brengen
Vooraf getrainde modellen vormen de ruggengraat van veel deep learning-projecten, waardoor onderzoekers en ontwikkelaars hun initiatieven een vliegende start kunnen geven zonder helemaal opnieuw te hoeven beginnen. Hugging Face vergemakkelijkt de verkenning van een breed scala aan vooraf getrainde modellen, zoals weergegeven in de onderstaande code:
from transformers import AutoModelForQuestionAnswering, AutoTokenizer # Load the pre-trained model and tokenizer model = AutoModelForQuestionAnswering.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad') tokenizer = AutoTokenizer.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad') # Display the model's architecture print(model)
Nu het model en de tokenizer zijn geladen, kunnen we nu doorgaan met het maken van een functie die een stuk tekst en een vraag als invoer gebruikt en het antwoord retourneert dat uit de tekst is geëxtraheerd. We zullen de tokenizer gebruiken om de invoertekst en vraag te verwerken in een formaat dat compatibel is met het model, en vervolgens zullen we deze verwerkte invoer in het model invoeren om het antwoord te krijgen:
def get_answer(text, question): # Tokenize the input text and question inputs = tokenizer(question, text, return_tensors='pt', max_length=512, truncation=True) outputs = model(**inputs) # Get the start and end scores for the answer answer_start = torch.argmax(outputs.start_logits) answer_end = torch.argmax(outputs.end_logits) + 1 answer = tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(inputs['input_ids'][0][answer_start:answer_end])) return answer
In het codefragment importeren we de benodigde modules uit het transformerspakket en laden vervolgens een vooraf getraind model en de bijbehorende tokenizer met behulp van de from_pretrained-methode. We kiezen voor een BERT-model dat is afgestemd op de SQuAD-dataset.
Laten we een voorbeeld van deze functie bekijken waarbij we een alinea tekst hebben en daar een specifiek antwoord op een vraag uit willen halen:
text = """ The Eiffel Tower, located in Paris, France, is one of the most iconic landmarks in the world. It was designed by Gustave Eiffel and completed in 1889. The tower stands at a height of 324 meters and was the tallest man-made structure in the world at the time of its completion. """ question = "Who designed the Eiffel Tower?" # Get the answer to the question answer = get_answer(text, question) print(f"The answer to the question is: {answer}") # Output: The answer to the question is: Gustave Eiffel
In dit script bouwen we een get_antwoord-functie die een tekst en een vraag neemt, deze op de juiste manier tokeniseert en het vooraf getrainde BERT-model gebruikt om het antwoord uit de tekst te extraheren. Het demonstreert een praktische toepassing van de transformatorbibliotheek van Hugging Face om een eenvoudig maar krachtig vraag-antwoordsysteem te bouwen. Om de concepten goed te begrijpen, wordt aanbevolen om praktijkgericht te experimenteren met behulp van een Google Colab-notitieboekje.
Conclusie
Door het uitgebreide aanbod aan open-sourcetools, vooraf getrainde modellen en gebruiksvriendelijke pipelines stelt het zowel doorgewinterde professionals als nieuwkomers in staat zich met een gevoel van gemak en begrip te verdiepen in de uitgebreide wereld van AI. Bovendien onderstreept het initiatief om Rust te integreren, vanwege de snelheids- en veiligheidskenmerken, de toewijding van Hugging Face om innovatie te bevorderen en tegelijkertijd de efficiëntie en veiligheid in AI-toepassingen te garanderen. Het transformerende werk van Hugging Face democratiseert niet alleen de toegang tot AI-tools van hoog niveau, maar bevordert ook een samenwerkingsomgeving voor leren en ontwikkeling in de AI-ruimte, waardoor een toekomst wordt gefaciliteerd waarin AI toegankelijk is voor