Model
NOT production-ready. Based on DictaLM2.0; fine-tuned for text summarization.
Known Issues:
- The model is bloated (disk size - consider using maayanorner/hebrew-summarization-llm-4bit for low resource envs).
- While the results look pretty good, the model was not evaluated.
- Short inputs (i.e., "articles" of one line) will yield a contextless "summary".
4-bit quantized version: https://huggingface.co/maayanorner/hebrew-summarization-llm-4bit Install bitsandbytes to use the quantized version.
Data:
https://github.com/IAHLT/summarization_he
Example of usage:
To use 4-bit version, set model_path to maayanorner/hebrew-summarization-llm-4bit
import torch
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
)
def summarize(text, tokenizer, model, num_beams=4, temperature=1, max_new_tokens=512):
if tokenizer.pad_token is None:
tokenizer.pad_token = tokenizer.eos_token
if len(text) < 20:
raise ValueError('Text must be at least 20 characters long.')
# This text template is important.
inputs = tokenizer(f'{text}\n### סיכום:', return_tensors="pt")
in_data = inputs.input_ids.to('cuda')
attention_mask = inputs.attention_mask.to('cuda')
output_ids = model.generate(input_ids=in_data, attention_mask=attention_mask, num_beams=num_beams, max_new_tokens=max_new_tokens, do_sample=True, early_stopping=True, use_cache=True, temperature=temperature, pad_token_id=tokenizer.eos_token_id, eos_token_id=tokenizer.eos_token_id)
generated_text = tokenizer.decode(output_ids[0], skip_special_tokens=True)
return generated_text
def summarize_batch(texts, tokenizer, model, num_beams=4, temperature=1, max_new_tokens=512):
for text in texts:
if len(text) < 20:
raise ValueError('Each text must be at least 20 characters long.')
if tokenizer.pad_token is None:
tokenizer.pad_token = tokenizer.eos_token
inputs = tokenizer([f'{text}\n### סיכום:' for text in texts], return_tensors="pt", padding=True)
in_data = inputs.input_ids.to('cuda')
attention_mask = inputs.attention_mask.to('cuda')
output_ids = model.generate(
input_ids=in_data,
attention_mask=attention_mask,
num_beams=num_beams,
max_new_tokens=max_new_tokens,
do_sample=True,
early_stopping=True,
use_cache=True,
temperature=temperature,
pad_token_id=tokenizer.eos_token_id,
eos_token_id=tokenizer.eos_token_id
)
generated_texts = [tokenizer.decode(output, skip_special_tokens=True) for output in output_ids]
return generated_texts
model_path = 'maayanorner/hebrew-summarization-llm' # or maayanorner/hebrew-summarization-llm-4bit
model = AutoModelForCausalLM.from_pretrained(
model_path,
trust_remote_code=True,
)
model.to('cuda')
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
text = '''
לפעמים, מתחשק לחזור אחורה בזמן. אתם יודעים, לימים הטובים ההם. לימים של דייב ושל סוגר שטחים, של קין ושל פקמן, של אלאדין ושל מלך האריות, של הוגו ושל וורמס, של טטריס ושל כל שאר הקלאסיקות שאהבנו כל כך...
כאן, ב"מסע אל העבר", אספנו את כל אותם משחקים ישנים, ואנו מציעים לכם אותם, יחד עם תאורים, תמונות, קטגוריות, צ'יטים, פתרונות ועוד - כדי שגם אתם תוכלו לחזור חזרה בזמן - ולהנות מהנוסטלגיה.
'''.strip()
summarize(text, max_new_tokens=512, tokenizer=tokenizer, model=model)
Examples:
Article
נבחרת ישראל תמשיך את המסע שלה בבית מספר 2 המאתגר בדרג A, כשתפגוש מחר (חמישי) את נבחרת צרפת במסגרת המחזור החמישי. אחרי ארבעה הפסדים מארבעה משחקים, השחקנים בכחול-לבן רוצים לחולל הפתעה בסטאד דה פראנס.ההרכב שתרגל רן בן שמעון לקראת המשחק: דניאל פרץ, שגיב יחזקאל, עידן נחמיאס, רז שלמה, שון גולדברג, ליאל עבדה, מוחמד אבו פאני, מחמוד ג’אבר, אוסקר גלוך, מנור סולומון ודור תורג’מן.רן בן שמעון, מאמן נבחרת ישראל, דיבר הערב במסיבת העיתונאים לקראת ההתמודדות: “הדרך שלי להתכונן לכל משחק היא כפי שאני חושב שצריך להתכונן אליו. ברמות האלה אנחנו מנסים לשלב בין השיטות, קו 5 וקו 4. כרגע בליגת האומות התוצאות מבחינתנו אולי בדקות האחרונות היו קשות אבל לאורך המשחקים, עד דקה 70-75, נגד צרפת אפילו עד דקה 86, היינו במשחק”.
דסה: קושי? בימים אלו, זו לא המילה הנכונה“הסיטואציה שלנו קשה? מי שהסיאטוציה שלו קשה זה האנשים שנלחמים בישראל כדי להביא שלום לעתיד הילדים שלנו. כשאנחנו מחוץ למגרשקשה לנו עם החדשות מישראל, זה פוגע בנו הרבה, אבל אנחנו יודעים לעשות את ההפרדה על כר הדשא. הקשיים האמיתיים הם עבור אלו שנלחמים עבור המדינה שלנו. נשחק את המשחק הטוב ביותר שלנו כדי קצת להעניק מורל לאנשים שבישראל”.“אנחנו מתמודדים עם רמות גבוהות מאוד של כדורגל. אנחנו צריכים לתקן את זה שאנחנו סופגים ישר אחרי שכובשים. בכל המשחקים הבקענו גולים ומיד אחרי זה גם היינו חשופים, היריב העלה את הרמה שלו וזה קרה. נצטרך לדעת להתמודד גם עם זה. ניתחנו את הדברים האלה וזה חלק מהדברים שנצטרך לשפר לקראת הקמפיינים הבאים, שהם הרבה יותר תחרותיים ועם יעדים ברי השגה מבחינתנו”. “זו סיטואציה עצובה עבורנו לא לשחק בישראל. אנחנו רוצים לשחק מול האנשים שאנחנו משחקים בשבילם, אבל יש דברים שלא תלויים בי. בראש שלי זה רק להכין את הנבחרת שלי לשחק הכי טוב שאפשר נגד נבחרת חזקה מאוד. אני מקווה שהאנשים מהקהילה היהודית יגיעו לראות אותנו, זה יהיה כבוד גדול עבורנו. אני מקווה שהכל יהיה טוב, שכולם יהיו בטוחים ושיהיה במשחק טוב”."החיסרון של קיליאן אמבפה? בגלל שאנחנו בכזה בית קשה מול יריבות חזקות אנחנו מנסים להתמקד במשחק שלנו. כשאמבפה לא משחק אז יש את אוליסה וכשאין אז יש את ברקולה. לצרפת יש מאגר כישרונות עצום של שחקנים מהטופ. ננסה להתמודד עם השחקנים ולהתכונן למי שמשחק מבחינה טקטית בצורה הכי טובה שאפשר”.
קפטן הנבחרת, אלי דסה, הוסיף: "ברור שזו לא סיטואציה קלה עבורנו. אנחנו מתמודדים עם הרבה עניינים במדינה ומחוצה לה. המשחק מחר הוא הזדמנות עבורנו לייצג את המדינה הכי טוב שאפשר. אנחנו פוגשים את אחת הנבחרות הטובות בעולם, זה ניסיון טוב עבורנו. אנחנו מצפים לייצג את המדינה שלנו ולעשות משחק טוב, למרות שהתזמון לא מושלם”. "חזרתי מפציעה לאחרונה ואני מרגיש בסדר גמור. אני שמח לחזור לנבחרת, למערכת הטובה שהתחלנו ליצור. אני מקווה שנצליח מחר, יש לנו יריבה חזקה מאוד קשה. לפרקים גדולים במשחקים האחרונים הראנו שאנחנו מסוגלים להתמודד ברמה הזו, ועם שיפורים קטנים נוכל לעשות דברים גדולים". “כמובן שזה חיסרון גדול עבורנו שאנחנו לא משחקים בישראל, אבל אנחנו מודים לאלו שאמיצים מספיק כדי להגיע ולראות אותנו. יש לי הרבה חברים מפאריס שרוצים לבוא למשחק אבל לא יכולים או מפחדים קצת. אבל גם המעט שמגיעים, עבורנו זה נחמד לראות שיש בנו תמיכה.
Summary 1:
Summary 2:
Random Linkedin Post (out-of-distribution):
אחרי שלוש שנים מאתגרות ומרגשות, אני גאה לשתף שסיימתי תואר ראשון במדעי המחשב! 🎓
תודה גדולה למכללה האקדמית תל אביב-יפו על הידע והכלים, למרצים הנפלאים, למשפחה ולחברים שתמכו ועזרו לי להגיע לגבהים חדשים (תרתי משמע – ראו תמונה 😉).
במהלך הלימודים והפרויקטים השונים שביצעתי צברתי ידע וניסיון בכלים וטכנולוגיות מגוונים: • שפות תכנות: C, C++, C#, Python, JavaScript, TypeScript • כלים וסביבות עבודה: Docker, Jenkins, SQL, Gatling, Selenium • תכנות מערכות משובצות (Embedded): Arduino, Raspberry Pi
כעת אני מחפש את ההזדמנות שלי להשתלב בתעשייה, עם עדיפות לתפקידי פיתוח Full-Stack/Back-End אך פתוח גם להצעות נוספות!
אני מגיע עם תשוקה לטכנולוגיה, מוטיבציה גבוהה וחשיבה יצירתית. אז אם אתם מכירים חברה שמחפשת מפתח צעיר ונלהב, אשמח לשלוח קורות חיים. ואם לא - גם לייק או שיתוף יעזרו לי מאוד! 😊
Summary:
- Downloads last month
- 59