Nástroje AI 101
Úplný začátečníkův průvodce nástroji Hugging Face LLM

Hugging Face je laboratoř pro výzkum umělé inteligence a centrum, které vytvořilo komunitu učenců, výzkumníků a nadšenců. Za krátkou dobu získala Hugging Face významnou pozici v oblasti umělé inteligence. Technologické giganty jako Google (GOOGL ), Amazon (AMZN ) a Nvidia (NVDA ) investovaly do startupu Hugging Face významné částky, což zvýšilo jeho hodnotu na 4,5 miliardy dolarů.
V tomto průvodci vám představíme transformery, LLM a jak knihovna Hugging Face hraje důležitou roli při vytváření otevřené komunity umělé inteligence. Provedeme vás také základní funkcemi Hugging Face, včetně pipeline, datasetů, modelů a dalšími, s praktickými příklady v Pythonu.
Transformery v NLP
V roce 2017 vydala Cornell University vlivný článek, který představil transformery. Jedná se o hluboké učící modely používané v NLP. Tento objev podpořil vývoj velkých jazykových modelů, jako je ChatGPT.
Velké jazykové modely nebo LLM jsou systémy umělé inteligence, které používají transformery k porozumění a vytváření textů podobných lidem. Nicméně, vytváření těchto modelů je nákladné, často vyžadující miliony dolarů, což omezuje jejich dostupnost velkým společnostem.
Hugging Face, založená v roce 2016, má za cíl učinit modely NLP dostupnými pro každého. Přestože je to komerční společnost, nabízí řadu otevřených zdrojů, které pomáhají lidem a organizacím stavět a používat modely transformátorů cenově efektivně. Učení strojů spočívá v učení počítačů vykonávat úkoly rozpoznáváním vzorců, zatímco hluboké učení, podmnožina učení strojů, vytváří síť, která se učí nezávisle. Transformery jsou typ architektury hlubokého učení, která efektivně a flexibilně využívá vstupní data, což z nich činí populární volbu pro stavbu velkých jazykových modelů díky nižším požadavkům na tréninkový čas.
Jak Hugging usnadňuje projekty NLP a LLM
Hugging Face usnadnila práci s LLM tím, že nabízí:
- Širokou škálu předtrénovaných modelů, z nichž lze vybrat.
- Nástroje a příklady pro jemné úpravy těchto modelů podle vašich specifických potřeb.
- Snadné možnosti nasazení pro různé prostředí.
Velkým zdrojem, který nabízí Hugging Face, je Open LLM Leaderboard. Funkční jako komplexní platforma, systematicky monitoruje, řadí a hodnotí efektivitu spektra velkých jazykových modelů (LLM) a chatbotů, poskytující diskriminační analýzu pokroků v otevřeném zdrojovém doméně
LLM Benchmarks měří modely pomocí čtyř metrik:
- AI2 Reasoning Challenge (25-shot) — série otázek kolem elementárního vědeckého učiva.
- HellaSwag (10-shot) — test inference zdravého rozumu, který je jednoduchý pro lidi, ale významná výzva pro pokročilé modely.
- MMLU (5-shot) — multifaceted hodnocení, které se dotýká profesionality textu modelu v 57 různých doménách, zahrnující základní matematiku, právo a počítačové vědy, mezi jinými.
- TruthfulQA (0-shot) — nástroj pro určení tendence modelu k ozvěně často se vyskytujících online dezinformací.
Benchmarks, které jsou popsány pomocí termínů jako “25-shot”, “10-shot”, “5-shot” a “0-shot”, označují počet příkladů, které je modelu dán během hodnocení, aby se zhodnotila jeho výkonnost a rozumnost v různých doménách. V “few-shot” paradigmatech jsou modely vybaveny malým počtem příkladů, aby jim pomohly s jejich odpověďmi, zatímco v “0-shot” nastavení modely neobdrží žádné příklady a musí se spoléhat pouze na svou předchozí znalost, aby odpověděly vhodně.
Komponenty Hugging
Pipeline
‘Pipeline’ jsou součástí knihovny transformátorů Hugging Face – funkce, která usnadňuje využití předtrénovaných modelů dostupných v repozitáři Hugging Face. Poskytuje intuitivní API pro řadu úkolů, včetně sentimentální analýzy, otázek a odpovědí, maskovaného jazykového modelování, rozpoznávání jmenovaných entit a sumarizace.
Pipeline integrují tři centrální komponenty Hugging Face:
- Tokenizer: Připraví váš text pro model, konvertuje jej do formátu, který model může pochopit.
- Model: Toto je srdce pipeline, kde se provádějí skutečné předpovědi na základě předzpracovaného vstupu.
- Post-processor: Transformuje surové předpovědi modelu do lidsky čitelné formy.
Tyto pipeline nejen snižují rozsáhlé kódování, ale také nabízejí uživatelsky přívětivý interface pro realizaci různých úkolů NLP.
Aplikace transformátorů pomocí knihovny Hugging
Jedním z hlavních bodů knihovny Hugging Face je knihovna Transformátorů, která zjednodušuje úkoly NLP spojením modelu s nezbytnými předzpracovacími a pooperačními fázemi, což usnadňuje analytický proces. Pro instalaci a import knihovny použijte následující příkazy:
pip install -q transformers from transformers import pipeline
Poté můžete spustit úkoly NLP, počínaje sentimentální analýzou, která kategorizuje text do pozitivních nebo negativních sentimentů. Silná funkce pipeline() knihovny slouží jako centrální bod, který zahrnuje další pipeline a usnadňuje úkolově specifické aplikace v audio, vizi a multimodálních doménách.
Praktické aplikace
Klasifikace textu
Klasifikace textu se stává jednoduchou pomocí funkce pipeline() Hugging Face. Zde je, jak můžete inicializovat pipeline pro klasifikaci textu:
classifier = pipeline("text-classification")
Pro praktickou zkušenost můžete krmit řetězec nebo seznam řetězců do vaší pipeline, abyste získali předpovědi, které lze hezky vizualizovat pomocí knihovny Pandas v Pythonu. Zde je ukázka Pythonu, která demonstruje toto:
sentences = ["Jsem nadšený, že vám představím úžasný svět AI.",
"Hodně doufám, že vás nezklame."]
# Získejte výsledky klasifikace pro každý řetězec v seznamu
results = classifier(sentences)
# Projděte každý výsledek a vytiskněte štítek a skóre
for i, result in enumerate(results):
print(f"Výsledek {i + 1}:")
print(f"Štítek: {result['label']}")
print(f"Skóre: {round(result['score'], 3)}\n")
Výstup
Výsledek 1: Štítek: POSITIVE Skóre: 1.0 Výsledek 2: Štítek: POSITIVE Skóre: 0.996
Rozpoznávání jmenovaných entit (NER)
NER je zásadní pro extrahování reálných objektů zvaných “jmenované entity” z textu. Použijte pipeline NER, abyste tyto entity efektivně identifikovali:
ner_tagger = pipeline("ner", aggregation_strategy="simple")
text = "Elon Musk je CEO SpaceX."
outputs = ner_tagger(text)
print(outputs)
Výstup
Elon Musk: PER, SpaceX: ORG
Otázky a odpovědi
Otázky a odpovědi zahrnují extrahování přesných odpovědí na konkrétní otázky z daného kontextu. Inicializujte pipeline otázek a odpovědí a vložte svou otázku a kontext, abyste získali požadovanou odpověď:
reader = pipeline("question-answering")
text = "Hugging Face je společnost, která vytváří nástroje pro NLP. Její sídlo je v New Yorku a byla založena v roce 2016."
question = "Kde má Hugging Face sídlo?"
outputs = reader(question=question, context=text)
print(outputs)
Výstup
{ 'score': 0.998, 'start': 51, 'end': 60, 'answer': 'New York' } Knihovna Hugging Face nabízí řadu předpřipravených pipeline pro různé úkoly, kromě klasifikace textu, NER a otázek a odpovědí. Zde jsou podrobnosti o podmnožině dostupných úkolů:
Tabulka: Úkoly pipeline Hugging Face
| Úkol | Popis | Identifikátor pipeline |
| Generování textu | Generuje text na základě zadaného promptu | pipeline(task=”text-generation”) |
| Sumarizace | Sumarizuje dlouhý text nebo dokument | pipeline(task=”summarization”) |
| Klasifikace obrázků | Označuje vstupní obrázek | pipeline(task=”image-classification”) |
| Klasifikace audia | Kategorizuje audio data | pipeline(task=”audio-classification”) |
| Vizuální otázky a odpovědi | Odpovídá na otázku pomocí obrázku a otázky | pipeline(task=”vqa”) |
Pro podrobné popisy a další úkoly se podívejte na dokumentaci pipeline na webu Hugging Face.
Proč Hugging přechází na Rust
Ekosystém Hugging Face (HF) začal využívat Rust ve svých knihovnách, jako jsou safesensors a tokenizéry.
Hugging Face nedávno vydala také novou framework pro strojové učení nazvanou Candle. Na rozdíl od tradičních frameworků, které používají Python, je Candle postavený na Rustu. Cílem používání Rustu je zlepšit výkon a zjednodušit uživatelský zážitek, zatímco podporuje operace GPU.
Hlavním cílem Candle je umožnit serverless inference, což umožňuje nasazení lehkých binárních souborů a odstranění Pythonu z produkčních pracovních postupů, které mohou někdy zpomalit procesy kvůli jeho režii. Tento framework přichází jako řešení problémů, které vznikají s plnými frameworky pro strojové učení, jako je PyTorch, které jsou velké a pomalé při vytváření instancí na clusteru.
Pochopte, proč se Rust stává stále oblíbenějším než Python.
- Rychlost a výkon – Rust je známý svou fantastickou rychlostí, překonávající Python, který se tradičně používá ve frameworkách pro strojové učení. Výkon Pythonu může být někdy zpomalen kvůli jeho Global Interpreter Lock (GIL), ale Rust tento problém neřeší, slibuje rychlejší provádění úkolů a tím lepší výkon v projektech, kde je implementován.
- Bezpečnost – Rust poskytuje záruky bezpečnosti paměti bez sběrače odpadků, což je aspekt, který je zásadní pro zajištění bezpečnosti současných systémů. To hraje klíčovou roli v oblastech, jako jsou safetensors, kde je bezpečnost při manipulaci s datovými strukturami prioritou.
Safetensors
Safetensors profitují z rychlosti a bezpečnostních funkcí Rustu. Safetensors zahrnují manipulaci s tenzory, složitou matematickou entitou, a Rust zajišťuje, že operace jsou nejen rychlé, ale také bezpečné, vyhýbající se běžným chybám a bezpečnostním problémům, které by mohly vzniknout z nesprávné manipulace s pamětí.
Tokenizer
Tokenizéry zpracovávají rozdělení vět nebo frází na menší jednotky, jako jsou slova nebo termíny. Rust urychluje tuto operaci, zajišťuje, že tokenizace není pouze přesná, ale také rychlá, což zvyšuje efektivitu úkolů NLP.
Ve středu tokenizéru Hugging Face je koncept subword tokenizace, který nachází jemnou rovnováhu mezi word-level a character-level tokenizací, aby optimalizoval uchování informací a velikost slovníku. To funguje prostřednictvím vytváření subtokenů, jako jsou “##ing” a “##ed”, zachovávajících sémantickou bohatost, zatímco se vyhýbá nadměrnému slovníku.
Subword tokenizace zahrnuje tréninkovou fázi pro identifikaci nejúčinnější rovnováhy mezi character-level a word-level tokenizací. To jde nad rámec pouhých prefixů a suffixů, vyžadujících komplexní analýzu jazykových vzorců v rozsáhlých textových korporacích, aby navrhl efektivní subword tokenizér. Vygenerovaný tokenizér je schopen zvládnout nová slova, rozdělí je na známé subwords, zatímco udržuje vysokou úroveň sémantického porozumění.
Komponenty tokenizace
Knihovna tokenizérů Hugging Face rozděluje proces tokenizace do několika kroků, každý z nich se zabývá odlišným aspektem tokenizace. Pojďme se podívat na tyto komponenty:
- Normalizátor: Provádí počáteční transformace na vstupní řetězec, aplikuje nezbytné úpravy, jako je konverze na malá písmena, normalizace Unicode a odstranění.
- Pre-tokenizér: Zodpovědný za rozdělení vstupního řetězce na pre-segmenty, určující rozdělení na základě předdefinovaných pravidel, jako jsou mezery.
- Model: Dozoruje objev a tvorbu subtokenů, přizpůsobuje se specifikům vašeho vstupního data a nabízí tréninkové schopnosti.
- Post-procesor: Vylepšuje konstrukční funkce pro kompatibilitu s mnoha transformátorovými modely, jako je BERT, přidáváním tokenů, jako [CLS] a [SEP].
Chcete-li začít s tokenizéry Hugging Face, nainstalujte knihovnu pomocí příkazu pip install tokenizers a importujte ji do svého Pythonového prostředí. Knihovna může tokenizovat velké množství textu za velmi krátkou dobu, šetříc tak cenné výpočetní zdroje pro náročnější úkoly, jako je trénování modelů.
Knihovna tokenizérů využívá Rust, který dědí syntaktickou podobnost s C++ a zavádí nové koncepty do návrhu programovacích jazyků. Spolu s vazbami na Python zajišťuje, že můžete využít výkon nižšího jazyka, zatímco pracujete v prostředí Pythonu.
Dataset
Dataset jsou základem projektů AI. Hugging Face nabízí širokou škálu datasetů, vhodné pro řadu úkolů NLP a dalších. Abychom je využili efektivně, je důležité pochopit proces jejich načítání a analýzy. Zde je dobře okomentovaný Python skript, který demonstruje, jak prozkoumat dataset dostupné na Hugging Face:
from datasets import load_dataset
# Načtěte dataset
dataset = load_dataset('squad')
# Zobrazte první položku
print(dataset[0])
Tento skript používá funkci load_dataset pro načtení datasetu SQuAD, který je populární volbou pro úkoly otázek a odpovědí.
Využití předtrénovaných modelů a spojení všeho
Předtrénované modely tvoří základ mnoha projektů hlubokého učení, umožňují výzkumníkům a vývojářům zahájit své iniciativy bez nutnosti začínat od začátku. Hugging Face usnadňuje prozkoumání široké škály předtrénovaných modelů, jak je ukázáno v následujícím kódu:
from transformers import AutoModelForQuestionAnswering, AutoTokenizer
# Načtěte předtrénovaný model a tokenizér
model = AutoModelForQuestionAnswering.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
tokenizer = AutoTokenizer.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
# Zobrazte architekturu modelu
print(model)
S načtením modelu a tokenizéru můžete nyní vytvořit funkci, která vezme text a otázku jako vstupy a vrátí odpověď extrahovanou z textu. Použijeme tokenizér k zpracování vstupního textu a otázky do formátu, který je kompatibilní s modelem, a poté budeme tento zpracovaný vstup krmit do modelu, abychom získali odpověď:
def get_answer(text, question): # Tokenizujte vstupní text a otázku inputs = tokenizer(question, text, return_tensors='pt', max_length=512, truncation=True) outputs = model(**inputs) # Získejte skóre začátku a konce odpovědi 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
V tomto ukázkovém kódu importujeme nezbytné moduly z balíčku transformers, poté načteme předtrénovaný model a jeho odpovídající tokenizér pomocí metody from_pretrained. Vybereme model BERT, který byl fine-tuned na datasetu SQuAD.
Pojďme se podívat na ukázku použití této funkce, kde máme odstavec textu a chceme extrahovat konkrétní odpověď na otázku z něj:
text = """
Eiffelova věž, umístěná v Paříži, Francii, je jedním z nejikoničtějších památek na světě. Byla navržena Gustavem Eiffelem a dokončena v roce 1889. Věž měří 324 metrů a byla nejvyšší stavbou na světě v době svého dokončení.
"""
question = "Kdo navrhl Eiffelovu věž?"
# Získejte odpověď na otázku
answer = get_answer(text, question)
print(f"Odpověď na otázku je: {answer}")
# Výstup: Odpověď na otázku je: Gustave Eiffel
V tomto skriptu vytváříme funkci get_answer, která bere text a otázku, tokenizuje je vhodně, a poté využívá předtrénovaný model BERT k extrahování odpovědi z textu. Demonструje praktické použití knihovny transformátorů Hugging Face pro stavbu jednoduchého, ale silného systému otázek a odpovědí. Pro lepší pochopení konceptů se doporučuje experimentovat s Google Colab Notebookem.
Závěr
Prostřednictvím své široké škály otevřených nástrojů, předtrénovaných modelů a uživatelsky přívětivých pipeline umožňuje Hugging Face jak zkušené profesionály, tak začínajícím, aby se ponořili do rozsáhlého světa umělé inteligence s lehkostí a porozuměním. Kromě toho iniciativa integrovat Rust, díky jeho rychlosti a bezpečnostním funkcím, zdůrazňuje závazek Hugging Face k podpoře inovací, zatímco zajišťuje efektivitu a bezpečnost v aplikacích umělé inteligence. Převratná práce Hugging Face ne pouze demokratizuje přístup k vysokoučinným nástrojům umělé inteligence, ale také podporuje spolupráci a učení v prostoru umělé inteligence, usnadňující budoucnost, kde je umělá inteligence dostupná každému.

















