בדל מדריך מלא למתחילים ל-Huging Face LLM Tools - Unite.AI
צור קשר

AI Tools 101

מדריך מלא למתחילים לכלי חיבוק פנים LLM

mm
מְעוּדכָּן on
פנים מחבקות - מדריך שלם

Hugging Face היא מעבדת מחקר ומרכז בינה מלאכותית שבנתה קהילה של חוקרים, חוקרים וחובבים. תוך פרק זמן קצר, Hugging Face צבר נוכחות משמעותית בחלל הבינה המלאכותית. ענקיות טק כולל גוגל, אמזון ו-Nvidia חיזקו את הסטארט-אפ בינה מלאכותית Hugging Face בהשקעות משמעותיות, מה שגרם להערכת השווי שלו 4.5 $ מיליארד.

במדריך זה, נציג שנאים, LLMs וכיצד ספריית Hugging Face ממלאת תפקיד חשוב בטיפוח קהילת AI בקוד פתוח. אנו גם נעבור על התכונות החיוניות של Hugging Face, כולל צינורות, מערכי נתונים, מודלים ועוד, עם דוגמאות מעשיות של Python.

רובוטריקים ב-NLP

בשנת 2017 פרסמה אוניברסיטת קורנל מאמר רב השפעה שהציג רוֹבּוֹטרִיקִים. אלו הם מודלים של למידה עמוקה המשמשים ב-NLP. תגלית זו הניעה את הפיתוח של מודלים גדולים של שפה כמו ChatGPT.

מודלים של שפה גדולים או LLMs הם מערכות AI המשתמשות בשנאים כדי להבין וליצור טקסט דמוי אדם. עם זאת, יצירת מודלים אלה היא יקרה, ולרוב דורשת מיליוני דולרים, מה שמגביל את הנגישות שלהם לחברות גדולות.

פנים מחבקות, שהחלה ב-2016, שואפת להנגיש את דגמי ה-NLP לכולם. למרות היותה חברה מסחרית, היא מציעה מגוון משאבים בקוד פתוח המסייעים לאנשים וארגונים לבנות ולהשתמש במודלים של שנאים במחירים נוחים. למידת מכונה עוסקת בהוראת מחשבים לבצע משימות על ידי זיהוי דפוסים, בעוד למידה עמוקה, תת-קבוצה של למידת מכונה, יוצרת רשת שלומדת באופן עצמאי. רובוטריקים הם סוג של ארכיטקטורת למידה עמוקה המשתמשת ביעילות ובגמישות בנתוני קלט, מה שהופך אותה לבחירה פופולרית לבניית מודלים של שפות גדולות בגלל דרישות פחות זמן אימון.

כיצד חיבוק פנים מקל על פרויקטי NLP ו-LLM

חיבוק פנים Ecosystem - מודלים, מערך נתונים, מדדים, שנאים, האצה, אסימונים

Hugging Face הפך את העבודה עם LLMs לפשוטה יותר על ידי הצעת:

  1. מגוון דגמים מאומנים מראש לבחירה.
  2. כלים ודוגמאות לכוונון דגמים אלה לצרכים הספציפיים שלך.
  3. אפשרויות פריסה קלות עבור סביבות שונות.

משאב נהדר זמין דרך Hugging Face הוא פתח את ה-LLM Leaderboard. מתפקדת כפלטפורמה מקיפה, היא מנטרת, מדרגת ומודד באופן שיטתי את היעילות של ספקטרום של מודלים גדולים של שפות (LLMs) וצ'טבוטים, ומספקת ניתוח אבחנה של ההתקדמות בתחום הקוד הפתוח

LLM Benchmarks מודדים מודלים באמצעות ארבעה מדדים:

  • אתגר הגיון AI2 (25 יריות) - סדרה של שאלות סביב סילבוס מדעי היסודי.
  • HellaSwag (10 יריות) - מבחן הסקת הסקת הגיון, שלמרות שהוא פשוט עבור בני אדם, המדד הזה הוא אתגר משמעותי עבור מודלים חדשניים.
  • MMLU (5-shot) - הערכה רב-גונית הנוגעת במיומנות של מודל טקסט ב-57 תחומים מגוונים, הכוללת בין היתר מתמטיקה, משפטים ומדעי המחשב בסיסיים.
  • TruthfulQA (0-shot) - כלי לברר את הנטייה של מודל להדהד מידע מוטעה מקוון שנתקל בו לעתים קרובות.

אמות המידה, המתוארות באמצעות מונחים כמו "25 יריות", "10 יריות", "5 יריות" ו-"0-shot", מציינים את מספר הדוגמאות המיידיות שניתן למודל במהלך תהליך ההערכה לאמוד את ביצועיו ויכולות החשיבה שלו בתחומים שונים. בפרדיגמות של "זריקות מועטות", מודלים מסופקים עם מספר קטן של דוגמאות כדי לעזור להנחות את התגובות שלהם, בעוד שבהגדרה "0-shot", המודלים לא מקבלים דוגמאות ועליהם להסתמך רק על הידע הקיים שלהם כדי להגיב כראוי .

מרכיבים של חיבוק פנים

צינורות

'צינורותהם חלק מספריית השנאים של Hugging Face, תכונה המסייעת בשימוש קל של מודלים מאומנים מראש הזמינים במאגר Hugging Face. הוא מספק API אינטואיטיבי עבור מגוון משימות, כולל ניתוח סנטימנטים, מענה לשאלות, מודלים של שפה במסכה, זיהוי ישויות בשם וסיכום.

צינורות משלבים שלושה מרכיבי חיבוק מרכזיים:

  1. טוקניזר: מכין את הטקסט שלך למודל על ידי המרתו לפורמט שהמודל יכול להבין.
  2. מספר סימוכין: זהו לב הצינור שבו מתבצעות התחזיות בפועל על סמך הקלט המעובד מראש.
  3. מעבד לאחר: הופך את התחזיות הגולמיות של המודל לצורה הניתנת לקריאה על ידי אדם.

צינורות אלו לא רק מפחיתים קידוד נרחב אלא גם מציעים ממשק ידידותי למשתמש לביצוע משימות NLP שונות.

יישומי שנאי באמצעות ספריית Hugging Face

גולת הכותרת של ספריית Hugging Face היא ספריית הרובוטריקים, המפשטת את משימות ה-NLP על ידי חיבור מודל עם שלבי קדם ואחרי עיבוד הכרחיים, תוך ייעול תהליך הניתוח. כדי להתקין ולייבא את הספרייה, השתמש בפקודות הבאות:

pip install -q transformers
from transformers import pipeline

לאחר שעשית זאת, אתה יכול לבצע משימות NLP החל מניתוח סנטימנטים, שמסווג טקסט לסנטימנטים חיוביים או שליליים. פונקציית ה-pipeline() העוצמתית של הספרייה משמשת כרכזת המקיפה צינורות אחרים ומקלה על יישומים ספציפיים למשימה בתחומי אודיו, ראייה ורב-מודאליים.

יישומים מעשיים

סיווג טקסט

סיווג טקסט הופך להיות קל עם פונקציית ה-pipeline() של Hugging Face. כך תוכל ליזום צינור סיווג טקסט:

classifier = pipeline("text-classification")

לחוויה מעשית, הזינו מחרוזת או רשימה של מחרוזות לתוך הצינור שלכם כדי לקבל תחזיות, אותן ניתן להמחיש בצורה יפה באמצעות ספריית ה-Pandas של Python. להלן קטע פייתון המדגים זאת:

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

תְפוּקָה

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

זיהוי ישויות בשם (NER)

NER הוא מכריע בחילוץ אובייקטים בעולם האמיתי המכונים 'ישויות בשם' מהטקסט. השתמש בצינור NER כדי לזהות את הישויות הללו ביעילות:

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

תְפוּקָה

 Elon Musk: PER, SpaceX: ORG 

תשובת שאלה

מענה לשאלות כרוך בחילוץ תשובות מדויקות לשאלות ספציפיות מהקשר נתון. אתחול צינור תשובות לשאלות והזן את השאלה וההקשר שלך כדי לקבל את התשובה הרצויה:

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)

תְפוּקָה

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

פונקציית הצינור של Hugging Face מציעה מערך של צינורות שנבנו מראש למשימות שונות, מלבד סיווג טקסט, NER ומענה לשאלות. להלן פרטים על קבוצת משנה של משימות זמינות:

טבלה: משימות צינור חיבוק פנים

המשימותתיאורמזהה צינור
יצירת טקסטצור טקסט על סמך הנחיה נתונהpipeline(task=”טקסט-generation”)
סיכוםסכם טקסט או מסמך ארוךpipeline(task="סיכום")
סיווג תמונותתווית תמונת קלטpipeline(task="image-classification")
אודיו סיווגסיווג נתוני אודיוpipeline(task="audio-classification")
מענה לשאלות חזותיותענה על שאילתה באמצעות תמונה וגם בשאלהpipeline(task="vqa")

 

לתיאורים מפורטים ומשימות נוספות, עיין ב- תיעוד צינור באתר האינטרנט של Hugging Face.

מדוע Hugging Face מעביר את הפוקוס על חלודה

מחבקות פנים מחבקות בטיחות וטוקניזר חלודה

מחבקים פנים מחבקים Safetensors ו-Tokenizer GitHub Page

המערכת האקולוגית של Hugging Face (HF) החלה להשתמש בחלודה בספריות שלה, כגון חיישני בטוחים ואסימונים.

Hugging Face הוציאה ממש לאחרונה גם מסגרת חדשה ללימוד מכונה בשם נר. בניגוד למסגרות מסורתיות המשתמשות ב-Python, Candle בנוי עם Rust. המטרה מאחורי השימוש ב- Rust היא לשפר את הביצועים ולפשט את חווית המשתמש תוך תמיכה בפעולות GPU.

מטרת המפתח של Candle היא להקל על הסקת מסקנות ללא שרת, לאפשר את הפריסה של קבצים בינאריים קלים והסרת Python מעומסי העבודה של הייצור, שלעיתים עשויה להאט תהליכים בשל התקורות שלו. מסגרת זו מגיעה כפתרון להתגבר על הבעיות שנתקל בהן במסגרות למידת מכונה מלאה כמו PyTorch שהן גדולות ואיטיות בעת יצירת מופעים באשכול.

בואו נחקור מדוע Rust הופך לבחירה מועדפת הרבה יותר מ-Python.

  1. מהירות וביצועים - Rust ידועה במהירות המדהימה שלה, בביצועים טובים יותר מ-Python, המשמשת באופן מסורתי במסגרות למידת מכונה. לפעמים ניתן להאט את הביצועים של Python בגלל הגלובלית המתורגמנית (GIL), אך Rust לא מתמודדת עם בעיה זו, ומבטיחה ביצוע מהיר יותר של משימות, ובהמשך, ביצועים משופרים בפרויקטים שבהם היא מיושמת.
  2. בְּטִיחוּת – חלודה מספקת ערובות בטיחות זיכרון ללא אספן אשפה, היבט חיוני בהבטחת בטיחותן של מערכות במקביל. זה ממלא תפקיד מכריע בתחומים כמו מבטחים שבהם הבטיחות בטיפול במבני נתונים היא בראש סדר העדיפויות.

בטיחות

בטיחות ליהנות מתכונות המהירות והבטיחות של Rust. Safetensors כרוך במניפולציה של טנסורים, ישות מתמטית מורכבת, וקיום Rust מבטיח שהפעולות לא רק מהירות, אלא גם מאובטחות, תוך הימנעות מבאגים נפוצים ובעיות אבטחה שעלולות לנבוע מטיפול שגוי בזיכרון.

טוקניזר

אסימונים לטפל בפירוק של משפטים או ביטויים ליחידות קטנות יותר, כגון מילים או מונחים. חלודה מסייעת בתהליך זה על ידי זירוז זמן הביצוע, ומבטיחה שתהליך הטוקניזציה לא רק מדויק אלא גם מהיר, מה שמשפר את היעילות של משימות עיבוד שפה טבעית.

הליבה של הטוקנייזר של Hugging Face הוא הרעיון של טוקניזציה של מילות משנה, תוך איזון עדין בין טוקניזציה של מילים ורמת התווים כדי לייעל את שמירת המידע ואת גודל אוצר המילים. הוא פועל באמצעות יצירת אסימוני משנה, כגון "##ing" ו-"##ed", שומר על עושר סמנטי תוך הימנעות מאוצר מילים מנופח.

אסימון מילות משנה כולל שלב אימון לזיהוי האיזון היעיל ביותר בין אסימון ברמת הדמות. זה חורג מכללי קידומת וסיומת גרידא, הדורש ניתוח מקיף של דפוסי שפה בקורפוסי טקסט נרחבים כדי לעצב אסימן יעיל של מילות משנה. הטוקנייזר שנוצר מיומן בטיפול במילים חדשות על ידי פירוקן למילות משנה ידועות, תוך שמירה על רמה גבוהה של הבנה סמנטית.

רכיבי טוקניזציה

ספריית הטוקניזציה מחלקת את תהליך הטוקניזציה למספר שלבים, שכל אחד מהם מתייחס לפן מובהק של טוקניזציה. בואו נעמיק במרכיבים הבאים:

  • מנרמל: לוקח טרנספורמציות ראשוניות במחרוזת הקלט, תוך החלת התאמות נחוצות כגון המרה באותיות קטנות, נורמליזציה של Unicode והפשטה.
  • PreTokenizer: אחראי לפיצול מחרוזת הקלט למקטעים מוקדמים, קביעת הפיצולים על סמך כללים מוגדרים מראש, כגון תיווי רווח.
  • מספר סימוכין: מפקח על גילוי ויצירת אסימוני משנה, התאמה לפרט של נתוני הקלט שלך ומציע יכולות הדרכה.
  • פוסט-מעבד: משפר את תכונות הבנייה כדי להקל על תאימות עם דגמים רבים המבוססים על שנאים, כמו BERT, על ידי הוספת אסימונים כגון [CLS] ו-[SEP].

כדי להתחיל עם אסימונים של Hugging Face, התקן את הספרייה באמצעות הפקודה pip install tokenizers וייבא אותו לסביבת Python שלך. הספרייה יכולה לסמן כמויות גדולות של טקסט במעט מאוד זמן, ובכך לחסוך משאבי חישוב יקרים עבור משימות אינטנסיביות יותר כמו אימון מודלים.

ספריית האסימונים משתמשת חלודה שיורשת את הדמיון התחבירי של C++ תוך הצגת מושגים חדשים בעיצוב שפת תכנות. יחד עם כריכות Python, זה מבטיח שאתה נהנה מביצועים של שפה ברמה נמוכה יותר תוך כדי עבודה בסביבת Python.

מערכי נתונים

מערכי נתונים הם הבסיס לפרויקטים של AI. Hugging Face מציע מגוון רחב של מערכי נתונים, המתאימים למגוון משימות NLP ועוד. כדי לנצל אותם ביעילות, הבנת תהליך הטעינה וניתוחם חיונית. להלן סקריפט Python עם הערות טובות המדגים כיצד לחקור מערכי נתונים הזמינים ב-Huging Face:

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

סקריפט זה משתמש בפונקציה load_dataset כדי לטעון את מערך הנתונים של SQuAD, שהוא בחירה פופולרית למשימות תשובות לשאלות.

מינוף מודלים שהוכשרו מראש וחיבור הכל ביחד

מודלים שהוכשרו מראש מהווים את עמוד השדרה של פרויקטים רבים של למידה עמוקה, המאפשרים לחוקרים ולמפתחים להזניק את היוזמות שלהם מבלי להתחיל מאפס. חיבוק פנים מקל על החקירה של מגוון מגוון של דגמים מאומנים מראש, כפי שמוצג בקוד שלהלן:

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)

כשהמודל והטוקניר נטענים, נוכל כעת להמשיך ליצור פונקציה שלוקחת קטע טקסט ושאלה כקלט ומחזירה את התשובה שחולצה מהטקסט. אנו נשתמש בטוקנייזר כדי לעבד את טקסט הקלט והשאלה לפורמט התואם למודל, ולאחר מכן נזין את הקלט המעובד הזה לתוך המודל כדי לקבל את התשובה:

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

בקטע הקוד, אנו מייבאים מודולים נחוצים מחבילת השנאים, ולאחר מכן טוענים דגם מאומן מראש והטוקניר המתאים לו בשיטת from_pretrained. אנו בוחרים מודל BERT המכוון במערך הנתונים של SQuAD.

בוא נראה מקרה שימוש לדוגמה של פונקציה זו שבו יש לנו פסקה של טקסט ואנו רוצים לחלץ ממנה תשובה ספציפית לשאלה:

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 שלוקחת טקסט ושאלה, מסמלת אותם כראוי וממנפת את מודל ה-BERT המאומן מראש כדי לחלץ את התשובה מהטקסט. הוא מדגים יישום מעשי של ספריית השנאים של Hugging Face לבניית מערכת פשוטה אך חזקה לתשובות לשאלות. כדי לתפוס היטב את המושגים, מומלץ לערוך ניסוי מעשי באמצעות א מחברת Google Colab.

סיכום

באמצעות מגוון רחב של כלי קוד פתוח, מודלים שהוכשרו מראש וצינורות ידידותיים למשתמש, הוא מאפשר לאנשי מקצוע ותיקים ולמצטרפים חדשים להתעמק בעולם הרחב של AI בתחושה של קלות והבנה. יתרה מכך, היוזמה לשילוב Rust, בשל תכונות המהירות והבטיחות שלה, מדגישה את המחויבות של Hugging Face לטפח חדשנות תוך הבטחת יעילות ואבטחה ביישומי AI. העבודה הטרנספורמטיבית של Hugging Face לא רק דמוקרטית את הגישה לכלי בינה מלאכותית ברמה גבוהה אלא גם מטפחת סביבה שיתופית ללמידה ופיתוח במרחב הבינה המלאכותית, ומאפשרת עתיד שבו בינה מלאכותית נגישה ל

ביליתי את חמש השנים האחרונות בשקיעת עצמי בעולם המרתק של למידת מכונה ולמידה עמוקה. התשוקה והמומחיות שלי הובילו אותי לתרום ליותר מ-50 פרויקטים מגוונים של הנדסת תוכנה, עם התמקדות מיוחדת ב-AI/ML. הסקרנות המתמשכת שלי משכה אותי גם לעבר עיבוד שפה טבעית, תחום שאני להוט לחקור עוד יותר.