AI-verktyg 101
Komplett guide fÃķr Hugging Face LLM-verktyg

Hugging Face ÃĪr ett AI-forskningslaboratorium och nav som har byggt en gemenskap av forskare, utvecklare och entusiaster. PÃĨ kort tid har Hugging Face skaffat sig en betydande nÃĪrvaro inom AI-omrÃĨdet. Stora teknologifÃķretag som Google (GOOGL ), Amazon (AMZN ) och Nvidia (NVDA ) har investerat betydande belopp i AI-startupen Hugging Face, vilket har gjort dess vÃĪrdering till 4,5 miljarder dollar.
I den hÃĪr guiden kommer vi att introducera transformer, LLM och hur Hugging Face-biblioteket spelar en viktig roll i att frÃĪmja en Ãķppen kÃĪllkods-AI-gemenskap. Vi kommer ocksÃĨ att gÃĨ igenom de viktigaste funktionerna i Hugging Face, inklusive pipelines, datamÃĪngder, modeller och mer, med praktiska Python-exempel.
Transformer i NLP
à r 2017 publicerade Cornell University en inflytelserik artikel som introducerade transformer. Dessa ÃĪr djupinlÃĪrningsmodeller som anvÃĪnds i NLP. Denna upptÃĪckt drev utvecklingen av stora sprÃĨkmodeller som ChatGPT.
Stora sprÃĨkmodeller eller LLM ÃĪr AI-system som anvÃĪnder transformer fÃķr att fÃķrstÃĨ och skapa mÃĪnskligt sprÃĨk. Men att skapa dessa modeller ÃĪr dyrt och krÃĪver ofta miljontals dollar, vilket begrÃĪnsar deras tillgÃĪnglighet till stora fÃķretag.
Hugging Face, som startades 2016, syftar till att gÃķra NLP-modeller tillgÃĪngliga fÃķr alla. Trots att det ÃĪr ett kommersiellt fÃķretag erbjuder det en mÃĪngd Ãķppen kÃĪllkodsresurser som hjÃĪlper mÃĪnniskor och organisationer att bygga och anvÃĪnda transformer-modeller pÃĨ ett ekonomiskt sÃĪtt. MaskininlÃĪrning handlar om att lÃĪra datorer att utfÃķra uppgifter genom att kÃĪnna igen mÃķnster, medan djupinlÃĪrning, en underkategori till maskininlÃĪrning, skapar ett nÃĪtverk som lÃĪr sig oberoende. Transformer ÃĪr en typ av djupinlÃĪrningsarkitektur som effektivt och flexibelt anvÃĪnder indata, vilket gÃķr dem till ett populÃĪrt val fÃķr att bygga stora sprÃĨkmodeller pÃĨ grund av lÃĪgre krav pÃĨ utbildningstid.
Hur Hugging underlÃĪttar NLP- och LLM-projekt
Hugging Face har gjort det enklare att arbeta med LLM genom att erbjuda:
- En mÃĪngd fÃķrtrÃĪnade modeller att vÃĪlja mellan.
- Verktyg och exempel fÃķr att finjustera dessa modeller till dina specifika behov.
- LÃĪtta distributionsalternativ fÃķr olika miljÃķer.
En utmÃĪrkt resurs som finns tillgÃĪnglig via Hugging Face ÃĪr Open LLM Leaderboard. Den fungerar som en omfattande plattform som systematiskt Ãķvervakar, rankar och utvÃĪrderar effektiviteten hos en mÃĪngd stora sprÃĨkmodeller (LLM) och chatbotar, vilket ger en noggrann analys av framstegen inom det Ãķppna kÃĪllkodsomrÃĨdet.
LLM-benchmark mÃĪter modeller med hjÃĪlp av fyra mÃĨtt:
- AI2 Reasoning Challenge (25-skott) â en serie frÃĨgor om grundlÃĪggande vetenskapsÃĪmnen.
- HellaSwag (10-skott) â en test av sunt fÃķrnuft som, ÃĪven om den ÃĪr enkel fÃķr mÃĪnniskor, utgÃķr en betydande utmaning fÃķr avancerade modeller.
- MMLU (5-skott) â en multifacetterad utvÃĪrdering som berÃķr en sprÃĨkmodells fÃķrmÃĨga inom 57 olika omrÃĨden, inklusive grundlÃĪggande matematik, juridik och datavetenskap, bland annat.
- TruthfulQA (0-skott) â ett verktyg fÃķr att faststÃĪlla en modells tendens att upprepa vanligt fÃķrekommande felaktig information pÃĨ internet.
Benchmarkerna, som beskrivs med termer som â25-skottâ, â10-skottâ, â5-skottâ och â0-skottâ, anger antalet exempel som en modell fÃĨr under utvÃĪrderingsprocessen fÃķr att bedÃķma dess prestanda och resonemangsfÃķrmÃĨga inom olika omrÃĨden. I âfÃĨskottâ-paradigm fÃĨr modellerna en liten mÃĪngd exempel fÃķr att vÃĪgleda deras svar, medan i en â0-skottâ-situation fÃĨr modellerna inga exempel och mÃĨste fÃķrlita sig enbart pÃĨ sin fÃķrutbildade kunskap fÃķr att svara korrekt.
Komponenter i Hugging
Pipelines
âPipelinesâ ÃĪr en del av Hugging Faces transformer-bibliotek, en funktion som underlÃĪttar anvÃĪndningen av fÃķrtrÃĪnade modeller som finns i Hugging Faces repository. Den erbjuder en intuitiv API fÃķr en mÃĪngd uppgifter, inklusive sentimentanalys, frÃĨgesvar, maskerad sprÃĨkmodellering, namngivning av entiteter och sammanfattning.
Pipelines integrerar tre centrala komponenter i Hugging Face:
- Tokenisator: FÃķrbereder din text fÃķr modellen genom att omvandla den till ett format som modellen kan fÃķrstÃĨ.
- Modell: Detta ÃĪr hjÃĪrtat i pipelinen dÃĪr de faktiska fÃķrutsÃĪgelserna gÃķrs baserat pÃĨ den fÃķrbearbetade inmatningen.
- Postprocessor: Omvandlar modellens rÃĨa fÃķrutsÃĪgelser till en mÃĪnskligt lÃĪsbar form.
Dessa pipelines minskar inte bara omfattande kodning utan erbjuder ocksÃĨ ett anvÃĪndarvÃĪnligt grÃĪnssnitt fÃķr att utfÃķra olika NLP-uppgifter.
Transformer-tillÃĪmpningar med Hugging Face-biblioteket
En hÃķjdpunkt i Hugging Face-biblioteket ÃĪr Transformers-biblioteket, som fÃķrenklar NLP-uppgifter genom att koppla en modell med nÃķdvÃĪndiga fÃķr- och efterbearbetningsstadier, vilket strÃķmlinjeformar analysprocessen. FÃķr att installera och importera biblioteket anvÃĪnds fÃķljande kommandon:
pip install -q transformers from transformers import pipeline
Efter att ha gjort detta kan du utfÃķra NLP-uppgifter, bÃķrjande med sentimentanalys, som kategoriserar text i positiva eller negativa sentiment. Bibliotekets kraftfulla pipeline()-funktion fungerar som en nav fÃķr andra pipelines och underlÃĪttar uppgiftsspecifika tillÃĪmpningar inom ljud-, syn- och multimodala domÃĪner.
Praktiska tillÃĪmpningar
Textklassificering
Textklassificering blir enkel med Hugging Faces pipeline()-funktion. HÃĪr ÃĪr hur du kan initiera en textklassificeringspipeline:
classifier = pipeline("text-classification")
FÃķr en praktisk upplevelse, mata in en strÃĪng eller en lista med strÃĪngar i din pipeline fÃķr att fÃĨ fÃķrutsÃĪgelser, som kan visualiseras snyggt med Python-biblioteket Pandas. HÃĪr ÃĪr ett Python-utdrag som demonstrerar detta:
sentences = ["Jag ÃĪr sÃĨ glad att introducera er till den underbara vÃĪrlden av AI.",
"Hoppas att det inte kommer att besvika er."]
# FÃĨ klassificeringsresultat fÃķr varje mening i listan
results = classifier(sentences)
# Loopa igenom varje resultat och skriv ut etiketten och poÃĪngen
for i, result in enumerate(results):
print(f"Resultat {i + 1}:")
print(f" Etikett: {result['label']}")
print(f" PoÃĪng: {round(result['score'], 3)}\n")
Utdata
Resultat 1: Etikett: POSITIVT PoÃĪng: 1.0 Resultat 2: Etikett: POSITIVT PoÃĪng: 0.996
Namngivning av entiteter (NER)
NER ÃĪr avgÃķrande fÃķr att extrahera verkliga vÃĪrldens objekt, kallade ânamngivna entiteterâ, frÃĨn texten. AnvÃĪnd NER-pipelinen fÃķr att identifiera dessa entiteter effektivt:
ner_tagger = pipeline("ner", aggregation_strategy="simple")
text = "Elon Musk ÃĪr VD fÃķr SpaceX."
outputs = ner_tagger(text)
print(outputs)
Utdata
Elon Musk: PER, SpaceX: ORG
FrÃĨgesvar
FrÃĨgesvar innebÃĪr att extrahera exakta svar pÃĨ specifika frÃĨgor frÃĨn en given kontext. Initiera en frÃĨgesvars-pipeline och mata in din frÃĨga och kontext fÃķr att fÃĨ det Ãķnskade svaret:
reader = pipeline("question-answering")
text = "Hugging Face ÃĪr ett fÃķretag som skapar verktyg fÃķr NLP. Det ÃĪr baserat i New York och grundades 2016."
question = "Var ÃĪr Hugging Face baserat?"
outputs = reader(question=question, context=text)
print(outputs)
Utdata
{ 'score': 0.998, 'start': 51, 'end': 60, 'answer': 'New York' } Hugging Faces pipeline()-funktion erbjuder en mÃĪngd fÃķrbyggda pipelines fÃķr olika uppgifter, fÃķrutom textklassificering, NER och frÃĨgesvar. HÃĪr ÃĪr information om en del av de tillgÃĪngliga uppgifterna:
Tabell: Hugging Face-pipeline-uppgifter
| Uppgift | Beskrivning | Pipeline-identifierare |
| Textgenerering | Generera text baserat pÃĨ en given prompt | pipeline(task=âtext-generationâ) |
| Sammanfattning | Sammanfatta en lÃĨng text eller dokument | pipeline(task=âsummarizationâ) |
| Bildklassificering | Etikettera en ingÃĨngsbild | pipeline(task=âimage-classificationâ) |
| Ljudklassificering | Kategorisera ljuddata | pipeline(task=âaudio-classificationâ) |
| Visuell frÃĨgesvar | Svara pÃĨ en frÃĨga med hjÃĪlp av en bild och en frÃĨga | pipeline(task=âvqaâ) |
Â
FÃķr detaljerade beskrivningar och fler uppgifter, se pipeline-dokumentationen pÃĨ Hugging Faces webbplats.
VarfÃķr Hugging flyttar fokus till Rust
Hugging Face (HF)-ekosystemet bÃķrjade anvÃĪnda Rust i sina bibliotek, sÃĨsom safetensors och tokenisatorer.
Hugging Face har nyligen slÃĪppt ett nytt maskinlÃĪrningsramverk som kallas Candle. Till skillnad frÃĨn traditionella ramverk som anvÃĪnder Python, ÃĪr Candle byggt med Rust. MÃĨlet med att anvÃĪnda Rust ÃĪr att fÃķrbÃĪttra prestanda och fÃķrenkla anvÃĪndarupplevelsen samtidigt som det stÃķder GPU-ÃĨtgÃĪrder.
Candles huvudmÃĨl ÃĪr att mÃķjliggÃķra serverlÃķs inferens, vilket gÃķr det mÃķjligt att distribuera lÃĪtta binÃĪrfiler och ta bort Python frÃĨn produktionsarbetsflÃķden, som ibland kan sakta ner processer pÃĨ grund av sina overhead-kostnader. Detta ramverk kommer som en lÃķsning fÃķr att Ãķvervinna problemen som uppstÃĨr med fullstÃĪndiga maskinlÃĪrningsramverk som PyTorch, som ÃĪr stora och lÃĨngsamma nÃĪr de skapas pÃĨ en kluster.
LÃĨt oss undersÃķka varfÃķr Rust blir ett alltmer populÃĪrt val.
- Hastighet och prestanda â Rust ÃĪr kÃĪnt fÃķr sin otroliga hastighet, som ÃķvertrÃĪffar Python, som traditionellt anvÃĪnds i maskinlÃĪrningsramverk. Pythons prestanda kan ibland bromsas pÃĨ grund av dess Global Interpreter Lock (GIL), men Rust har inte detta problem, vilket lovar snabbare kÃķrning av uppgifter och fÃķrbÃĪttrad prestanda i projekt dÃĪr det implementeras.
- SÃĪkerhet â Rust erbjuder minnesÃĪkerhetsgarantier utan en soptÃķmme, ett aspekt som ÃĪr avgÃķrande fÃķr att sÃĪkerstÃĪlla sÃĪkerheten i samtidiga system. Detta spelar en avgÃķrande roll i omrÃĨden som safetensors, dÃĪr sÃĪkerhet vid hantering av datastrukturer ÃĪr en prioritet.
Safetensors
Safetensors dra nytta av Rusts hastighet och sÃĪkerhetsfunktioner. Safetensors handlar om manipulation av tensorer, en komplex matematisk enhet, och att ha Rust sÃĪkerstÃĪller att operationerna inte bara ÃĪr snabba utan ocksÃĨ sÃĪkra, undviker vanliga buggar och sÃĪkerhetsproblem som kan uppstÃĨ pÃĨ grund av felhantering av minne.
Tokenisator
Tokenisatorer hanterar nedbrytning av meningar eller fraser till mindre enheter, sÃĨsom ord eller termer. Rust hjÃĪlper till i denna process genom att pÃĨskynda exekveringstiden, vilket sÃĪkerstÃĪller att tokeniseringsprocessen inte bara ÃĪr exakt utan ocksÃĨ snabb, fÃķrbÃĪttrar effektiviteten i naturligt sprÃĨkbehandling.
I hjÃĪrtat av Hugging Faces tokenisator ligger konceptet subword-tokenisering, som balanserar mellan ord- och teckennivÃĨ-tokenisering fÃķr att optimera informationsbevarande och ordfÃķrrÃĨdsstorlek. Det fungerar genom att skapa subtokens, sÃĨsom â##ingâ och â##edâ, som bevarar semantisk rikedom samtidigt som de undviker ett Ãķverbelastat ordfÃķrrÃĨd.
Subword-tokenisering innefattar en utbildningsfas fÃķr att identifiera den mest effektiva balansen mellan tecken- och ordnivÃĨ-tokenisering. Det gÃĨr utÃķver enkla prefix- och suffixregler och krÃĪver en omfattande analys av sprÃĨkmÃķnster i stora textkorpus fÃķr att utforma en effektiv subword-tokenisator. Den genererade tokenisatorn ÃĪr skicklig pÃĨ att hantera nya ord genom att bryta ner dem i kÃĪnda subwords, vilket upprÃĪtthÃĨller en hÃķg nivÃĨ av semantisk fÃķrstÃĨelse.
Tokeniseringskomponenter
Tokenisator-biblioteket delar upp tokeniseringsprocessen i flera steg, var och en som hanterar en sÃĪrskild aspekt av tokenisering. LÃĨt oss dyka in i dessa komponenter:
- Normalisator: Tar initiala transformationer pÃĨ inmatningsstrÃĪngen, applicerar nÃķdvÃĪndiga justeringar som till exempel omvandling till gemener, Unicode-normalisering och avlÃĪgsnande.
- FÃķrtokenisator: Ansvarig fÃķr att dela in inmatningsstrÃĪngen i fÃķrdelar, bestÃĪmmer delarna baserat pÃĨ fÃķrdefinierade regler, sÃĨsom utrymmesavgrÃĪnsningar.
- Modell: Ãvervakar upptÃĪckten och skapandet av subtokens, anpassar sig till specifikationerna fÃķr din indata och erbjuder utbildningsfÃķrmÃĨga.
- Postprocessor: FÃķrbÃĪttrar konstruktionsfunktioner fÃķr att mÃķjliggÃķra kompatibilitet med mÃĨnga transformer-baserade modeller, som BERT, genom att lÃĪgga till token som [CLS] och [SEP].
FÃķr att komma igÃĨng med Hugging Face-tokenisatorer, installera biblioteket med kommandot pip install tokenizers och importera det i din Python-miljÃķ. Biblioteket kan tokenisera stora mÃĪngder text pÃĨ mycket kort tid, vilket sparar vÃĪrdefulla berÃĪkningsresurser fÃķr mer krÃĪvande uppgifter som modellutbildning.
Tokenisator-biblioteket anvÃĪnder Rust, som ÃĪrver C++:s syntaktiska likhet medan den introducerar nya koncept i programsprÃĨksdesign. I kombination med Python-bindningar sÃĪkerstÃĪller det att du kan njuta av prestandan hos ett lÃĪgre nivÃĨsprÃĨk medan du arbetar i en Python-miljÃķ.
DatamÃĪngder
DatamÃĪngder ÃĪr grunden fÃķr AI-projekt. Hugging Face erbjuder en mÃĪngd olika datamÃĪngder, lÃĪmpliga fÃķr en rad NLP-uppgifter och mer. FÃķr att anvÃĪnda dem effektivt ÃĪr det viktigt att fÃķrstÃĨ processen fÃķr att ladda och analysera dem. HÃĪr ÃĪr ett vÃĪlkommenterat Python-skript som visar hur man kan utforska datamÃĪngder som finns tillgÃĪngliga pÃĨ Hugging Face:
from datasets import load_dataset
# Ladda en datamÃĪngd
dataset = load_dataset('squad')
# Visa den fÃķrsta posten
print(dataset[0])
Detta skript anvÃĪnder load_dataset-funktionen fÃķr att ladda SQuAD-datamÃĪngden, som ÃĪr ett populÃĪrt val fÃķr frÃĨgesvarsuppgifter.
AnvÃĪndning av fÃķrtrÃĪnade modeller och att fÃķra allt samman
FÃķrtrÃĪnade modeller utgÃķr ryggraden i mÃĨnga djupinlÃĪrningsprojekt, vilket mÃķjliggÃķr fÃķr forskare och utvecklare att starta sina initiativ utan att bÃķrja frÃĨn scratch. Hugging Face underlÃĪttar utforskningen av en mÃĨngfald fÃķrtrÃĪnade modeller, som visas i koden nedan:
from transformers import AutoModelForQuestionAnswering, AutoTokenizer
# Ladda den fÃķrtrÃĪnade modellen och tokenisatorn
model = AutoModelForQuestionAnswering.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
tokenizer = AutoTokenizer.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
# Visa modellens arkitektur
print(model)
Med modellen och tokenisatorn laddade kan vi nu skapa en funktion som tar en text och en frÃĨga som indata och returnerar svaret som extraheras frÃĨn texten. Vi kommer att anvÃĪnda tokenisatorn fÃķr att bearbeta indata-texten och frÃĨgan till ett format som ÃĪr kompatibelt med modellen, och sedan mata in detta bearbetade indata i modellen fÃķr att fÃĨ svaret:
def get_answer(text, question): # Tokenisera indata-texten och frÃĨgan inputs = tokenizer(question, text, return_tensors='pt', max_length=512, truncation=True) outputs = model(**inputs) # FÃĨ start- och slutpoÃĪng fÃķr 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 kodavsnittet importerar vi nÃķdvÃĪndiga moduler frÃĨn transformers-paketet, laddar sedan en fÃķrtrÃĪnad modell och dess motsvarande tokenisator med from_pretrained-metoden. Vi vÃĪljer en BERT-modell som ÃĪr finjusterad pÃĨ SQuAD-datamÃĪngden.
LÃĨt oss se ett exempel pÃĨ hur man anvÃĪnder denna funktion dÃĪr vi har en text och vill extrahera ett specifikt svar pÃĨ en frÃĨga frÃĨn 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 = "Vem designade Eiffeltornet?"
# FÃĨ svaret pÃĨ frÃĨgan
answer = get_answer(text, question)
print(f"SVaret pÃĨ frÃĨgan ÃĪr: {answer}")
# Utdata: SVaret pÃĨ frÃĨgan ÃĪr: Gustave Eiffel
I detta skript bygger vi en get_answer-funktion som tar en text och en frÃĨga, tokeniserar dem lÃĪmpligt och anvÃĪnder den fÃķrtrÃĪnade BERT-modellen fÃķr att extrahera svaret frÃĨn texten. Det demonstrerar en praktisk tillÃĪmpning av Hugging Faces transformers-bibliotek fÃķr att bygga ett enkelt men kraftfullt frÃĨgesvarssystem. FÃķr att fÃķrstÃĨ koncepten vÃĪl rekommenderas det att ha en praktisk experiment med en Google Colab Notebook.
Slutsats
Genom sin omfattande samling av Ãķppen kÃĪllkodsverktyg, fÃķrtrÃĪnade modeller och anvÃĪndarvÃĪnliga pipelines, mÃķjliggÃķr Hugging Face bÃĨde erfarna proffs och nybÃķrjare att dyka in i den expansiva vÃĪrlden av AI med en kÃĪnsla av lÃĪtthet och fÃķrstÃĨelse. Dessutom understryker initiativet att integrera Rust, pÃĨ grund av dess hastighets- och sÃĪkerhetsfunktioner, Hugging Faces ÃĨtagande att frÃĪmja innovation samtidigt som det sÃĪkerstÃĪller effektivitet och sÃĪkerhet i AI-tillÃĪmpningar. Det omvandlande arbetet med Hugging Face inte bara demokratiserar tillgÃĨngen till avancerade AI-verktyg utan skapar ocksÃĨ en samarbetsmiljÃķ fÃķr lÃĪrande och utveckling inom AI-omrÃĨdet, vilket mÃķjliggÃķr en framtid dÃĪr AI ÃĪr tillgÃĪngligt fÃķr alla.

















