TinyLlama 1.1B - הגודל לא משנה

TinyLlama 1.1B – הגודל לא משנה

צומת המקור: 3081711

מבוא

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

מאמר זה נועד לספק ניתוח של TinyLlama 1.1B, מודל שפה קומפקטי גדול. נעמיק בהיבטי הליבה שלו, כמו האופן שבו הוא הוכשר במדדי ביצועים ויישום מעשי באמצעות פלטפורמת Hugging Face. אפילו נריץ את המודל הזה ב-Google Colab החינמי ונבדוק את יכולות המתמטיקה וההיגיון שלו.

TinyLlama 1.1B

מטרות למידה

  • השג הבנה מקיפה של TinyLlama 1.1B
  • חקור את תהליך האימון המורכב שהמודל עבר
  • נתח את הביצועים ותוצאות ההשוואה כדי להעריך את יעילותם
  • למד את השלבים המעשיים ליישום TinyLlama 1.1B באמצעות דוגמאות קידוד

מאמר זה פורסם כחלק מה- בלוגתון מדעי הנתונים.

תוכן העניינים

מה זה TinyLlama 1.1B?

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

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

תהליך הדרכה של TinyLlama 1.1B

תהליך האימון של TinyLlama 1.1B מרתק, כמו הדגם עצמו. האימון של TinyLlama התקיים רק במשך 90 יום, מאומן על 16 A100-40G GPUs. ההכשרה המוקדמת נעשתה על 3 טריליון אסימונים, וצוות TinyLlama פרסם את מודל הביניים בין כל חצי טריליון. 

באשר לנתונים, Slimpajama ו-Starcoderdata נלקחו עם גודל נתונים משולב של 950 מיליארד אסימונים. היחס הטבעי של שפה לקוד נשמר על 7:3, כלומר 70% מהנתונים היו שפה טבעית ו-30% היו קוד. לפיכך, כדי להשיג את הסימן 3 טריליון אסימונים לכוונון עדין, ה-TinyLlama עבר 3 תקופות אימון עבור מערך הנתונים הזה. 

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

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

תוכלו לקרוא גם: תחילת העבודה עם LlaMA 2: מדריך למתחילים

ביצועים ותוצאות בנצ'מרק

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

אמות המידה של TinyLlama 1.1B, אמנם פחות נרחבות מאלו של דגמים גדולים יותר, עדיין מדגימות את מיומנותה בטיפול במשימות שפה מורכבות. היכולת שלו ליצור תגובות קוהרנטיות ורלוונטיות מבחינה הקשרית במספר שפות מרשימה במיוחד. המודל נבדק על מדדים שונים כמו HellaSwag, WinoGrande, ARC, MMLU ואחרים. הציון הממוצע המשולב יצא ל-52.99. זה הרבה יותר טוב מהמודל האחר של 1 מיליארד פרמטרים, כלומר Pythia 1B, שהשיג ציון ממוצע של 48.3. הטבלה מתארת ​​את הציונים האישיים של כל מדד

בנצ 'מרק ציון TinyLlama 1.1B
HellaSwag 59.2
אובקה 36.0
וינוגרנדה 59.12
ARC_c 30.12
ARC_e 55.25
boolq 57.83
פיקה 73.29
ממוצע 52.9

TinyLlama - תחילת העבודה

כאן, בסעיף זה, נוריד את הגרסה הכמותית של TinyLlama Chat ונפעיל אותה ב-Google Colab. לפני הורדת הדגם, עלינו להוריד ולהתקין את חבילות Python הבאות

!CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip3 install llama-cpp-python 
!pip3 install huggingface-hub 
  • השמיים CMAKE_ARGS=”-DLLAMA_CUBLAS=מופעל” ו FORCE_CMAKE=1, יאפשר ל-llama_cpp_python להשתמש ב-Nvidia GPU הזמין בגרסת colab החינמית.
  • לאחר מכן אנו מתקינים את llama_cpp_python חבילה דרך ה-pip3
  • אנחנו אפילו מורידים את huggingface-hub, שבאמצעותו נוריד את ה- TinyLlama 1.1B Chat הכמותי

כדי לבדוק את מודל ה- TinyLlama 1.1B Chat, עלינו קודם כל להוריד את הגרסה הכמותית שלו. כדי להוריד אותו, נריץ את הקוד הבא

from huggingface_hub import hf_hub_download

# specifying the model name
model_name = "TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF"
# specifying the type of quantization of the model
model_file = "tinyllama-1.1b-chat-v1.0.Q8_0.gguf"

# download the model by specifying the model name and quantized model name
model_path = hf_hub_download(model_name, filename=model_file)

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

  • שם המודל: למשתנה זה נעביר את המודל שברצוננו להוריד. כאן אנו רוצים להוריד את דגם TinyLlama 1.1B Chat GGUF.
  • model_file: כאן אנו מציינים את סוג המודל הקוונטי שאנו רוצים להוריד. כאן נוריד את הגרסה הקוונטית של 8 סיביות של TinyLlama 1.1B Chat.
  • לבסוף, אנו מעבירים את הפרמטרים הללו ל- hf_hub_download, שמקבל את הפרמטרים הללו ומוריד את הדגם שצוין. לאחר ההורדה, הוא מחזיר את הנתיב שבו הורדת הדגם.
  • נתיב זה שהוחזר נשמר ב- model_path משתנה

כעת, אנו יכולים לטעון את הדגם הזה דרך llama_cpp_python סִפְרִיָה. הקוד לטעינת הדגם יהיה כמו זה למטה.

from llama_cpp import Llama
llm = Llama(
    model_path=model_path,
    n_ctx=512,  # the number of i/p tokens the model can take
    n_threads=8, # the number of threads to use
    n_gpu_layers=40# how many layers of the model to offload to the GPU
)

אנו מייבאים את לאמה כיתה מה llama_cpp, שמקבל את הפרמטרים הבאים

  • model_path: משתנה זה לוקח את הנתיב שבו מאוחסן המודל שלנו. השגנו את הנתיב מהשלב הקודם, אותו נספק כאן
  • n_ctx: כאן, אנו נותנים את אורך ההקשר עבור המודל. לעת עתה, אנו מספקים 512 אסימונים כאורך ההקשר
  • n_threads: כאן אנו מזכירים את מספר החוטים שישמשו את לאמה בכיתה
  • n_gpu_layers: אנו מציינים זאת אם יש לנו GPU פועל, מה שאנו עושים במקרה של ה-Colab החינמי. לשם כך, אנו מעבירים 40, מה שמרמז שאנו רוצים להוריד את כל הדגם ל-GPU ולא רוצים ששום חלק ממנו ירוץ ב-RAM של המערכת
  • לבסוף, אנו יוצרים אובייקט מזה לאמה class ולתת אותו למשתנה llm

הפעלת קוד זה תטען את המודל הקוונטי של TinyLlama 1.1B Chat על ה-GPU ותגדיר את אורך ההקשר המתאים. עכשיו, הגיע הזמן לבצע כמה מסקנות לגבי הדגם הזה. לשם כך, אנו עובדים עם הקוד שלהלן

output = llm(
  "<|im_start|>usernWho are you?<|im_end|>n<|im_start|>assistantn", # User Prompt
  max_tokens=512,  # Number of output tokens generated
  stop=["</s>"],   # Token which tells the LLM to stop
)
print(output['choices'][0]['text']) # Model generated text

כדי להסיק את המודל, אנו מעבירים את הפרמטרים הבאים ל-LLM:

  • תבנית הודעה/צ'אט: זוהי תבנית ההנחיה הדרושה כדי לשוחח עם הדגם. התבנית הנ"ל(כְּלוֹמַר , ) הוא זה שעובד עבור דגם TinyLlama 1.1B Chat. בתבנית, המשפט שאחרי ה-User הוא ה-User Prompt, והדור ייווצר אחרי ה-Assistant.
  • max_tokens: למשתנה זה, אנו מעבירים ערך המגדיר את המספר המרבי של אסימונים שמודל שפה גדול יכול להוציא כאשר ניתנת הנחיה. לעת עתה, אנו מגבילים אותו ל-512 אסימונים.
  • תפסיק: למשתנה זה, אנו מעבירים את אסימון העצירה. אסימון העצירה אומר למודל השפה הגדולה להפסיק לייצר אסימונים נוספים. עבור TinyLlama 1.1B Chat, אסימון העצירה הוא

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

TinyLlama 1.1B

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

output = llm(
  "<|im_start|>usernIf all students who study hard get good grades, 
  and John got good grades, can we conclude that John studied hard?
  <|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
TinyLlama 1.1B
output = llm(
  "<|im_start|>usernHow fast can a snake fly?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"

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

output = llm(
  "<|im_start|>usernJohn is twice as old as Sarah, and Sarah is three years 
  older than Mary. If Mary is 10 years old, how old is John?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"
output = llm(
  "<|im_start|>usernWhat is the missing number in this pattern: 
  1, 4, 9, 16, __, 36?n<|im_end|>n<|im_start|>assistantn",
  max_tokens=512,
  stop=["</s>"],
)


print(output['choices'][0]['text'])
"

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

לגבי כוונון עדין, ה-TinyLlama הוא בחירה מומלצת עבור אלה שמוגבלים עם חומרה מוגבלת ורוצים לכוונן מודלים של שפות גדולות במערך הנתונים הספציפי שלהם

מקרים ויישומים פוטנציאליים

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

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

מערכות משובצות במכשירי IoT: בתחום האינטרנט של הדברים (IoT), משאבי המחשוב מוגבלים לרוב; ניתן להשתמש ב-TinyLlama כדי להוסיף יכולות עיבוד שפה חכמות לציוד שונה כמו עוזרי בית חכם, טכנולוגיה לבישה ועוד ציוד מחובר כזה.

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

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

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

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

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

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

סיכום

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

הנקודות העיקריות מהמאמר הזה כוללות

  • תוכנן ליעילות, TinyLlama 1.1B זמין לקהל רחב יותר, כולל אלה עם משאבי חישוב מוגבלים, מה שהופך אותו מתאים למספר יישומים.
  • הדגם עבר תהליך אימון נרחב, כולל אימון על 3 טריליון אסימונים במשך 90 ימים באמצעות 16 מעבדי גרפי A100-40G.
  • למרות גודלו הקטן יותר, TinyLlama 1.1B מספק תגובות איכותיות ורלוונטיות להקשר במספר שפות, מה שהופך אותה למודל שיש לקחת בחשבון.
  • זוהי בחירה טובה עבור יישומים ניידים, ציוד IoT, כלים חינוכיים ועוד, הגודל הקומפקטי והיעילות שלו מאפשרים יישומים רחבים.
  • הדרישות החישוביות הנמוכות שלו הופכות אותו לכלי בעל ערך במחקר לשוני, במיוחד עבור שפות חסרות משאבים.
  • המודל הוא בחירה טובה עבור אלה שמתנסים במודלים של שפה או מפתחים אפליקציות NLP חדשות, בעיקר בהגדרות עם כוח חישוב מוגבל.

שאלות נפוצות

Q1. מה זה TinyLlama 1.1B?

A. TinyLlama 1.1B הוא מודל שפה קומפקטי ויעיל עם 1.1 מיליארד פרמטרים, מאומן על 3 טריליון אסימונים, מתאים ליישומים עם משאבי חישוב מוגבלים.

Q2. כיצד אומנה TinyLlama 1.1B?

A. הוא הוכשר במשך 90 יום באמצעות 16 GPUs A100-40G על מערכי נתונים כולל Slimpajama ו-Starcoderdata, עם יחס שפה לקוד טבעי של 7:3.

Q3. מהם מדדי הביצועים של TinyLlama 1.1B?

A. TinyLlama 1.1B מראה את כישוריו בטיפול במשימות שפה מורכבות, עם ציון ממוצע של 52.99 במדדים כמו HellaSwag, MMLU ו-WinoGrande.

Q4. מהם כמה מקרי שימוש פוטנציאליים של TinyLlama 1.1B?

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

Q5. האם TinyLlama 1.1B מתאים למפתחים עם משאבים מוגבלים?

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

Q6. כיצד מתפקד TinyLlama 1.1B במשימות חשיבה מתמטית?

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

המדיה המוצגת במאמר זה אינה בבעלות Analytics Vidhya והיא משמשת לפי שיקול דעתו של המחבר.

בול זמן:

עוד מ אנליטיקה וידיה