NarzÄdzia AI 101
Kompletny przewodnik dla poczÄ tkujÄ cych po narzÄdziach Hugging Face LLM

Hugging Face to laboratorium badawcze i centrum, ktÃģre zbudowaÅo spoÅecznoÅÄ naukowcÃģw, badaczy i entuzjastÃģw. W krÃģtkim czasie Hugging Face zdobyÅo znaczÄ cÄ pozycjÄ w przestrzeni AI. Tech giganci w tym Google (GOOGL ), Amazon (AMZN ) i Nvidia (NVDA ) wesprzeÅy startup Hugging Face znaczÄ cymi inwestycjami, co sprawiÅo, Åže jego wycena wynosi 4,5 miliarda dolarÃģw.
W tym przewodniku wprowadzimy transformery, LLM i wyjaÅnimy, jak biblioteka Hugging Face odgrywa waÅžnÄ rolÄ w tworzeniu spoÅecznoÅci open-source AI. Przeanalizujemy rÃģwnieÅž podstawowe funkcje Hugging Face, w tym potoki, zestawy danych, modele i wiele wiÄcej, z przykÅadami w Pythonie.
Transformery w NLP
W 2017 roku Uniwersytet Cornell opublikowaÅ wpÅywowy artykuÅ, ktÃģry wprowadziÅ transformery. SÄ to gÅÄbokie modele uczenia maszynowego stosowane w NLP. To odkrycie przyspieszyÅo rozwÃģj duÅžych modeli jÄzykowych, takich jak ChatGPT.
DuÅže modele jÄzykowe, czyli LLM, to systemy AI, ktÃģre wykorzystujÄ transformery do zrozumienia i tworzenia tekstÃģw podobnych do ludzkich. Jednak tworzenie tych modeli jest drogie, czÄsto wymaga milionÃģw dolarÃģw, co ogranicza ich dostÄpnoÅÄ do duÅžych firm.
Hugging Face, zaÅoÅžone w 2016 roku, ma na celu uczynienie modeli NLP dostÄpnymi dla wszystkich. Pomimo tego, Åže jest to firma komercyjna, oferuje szereg otwartych zasobÃģw, ktÃģre pomagajÄ ludziom i organizacjom w tanim budowaniu i korzystaniu z modeli transformatorowych. Uczenie maszynowe polega na nauczaniu komputerÃģw wykonywania zadaÅ poprzez rozpoznawanie wzorcÃģw, podczas gdy gÅÄbokie uczenie maszynowe, podzbiÃģr uczenia maszynowego, tworzy sieÄ, ktÃģra uczy siÄ niezaleÅžnie. Transformery sÄ rodzajem architektury gÅÄbokiego uczenia maszynowego, ktÃģry skutecznie i elastycznie wykorzystuje dane wejÅciowe, co sprawia, Åže sÄ popularnym wyborem do budowy duÅžych modeli jÄzykowych ze wzglÄdu na mniejsze wymagania czasu szkolenia.
Jak Hugging uÅatwia projekty NLP i LLM
Hugging Face uÅatwia pracÄ z LLM, oferujÄ c:
- zestaw wstÄpnie wytrenowanych modeli do wyboru.
- narzÄdzia i przykÅady do dostosowania tych modeli do Twoich potrzeb.
- Åatwe opcje wdroÅženia w rÃģÅžnych Årodowiskach.
Jednym z cennych zasobÃģw dostÄpnych za poÅrednictwem Hugging Face jest Open LLM Leaderboard. Funkcjonuje jako kompleksowa platforma, ktÃģra systematycznie monitoruje, klasyfikuje i ocenia wydajnoÅÄ szeregu duÅžych modeli jÄzykowych (LLM) i chatbotÃģw, dostarczajÄ c analizÄ postÄpÃģw w dziedzinie open-source.
SkÅadniki Hugging
Potoki
âPotokiâ sÄ czÄÅciÄ biblioteki transformatorÃģw Hugging Face, funkcjÄ , ktÃģra uÅatwia korzystanie z wstÄpnie wytrenowanych modeli dostÄpnych w repozytorium Hugging Face. Zapewnia intuicyjny interfejs API dla szeregu zadaÅ, w tym analizy sentymentu, odpowiedzi na pytania, modelowania jÄzyka z maskowaniem, rozpoznawania nazwanych encji i podsumowywania.
Potoki ÅÄ czÄ trzy podstawowe skÅadniki Hugging Face:
- Tokenizator: Przygotowuje TwÃģj tekst do modelu, konwertujÄ c go na format, ktÃģry model moÅže zrozumieÄ.
- Model: To serce potoku, gdzie dokonywane sÄ rzeczywiste przewidywania na podstawie przetworzonych danych wejÅciowych.
- Post-procesor: PrzeksztaÅca surowe przewidywania modelu w czytelny dla czÅowieka format.
Te potoki nie tylko redukujÄ obszerny kod, ale takÅže oferujÄ przyjazny interfejs do wykonywania rÃģÅžnych zadaÅ NLP.
Zastosowania transformatorÃģw za pomocÄ biblioteki Hugging
Jednym z najwiÄkszych atutÃģw biblioteki Hugging Face jest biblioteka TransformatorÃģw, ktÃģra upraszcza zadania NLP, ÅÄ czÄ c model z niezbÄdnymi etapami przetwarzania przed i po, strumieniujÄ c proces analizy. Aby zainstalowaÄ i zaimportowaÄ bibliotekÄ, uÅžyj nastÄpujÄ cych poleceÅ:
pip install -q transformers from transformers import pipeline
Po wykonaniu tych czynnoÅci moÅžesz wykonywaÄ zadania NLP, zaczynajÄ c od analizy sentymentu, ktÃģra klasyfikuje tekst na sentyment pozytywny lub negatywny. PotÄÅžna funkcja pipeline() sÅuÅžy jako centrum, obejmujÄ ce inne potoki i uÅatwiajÄ ce zastosowania zadaÅ w dziedzinach audio, wizji i multimodalnej.
Zastosowania praktyczne
Klasyfikacja tekstu
Klasyfikacja tekstu staje siÄ Åatwa dziÄki funkcji pipeline() Hugging Face. Oto, jak moÅžesz zainicjowaÄ potok klasyfikacji tekstu:
klasyfikator = pipeline("klasyfikacja-tekstu")
Dla praktycznego doÅwiadczenia wprowadÅš ciÄ g lub listÄ ciÄ gÃģw do potoku, aby uzyskaÄ przewidywania, ktÃģre moÅžna wygodnie wizualizowaÄ za pomocÄ biblioteki Pandas w Pythonie. PoniÅžej znajduje siÄ fragment kodu Pythona, ktÃģry to demonstruje:
zdania = ["Jestem zachwycony, Åže mogÄ CiÄ zaprosiÄ do wspaniaÅego Åwiata AI.",
"Nie powinno CiÄ to zawieÅÄ."]
# Pobierz wyniki klasyfikacji dla kaÅždego zdania na liÅcie
wyniki = klasyfikator(zdania)
# Przeiteruj wyniki i wydrukuj etykietÄ i wynik
for i, wynik in enumerate(wyniki):
print(f"Wynik {i + 1}:")
print(f" Etykieta: {wynik['etykieta']}")
print(f" Wynik: {round(wynik['wynik'], 3)}\n")
Rozpoznawanie nazwanych encji (NER)
NER jest kluczowe w ekstrakcji obiektÃģw Åwiata rzeczywistego, okreÅlanych jako ânazwane encjeâ z tekstu. Wykorzystaj potok NER, aby skutecznie identyfikowaÄ te encje:
tagger_NER = pipeline("rozpoznawanie-encji", strategia_agregacji="prosta")
tekst = "Elon Musk jest dyrektorem generalnym SpaceX."
wyniki = tagger_NER(tekst)
print(wyniki)
Wynik
Elon Musk: OSOBA, SpaceX: ORGANIZACJA
Odpowiadanie na pytania
Odpowiadanie na pytania obejmuje ekstrakcjÄ precyzyjnych odpowiedzi na konkretne pytania z danego kontekstu. Zainicjuj potok odpowiedzi na pytania i wprowadÅš swoje pytanie oraz kontekst, aby uzyskaÄ poÅžÄ danÄ odpowiedÅš:
czytelnik = pipeline("odpowiadanie-na-pytania")
tekst = "Hugging Face to firma tworzÄ
ca narzÄdzia do NLP. Ma siedzibÄ w Nowym Jorku i zostaÅa zaÅoÅžona w 2016 roku."
pytanie = "Gdzie ma siedzibÄ Hugging Face?"
wyniki = czytelnik(pytanie=pytanie, kontekst=tekst)
print(wyniki)
Wynik
{ 'wynik': 0.998, 'start': 51, 'koniec': 60, 'odpowiedÅš': 'Nowy Jork' } Praca Hugging Face nad potokiem oferuje szereg wstÄpnie zdefiniowanych potokÃģw dla rÃģÅžnych zadaÅ, poza klasyfikacjÄ tekstu, NER i odpowiedziÄ na pytania. PoniÅžej znajdujÄ siÄ szczegÃģÅy dotyczÄ ce podzbioru dostÄpnych zadaÅ:
Tabela: Zadania potoku Hugging Face
| Zadanie | Opis | Identyfikator potoku |
| Generowanie tekstu | Generuj tekst na podstawie danego promtu | pipeline(task=âgenerowanie-tekstuâ) |
| Podsumowywanie | Podsumuj dÅugi tekst lub dokument | pipeline(task=âpodsumowywanieâ) |
| Klasyfikacja obrazu | Etykietuj obraz wejÅciowy | pipeline(task=âklasyfikacja-obrazuâ) |
| Klasyfikacja audio | Kategoryzuj dane audio | pipeline(task=âklasyfikacja-audioâ) |
| Odpowiadanie na pytania wizualne | Odpowiedz na pytanie z uÅžyciem obrazu i pytania | pipeline(task=âodpowiadanie-na-pytania-wizualneâ) |
Â
Aby uzyskaÄ szczegÃģÅowe opisy i wiÄcej zadaÅ, odwiedÅš dokumentacjÄ potoku na stronie Hugging Face.
Dlaczego Hugging przenosi swojÄ uwagÄ na Rust
Ekosystem Hugging Face (HF) zaczÄ Å wykorzystywaÄ Rust w swoich bibliotekach, takich jak safetensors i tokenizatory.
Hugging Face niedawno wydaÅ nowy framework uczenia maszynowego o nazwie Candle. W przeciwieÅstwie do tradycyjnych frameworkÃģw, ktÃģre wykorzystujÄ Python, Candle jest zbudowany z Rust. Celem wykorzystania Rust jest poprawa wydajnoÅci i uproszczenie doÅwiadczenia uÅžytkownika, jednoczeÅnie obsÅugujÄ c operacje na GPU.
GÅÃģwnym celem Candle jest uÅatwienie bezserwerowej inferencji, co umoÅžliwia wdroÅženie lekkich binarnych plikÃģw i usuwa Python z obciÄ ÅžeÅ produkcyjnych, ktÃģre mogÄ czasem spowalniaÄ procesy z powodu swoich nakÅadÃģw. Ten framework jest rozwiÄ zaniem problemÃģw spotykanych w peÅnych frameworkach uczenia maszynowego, takich jak PyTorch, ktÃģre sÄ duÅže i wolne podczas tworzenia instancji w klastrze.
Zbadajmy, dlaczego Rust staje siÄ bardziej popularny niÅž Python.
- SzybkoÅÄ i wydajnoÅÄ â Rust jest znany ze swojej niesamowitej szybkoÅci, przewyÅžszajÄ c Python, ktÃģry tradycyjnie jest uÅžywany w frameworkach uczenia maszynowego. WydajnoÅÄ Pythona moÅže byÄ czasem spowolniona z powodu jego Global Interpreter Lock (GIL), ale Rust nie ma tego problemu, co gwarantuje szybsze wykonanie zadaÅ i lepszÄ wydajnoÅÄ w projektach, w ktÃģrych jest wdroÅžony.
- BezpieczeÅstwo â Rust zapewnia gwarancje bezpieczeÅstwa pamiÄci bez kolektora Åmieci, co jest istotne w zapewnieniu bezpieczeÅstwa systemÃģw wspÃģÅbieÅžnych. Jest to kluczowy aspekt w obszarach, takich jak safetensors, gdzie bezpieczeÅstwo w obsÅudze struktur danych jest priorytetem.
Safetensors
Safetensors korzystajÄ z szybkoÅci i cech bezpieczeÅstwa Rust. Safetensors obejmujÄ manipulacjÄ tensorami, zÅoÅžonÄ jednostkÄ matematycznÄ , a Rust zapewnia, Åže operacje te sÄ nie tylko szybkie, ale takÅže bezpieczne, unikajÄ c typowych bÅÄdÃģw i problemÃģw z bezpieczeÅstwem, ktÃģre mogÄ wynikaÄ z nieprawidÅowej obsÅugi pamiÄci.
Tokenizator
Tokenizatory sÄ odpowiedzialne za rozdzielanie zdaÅ lub fraz na mniejsze jednostki, takie jak sÅowa lub terminy. Rust przyspiesza wykonanie tego procesu, zapewniajÄ c, Åže tokenizacja nie tylko jest dokÅadna, ale takÅže szybka, co zwiÄksza wydajnoÅÄ zadaÅ przetwarzania jÄzyka naturalnego.
PodstawÄ tokenizatora Hugging Face jest pojÄcie subword tokenizacji, ktÃģre osiÄ ga delikatny balans miÄdzy tokenizacjÄ na poziomie sÅÃģw a tokenizacjÄ na poziomie znakÃģw, aby zoptymalizowaÄ zachowanie informacji i rozmiar sÅownictwa. Funkcjonuje poprzez tworzenie subtokenÃģw, takich jak â##ingâ i â##edâ, zachowujÄ c bogactwo semantyczne, jednoczeÅnie unikajÄ c rozdÄtego sÅownictwa.
Subword tokenizacja obejmuje fazÄ szkolenia w celu identyfikacji najbardziej skutecznego balansu miÄdzy tokenizacjÄ na poziomie sÅÃģw a tokenizacjÄ na poziomie znakÃģw. Przekracza proste reguÅy prefiksÃģw i sufiksÃģw, wymagajÄ c dogÅÄbnej analizy wzorcÃģw jÄzykowych w obszernych korpusach tekstowych w celu opracowania wydajnego tokenizatora subword. Wygenerowany tokenizator jest zdolny do radzenia sobie z nowymi sÅowami, dzielÄ c je na znane subwords, utrzymujÄ c wysoki poziom zrozumienia semantycznego.
SkÅadniki tokenizacji
Biblioteka tokenizatorÃģw dzieli proces tokenizacji na kilka krokÃģw, z ktÃģrych kaÅždy dotyczy innego aspektu tokenizacji. Zbadajmy te skÅadniki:
- Normalizator: Wykonuje poczÄ tkowe transformacje na ciÄ gu wejÅciowym, stosujÄ c niezbÄdne dostosowania, takie jak konwersja na maÅe litery, normalizacja Unicode i usuwanie.
- Pre-tokenizator: Odpowiedzialny za fragmentacjÄ ciÄ gu wejÅciowego na pre-segmenty, okreÅlajÄ c podziaÅy na podstawie predefiniowanych reguÅ, takich jak rozdzielenie spacjami.
- Model: Nadzoruje odkrywanie i tworzenie subtokenÃģw, dostosowujÄ c siÄ do specyfiki Twoich danych wejÅciowych i oferujÄ c moÅžliwoÅci szkolenia.
- Post-procesor: Ulepsza konstrukcjÄ, aby zapewniÄ zgodnoÅÄ z wieloma modelami opartymi na transformatorach, takimi jak BERT, dodajÄ c tokeny takie jak [CLS] i [SEP].
Aby rozpoczÄ
Ä pracÄ z tokenizatorami Hugging Face, zainstaluj bibliotekÄ za pomocÄ
polecenia pip install tokenizers i zaimportuj jÄ
do Årodowiska Python. Biblioteka moÅže tokenizowaÄ duÅže iloÅci tekstu w bardzo krÃģtkim czasie, oszczÄdzajÄ
c cenne zasoby obliczeniowe na zadania takie jak szkolenie modeli.
Biblioteka tokenizatorÃģw wykorzystuje Rust, ktÃģry dziedziczy podobieÅstwo skÅadniowe do C++, wprowadzajÄ c nowe pojÄcia w projektowaniu jÄzyka programowania. PoÅÄ czony z powiÄ zaniami Pythona, zapewnia wydajnoÅÄ jÄzyka niskiego poziomu, pracujÄ c w Årodowisku Python.
Zestawy danych
Zestawy danych sÄ podstawÄ projektÃģw AI. Hugging Face oferuje szeroki wybÃģr zestawÃģw danych, odpowiednich dla rÃģÅžnych zadaÅ NLP i innych. Aby wykorzystaÄ je efektywnie, waÅžne jest zrozumienie procesu Åadowania i analizy. PoniÅžej znajduje siÄ dobrze skomentowany skrypt Pythona, ktÃģry pokazuje, jak eksplorowaÄ zestawy danych dostÄpne w Hugging Face:
from datasets import load_dataset
# ZaÅaduj zestaw danych
zestaw_danych = load_dataset('squad')
# WyÅwietl pierwszy wpis
print(zestaw_danych[0])
Ten skrypt uÅžywa funkcji load_dataset do zaÅadowania zestawu danych SQuAD, ktÃģry jest popularnym wyborem do zadaÅ odpowiedzi na pytania.
Wykorzystanie wstÄpnie wytrenowanych modeli i ÅÄ czenie wszystkiego
WstÄpnie wytrenowane modele tworzÄ podstawÄ wielu projektÃģw gÅÄbokiego uczenia maszynowego, umoÅžliwiajÄ c badaczom i deweloperom rozpoczÄcie pracy bez koniecznoÅci rozpoczynania od zera. Hugging Face uÅatwia eksploracjÄ szerokiej gamy wstÄpnie wytrenowanych modeli, jak pokazano w poniÅžszym kodzie:
from transformers import AutoModelForQuestionAnswering, AutoTokenizer
# ZaÅaduj wstÄpnie wytrenowany model i tokenizator
model = AutoModelForQuestionAnswering.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
tokenizator = AutoTokenizer.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
# WyÅwietl architekturÄ modelu
print(model)
Z modelem i tokenizatorem zaÅadowanymi moÅžemy teraz utworzyÄ funkcjÄ, ktÃģra przyjmuje tekst i pytanie jako dane wejÅciowe i zwraca odpowiedÅš wyciÄ gniÄtÄ z tekstu. BÄdziemy wykorzystywaÄ tokenizator do przetworzenia danych wejÅciowych w format zgodny z modelem, a nastÄpnie wprowadzimy ten przetworzony wejÅcie do modelu, aby uzyskaÄ odpowiedÅš:
def get_answer(tekst, pytanie): # Tokenizuj dane wejÅciowe dane_wejÅciowe = tokenizator(pytanie, tekst, return_tensors='pt', max_length=512, truncation=True) dane_wyjÅciowe = model(**dane_wejÅciowe) # Pobierz wyniki startu i koÅca dla odpowiedzi start_odpowiedzi = torch.argmax(dane_wyjÅciowe.start_logits) end_odpowiedzi = torch.argmax(dane_wyjÅciowe.end_logits) + 1 odpowiedÅš = tokenizator.convert_tokens_to_string(tokenizator.convert_ids_to_tokens(dane_wejÅciowe['input_ids'][0][start_odpowiedzi:end_odpowiedzi])) return odpowiedÅš
W fragmencie kodu importujemy niezbÄdne moduÅy z pakietu transformers, a nastÄpnie Åadujemy wstÄpnie wytrenowany model i odpowiadajÄ cy mu tokenizator za pomocÄ metody from_pretrained. Wybieramy model BERT, ktÃģry zostaÅ wytrenowany na zestawie danych SQuAD.
Zobaczmy przykÅad uÅžycia tej funkcji, w ktÃģrym mamy paragraf tekstu i chcemy wydobyÄ konkretnÄ odpowiedÅš na pytanie z tego tekstu:
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.
"""
pytanie = "Kto zaprojektowaÅ wieÅžÄ Eiffela?"
# Pobierz odpowiedÅš na pytanie
odpowiedÅš = get_answer(tekst, pytanie)
print(f"OdpowiedÅš na pytanie to: {odpowiedÅš}")
# Wynik: OdpowiedÅš na pytanie to: Gustave Eiffel
W tym skrypcie tworzymy funkcjÄ get_answer, ktÃģra przyjmuje tekst i pytanie, tokenizuje je odpowiednio, a nastÄpnie wykorzystuje wstÄpnie wytrenowany model BERT do wyciÄ gniÄcia odpowiedzi z tekstu. Demonstruje praktyczne zastosowanie biblioteki transformatorÃģw Hugging Face do budowy prostego, ale potÄÅžnego systemu odpowiedzi na pytania. Aby dobrze zrozumieÄ te pojÄcia, zalecane jest przeprowadzenie rÄcznych eksperymentÃģw przy uÅžyciu notesu Google Colab.
Podsumowanie
Poprzez swoje szerokie otwarte narzÄdzia, wstÄpnie wytrenowane modele i przyjazne potoki, Hugging Face umoÅžliwia zarÃģwno doÅwiadczonym profesjonalistom, jak i nowicjuszom wkraczanie w ogromny Åwiat AI z poczuciem ÅatwoÅci i zrozumienia. Co wiÄcej, inicjatywa integracji Rust, ze wzglÄdu na jego szybkoÅÄ i cechy bezpieczeÅstwa, podkreÅla zaangaÅžowanie Hugging Face w promowanie innowacji, jednoczeÅnie zapewniajÄ c wydajnoÅÄ i bezpieczeÅstwo w aplikacjach AI. PrzeÅomowa praca Hugging Face nie tylko demokratyzuje dostÄp do wysokozaawansowanych narzÄdzi AI, ale takÅže pielÄgnuje wspÃģÅpracujÄ ce Årodowisko dla uczenia siÄ i rozwoju w przestrzeni AI, uÅatwiajÄ c przyszÅoÅÄ, w ktÃģrej AI jest dostÄpna dla wszystkich.

















