AI-verktÃļy 101

Komplett nybegynnerguide til Hugging Face LLM-verktÃļy

mm
Legg til Unite.AI blant dine foretrukne kilder pÃĨ Google
HUGGING FACE - COMPLETE GUIDE

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-Ãļkosystem - Modeller, datasett, metrikker, transformerere, akseleratorer, tokenisatorer

Hugging Face har gjort det enklere ÃĨ arbeide med LLM-er ved ÃĨ tilby:

  1. Et utvalg av forhÃĨnds-trente modeller ÃĨ velge mellom.
  2. VerktÃļy og eksempler for ÃĨ finjustere disse modellene til dine spesifikke behov.
  3. 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:

  1. Tokenisator: Forbereder din tekst for modellen ved ÃĨ konvertere den til et format modellen kan forstÃĨ.
  2. Modell: Dette er hjertet av rÃļrledningen hvor de faktiske forutsagnene gjÃļres basert pÃĨ forbehandlet inndata.
  3. 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 Safetensors og tokenisator Rust

Hugging Face Safetensors og tokenisator GitHub-side

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.

  1. 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.
  2. 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.

Jeg har brukt de siste fem ÃĨrene pÃĨ ÃĨ dykke ned i den fasiniserende verden av MaskinlÃĶring og Dypt LÃĶring. Min lidenskap og ekspertise har ledet meg til ÃĨ bidra til over 50 ulike programvareprosjekter, med sÃĶrlig fokus pÃĨ AI/ML. Min pÃĨgÃĨende nysgjÃļrhet har ogsÃĨ trukket meg mot Naturlig SprÃĨkbehandling, et felt jeg er ivrig etter ÃĨ utforske videre.