AI-työkalut 101
Hugging Face LLM-työkalujen täydellinen aloittajan opas

Hugging Face on AI-tutkimuslaboratorio ja -keskus, joka on luonut tutkijoiden, akateemikkojen ja harrastajien yhteisön. Lyhyessä ajassa Hugging Face on saavuttanut merkittävän aseman AI-tilassa. Teknologiajättien joukossa Google (GOOGL ), Amazon (AMZN ) ja Nvidia (NVDA ) ovat tukenneet AI-startup Hugging Facea merkittävillä sijoituksilla, mikä on nostanut sen arvon 4,5 miljardiin dollariin.
Tässä opasohjelmassa esittelemme transformer-malleja, LLM:itä ja kuinka Hugging Face -kirjasto toimii tärkeässä roolissa avoimen lähdekoodin AI-yhteisön edistämisessä. Selitämme myös Hugging Facen olennaiset ominaisuudet, kuten putkistot, tietokannat, mallit ja muut, käyttäen käytännön Python-esimerkkejä.
Transformaattorit NLP:ssä
Vuonna 2017 Cornellin yliopisto julkaisi vaikuttavan artikkelin, jossa esiteltiin transformaattorit. Nämä ovat syvän oppimisen mallit, joita käytetään NLP:ssä. Tämä löytö sytytti suurten kielimallien kehittämisen, kuten ChatGPT.
Suuret kielimallit eli LLM:t ovat tekoälyjärjestelmiä, jotka käyttävät transformaattoreita ymmärtääkseen ja luodakseen ihmisen kaltaista tekstiä. Luoda nämä mallit on kuitenkin kallista, usein vaaditaan miljoonia dollareita, mikä rajoittaa niiden saatavuutta suurille yrityksille.
Hugging Face, joka perustettiin vuonna 2016, pyrkii tekemään NLP-malleja saataviksi kaikille. Vaikka se on kaupallinen yritys, se tarjoaa laajan valikoiman avoimia resursseja, jotka auttavat ihmisiä ja organisaatioita rakentamaan ja käyttämään transformaattorimalleja edullisesti. Koneoppiminen on tietokoneiden opettamista suorittamaan tehtäviä tunnistamalla kuvioita, kun taas syvä oppiminen, joka on koneoppimisen alaluokka, luo verkoston, joka oppii itsenäisesti. Transformaattorit ovat syvän oppimisen arkkitehtuuri, joka käyttää syötetietoja tehokkaasti ja joustavasti, mikä tekee niistä suositun valinnan suurten kielimallien rakentamiseen lyhyemmän koulutusajan vuoksi.
Miten Hugging helpottaa NLP- ja LLM-projekteja
Hugging Face on tehnyt työstä LLM:ien kanssa helpompaa tarjoamalla:
- Valikoiman esikoulutettuja malleja valitsemista varten.
- Työkaluja ja esimerkkejä näiden mallien hienosäätöön erityistarpeisiin.
- Helppokäyttöisiä käyttöönottovaihtoehtoja eri ympäristöihin.
Yksi Hugging Facen erinomaisista resursseista on Open LLM Leaderboard. Toimien kattavana alustana, se seuraa, arvioi ja vertaa systemaattisesti laajan valikoiman suuria kielimalleja ja chatbottien tehokkuutta, tarjoten tarkan analyysin edistymisestä avoimen lähdekoodin alueella.
LLM-benchmarkit mitataan neljällä mittarilla:
- AI2 Reasoning Challenge (25-shot) — sarja kysymyksiä perusluonnontieteiden opetussuunnitelman ympärillä.
- HellaSwag (10-shot) — yleistietäminen, joka on yksinkertainen ihmisille, mutta merkittävä haaste kehittyneille malleille.
- MMLU (5-shot) — monipuolinen arviointi, joka koskee tekstin mallin taitoa 57 eri alueella, kuten perusmatematiikka, laki ja tietokoneet.
- TruthfulQA (0-shot) — työkalu, joka arvioi mallin taipumusta toistaa verkossa usein esiintyvää väärää tietoa.
Näiden benchmarkien “25-shot”, “10-shot”, “5-shot” ja “0-shot” termeillä tarkoitetaan esimerkkien määrää, jonka malli saa arviointiprosessin aikana sen suorituskyvyn ja päättelykyvyn arvioimiseksi eri alueilla. “Vähän esimerkki”-paradigmoissa malleille annetaan pieni määrä esimerkkejä, jotka ohjaavat niiden vastauksia, kun taas “0-shot”-tilanteessa malleille ei anneta esimerkkejä, ja ne joutuvat turvautumaan aikaisempiin tietoihinsa.
Hugging Facen komponentit
Putkistot
‘Putkistot‘ ovat osa Hugging Facen transformaattorikirjastoa, ominaisuus, joka helpottaa esikoulutettujen mallien käyttöä Hugging Facen tietokannassa. Se tarjoaa intuitiivisen API:n useille tehtäville, kuten sentimenttianalyysille, kysymyksiin vastaamiselle, peitetyn kielen mallinnukselle, nimettyjen entiteettien tunnistamiselle ja tiivistämiselle.
Putkistot yhdistävät kolme keskeistä Hugging Facen komponenttia:
- Tokenisaattori: Valmistelee tekstin mallille ymmärrettävään muotoon.
- Malli: Tämä on putkiston sydän, jossa tehdään todelliset ennusteet esikäsitellyn syötteen perusteella.
- Jälkikäsittelijä: Muuttaa mallin raakennusteet luettavaan muotoon.
Nämä putkistot vähentävät laajaa koodaamista ja tarjoavat käyttäjäystävällisen käyttöliittymän useiden NLP-tehtävien suorittamiseen.
Transformers-kirjaston sovellukset Hugging Facessa
Hugging Facen Transformers-kirjasto yksinkertaistaa luonnollisen kielen käsittelyä yhdistämällä mallin tarvittaviin esi- ja jälkikäsittelyvaiheisiin. Asenna kirjasto ja tuo tarvittava toiminto seuraavasti:
pip install -q transformers from transformers import pipeline
Tämän jälkeen voit suorittaa esimerkiksi sentimenttianalyysin, jossa teksti luokitellaan myönteiseksi tai kielteiseksi. Kirjaston pipeline()-funktio kokoaa yhteen erilaisia käsittelyketjuja. Se tukee myös äänen, kuvien ja useiden tietomuotojen käsittelyä.
Käytännön sovellukset
Tekstin luokittelu
Hugging Facen pipeline()-funktiolla tekstin luokitteluketju luodaan seuraavasti:
classifier = pipeline("text-classification")
Voit antaa käsittelyketjulle merkkijonon tai merkkijonojen luettelon ja saada ennusteet. Tuloksia voi havainnollistaa Pythonin Pandas-kirjastolla. Seuraava esimerkki näyttää, miten luokittelun tulokset tulostetaan:
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")
Tuloste
Result 1: Label: POSITIVE Score: 1.0 Result 2: Label: POSITIVE Score: 0.996
Nimettyjen entiteettien tunnistus (NER)
NER tunnistaa tekstistä todellisen maailman kohteita eli nimettyjä entiteettejä. Voit käyttää sitä seuraavasti:
ner_tagger = pipeline("ner", aggregation_strategy="simple")
text = "Elon Musk is the CEO of SpaceX."
outputs = ner_tagger(text)
print(outputs)
Tuloste
Elon Musk: PER, SpaceX: ORG
Kysymyksiin vastaaminen
Kysymysvastaamisessa poimitaan annetusta tekstistä täsmällinen vastaus kysymykseen. Luo käsittelyketju ja anna sille kysymys sekä asiayhteyden sisältävä teksti:
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)
Tuloste
{'score': 0.998, 'start': 51, 'end': 60, 'answer': 'New York'} Tekstin luokittelun, NER:n ja kysymysvastaamisen lisäksi Hugging Face tarjoaa monia valmiita käsittelyketjuja. Seuraavassa on muutamia esimerkkejä.
| Tehtävä | Kuvaus | Tunniste |
|---|---|---|
| Tekstin tuottaminen | Tuottaa tekstiä annetun kehotteen perusteella | pipeline(task="text-generation") |
| Tiivistäminen | Tiivistää pitkän tekstin tai asiakirjan | pipeline(task="summarization") |
| Kuvien luokittelu | Luokittelee syötekuvan | pipeline(task="image-classification") |
| Äänen luokittelu | Luokittelee äänidataa | pipeline(task="audio-classification") |
| Kuvaan liittyviin kysymyksiin vastaaminen | Vastaa kysymykseen kuvan ja kysymyksen perusteella | pipeline(task="vqa") |
Tarkemmat kuvaukset ja lisää tehtäviä löydät Hugging Facen pipeline-dokumentaatiosta.
Miksi Hugging suuntaa huomionsa Rustiin?

Hugging Facen Safetensors- ja Tokenizers-kirjastojen GitHub-sivut
Hugging Facen ekosysteemi on alkanut käyttää Rustia esimerkiksi Safetensors- ja Tokenizers-kirjastoissa. Se on myös julkaissut uuden Candle-koneoppimiskehyksen. Perinteisistä Python-kehyksistä poiketen Candle on rakennettu Rustilla. Tavoitteena on parantaa suorituskykyä ja yksinkertaistaa käyttökokemusta samalla, kun tuetaan grafiikkasuorittimia.
Candlen keskeinen tavoite on mahdollistaa palvelimeton päättely, kevyiden binäärien käyttöönotto ja Pythonin poistaminen tuotannon työkuormista, joissa sen lisäkuorma voi hidastaa toimintaa. Kehys pyrkii ratkaisemaan ongelmia, joita suurten koneoppimiskehysten, kuten PyTorchin, koko ja hidas käynnistyminen klusterissa aiheuttavat.
Rustista on tulossa suosittu vaihtoehto Pythonille erityisesti seuraavista syistä:
- Nopeus ja suorituskyky: Rust tunnetaan nopeudestaan. Koneoppimisessa yleisesti käytetyn Pythonin suorituskykyä voi rajoittaa Global Interpreter Lock (GIL), mutta Rustilla ei ole tätä rajoitetta. Se voi suorittaa tehtäviä nopeammin ja parantaa sitä käyttävien projektien suorituskykyä.
- Turvallisuus: Rust takaa muistiturvallisuuden ilman roskienkerääjää. Tämä on tärkeää rinnakkaisissa järjestelmissä ja Safetensorsin kaltaisissa työkaluissa, joissa tietorakenteiden turvallinen käsittely on ensisijaista.
Safetensors
Safetensors hyötyy Rustin nopeudesta ja turvallisuudesta. Kirjasto käsittelee tensoreita eli moniulotteisia matemaattisia rakenteita. Rust auttaa suorittamaan operaatiot nopeasti ja turvallisesti sekä välttämään muistinkäsittelyyn liittyviä tavallisia ohjelmointivirheitä ja tietoturvaongelmia.
Tokenisaattori
Tokenisaattorit pilkkovat lauseet ja ilmaukset pienemmiksi yksiköiksi, kuten sanoiksi tai termeiksi. Rust nopeuttaa tätä prosessia, mikä parantaa luonnollisen kielen käsittelyn tehokkuutta.
Hugging Facen tokenisaattorin ytimessä on osasanatokenisointi. Se tasapainottaa sana- ja merkkitason tokenisoinnin, jotta tieto säilyy ja sanaston koko pysyy hallittavana. Esimerkiksi ##ing– ja ##ed-alitokenit säilyttävät merkitystietoa ilman tarpeettoman suurta sanastoa.
Osasanatokenisointi edellyttää koulutusvaihetta, jossa etsitään toimiva tasapaino merkki- ja sanatason tokenisoinnin välillä. Pelkät etu- ja loppuliitteitä koskevat säännöt eivät riitä: tehokas tokenisaattori tarvitsee laajojen tekstiaineistojen kielirakenteiden analyysiä. Näin se pystyy käsittelemään uusia sanoja jakamalla ne tunnettuihin osasanoihin ja säilyttämään merkityksen.
Tokenisoinnin osat
Tokenizers-kirjasto jakaa prosessin useisiin vaiheisiin:
- Normalizer: Tekee syötemerkkijonolle alustavat muunnokset, kuten pienaakkostamisen, Unicode-normalisoinnin ja ylimääräisten merkkien poistamisen.
- PreTokenizer: Pilkkoo merkkijonon alustaviin osiin ennalta määritettyjen sääntöjen, esimerkiksi välilyöntien, perusteella.
- Model: Tunnistaa ja muodostaa alitokenit. Se mukautuu syötedatan ominaisuuksiin ja tarjoaa koulutusmahdollisuuksia.
- Post-Processor: Lisää esimerkiksi
[CLS]– ja[SEP]-tokenit, jotta tulos sopii BERTin kaltaisille transformer-malleille.
Aloita asentamalla kirjasto komennolla pip install tokenizers ja tuomalla se Python-ympäristöösi. Kirjasto tokenisoi suuria tekstimääriä nopeasti, jolloin laskentaresursseja säästyy esimerkiksi mallin koulutukseen.
Tokenizers käyttää Rustia, jonka syntaksi muistuttaa C++:aa mutta joka tuo ohjelmointikielten suunnitteluun uusia käsitteitä. Python-sidosten ansiosta voit hyödyntää matalamman tason kielen suorituskykyä Python-ympäristössä.
Tietoaineistot
Tietoaineistot ovat tekoälyprojektien perusta. Hugging Face tarjoaa monipuolisia aineistoja luonnollisen kielen käsittelyyn ja muihin tehtäviin. Niiden tehokas hyödyntäminen edellyttää lataamisen ja analysoinnin ymmärtämistä. Seuraava Python-esimerkki näyttää, miten aineisto ladataan:
from datasets import load_dataset
# Load a dataset
dataset = load_dataset('squad')
# Display the first entry
print(dataset[0])
Skripti käyttää load_dataset-funktiota SQuAD-aineiston lataamiseen. SQuAD on suosittu kysymysvastaamisen aineisto.
Esikoulutettujen mallien hyödyntäminen ja kokonaisuuden yhdistäminen
Esikoulutetut mallit ovat monien syväoppimisprojektien perusta. Ne auttavat tutkijoita ja kehittäjiä aloittamaan ilman kaiken rakentamista alusta. Hugging Face tarjoaa laajan valikoiman malleja, joita voidaan käyttää seuraavasti:
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)
Kun malli ja tokenisaattori on ladattu, voimme luoda funktion, joka vastaanottaa tekstin ja kysymyksen sekä palauttaa tekstistä poimitun vastauksen. Tokenisaattori muuntaa syötteet mallille sopivaan muotoon, minkä jälkeen malli tuottaa vastauksen:
import torch
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
Esimerkissä tuodaan tarvittavat moduulit Transformers-paketista ja ladataan malli sekä sen tokenisaattori from_pretrained-metodilla. Valittu BERT-malli on hienosäädetty SQuAD-aineistolla.
Seuraavassa esimerkissä tekstikappaleesta poimitaan vastaus tiettyyn kysymykseen:
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
get_answer-funktio vastaanottaa tekstin ja kysymyksen, tokenisoi ne ja käyttää esikoulutettua BERT-mallia vastauksen poimimiseen. Se näyttää, miten Transformers-kirjastolla voidaan rakentaa yksinkertainen mutta tehokas kysymysvastaamisjärjestelmä. Käsitteisiin kannattaa tutustua kokeilemalla niitä Google Colab -muistikirjassa.
Johtopäätös
Hugging Facen avoimen lähdekoodin työkalut, esikoulutetut mallit ja helppokäyttöiset käsittelyketjut auttavat sekä kokeneita ammattilaisia että aloittelijoita tutustumaan tekoälyyn. Rustin nopeuden ja turvallisuuden hyödyntäminen korostaa pyrkimystä yhdistää innovaatiot, tehokkuus ja tietoturva. Hugging Face laajentaa pääsyä edistyneisiin tekoälytyökaluihin ja tukee yhteisöllistä oppimista ja kehittämistä.
















