škrbina Potpuni vodič za početnike za LLM alate za grljenje lica - Unite.AI
Povežite se s nama

AI alati 101

Potpuni vodič za početnike za LLM alate za grljenje lica

mm
Ažurirano on
ZAGRLJENO LICE - POTPUNI VODIČ

Hugging Face je istraživački laboratorij i središte umjetne inteligencije koji je izgradio zajednicu znanstvenika, istraživača i entuzijasta. U kratkom vremenskom razdoblju, Hugging Face stekao je značajnu prisutnost u AI prostoru. Tehnički divovi uključujući Google, Amazon i Nvidia potaknuli su AI startup Hugging Face značajnim ulaganjima, čineći njegovu procjenu $ 4.5 milijardi.

U ovom ćemo vodiču predstaviti transformatore, LLM-ove i kako biblioteka Hugging Face igra važnu ulogu u poticanju AI zajednice otvorenog koda. Također ćemo proći kroz bitne značajke Hugging Face-a, uključujući cjevovode, skupove podataka, modele i više, s praktičnim primjerima Pythona.

Transformatori u NLP-u

Godine 2017. Sveučilište Cornell objavilo je utjecajan rad koji je uveo transformatori. Ovo su modeli dubokog učenja koji se koriste u NLP-u. Ovo otkriće potaknulo je razvoj velikih jezičnih modela poput ChatGPT.

Veliki jezični modeli ili LLM sustavi su umjetne inteligencije koji koriste transformatore za razumijevanje i stvaranje teksta nalik ljudskom. Međutim, izrada ovih modela je skupa, često zahtijeva milijune dolara, što ograničava njihovu dostupnost velikim tvrtkama.

Zagrljeno lice, pokrenut 2016. godine, ima za cilj učiniti NLP modele dostupnima svima. Unatoč tome što je komercijalna tvrtka, nudi niz resursa otvorenog koda koji pomažu ljudima i organizacijama da po pristupačnoj cijeni izgrade i koriste modele transformatora. Strojno učenje je učenje računala da izvršavaju zadatke prepoznavanjem obrazaca, dok duboko učenje, podskup strojnog učenja, stvara mrežu koja samostalno uči. Transformatori su vrsta arhitekture dubokog učenja koja učinkovito i fleksibilno koristi ulazne podatke, što ga čini popularnim izborom za izgradnju velikih jezičnih modela zbog manjeg vremena potrebnog za obuku.

Kako grljenje lica olakšava NLP i LLM projekte

Ekosustav grljenog lica - modeli, skup podataka, metrika, transformatori, ubrzanje, tokenizatori

Hugging Face pojednostavio je rad s LLM-om nudeći:

  1. Raspon unaprijed obučenih modela za odabir.
  2. Alati i primjeri za fino podešavanje ovih modela prema vašim specifičnim potrebama.
  3. Mogućnosti jednostavne implementacije za različita okruženja.

Sjajan resurs dostupan putem Hugging Face je Otvorite LLM Leaderboard. Funkcionirajući kao sveobuhvatna platforma, sustavno prati, rangira i mjeri učinkovitost spektra velikih jezičnih modela (LLM) i chatbota, pružajući pronicljivu analizu napretka u domeni otvorenog koda

LLM Benchmarks mjeri modele kroz četiri metrike:

  • AI2 Reasoning Challenge (25 snimaka) — niz pitanja o nastavnom planu i programu elementarnih znanosti.
  • HellaSwag (10-shot) — zdravorazumski test zaključivanja koji, iako jednostavan za ljude, predstavlja značajan izazov za vrhunske modele.
  • MMLU (5 snimaka) — višestruka evaluacija koja se dotiče stručnosti tekstualnog modela u 57 različitih domena, uključujući, između ostalog, osnove matematike, prava i informatike.
  • TruthfulQA (0-shot) — alat za utvrđivanje tendencije modela da ponavlja dezinformacije koje se često susreću na internetu.

Referentne vrijednosti, koje su opisane izrazima kao što su "25-shot", "10-shot", "5-shot" i "0-shot", pokazuju broj brzih primjera koji se daju modelu tijekom procesa evaluacije kako bi se ocijenila njegova izvedba i sposobnost zaključivanja u različitim domenama. U paradigmama "nekoliko slučajeva", modelima se daje mali broj primjera koji im pomažu pri odgovorima, dok u postavci "0-shot", modeli ne dobivaju primjere i moraju se osloniti isključivo na svoje prethodno postojeće znanje kako bi odgovorili na odgovarajući način .

Komponente grlećeg lica

Cjevovodi

'cjevovodi' dio su biblioteke transformatora Hugging Face, značajke koja pomaže u jednostavnom korištenju unaprijed obučenih modela dostupnih u repozitoriju Hugging Face. Pruža intuitivni API za niz zadataka, uključujući analizu osjećaja, odgovaranje na pitanja, modeliranje maskiranog jezika, prepoznavanje imenovanih entiteta i sažimanje.

Cjevovodi integriraju tri središnje komponente Hugging Face:

  1. Tokenizator: priprema vaš tekst za model pretvarajući ga u format koji model može razumjeti.
  2. Model: Ovo je srce cjevovoda gdje se prave predviđanja na temelju prethodno obrađenog unosa.
  3. Postprocesor: Pretvara sirova predviđanja modela u oblik čitljiv ljudima.

Ovi cjevovodi ne samo da smanjuju opsežno kodiranje, već također nude korisničko sučelje za izvršavanje raznih NLP zadataka.

Transformer aplikacije koje koriste biblioteku Hugging Face

Vrhunac biblioteke Hugging Face je biblioteka Transformers, koja pojednostavljuje NLP zadatke povezivanjem modela s potrebnim fazama prije i naknadne obrade, pojednostavljujući proces analize. Za instaliranje i uvoz biblioteke koristite sljedeće naredbe:

pip install -q transformers
from transformers import pipeline

Nakon što ste to učinili, možete izvršavati NLP zadatke počevši od analize osjećaja, koja kategorizira tekst u pozitivne ili negativne osjećaje. Snažna funkcija pipeline() knjižnice služi kao središte koje obuhvaća druge cjevovode i olakšava aplikacije specifične za zadatke u audio, vizualnim i multimodalnim domenama.

Praktične primjene

Klasifikacija teksta

Klasifikacija teksta postaje povjetarac s funkcijom pipeline() Hugging Facea. Evo kako možete pokrenuti cjevovod za klasifikaciju teksta:

classifier = pipeline("text-classification")

Za praktično iskustvo, ubacite niz ili popis nizova u svoj cjevovod kako biste dobili predviđanja, koja se mogu lijepo vizualizirati pomoću Python-ove biblioteke Pandas. Ispod je Python isječak koji ovo demonstrira:

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")

Izlaz

Result 1: 
Label: POSITIVE 
Score: 1.0 
Result 2: 
Label: POSITIVE 
Score: 0.996 

Prepoznavanje imenovanih entiteta (NER)

NER je ključan u izdvajanju objekata stvarnog svijeta koji se nazivaju 'imenovani entiteti' iz teksta. Upotrijebite NER cjevovod za učinkovito identificiranje ovih entiteta:

ner_tagger = pipeline("ner", aggregation_strategy="simple")
text = "Elon Musk is the CEO of SpaceX."
outputs = ner_tagger(text)
print(outputs)

Izlaz

 Elon Musk: PER, SpaceX: ORG 

Odgovaranje na pitanje

Odgovaranje na pitanja uključuje izdvajanje preciznih odgovora na određena pitanja iz danog konteksta. Pokrenite cjevovod za odgovore na pitanja i unesite svoje pitanje i kontekst kako biste dobili željeni odgovor:

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)

Izlaz

 {'score': 0.998, 'start': 51, 'end': 60, 'answer': 'New York'} 

Funkcija cjevovoda Hugging Face nudi niz unaprijed izgrađenih cjevovoda za različite zadatke, osim klasifikacije teksta, NER-a i odgovaranja na pitanja. U nastavku su pojedinosti o podskupu dostupnih zadataka:

Tablica: Zadaci cjevovoda za grljenje lica

ZadatakOpisIdentifikator cjevovoda
Generiranje tekstaGenerirajte tekst na temelju zadanog upitacjevovod(zadatak=”generiranje teksta”)
SažimanjeSažeti poduži tekst ili dokumentcjevovod(zadatak=”sažimanje”)
Klasifikacija slikaOznačite ulaznu slikucjevovod(zadatak=”klasifikacija slika”)
Audio klasifikacijaKategorizirajte audio podatkecjevovod(zadatak=”audio-klasifikacija”)
Vizualno odgovaranje na pitanjaOdgovorite na upit koristeći i sliku i pitanjecjevovod(zadatak=”vqa”)

 

Detaljne opise i više zadataka potražite u dokumentacija o cjevovodu na web stranici Hugging Face.

Zašto Hugging Face prebacuje svoj fokus na Rust

Hugging face Safetensors i tokenizer Rust

Lice koje grli Safetensors i tokenizer GitHub stranica

Ekosustav Hugging Face (HF) počeo je koristiti Rust u svojim bibliotekama kao što su sigurnosni senzori i tokenizeri.

Hugging Face nedavno je objavio i novi okvir za strojno učenje pod nazivom Svijeća. Za razliku od tradicionalnih okvira koji koriste Python, Candle je izgrađen s Rustom. Cilj iza korištenja Rusta je poboljšati izvedbu i pojednostaviti korisničko iskustvo uz podršku GPU operacija.

Ključni cilj Candlea je olakšati zaključivanje bez poslužitelja, omogućujući implementaciju laganih binarnih datoteka i uklanjajući Python iz proizvodnih radnih opterećenja, što ponekad može usporiti procese zbog svojih režijskih troškova. Ovaj okvir dolazi kao rješenje za prevladavanje problema s okvirima potpunog strojnog učenja kao što je PyTorch koji su veliki i spori pri stvaranju instanci u klasteru.

Istražimo zašto Rust postaje omiljeni izbor mnogo više od Pythona.

  1. Brzina i performanse – Rust je poznat po svojoj nevjerojatnoj brzini, nadmašujući Python, koji se tradicionalno koristi u okvirima strojnog učenja. Performanse Pythona ponekad mogu biti usporene zbog Global Interpreter Lock-a (GIL), ali Rust se ne suočava s tim problemom, obećavajući brže izvršavanje zadataka i, posljedično, poboljšanu izvedbu u projektima u kojima je implementiran.
  2. Sigurnosni – Rust jamči sigurnost memorije bez skupljača smeća, aspekt koji je bitan u osiguravanju sigurnosti konkurentnih sustava. Ovo igra ključnu ulogu u područjima kao što su safetensors gdje je sigurnost u rukovanju podatkovnim strukturama prioritet.

Safetensors

Safetensors iskoristite značajke brzine i sigurnosti Rusta. Safetensors uključuje manipulaciju tenzorima, složenim matematičkim entitetom, a posjedovanje Rusta osigurava da su operacije ne samo brze, već i sigurne, izbjegavajući uobičajene greške i sigurnosne probleme koji bi mogli nastati zbog pogrešnog rukovanja memorijom.

Tokenizator

Tokenizatori nositi se s rastavljanjem rečenica ili fraza na manje jedinice, kao što su riječi ili pojmovi. Rust pomaže u ovom procesu tako što ubrzava vrijeme izvršenja, osiguravajući da proces tokenizacije nije samo točan nego i brz, povećavajući učinkovitost zadataka obrade prirodnog jezika.

Srž tokenizatora Hugging Facea je koncept tokenizacije podriječi, čime se postiže delikatna ravnoteža između tokenizacije na razini riječi i znakova kako bi se optimiziralo zadržavanje informacija i veličina vokabulara. Funkcionira kroz stvaranje podtokena, kao što su "##ing" i "##ed", zadržavajući semantičko bogatstvo izbjegavajući prenapuhani vokabular.

Tokenizacija podriječi uključuje fazu obuke za prepoznavanje najučinkovitije ravnoteže između tokenizacije na razini znakova i riječi. Nadilazi puka pravila prefiksa i sufiksa, zahtijevajući sveobuhvatnu analizu jezičnih obrazaca u opsežnim tekstualnim korpusima kako bi se dizajnirao učinkovit tokenizator podriječi. Generirani tokenizator vješt je u rukovanju novim riječima razlažući ih na poznate podriječi, održavajući visoku razinu semantičkog razumijevanja.

Komponente tokenizacije

Knjižnica tokenizatora dijeli proces tokenizacije u nekoliko koraka, od kojih se svaki bavi posebnim aspektom tokenizacije. Zadubimo se u ove komponente:

  • Normalizator: Poduzima početne transformacije na ulaznom nizu, primjenjujući potrebne prilagodbe kao što je pretvorba malih slova, normalizacija Unicodea i uklanjanje.
  • PreTokenizer: Odgovoran za fragmentiranje ulaznog niza u predsegmente, određujući podjele na temelju unaprijed definiranih pravila, kao što su razgraničenja prostora.
  • Model: Nadzire otkrivanje i stvaranje podtokena, prilagođavajući se specifičnostima vaših ulaznih podataka i nudeći mogućnosti obuke.
  • Postprocesor: Poboljšava značajke konstrukcije kako bi se olakšala kompatibilnost s mnogim modelima koji se temelje na transformatorima, poput BERT-a, dodavanjem tokena kao što su [CLS] i [SEP].

Da biste započeli s tokenizatorima Hugging Face, instalirajte biblioteku pomoću naredbe pip install tokenizers i uvezite ga u svoje Python okruženje. Knjižnica može tokenizirati velike količine teksta u vrlo malo vremena, čime se štede dragocjeni računalni resursi za intenzivnije zadatke poput obuke modela.

Knjižnica tokenizatora koristi Hrđa koji nasljeđuje sintaktičku sličnost C++-a dok uvodi nove koncepte u dizajn programskog jezika. Zajedno s Python vezama, osigurava da uživate u izvedbi jezika niže razine dok radite u Python okruženju.

Skupovi podataka

Skupovi podataka temelj su AI projekata. Hugging Face nudi širok izbor skupova podataka, prikladnih za niz NLP zadataka i više. Da biste ih učinkovito koristili, ključno je razumijevanje procesa učitavanja i analize. Ispod je dobro komentirana Python skripta koja pokazuje kako istražiti skupove podataka dostupnih na Hugging Face:

from datasets import load_dataset
# Load a dataset
dataset = load_dataset('squad')
# Display the first entry
print(dataset[0])

Ova skripta koristi funkciju load_dataset za učitavanje skupa podataka SQuAD, što je popularan izbor za zadatke odgovaranja na pitanja.

Iskorištavanje unaprijed obučenih modela i spajanje svega toga

Unaprijed obučeni modeli čine okosnicu mnogih projekata dubokog učenja, omogućujući istraživačima i programerima da pokrenu svoje inicijative bez pokretanja od nule. Hugging Face olakšava istraživanje raznolikog raspona unaprijed obučenih modela, kao što je prikazano u donjem kodu:

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)

S učitanim modelom i tokenizatorom, sada možemo nastaviti sa stvaranjem funkcije koja uzima dio teksta i pitanje kao ulaze i vraća odgovor izdvojen iz teksta. Upotrijebit ćemo tokenizator za obradu unesenog teksta i pitanja u format koji je kompatibilan s modelom, a zatim ćemo taj obrađeni unos unijeti u model kako bismo dobili odgovor:

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

U isječku koda uvozimo potrebne module iz paketa transformers, zatim učitavamo unaprijed obučeni model i njegov odgovarajući tokenizator pomoću metode from_pretrained. Odabiremo BERT model fino podešen na skupu podataka SQuAD.

Pogledajmo primjer slučaja korištenja ove funkcije gdje imamo odlomak teksta i iz njega želimo izvući određeni odgovor na pitanje:

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

U ovoj skripti gradimo funkciju get_answer koja uzima tekst i pitanje, tokenizira ih na odgovarajući način i koristi prethodno obučeni BERT model za izdvajanje odgovora iz teksta. Demonstrira praktičnu primjenu knjižnice transformatora Hugging Face za izgradnju jednostavnog, ali snažnog sustava za odgovaranje na pitanja. Kako biste dobro shvatili koncepte, preporučuje se praktično eksperimentiranje pomoću a Google Colab Bilježnica.

Zaključak

Svojim širokim rasponom alata otvorenog koda, unaprijed obučenih modela i cjevovoda jednostavnih za korištenje, omogućuje i iskusnim profesionalcima i novopridošlicama da zaroni u ekspanzivan svijet umjetne inteligencije s osjećajem lakoće i razumijevanja. Štoviše, inicijativa za integraciju Rusta, zahvaljujući njegovoj brzini i sigurnosnim značajkama, naglašava predanost Hugging Facea poticanju inovacija uz istovremeno osiguranje učinkovitosti i sigurnosti u AI aplikacijama. Transformativni rad Hugging Facea ne samo da demokratizira pristup AI alatima visoke razine, već također njeguje suradničko okruženje za učenje i razvoj u prostoru umjetne inteligencije, olakšavajući budućnost u kojoj je umjetna inteligencija dostupna

Proteklih pet godina proveo sam uranjajući u fascinantan svijet strojnog i dubokog učenja. Moja strast i stručnost naveli su me da pridonesem više od 50 različitih projekata softverskog inženjeringa, s posebnim fokusom na AI/ML. Moja stalna znatiželja također me povukla prema obradi prirodnog jezika, polju koje jedva čekam dalje istraživati.