csonk Teljes útmutató kezdőknek a Hugging Face LLM eszközökhöz – Unite.AI
Kapcsolatba velünk

AI-eszközök 101

Teljes útmutató kezdőknek a Hugging Face LLM eszközökhöz

mm
korszerűsített on
ÖLELŐ ARC – TELJES ÚTMUTATÓ

A Hugging Face egy mesterséges intelligencia kutatólaboratórium és központ, amely tudósokból, kutatókból és rajongókból álló közösséget épített fel. A Hugging Face rövid idő alatt jelentős jelenlétre tett szert az AI-térben. Technikai óriások köztük a Google, az Amazon és az Nvidia jelentős befektetésekkel erősítette meg a Hugging Face-t, az AI startupot, így értékelve 4.5 milliárd $.

Ebben az útmutatóban bemutatjuk a transzformátorokat, az LLM-eket és azt, hogy a Hugging Face könyvtár hogyan játszik fontos szerepet a nyílt forráskódú AI közösség előmozdításában. Gyakorlati Python-példákkal bemutatjuk a Hugging Face alapvető funkcióit is, beleértve a folyamatokat, adatkészleteket, modelleket és még sok mást.

Transzformátorok az NLP-ben

2017-ben a Cornell Egyetem befolyásos tanulmányt adott ki, amely bemutatta transzformerek. Ezek az NLP-ben használt mély tanulási modellek. Ez a felfedezés olyan nagy nyelvi modellek kifejlesztését ösztönözte, mint pl ChatGPT.

A nagy nyelvi modellek vagy LLM-ek olyan mesterséges intelligencia rendszerek, amelyek transzformátorokat használnak az emberhez hasonló szöveg megértéséhez és létrehozásához. Ezeknek a modelleknek a létrehozása azonban drága, gyakran több millió dollárt igényel, ami korlátozza a nagyvállalatok számára való hozzáférhetőséget.

Átölelő arc2016-ban indult, célja, hogy az NLP-modelleket mindenki számára elérhetővé tegye. Annak ellenére, hogy kereskedelmi vállalat, számos nyílt forráskódú erőforrást kínál, amelyek segítenek az embereknek és szervezeteknek megfizethető transzformátormodellek megépítésében és használatában. A gépi tanulás arról szól, hogy a számítógépeket a minták felismerésével tanítja meg feladatok végrehajtására, míg a mélytanulás, a gépi tanulás egy részhalmaza, olyan hálózatot hoz létre, amely önállóan tanul. A transzformátorok a mély tanulási architektúra egy olyan típusa, amely hatékonyan és rugalmasan használja fel a bemeneti adatokat, így népszerű választás nagy nyelvi modellek készítéséhez a rövidebb képzési időigény miatt.

Hogyan könnyíti meg az ölelés az NLP és az LLM projekteket

Ölelő arc ökoszisztéma – Modellek, adatkészlet, mérőszámok, transzformátorok, gyorsító, tokenizátorok

A Hugging Face egyszerűbbé tette az LLM-ekkel való munkát azáltal, hogy a következőket kínálja:

  1. Előképzett modellek széles választéka közül választhat.
  2. Eszközök és példák ezeknek a modelleknek az egyedi igényeinek megfelelő finomhangolásához.
  3. Könnyű telepítési lehetőségek különféle környezetekhez.

A Hugging Face révén elérhető nagyszerű forrás a Nyissa meg az LLM ranglistát. Átfogó platformként funkcionál, szisztematikusan figyeli, rangsorolja és felméri a Large Language Models (LLM) és chatbotok spektrumának hatékonyságát, és igényes elemzést nyújt a nyílt forráskódú tartomány fejlődéséről.

Az LLM Benchmarks a modelleket négy mérőszámon keresztül méri:

  • AI2 Reasoning Challenge (25 lövés) – kérdések sorozata az elemi természettudományok tananyaga körül.
  • HellaSwag (10-lövés) – egy józan ész következtetési tesztje, amely bár egyszerű az emberek számára, ez a mérőszám jelentős kihívást jelent az élvonalbeli modellek számára.
  • MMLU (5-shot) – egy sokrétű értékelés, amely egy szövegmodell jártasságát érinti 57 különböző területen, beleértve többek között az alapvető matematikát, jogot és számítástechnikát.
  • IgazságosQA (0-shot) – egy eszköz annak megállapítására, hogy a modell hajlamos-e a gyakran előforduló online téves információk visszhangjára.

A benchmarkok, amelyeket olyan kifejezésekkel írnak le, mint a „25-lövés”, „10-lövés”, „5-lövés” és „0-lövés”, jelzik, hogy az értékelési folyamat során hány azonnali példát adnak a modellnek. teljesítményének és érvelési képességeinek mérésére különböző területeken. A „néhány lövés” paradigmákban a modellek néhány példát tartalmaznak, hogy segítsék válaszaikat, míg a „0-shot” beállításban a modellek nem kapnak példákat, és kizárólag a már meglévő tudásukra kell hagyatkozniuk a megfelelő válaszadáshoz. .

Az átölelő arc összetevői

Csővezetékek

'csővezetékekA Hugging Face transzformátorkönyvtárának részét képezik, amely funkció segíti a Hugging Face adattárában elérhető előre betanított modellek egyszerű használatát. Intuitív API-t biztosít számos feladathoz, beleértve a hangulatelemzést, a kérdések megválaszolását, a maszkolt nyelvi modellezést, az elnevezett entitás felismerést és az összegzést.

A csővezetékek három központi Hugging Face komponenst integrálnak:

  1. Tokenizátor: Előkészíti a szöveget a modellhez úgy, hogy a modell számára érthető formátumba konvertálja.
  2. Modell: Ez a folyamat szíve, ahol a tényleges előrejelzések készülnek az előre feldolgozott bemenet alapján.
  3. Utófeldolgozó: A modell nyers előrejelzéseit ember által olvasható formává alakítja.

Ezek a folyamatok nemcsak csökkentik a kiterjedt kódolást, hanem felhasználóbarát felületet is kínálnak a különféle NLP-feladatok végrehajtásához.

Transformer alkalmazások a Hugging Face könyvtár használatával

Az Hugging Face könyvtár kiemelkedő eleme a Transformers könyvtár, amely leegyszerűsíti az NLP-feladatokat azáltal, hogy összekapcsolja a modellt a szükséges elő- és utófeldolgozási szakaszokkal, és egyszerűsíti az elemzési folyamatot. A könyvtár telepítéséhez és importálásához használja a következő parancsokat:

pip install -q transformers
from transformers import pipeline

Ezt követően végrehajthatja az NLP-feladatokat, kezdve a hangulatelemzéssel, amely a szöveget pozitív vagy negatív érzelmekre kategorizálja. A könyvtár nagy teljesítményű pipeline() funkciója más csővezetékeket is magába foglaló központként szolgál, és megkönnyíti a feladat-specifikus alkalmazásokat hang-, látás- és multimodális tartományokban.

Gyakorlati alkalmazások

Szöveg osztályozása

A szövegbesorolás gyerekjáték lesz a Hugging Face pipeline() függvényével. A következőképpen kezdeményezhet szövegosztályozási folyamatot:

classifier = pipeline("text-classification")

Gyakorlati élményhez adjon be egy karakterláncot vagy karakterláncok listáját a folyamatba, hogy előrejelzéseket kapjon, amelyeket a Python Pandas könyvtárával szépen megjeleníthet. Az alábbiakban látható egy Python-részlet, amely ezt demonstrálja:

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

teljesítmény

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

Elnevezett entitás-felismerés (NER)

A NER kulcsfontosságú abban, hogy a szövegből kivonja a valós világban található objektumokat, amelyeket „elnevezett entitásoknak” neveznek. Használja a NER-folyamatot ezen entitások hatékony azonosítására:

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

teljesítmény

 Elon Musk: PER, SpaceX: ORG 

Kérdés megválaszolása

A kérdések megválaszolása azt jelenti, hogy egy adott kontextusból konkrét kérdésekre precíz válaszokat kapunk. Inicializáljon egy kérdés-megválaszoló folyamatot, és adja meg kérdését és kontextusát, hogy megkapja a kívánt választ:

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)

teljesítmény

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

A Hugging Face csővezeték funkciója a szövegbesoroláson, a NER-en és a kérdések megválaszolásán kívül egy sor előre elkészített folyamatot kínál különböző feladatokhoz. Az alábbiakban a rendelkezésre álló feladatok egy részhalmazáról olvashat részletesen:

Táblázat: Ölelési arc csővezetékes feladatok

FeladatLeírásPipeline Identifier
SzöveggenerálásSzöveg generálása egy adott prompt alapjánpipeline(feladat=”szöveggenerálás”)
összefoglalásFoglaljon össze egy hosszú szöveget vagy dokumentumotpipeline(feladat=”összefoglalás”)
KéposztályozásCímkézz be egy bemeneti képetpipeline(feladat=”képosztályozás”)
Audio osztályozásHangadatok kategorizálásapipeline(feladat=”audio-osztályozás”)
Vizuális kérdésválaszVálaszoljon egy lekérdezésre kép és kérdés használatávalpipeline(task=”vqa”)

 

Részletes leírásokért és további feladatokért lásd a pipeline dokumentáció Hugging Face honlapján.

Miért helyezi át a Hugging Face a hangsúlyt a Rustra?

Átölelő arc Biztosítók és tokenizátor Rozsda

Átölelő arc Biztosítók és tokenizátor GitHub oldal

A Hugging Face (HF) ökoszisztéma elkezdte használni a Rust-ot könyvtáraiban, például széfekben és tokenizátorokban.

A Hugging Face a közelmúltban egy új gépi tanulási keretrendszert is kiadott Gyertya. A Python-t használó hagyományos keretrendszerekkel ellentétben a Candle Rust segítségével épül fel. A Rust használatának célja a teljesítmény növelése és a felhasználói élmény egyszerűsítése a GPU-műveletek támogatása mellett.

A Candle fő célja, hogy megkönnyítse a kiszolgáló nélküli következtetéseket, lehetővé téve a könnyű binárisok telepítését, és eltávolítsa a Pythont az éles munkaterhelésből, amely néha lelassíthatja a folyamatokat a többletköltségei miatt. Ez a keretrendszer megoldást jelent a teljes gépi tanulási keretrendszerekkel, például a PyTorch-val kapcsolatos problémák leküzdésére, amelyek nagyok és lassúak, amikor példányokat hoznak létre egy fürtön.

Vizsgáljuk meg, miért válik a Rust sokkal inkább kedvelt választássá, mint a Python.

  1. Sebesség és teljesítmény – A Rust hihetetlen sebességéről ismert, felülmúlja a gépi tanulási keretrendszerekben hagyományosan használt Pythont. A Python teljesítménye néha lelassulhat a Global Interpreter Lock (GIL) miatt, de a Rust nem szembesül ezzel a problémával, ami gyorsabb feladatok végrehajtását, és ennek következtében jobb teljesítményt ígér azokban a projektekben, ahol ezt megvalósítják.
  2. Biztonság – A Rust memóriabiztonsági garanciákat nyújt szemétgyűjtő nélkül, ami elengedhetetlen a párhuzamos rendszerek biztonságának biztosításában. Ez kulcsfontosságú szerepet játszik az olyan területeken, mint például a biztonsági berendezések, ahol az adatstruktúrák kezelésének biztonsága prioritást élvez.

Biztosítók

Biztosítók élvezze a Rust gyorsasági és biztonsági funkcióit. A Safetensors a tenzorok, egy összetett matematikai entitás manipulációját foglalja magában, és a Rust biztosítja, hogy a műveletek ne csak gyorsak, hanem biztonságosak is, elkerülve a gyakori hibákat és biztonsági problémákat, amelyek a memória helytelen kezeléséből adódhatnak.

Tokenizátor

Tokenizátorok kezelni a mondatok vagy kifejezések kisebb egységekre, például szavakra vagy kifejezésekre való bontását. A rozsda elősegíti ezt a folyamatot azáltal, hogy felgyorsítja a végrehajtási időt, biztosítva, hogy a tokenizálási folyamat ne csak pontos legyen, hanem gyors is, növelve a természetes nyelvi feldolgozási feladatok hatékonyságát.

A Hugging Face tokenizátorának lényege az alszavak tokenizálásának koncepciója, amely finom egyensúlyt teremt a szó- és karakterszintű tokenizálás között az információmegőrzés és a szókincs méretének optimalizálása érdekében. Altokenek, például „##ing” és „##ed” létrehozásán keresztül működik, megőrizve a szemantikai gazdagságot, miközben elkerüli a felduzzadt szókincset.

Az alszavak tokenizálása egy betanítási fázist foglal magában, hogy megtalálják a leghatékonyabb egyensúlyt a karakter és a szószintű tokenizálás között. Ez túlmutat a puszta előtag- és utótag-szabályokon, és a nyelvi minták átfogó elemzését igényli kiterjedt szövegkorpusokban egy hatékony részszó-jelzők kialakításához. A generált tokenizer ügyesen kezeli az új szavakat azáltal, hogy ismert részszavakra bontja őket, fenntartva a szemantikai megértés magas szintjét.

Tokenizációs komponensek

A tokenizátorok könyvtára a tokenizálási folyamatot több lépésre osztja, amelyek mindegyike a tokenizálás egy-egy aspektusával foglalkozik. Nézzük meg ezeket az összetevőket:

  • Normalizáló: Elvégzi a kezdeti átalakításokat a bemeneti karakterláncon, és végrehajtja a szükséges módosításokat, például a kisbetűs konverziót, az Unicode normalizálást és a kivonást.
  • PreTokenizátor: Felelős a bemeneti karakterlánc előszegmensekre történő feldarabolásáért, a felosztások meghatározásáért előre meghatározott szabályok, például térelhatárolások alapján.
  • Modell: Felügyeli a résztokenek felfedezését és létrehozását, alkalmazkodik a bemeneti adatok sajátosságaihoz, és képzési lehetőségeket kínál.
  • Utófeldolgozó: Javítja az építési jellemzőket, hogy megkönnyítse a kompatibilitást számos transzformátor alapú modellel, például a BERT-tel, olyan tokenek hozzáadásával, mint a [CLS] és a [SEP].

A Hugging Face tokenizers használatának megkezdéséhez telepítse a könyvtárat a paranccsal pip install tokenizers és importálja a Python környezetébe. A könyvtár nagy mennyiségű szöveget képes tokenizálni nagyon rövid idő alatt, ezáltal értékes számítási erőforrásokat takaríthat meg az intenzívebb feladatokhoz, például a modellképzéshez.

A tokenizers könyvtár használja Rozsda amely a C++ szintaktikai hasonlóságát örökli, miközben új koncepciókat vezet be a programozási nyelv tervezésébe. Python-kötésekkel párosítva biztosítja, hogy élvezze az alacsonyabb szintű nyelvek teljesítményét, miközben Python környezetben dolgozik.

Datasets

Az adatkészletek képezik az AI-projektek alapját. A Hugging Face adatkészletek széles választékát kínálja, amelyek számos NLP-feladathoz és sok máshoz alkalmasak. Hatékony felhasználásukhoz elengedhetetlen a betöltési folyamat megértése és elemzése. Az alábbiakban egy jól kommentált Python-szkript, amely bemutatja, hogyan lehet felfedezni a Hugging Face-en elérhető adatkészleteket:

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

Ez a szkript a load_dataset függvényt használja az SQuAD adatkészlet betöltésére, amely népszerű választás a kérdésmegválaszolási feladatokhoz.

Az előre kiképzett modellek kihasználása és az egész egyesítése

Az előre betanított modellek számos mély tanulási projekt gerincét képezik, lehetővé téve a kutatók és fejlesztők számára, hogy a nulláról kezdjék el kezdeményezéseiket. A Hugging Face megkönnyíti az előre betanított modellek széles skálájának felfedezését, amint azt az alábbi kód mutatja:

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)

A modell és a tokenizátor betöltése után most létrehozhatunk egy függvényt, amely egy szövegrészt és egy kérdést vesz be bemenetként, és visszaadja a szövegből kivont választ. A tokenizátor segítségével a bemeneti szöveget és kérdést a modellel kompatibilis formátumba dolgozzuk fel, majd ezt a feldolgozott inputot betápláljuk a modellbe, hogy megkapjuk a választ:

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

A kódrészletben a szükséges modulokat importáljuk a transzformátorcsomagból, majd a from_pretrained metódussal betöltjük az előre betanított modellt és a hozzá tartozó tokenizátort. A SQuAD adatkészleten finomhangolt BERT modellt választunk.

Lássunk egy példát ennek a függvénynek a használati esetére, ahol van egy szöveg bekezdésünk, és egy kérdésre szeretnénk konkrét választ kinyerni belőle:

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

Ebben a szkriptben felállítunk egy get_answer függvényt, amely szöveget és kérdést vesz fel, megfelelően tokenizálja őket, és az előre betanított BERT-modellt felhasználva kinyeri a választ a szövegből. Bemutatja a Hugging Face transzformátorkönyvtárának gyakorlati alkalmazását egy egyszerű, de hatékony kérdés-megválaszoló rendszer felépítésére. A fogalmak jó megértéséhez ajánlott egy gyakorlati kísérletezés a Google Colab Jegyzetfüzet.

Következtetés

A nyílt forráskódú eszközök széles választéka, az előre betanított modellek és a felhasználóbarát folyamatok révén lehetővé teszi a tapasztalt szakemberek és az újoncok számára, hogy könnyedén és érthetően elmélyüljenek a mesterséges intelligencia kiterjedt világában. Ezen túlmenően, a Rust integrálására irányuló kezdeményezés sebességének és biztonsági funkcióinak köszönhetően aláhúzza a Hugging Face elkötelezettségét az innováció előmozdítása mellett, miközben biztosítja az AI-alkalmazások hatékonyságát és biztonságát. A Hugging Face átalakító munkája nemcsak demokratizálja a magas szintű mesterséges intelligencia-eszközökhöz való hozzáférést, hanem együttműködési környezetet is ápol a tanuláshoz és a fejlődéshez az AI-térben, elősegítve a jövőt, ahol a mesterséges intelligencia elérhető

Az elmúlt öt évet azzal töltöttem, hogy elmerüljek a gépi tanulás és a mélytanulás lenyűgöző világában. Szenvedélyem és szakértelmem késztetett arra, hogy több mint 50 különféle szoftverfejlesztési projektben működjek közre, különös tekintettel az AI/ML-re. Folyamatos kíváncsiságom a természetes nyelvi feldolgozás felé is vonzott, amely terület, amelyet szívesen fedezek fel.