AI-værktøjer 101
Komplet begynderguide til Hugging Face LLM-værktøjer

Hugging Face er et AI-forskningslaboratorium og -hub, der har opbygget en fællesskab af forskere, studerende og entusiaster. På kort tid har Hugging Face opnået en betydelig tilstedeværelse i AI-verdenen. Tech-giganter som Google (GOOGL ), Amazon (AMZN ) og Nvidia (NVDA ) har støttet AI-startup Hugging Face med betydelige investeringer, hvilket har gjort deres værdi til 4,5 milliarder dollars.
I denne guide vil vi introducere transformers, LLM’er og hvordan Hugging Face-biblioteket spiller en vigtig rolle i at fremme en åben AI-fællesskab. Vi vil også gå igennem de væsentlige funktioner i Hugging Face, herunder pipelines, datasets, modeller og mere, med praktiske Python-eksempler.
Transformers i NLP
I 2017 offentliggjorde Cornell University en indflydelsesrig artikel, der introducerede transformers. Disse er dybe læringmodeller, der bruges i NLP. Denne opdagelse fremmede udviklingen af store sprogmodeller som ChatGPT.
Store sprogmodeller eller LLM’er er AI-systemer, der bruger transformers til at forstå og oprette menneske-lignende tekst. Dog er det dyrt at oprette disse modeller, ofte kræver det millioner af dollars, hvilket begrænser deres tilgængelighed til store virksomheder.
Hugging Face, der blev grundlagt i 2016, har til formål at gøre NLP-modeller tilgængelige for alle. Trods at det er et kommercielt selskab, tilbyder det en række åbne ressourcer, der hjælper mennesker og organisationer med at bygge og bruge transformer-modeller på en billig måde. Maskinlæring handler om at lære computere at udføre opgaver ved at genkende mønstre, mens dyb læring, en undergruppe af maskinlæring, skaber et netværk, der lærer uafhængigt. Transformers er en type dyb læringarkitektur, der effektivt og fleksibelt bruger inputdata, hvilket gør dem til en populær valg til at bygge store sprogmodeller på grund af deres mindre træningstidskrav.
Hvordan Hugging fremmer NLP- og LLM-projekter
Hugging Face har gjort det lettere at arbejde med LLM’er ved at tilbyde:
- Et udvalg af fortrænede modeller at vælge imellem.
- Værktøjer og eksempler til at finjustere disse modeller til dine specifikke behov.
- Lette installationsmuligheder for forskellige miljøer.
En fremragende ressource, der er tilgængelig via Hugging Face, er Open LLM Leaderboard. Den fungerer som en omfattende platform, der systematisk overvåger, rangerer og vurderer effektiviteten af et spektrum af store sprogmodeller (LLM’er) og chatbots, og giver en diskriminerende analyse af fremgangen i det åbne domæne
LLM-benchmarks måler modeller gennem fire metrikker:
- AI2 Reasoning Challenge (25-shot) – en række spørgsmål om grundlæggende videnskab.
- HellaSwag (10-shot) – en fællesforståelses-test, der er enkel for mennesker, men en betydelig udfordring for avancerede modeller.
- MMLU (5-shot) – en multifacetteret vurdering, der berører en tekstmodels kompetence på tværs af 57 forskellige domæner, herunder grundlæggende matematik, jura og datalogi, blandt andet.
- TruthfulQA (0-shot) – et værktøj til at bestemme en models tendens til at gentage ofte mødt online-misinformation.
Benchmarks, der beskrives med begreber som “25-shot”, “10-shot”, “5-shot” og “0-shot”, indikerer antallet af prompt-eksempler, der gives til en model under vurderingsprocessen for at måle dens præstation og resonneringsfærdigheder i forskellige domæner. I “few-shot”-paradigmer gives modellerne en lille mængde eksempler for at hjælpe med at guide deres svar, hvorimod modeller i en “0-shot”-sætning ikke modtager nogen eksempler og må kun stole på deres forudgående viden for at svare passende.
Komponenter af Hugging
Pipelines
‘Pipelines’ er en del af Hugging Faces transformers-bibliotek – en funktion, der hjælper med den lette brug af fortrænede modeller, der er tilgængelige i Hugging Faces repository. Det giver en intuitiv API til en række opgaver, herunder sentimentanalyse, spørgsmålssvar, maskeret sprogmodellering, navngivet entitetsgenkendelse og sammenfatning.
Pipelines integrerer tre centrale Hugging Face-komponenter:
- Tokenizer: Forbereder din tekst til modellen ved at konvertere den til et format, som modellen kan forstå.
- Model: Dette er hjertet af pipelinen, hvor de faktiske forudsigelser foretages på basis af den forarbejdede input.
- Post-processor: Transformerer modellens rå forudsigelser til en menneske-læselig form.
Disse pipelines reducerer ikke kun omfattende kodning, men tilbyder også en brugervenlig interface til at udføre forskellige NLP-opgaver.
Transformer-anvendelser med Hugging Face-biblioteket
Et højdepunkt i Hugging Face-biblioteket er Transformers-biblioteket, der forenkler NLP-opgaver ved at forbinde en model med nødvendige for- og efterbehandlingsfaser, hvilket strømliner analyseringsprocessen. For at installere og importere biblioteket skal du bruge følgende kommandoer:
pip install -q transformers from transformers import pipeline
Efter at have gjort dette kan du udføre NLP-opgaver, starting med sentimentanalyse, der kategoriserer tekst som positiv eller negativ. Bibliotekets kraftfulde pipeline()-funktion fungerer som et hub, der omfatter andre pipelines og faciliterer opgave-specifikke anvendelser i lyd-, syns- og multimodale domæner.
Praktiske anvendelser
Tekstklassificering
Tekstklassificering bliver en leg med Hugging Faces pipeline()-funktion. Her er, hvordan du kan initiere en tekstklassificerings-pipeline:
classifier = pipeline("tekstklassificering")
For en praktisk oplevelse kan du føde en streng eller en liste af strenge ind i din pipeline for at få forudsigelser, som kan visualiseres pænt med Python’s Pandas-bibliotek. Her er et Python-eksempel, der demonstrerer dette:
sentences = ["Jeg er begejstret for at introducere dig til den vidunderlige verden af AI.",
"Jeg håber, det ikke vil skuffe dig."]
# Få klassificeringsresultater for hver sætning i listen
results = classifier(sentences)
# Løb igennem hvert resultat og udskriv label og score
for i, result in enumerate(results):
print(f"Resultat {i + 1}:")
print(f" Label: {result['label']}")
print(f" Score: {round(result['score'], 3)}\n")
Output
Resultat 1: Label: POSITIV Score: 1.0 Resultat 2: Label: POSITIV Score: 0.996
Navngivet entitetsgenkendelse (NER)
NER er afgørende for at trække virkelige objekter, kaldet “navngivne entiteter”, ud af teksten. Du kan bruge NER-pipelinen til at identificere disse entiteter effektivt:
ner_tagger = pipeline("ner", aggregation_strategy="simple")
text = "Elon Musk er direktør for SpaceX."
outputs = ner_tagger(text)
print(outputs)
Output
Elon Musk: PER, SpaceX: ORG
Spørgsmålssvar
Spørgsmålssvar indebærer at trække præcise svar til bestemte spørgsmål ud af en given kontekst. Initialiser en spørgsmålssvar-pipeline og indtast dit spørgsmål og kontekst for at få det ønskede svar:
reader = pipeline("question-answering")
text = "Hugging Face er et selskab, der skaber værktøjer til NLP. Det er beliggende i New York og blev grundlagt i 2016."
question = "Hvor er Hugging Face beliggende?"
outputs = reader(question=question, context=text)
print(outputs)
Output
{ 'score': 0.998, 'start': 51, 'end': 60, 'answer': 'New York' } Hugging Faces pipeline()-funktion tilbyder en række forudbyggede pipelines til forskellige opgaver, ud over tekstklassificering, NER og spørgsmålssvar. Her er detaljer om en undergruppe af tilgængelige opgaver:
Table: Hugging Face Pipeline-opgaver
| Opgave | Beskrivelse | Pipeline-identifikator |
| Tekstgenerering | Generer tekst baseret på en given prompt | pipeline(task=”tekstgenerering”) |
| Sammenfatning | Sammenfat en længere tekst eller dokument | pipeline(task=”sammenfatning”) |
| Billedeklassificering | Mærk en input-billede | pipeline(task=”billedeklassificering”) |
| Lydklassificering | Kategoriser lyddata | pipeline(task=”lydklassificering”) |
| Visuel spørgsmålssvar | Svar på et spørgsmål ved hjælp af både et billede og et spørgsmål | pipeline(task=”vqa”) |
Til detaljerede beskrivelser og flere opgaver henvises til pipeline-dokumentation på Hugging Faces hjemmeside.
Hvorfor Hugging skifter fokus til Rust
Hugging Face-økosystemet (HF) begyndte at bruge Rust i dets biblioteker, såsom safetensors og tokenizers.
Hugging Face har meget nyligt også udgivet et nyt machine learning-rammeværk kaldet Candle. I modsætning til traditionelle rammeværker, der bruger Python, er Candle bygget med Rust. Formålet med at bruge Rust er at forbedre ydeevnen og simplificere brugeroplevelsen, samtidig med at det understøtter GPU-operationer.
Det primære mål med Candle er at facilitere serverless inference, hvilket gør det muligt at deploye letvægtige binærer og fjerner Python fra produktionsarbejdsprocesser, som kan være langsomme på grund af deres overhead. Dette rammeværk kommer som en løsning for at overvinde problemerne, der er forbundet med fulde machine learning-rammeværker som PyTorch, der er store og langsomme, når de oprettes på en cluster.
Lad os udforske, hvorfor Rust bliver et mere populært valg end Python.
- Hastighed og ydeevne – Rust er kendt for sin utrolige hastighed, der overgår Python, der traditionelt bruges i machine learning-rammeværker. Pythons ydeevne kan nogle gange være langsommere på grund af dets Global Interpreter Lock (GIL), men Rust har ikke dette problem, hvilket lover en hurtigere udførelse af opgaver og en bedre ydeevne i projekter, hvor det implementeres.
- Sikkerhed – Rust giver garantier for hukommelsessikkerhed uden en genbrugsindsamler, et aspekt, der er afgørende for at sikre sikkerheden af samtidige systemer. Dette spiller en afgørende rolle i områder som safetensors, hvor sikkerhed i håndtering af datastrukturer er en prioritet.
Safetensors
Safetensors drager fordel af Rusts hastighed og sikkerhedsfunktioner. Safetensors indebærer manipulation af tensorer, en kompleks matematisk enhed, og med Rust sikres det, at operationerne ikke kun er hurtige, men også sikre, og undgår almindelige fejl og sikkerhedsproblemer, der kan opstå på grund af hukommelsesfejl.
Tokenizer
Tokenizers håndterer opdelingen af sætninger eller fraser i mindre enheder, såsom ord eller termer. Rust hjælper med dette ved at accelerere udførelsestiden, hvilket sikrer, at tokeniseringsprocessen ikke kun er præcis, men også hurtig, og forbedrer effektiviteten af naturligsprogsbehandling.
I hjertet af Hugging Faces tokenizer ligger begrebet subword-tokenisering, der finder en balance mellem ord- og karakterniveau-tokenisering for at optimere informationsbevarelse og ordliste-størrelse. Det fungerer gennem oprettelsen af subtokens, såsom “##ing” og “##ed”, der bevare semantisk rigdom, samtidig med at de undgår en opblæst ordliste.
Subword-tokenisering indebærer en træningsfase for at identificere den mest effektive balance mellem karakter- og ordniveau-tokenisering. Det går ud over blot præfiks- og suffiksregler og kræver en omfattende analyse af sprogmønstre i store tekstkorpusser for at designe en effektiv subword-tokenizer. Den genererede tokenizer er i stand til at håndtere nye ord ved at bryde dem ned i kendte subwords, samtidig med at den opretholder et højt niveau af semantisk forståelse.
Tokeniseringskomponenter
Tokenizers-biblioteket deler tokeniseringsprocessen op i flere trin, hvor hvert trin behandler en særlig aspekt af tokenisering. Lad os dykke ned i disse komponenter:
- Normalisator: Udfører de første transformationer på input-strengen, anvender nødvendige justeringer som omregning til små bogstaver, Unicode-normalisering og fjernelse.
- Præ-tokenizer: Ansvarlig for at fragmentere input-strengen i præ-segmenter, bestemmer splittene på basis af foruddefinerede regler, såsom mellemrum.
- Model: Overvåger opdagelsen og oprettelsen af subtokens, tilpasser sig specifikationerne for din input-data og tilbyder træningsmuligheder.
- Post-processorer: Forbedrer konstruktionsfunktioner for at sikre kompatibilitet med mange transformer-baserede modeller, såsom BERT, ved at tilføje tokens såsom [CLS] og [SEP].
For at komme i gang med Hugging Face-tokenizers skal du installere biblioteket ved hjælp af kommandoen pip install tokenizers og importere det i dit Python-miljø. Biblioteket kan tokenisere store mængder tekst på meget kort tid, hvilket sparer værdifulde beregningsressourcer til mere intensive opgaver som modeltræning.
Tokenizers-biblioteket bruger Rust, der arver C++’s syntaktiske lighed, samtidig med at det introducerer nye koncepter i programmeringssprogdesign. Kombineret med Python-bindings sikrer det, at du kan nyde ydeevnen af et lavniveau-sprog, samtidig med at du arbejder i et Python-miljø.
Datasets
Datasets er grundlaget for AI-projekter. Hugging Face tilbyder en bred vifte af datasets, der er egnet til en række NLP-opgaver og mere. For at bruge dem effektivt er det vigtigt at forstå processen med at indlæse og analysere dem. Her er et velkommenteret Python-script, der demonstrerer, hvordan du kan udforske datasets, der er tilgængelige på Hugging Face:
from datasets import load_dataset
# Indlæs et dataset
dataset = load_dataset('squad')
# Vis den første indgang
print(dataset[0])
Dette script bruger load_dataset-funktionen til at indlæse SQuAD-datasettet, der er et populært valg til spørgsmålssvar-opgaver.
Udnyttelse af fortrænede modeller og samling af det hele
Fortrænede modeller udgør ryggraden af mange dybe læring-projekter, hvilket giver forskere og udviklere mulighed for at starte deres initiativer uden at skulle starte fra scratch. Hugging Face faciliterer udforskningen af en bred vifte af fortrænede modeller, som vist i koden nedenfor:
from transformers import AutoModelForQuestionAnswering, AutoTokenizer
# Indlæs den fortrænede model og 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')
# Vis modellens arkitektur
print(model)
Med modellen og tokenizeren indlæst kan vi nu gå videre til at oprette en funktion, der tager en tekst og et spørgsmål som input og returnerer svaret, der er udtrukket fra teksten. Vi vil bruge tokenizeren til at behandle input-teksten og spørgsmålet til et format, der er kompatibelt med modellen, og derefter føre denne behandlede input ind i modellen for at få svaret:
def get_answer(text, question): # Tokenisér input-teksten og spørgsmålet inputs = tokenizer(question, text, return_tensors='pt', max_length=512, truncation=True) outputs = model(**inputs) # Få start- og slut-scores for svaret 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
I dette kodeeksempel importerer vi de nødvendige moduler fra transformers-pakken, derefter indlæser vi en fortrænet model og dens tilhørende tokenizer ved hjælp af from_pretrained-metoden. Vi vælger en BERT-model, der er finjusteret på SQuAD-datasettet.
Lad os se et eksempel på, hvordan denne funktion kan bruges, hvor vi har en tekst og ønsker at trække et bestemt svar til et spørgsmål ud af den:
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?"
# Få svaret på spørgsmålet
answer = get_answer(text, question)
print(f"The answer to the question is: {answer}")
# Output: The answer to the question is: Gustave Eiffel
I dette script bygger vi en get_answer-funktion, der tager en tekst og et spørgsmål, tokeniserer dem passende, og udnytter den fortrænede BERT-model til at trække svaret ud af teksten. Det demonstrerer en praktisk anvendelse af Hugging Faces transformers-bibliotek til at bygge et simpelt, men kraftfuldt spørgsmålssvar-system. For at forstå koncepterne bedre anbefales det at have en praktisk eksperimentering med en Google Colab Notebook.
Konklusion
Gennem sin omfattende række af åbne værktøjer, fortrænede modeller og brugervenlige pipelines giver Hugging Face både erfarne fagfolk og nye begyndere mulighed for at dykke ind i den vidtstrakte verden af AI med en fornemmelse af letthed og forståelse. Desuden understreger initiativet til at integrere Rust, på grund af dets hastighed og sikkerhedsfunktioner, Hugging Faces engagement i at fremme innovation, samtidig med at det sikrer effektivitet og sikkerhed i AI-anvendelser. Hugging Faces banebrydende arbejde demokratiserer ikke kun adgangen til højniveu-AI-værktøjer, men skaber også en samarbejdende miljø for læring og udvikling i AI-rummet, hvilket faciliterer en fremtid, hvor AI er tilgængelig for alle.

















