AI-verktøy 101
Komplett nybegynnerguide til Hugging Face LLM-verktøy

Hugging Face er et AI-forskningslaboratorium og et nav som har bygget en samfunn av forskere, forskningspersoner og entusiaster. På kort tid har Hugging Face fått en betydelig tilstedeværelse i AI-rommet. Teknologigigantene inkludert Google (GOOGL ), Amazon (AMZN ) og Nvidia (NVDA ) har støttet AI-startup Hugging Face med betydelige investeringer, noe som gjør at verdien er $4,5 milliarder.
I denne guiden vil vi introdusere transformerere, LLM-er og hvordan Hugging Face-biblioteket spiller en viktig rolle i å fremme en åpen kildekode-AI-samfunn. Vi vil også gå gjennom de essensielle funksjonene i Hugging Face, inkludert rørledninger, datasett, modeller og mer, med hånd-til-hånd Python-eksempler.
Transformerer i NLP
I 2017 publiserte Cornell University en innflytelsesrik artikkel som innførte transformerere. Disse er dyplæringmodeller som brukes i NLP. Denne oppdagelsen fremmet utviklingen av store språkmodeller som ChatGPT.
Store språkmodeller eller LLM-er er AI-systemer som bruker transformerere til å forstå og skape menneske-lignende tekst. Imidlertid er det dyrt å lage disse modellene, ofte på grunn av millioner av dollar, noe som begrenser tilgangen til store selskaper.
Hugging Face, startet i 2016, har som mål å gjøre NLP-modeller tilgjengelige for alle. Til tross for å være et kommersielt selskap, tilbyr det en rekke åpen kildekode-resurser som hjelper mennesker og organisasjoner å bygge og bruke transformermodeller på en rimelig måte. Maskinlæring handler om å lære datamaskiner til å utføre oppgaver ved å gjenkjenne mønster, mens dyplæring, en undergruppe av maskinlæring, skaper et nettverk som lærer uavhengig. Transformerere er en type dyplæring-arkitektur som effektivt og fleksibelt bruker inndata, noe som gjør dem til et populært valg for å bygge store språkmodeller på grunn av lavere treningstidskrav.
Hvordan Hugging fremmer NLP- og LLM-prosjekter
Hugging Face har gjort det enklere å arbeide med LLM-er ved å tilby:
- Et utvalg av forhånds-trente modeller å velge mellom.
- Verktøy og eksempler for å finjustere disse modellene til dine spesifikke behov.
- Enkle distribusjonsalternativer for ulike miljøer.
En god ressurs som er tilgjengelig gjennom Hugging Face er Open LLM Leaderboard. Den fungerer som en omfattende plattform som systematisk overvåker, rangerer og måler effektiviteten til en rekke store språkmodeller (LLM-er) og chatbåter, og gir en diskriminerende analyse av fremgangen i åpen kildekode-domenet
LLM-benchmark måler modeller gjennom fire metrikker:
- AI2 Reasoning Challenge (25-shot) — en rekke spørsmål omkring grunnleggende vitenskapelige emner.
- HellaSwag (10-shot) — en sunn fornuft-test som, selv om det er enkelt for mennesker, er en betydelig utfordring for banebrytende modeller.
- MMLU (5-shot) — en multifaset evaluering som berører en tekstmodells evne til å håndtere 57 ulike domener, inkludert grunnleggende matematikk, lov og datavitenskap, blant annet.
- TruthfulQA (0-shot) — et verktøy for å fastslå en modells tendens til å gjenta vanligvis møtt online-desinformasjon.
Benchmarkene, som beskrives med termer som “25-shot”, “10-shot”, “5-shot” og “0-shot”, indikerer antallet eksempel-prompter som en modell får under evalueringen for å måle dens ytelse og resonneringsferdigheter i ulike domener. I “few-shot”-paradigmer får modellene en liten mengde eksempler for å hjelpe med å guide deres svar, mens i en “0-shot”-innstilling mottar modellene ingen eksempler og må stole kun på deres forhånds-eksisterende kunnskap for å svare korrekt.
Komponenter av Hugging
Rørledninger
‘Rørledninger’ er en del av Hugging Face-sitt transformers-bibliotek — en funksjon som hjelper til å enkelt bruke forhånds-trente modeller som er tilgjengelige i Hugging Face-repositoriet. Det tilbyr en intuitiv API for en rekke oppgaver, inkludert sentimentanalyse, spørsmål-svar, maskert språk-modellering, navn-entitets-gjenkjenning og sammenfatting.
Rørledninger integrerer tre sentrale Hugging Face-komponenter:
- Tokenisator: Forbereder din tekst for modellen ved å konvertere den til et format modellen kan forstå.
- Modell: Dette er hjertet av rørledningen hvor de faktiske forutsagnene gjøres basert på forbehandlet inndata.
- Post-prosessor: Transformerer modellens rå-forutsagn til en menneske-lesbar form.
Disse rørledningene reduserer ikke bare omfattende koding, men tilbyr også en brukervennlig grensesnitt for å utføre ulike NLP-oppgaver.
Transformer-applikasjoner med Hugging Face-biblioteket
Et høydepunkt i Hugging Face-biblioteket er Transformers-biblioteket, som forenkler NLP-oppgaver ved å koble en modell med nødvendige for- og etter-behandlingstadier, og strømlinjeformer analysen. For å installere og importere biblioteket, bruk følgende kommandoer:
pip install -q transformers from transformers import pipeline
Etter å ha gjort det, kan du utføre NLP-oppgaver som starter med sentimentanalyse, som kategoriserer tekst som positiv eller negativ. Bibliotekets kraftfulle pipeline()-funksjon fungerer som et nav som omfatter andre rørledninger og fasiliteter oppgave-spesifikke applikasjoner i lyd-, visuell- og multimodal-domener.
Praktiske applikasjoner
Tekst-klassifisering
Tekst-klassifisering blir en bris med Hugging Face-sitt pipeline()-funksjon. Her er hvordan du kan initiere en tekst-klassifisering-rørledning:
classifier = pipeline("tekst-klassifisering")
For en hånd-til-hånd-erfaring, mat inn en streng eller en liste over strenger i din rørledning for å få forutsagn, som kan visualiseres på en fin måte med Python-sitt Pandas-bibliotek. Under er et Python-utdrag som demonstrerer dette:
setninger = ["Jeg er begeistret for å introdusere deg for den fantastiske verden av AI.",
"Håper det ikke vil skuffe deg."]
<p># Få klassifiseringsresultater for hver setning i listen
resultater = classifier(setninger)</p>
<p># Gå gjennom hvert resultat og skriv ut etikett og poeng
for i, resultat in enumerate(resultater):
print(f"Resultat {i + 1}:")
print(f" Etikett: {resultat['etikett']}")
print(f" Poeng: {round(resultat['poeng'], 3)}\n")
Utdata
Resultat 1: Etikett: POSITIV Poeng: 1.0 <p>Resultat 2: Etikett: POSITIV Poeng: 0.996
Navn-entitets-gjenkjenning (NER)
NER er avgjørende for å trekke ut virkelige verdens-objekter kalt “navn-entiteter” fra teksten. Bruk NER-rørledningen til å identifisere disse entitetene effektivt:
ner_tagger = pipeline("ner", aggregasjonsstrategi="enkel")
tekst = "Elon Musk er sjefen i SpaceX."
utdata = ner_tagger(tekst)
print(utdata)
Utdata
Elon Musk: PER, SpaceX: ORG
Spørsmål-svar
Spørsmål-svar innebærer å trekke ut nøyaktige svar på spesifikke spørsmål fra en gitt kontekst. Initialiser en spørsmål-svar-rørledning og mat inn ditt spørsmål og kontekst for å få det ønskede svaret:
leser = pipeline("spørsmål-svar")
tekst = "Hugging Face er et selskap som lager verktøy for NLP. Det er basert i New York og ble grunnlagt i 2016."
spørsmål = "Hvor er Hugging Face basert?"
utdata = leser(spørsmål=spørsmål, kontekst=tekst)
print(utdata)
Utdata
{ 'poeng': 0.998, 'start': 51, 'slutt': 60, 'svar': 'New York' } Hugging Face-sitt pipeline()-funksjon tilbyr en rekke forhåndsbygde rørledninger for ulike oppgaver, i tillegg til tekst-klassifisering, NER og spørsmål-svar. Under er detaljer om en undergruppe av tilgjengelige oppgaver:
Tabell: Hugging Face-rørledningsoppgaver
| Oppgave | Beskrivelse | Rørlednings-identifikator |
| Tekst-generering | Generer tekst basert på en gitt prompt | pipeline(oppgave=”tekst-generering”) |
| Sammenfatting | Sammenfatte en lang tekst eller dokument | pipeline(oppgave=”sammenfatting”) |
| Bilde-klassifisering | Merk en inndata-bilde | pipeline(oppgave=”bilde-klassifisering”) |
| Lydklassifisering | Kategorisere lyddata | pipeline(oppgave=”lydklassifisering”) |
| Visuell spørsmål-svar | Svar på et spørsmål ved å bruke både et bilde og et spørsmål | pipeline(oppgave=”vsa”) |
For detaljerte beskrivelser og flere oppgaver, se rørledningsdokumentasjonen på Hugging Face-nettstedet.
Hvorfor Hugging flytter fokus til Rust
Hugging Face-økosystemet (HF) startet å bruke Rust i biblioteker som safesensors og tokenisatorer.
Hugging Face har nylig lansert et nytt maskinlærings-rammeverk kalt Candle. I motsetning til tradisjonelle rammeverk som bruker Python, er Candle bygget med Rust. Målet med å bruke Rust er å forbedre ytelse og forenkle brukeropplevelsen, samt å støtte GPU-operasjoner.
Hovedmålet med Candle er å muliggjøre serverløs inferens, noe som gjør det mulig å distribuere lette binærfiler og fjerne Python fra produksjonsarbeid, noe som kan noen ganger bremse prosesser på grunn av sine overhead-kostnader. Dette rammeverket kommer som en løsning for å overvinne problemene som oppstår med fulle maskinlærings-rammeverk som PyTorch, som er store og langsomme når de opprettes på en cluster.
La oss utforske hvorfor Rust blir et mer populært valg enn Python.
- Hastighet og ytelse – Rust er kjent for sin utrolige hastighet, og overgår Python, som tradisjonelt brukes i maskinlærings-rammeverk. Pythons ytelse kan noen ganger bli bremset på grunn av dens Global Interpreter Lock (GIL), men Rust har ikke dette problemet, og lover raskere eksekvering av oppgaver og forbedret ytelse i prosjekter der det implementeres.
- Sikkerhet – Rust tilbyr minnehess-garantier uten en søppeltømmingskollektor, et aspekt som er essensielt for å sikre sikkerheten til samtidige systemer. Dette spiller en avgjørende rolle i områder som safetensors, hvor sikkerhet i håndtering av datastrukturer er en prioritet.
Safetensors
Safetensors drar nytte av Rusts hastighet og sikkerhetsfunksjoner. Safetensors handler om manipulering av tensorer, en kompleks matematisk enhet, og å ha Rust sikrer at operasjonene ikke bare er rask, men også sikre, og unngår vanlige feil og sikkerhetsproblemer som kan oppstå på grunn av minnehåndtering.
Tokenisator
Tokenisatorer håndterer nedbryting av setninger eller fraser i mindre enheter, som ord eller termer. Rust hjelper i denne prosessen ved å øke eksekveringstiden, og sikrer at tokeniseringsprosessen ikke bare er nøyaktig, men også rask, og forbedrer effektiviteten til naturlig språk-behandling-oppgaver.
I kjernen av Hugging Face-sitt tokenisator ligger konseptet om subord- tokenisering, som finner en fin balanse mellom ord- og tegn-nivå-tokenisering for å optimalisere informasjonsbehandling og vokabular-størrelse. Det fungerer gjennom opprettelse av sub-ord, som “##ing” og “##ed”, og beholder semantisk rikdom samtidig som det unngår et oppblåst vokabular.
Subord-tokenisering involverer en trening-fase for å identifisere den mest effektive balansen mellom tegn- og ord-nivå-tokenisering. Det går langt utenfor enkle prefiks- og suffiks-regler, og krever en omfattende analyse av språkmønster i omfattende tekst-korpora for å designe en effektiv subord-tokenisator. Den resulterende tokenisatoren er dyktig til å håndtere nye ord ved å bryte dem ned i kjente sub-ord, og beholder et høyt nivå av semantisk forståelse.
Tokeniserings-komponenter
Tokenisator-biblioteket deler tokeniseringsprosessen inn i flere trinn, hvor hvert trinn håndterer en distinkt faspekt av tokenisering. La oss dykke ned i disse komponentene:
- Normalisator: Tar initialtransformasjoner på inndata-strengen, og gjør nødvendige justeringer som omfatter konvertering til små bokstaver, Unicode-normalisering og fjerning.
- For-tokenisator: Ansvarlig for å fragmentere inndata-strengen i for-segmenter, og bestemmer splittene basert på forhåndsdefinerte regler, som mellomrom.
- Modell: Overvåker oppdagelsen og opprettelsen av sub-ord, og tilpasser seg spesifikke trekk ved din inndata, og tilbyr treningsevner.
- Etter-behandler: Forbedrer konstruksjonsfunksjoner for å sikre kompatibilitet med mange transformer-baserte modeller, som BERT, ved å legge til token som [CLS] og [SEP].
For å komme i gang med Hugging Face-tokenisatorer, installer biblioteket ved å bruke kommandoen pip install tokenizers og importer det i din Python-miljø. Biblioteket kan tokenisere store mengder tekst på svært kort tid, og dermed spare verdifull beregningskraft for mer intense oppgaver som modell-trening.
Tokenisator-biblioteket bruker Rust, som arver C++-sintaks-lignende, men introduserer nye konsepter i programmeringsspråk-design. Kombinert med Python-bindinger, sikrer det at du kan nyte ytelsen til et lav-nivå-språk samtidig som du arbeider i en Python-miljø.
Datasett
Datasett er grunnlaget for AI-prosjekter. Hugging Face tilbyr en stor variasjon av datasett, egnet for en rekke NLP-oppgaver, og mer. For å bruke dem effektivt, er det essensielt å forstå prosessen med å laste og analysere dem. Under er et godt kommentert Python-skript som demonstrerer hvordan du kan utforske datasett tilgjengelige på Hugging Face:
from datasets import load_dataset
# Last inn et datasett
datasett = load_dataset('squad')
# Vis den første innføringen
print(datasett[0])
Dette skriptet bruker load_dataset()-funksjonen til å laste inn SQuAD-datasettet, som er et populært valg for spørsmål-svar-oppgaver.
Utnytting av forhånds-trente modeller og å bringe det hele sammen
Forhånds-trente modeller utgjør ryggraden i mange dyplærings-prosjekter, og muliggjør at forskere og utviklere kan starte sine initiativer uten å starte fra scratch. Hugging Face muliggjør utforskning av en stor variasjon av forhånds-trente modeller, som vist i koden under:
from transformers import AutoModelForQuestionAnswering, AutoTokenizer
<p># Last inn den forhånds-trente modellen og tokenisatoren
modell = AutoModelForQuestionAnswering.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
tokenisator = AutoTokenizer.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')</p>
<p># Vis modellens arkitektur
print(modell)</p>
Med modellen og tokenisatoren lastet inn, kan vi nå gå videre med å lage en funksjon som tar en tekst og et spørsmål som inndata, og returnerer svaret som trekkes ut fra teksten. Vi vil bruke tokenisatoren til å prosessere inndata-teksten og spørsmålet til et format som er kompatibelt med modellen, og deretter mata dette prosesserte inndata inn i modellen for å få svaret:
<p>def get_svar(tekst, spørsmål): # Tokenisér inndata-teksten og spørsmålet inndata = tokenisator(spørsmål, tekst, return_tensors='pt', max_length=512, truncation=True) utdata = modell(**inndata)</p> <p># Få start- og slutt-poengene for svaret svar_start = torch.argmax(utdata.start_logits) svar_slutt = torch.argmax(utdata.end_logits) + 1</p> <p>svar = tokenisator.convert_tokens_to_string(tokenisator.convert_ids_to_tokens(inndata['input_ids'][0][svar_start:svar_slutt])) return svar</p>
I kode-utdraget importerer vi nødvendige moduler fra transformers-pakken, og laster inn en forhånds-trent modell og dens tilhørende tokenisator ved å bruke from_pretrained()-metoden. Vi velger en BERT-modell som er finjustert på SQuAD-datasettet.
La oss se et eksempel på hvordan du kan bruke denne funksjonen der du har en tekst og ønsker å trekke ut et spesifikt svar på et spørsmål fra den:
<p>tekst = """
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.
"""</p>
<p>spørsmål = "Who designed the Eiffel Tower?"</p>
<p># Få svaret på spørsmålet
svar = get_svar(tekst, spørsmål)
print(f"The answer to the question is: {svar}")
# Utdata: The answer to the question is: Gustave Eiffel</p>
I dette skriptet bygger vi en get_svar()-funksjon som tar en tekst og et spørsmål, tokeniserer dem korrekt, og utnytter den forhånds-trente BERT-modellen til å trekke ut svaret fra teksten. Det demonstrerer en praktisk anvendelse av Hugging Face-sitt transformers-bibliotek til å bygge et enkelt, men kraftig spørsmål-svar-system. For å forstå konseptene godt, anbefales det å utføre hånd-til-hånd-eksperimentering med en Google Colab Notebook.
Konklusjon
Gjennom sin omfattende rekke av åpen kildekode-verktøy, forhånds-trente modeller og brukervennlige rørledninger, muliggjør Hugging Face både erfarne profesjonelle og nybegynnere å dykke inn i den omfattende verden av AI med en følelse av enkelhet og forståelse. I tillegg understreker initiativet til å integrere Rust, på grunn av dets hastighet og sikkerhetsfunksjoner, Hugging Face-sitt engasjement for å fremme innovasjon samtidig som det sikrer effektivitet og sikkerhet i AI-applikasjoner. Det banebrytende arbeidet til Hugging Face demokratiserer ikke bare tilgangen til høy-nivå AI-verktøy, men skaper også et samarbeids-miljø for læring og utvikling i AI-rommet, og muliggjør en fremtid der AI er tilgjengelig for alle.

















