לזיהוי טקסט עם פרפרזה יש ערך עסקי במקרים רבים. לדוגמה, על ידי זיהוי פרפראזות משפטיות, מערכת סיכום טקסט יכולה להסיר מידע מיותר. יישום נוסף הוא זיהוי מסמכים מוגני גניבה. בפוסט זה, אנו מכווננים את א פנים מחבקות שנאי דולק אמזון SageMaker לזהות צמדי משפטים עם פרפרזה בכמה שלבים.
מודל חזק באמת יכול לזהות טקסט בפרפראזה כאשר השפה שבה נעשה שימוש עשויה להיות שונה לחלוטין, וגם לזהות הבדלים כאשר לשפה שבה נעשה שימוש יש חפיפה מילונית גבוהה. בפוסט זה נתמקד בהיבט האחרון. באופן ספציפי, אנו בוחנים האם אנו יכולים לאמן מודל שיכול לזהות את ההבדל בין שני משפטים שיש להם חפיפה מילונית גבוהה ומשמעויות שונות מאוד או הפוכות. לדוגמה, למשפטים הבאים יש את אותן מילים בדיוק אך משמעויות מנוגדות:
- טסתי מניו יורק לפריז
- טסתי מפריז לניו יורק
סקירת פתרונות
אנו מדריכים אותך בשלבים הבאים ברמה הגבוהה:
- הגדר את הסביבה.
- הכן את הנתונים.
- עשה אסימון של מערך הנתונים.
- כוונן את הדגם.
- פרוס את המודל ובצע מסקנות.
- הערכת ביצועי המודל.
אם ברצונך לדלג על הגדרת הסביבה, תוכל להשתמש במחברת הבאה GitHub והפעל את הקוד ב- SageMaker.
Hugging Face ו-AWS הכריזו על שותפות מוקדם יותר בשנת 2022 שמקלה עוד יותר על אימון דגמי Hugging Face ב- SageMaker. פונקציונליות זו זמינה דרך הפיתוח של Hugging Face מיכלי למידה עמוקה של AWS (DLC). מכולות אלו כוללות Hugging Face Transformers, Tokenizers וספריית Datasets, המאפשרת לנו להשתמש במשאבים אלו לצורך הדרכה והסקת מסקנות. לרשימה של תמונות DLC הזמינות, ראה תמונות מכולות זמינות למידה עמוקה. הם מתוחזקים ומתעדכנים באופן קבוע עם תיקוני אבטחה. אתה יכול למצוא דוגמאות רבות לאימון דגמי Hugging Face עם ה-DLCs האלה וה- חיבוק Face Python SDK בהמשך GitHub ריפו.
מערך הנתונים של PAWS
ההבנה של היעדר צמדי משפטים יעילים של מערכי נתונים המציגים חפיפה מילונית גבוהה מבלי להיות פרפראזות, המקור הכפות מערך הנתונים ששוחרר בשנת 2019 נועד לספק לקהילת עיבוד השפה הטבעית (NLP) משאב חדש להדרכה והערכת מודלים לזיהוי פרפרזה. צמדי משפטים של PAWS נוצרים בשני שלבים באמצעות ויקיפדיה ו צמדי שאלות Quora (QQP) מערך נתונים. מודל שפה מחליף תחילה מילים בצמד משפטים עם אותו תיק מילים (BOW) כדי ליצור צמד משפטים. שלב תרגום אחורי יוצר אז פרפראזות עם חפיפת BOW גבוהה אך תוך שימוש בסדר מילים שונה. מערך הנתונים הסופי של PAWS מכיל בסך הכל 108,000 זוגות שסומנו על ידי אדם ו-656,000 זוגות שסומנו ברעש.
בפוסט זה אנו משתמשים ב- PAWS-Wiki מתויג (סופי) מערך נתונים מ-Huging Face. Hugging Face כבר ביצעה עבורנו את פיצול הנתונים, מה שמביא ל-49,000 זוגות משפטים במערך ההדרכה, ו-8,000 זוגות משפטים כל אחד עבור מערכי האימות והבדיקה. בדוגמה הבאה מוצגות שתי דוגמאות לצמד משפטים מתוך מערך ההדרכה. תווית של 1 מציינת ששני המשפטים הם פרפראזות זה על זה.
משפט 1 | משפט 2 | תווית |
למרות שהחלקים ניתנים להחלפה, חלקי המרכב ב-2 המכוניות אינם דומים. | למרות שהם דומים, חלקי המרכב אינם ניתנים להחלפה ב-2 המכוניות. | 0 |
כץ נולד בשוודיה בשנת 1947 ועבר לניו יורק בגיל שנה. | כץ נולד ב-1947 בשוודיה ועבר לניו יורק בגיל שנה. | 1 |
תנאים מוקדמים
עליך להשלים את התנאים המוקדמים הבאים:
- הירשם לחשבון AWS אם אין לך. למידע נוסף, ראה הגדר תנאים מוקדמים של Amazon SageMaker.
- התחל להשתמש מקרים של מחברת SageMaker.
- הגדר את ימין AWS זהות וניהול גישה הרשאות (IAM). למידע נוסף, ראה תפקידי SageMaker.
הגדר את הסביבה
לפני שנתחיל לבחון ולהכין את הנתונים שלנו לכוונון עדין של המודל, עלינו להגדיר את הסביבה שלנו. נתחיל ביצירת מופע מחברת SageMaker. בחר אזור AWS בחשבון AWS שלך ופעל לפי ההוראות ליצור מופע מחברת SageMaker. מופע המחברת עשוי להימשך מספר דקות.
כאשר מופע המחברת פועל, בחר conda_pytorch_p38
כסוג הגרעין שלך. כדי להשתמש במערך הנתונים של Hugging Face, ראשית עלינו להתקין ולייבא את ספריית Hugging Face:
לאחר מכן, בואו נקים סשן של SageMaker. אנו משתמשים בברירת המחדל שירות אחסון פשוט של אמזון (Amazon S3) דלי המשויך להפעלת SageMaker לאחסון מערך הנתונים של PAWS וחפצי מודל:
הכינו את הנתונים
אנחנו יכולים לטעון את גרסת ה-Huging Face של מערך הנתונים של PAWS עם זה load_dataset()
פקודה. קריאה זו מורידה ומייבאת את סקריפט העיבוד של PAWS Python ממאגר Hugging Face GitHub, אשר לאחר מכן מוריד את מערך הנתונים של PAWS מכתובת האתר המקורית המאוחסנת בסקריפט ושומר את הנתונים כטבלת חץ בכונן. ראה את הקוד הבא:
לפני שנתחיל לכוונן עדין את מודל ה-BERT שהוכשר מראש שלנו, בואו נסתכל על התפלגות מחלקות היעד שלנו. במקרה השימוש שלנו, למערך הנתונים של PAWS יש תוויות בינאריות (0 מציין שצמד המשפטים אינו פרפרזה, ו-1 מציין שכן). בואו ניצור תרשים עמודות כדי להציג את התפלגות המחלקה, כפי שמוצג בקוד הבא. אנו רואים שיש בעיית חוסר איזון קלה בכיתה במערך האימונים שלנו (56% דגימות שליליות לעומת 44% דגימות חיוביות). עם זאת, חוסר האיזון קטן מספיק כדי להימנע משימוש בטכניקות להפחתת חוסר איזון בכיתה.
הפוך את מערך הנתונים לאסימונים
לפני שנוכל להתחיל לכוונן עדין, אנחנו צריכים לסדר את מערך הנתונים שלנו. כנקודת התחלה, נניח שאנו רוצים לכוונן ולהעריך את roberta-base
שַׁנַאי. בחרנו roberta-base
כי זה שנאי למטרות כלליות שעבר הכשרה מראש על קורפוס גדול של נתונים באנגלית והציג לעתים קרובות ביצועים גבוהים במגוון משימות NLP. הדגם הוצג במקור בעיתון RoBERTa: גישה אופטימיזציה חזקה ל- BERT.
אנו מבצעים טוקניזציה על המשפטים עם א roberta-base
tokenizer מבית Hugging Face, המשתמש בקידוד Byte Pair ברמת בתים כדי לפצל את המסמך לאסימונים. לפרטים נוספים על אסימון RobERTa, עיין ב רוברטה טוקנייזר. מכיוון שהכניסות שלנו הן צמדי משפטים, אנחנו צריכים לסמן את שני המשפטים בו זמנית. מכיוון שרוב דגמי BERT דורשים שהקלט יהיה בעל אורך קלט אסימון קבוע, אנו מגדירים את הפרמטרים הבאים: max_len=128
ו truncation=True
. ראה את הקוד הבא:
שלב העיבוד המקדים האחרון לכוונון עדין של מודל ה-BERT שלנו הוא להמיר את מערכי הרכבות והאימות האסימון לטנסור PyTorch ולהעלות אותם לדלי S3 שלנו:
כוונן את הדגם
כעת, לאחר שסיימנו עם הכנת הנתונים, אנו מוכנים לכוונן את ההכשרה המוקדמת שלנו roberta-base
מודל על משימת זיהוי הפרפרזה. אנו יכולים להשתמש בשיעור SageMaker Hugging Face Estimator כדי להתחיל את תהליך הכוונון העדין בשני שלבים. הצעד הראשון הוא לציין את ההיפרפרמטרים של האימון והגדרות המדדים. משתנה הגדרות המדד אומר לאומדן החיבוק של הפנים אילו סוגי מדדים לחלץ מיומני האימונים של המודל. כאן, אנו מעוניינים בעיקר בחילוץ מדדי ערכת אימות בכל עידן אימון.
השלב השני הוא להפעיל את ה-Huging Face Estimator ולהתחיל את תהליך הכוונון העדין עם .fit()
שיטה:
תהליך הכוונון העדין אורך כ-30 דקות באמצעות הפרמטרים המפורטים.
פרוס את המודל ובצע מסקנות
SageMaker מציע אפשרויות פריסה מרובות בהתאם למקרה השימוש שלך. עבור נקודות קצה מתמשכות בזמן אמת שמבצעות חיזוי אחד בכל פעם, אנו ממליצים להשתמש שירותי אירוח בזמן אמת של SageMaker. אם יש לך עומסי עבודה שיש להם תקופות סרק בין פרצי תנועה ויכולים לסבול התחלות קרות, אנו ממליצים להשתמש מסקנות ללא שרת. נקודות קצה ללא שרת משיקים אוטומטית משאבי מחשוב ומרחיבים אותם פנימה והחוצה בהתאם לתעבורה, ומבטלים את הצורך לבחור סוגי מופעים או לנהל מדיניות קנה מידה. אנו מדגימים כיצד לפרוס את מודל החיבוק המכוונן שלנו הן לנקודת קצה בזמן אמת והן לנקודת קצה ללא שרת.
פרוס לנקודת קצה בזמן אמת
אתה יכול לפרוס אובייקט אימון על אירוח מסקנות בזמן אמת בתוך SageMaker באמצעות .deploy()
שיטה. לרשימה מלאה של הפרמטרים המקובלים, עיין ב דוגמנית פנים מחבקת. כדי להתחיל, בואו נפרוס את המודל למופע אחד, על ידי העברת הפרמטרים הבאים: initial_instance_count
, instance_type
, ו endpoint_name
. ראה את הקוד הבא:
המודל לוקח כמה דקות לפרוס. לאחר פריסת המודל, נוכל לשלוח רשומות לדוגמה ממערך הבדיקה הבלתי נראה לנקודת הקצה לצורך הסקת מסקנות.
פרוס לנקודת קצה ללא שרת
כדי לפרוס את אובייקט האימון שלנו על נקודת קצה ללא שרת, עלינו לציין תחילה קובץ תצורה ללא שרת עם memory_size_in_mb
ו max_concurrency
טיעונים:
memory_size_in_mb
מגדיר את גודל ה-RAM הכולל של נקודת הקצה ללא שרת שלך; גודל ה-RAM המינימלי הוא 1024 מגה-בייט (1 ג'יגה-בייט) והוא יכול להגדיל עד 6144 מגה-בייט (6 ג'יגה-בייט). בדרך כלל, עליך לשאוף לבחור בגודל זיכרון שגודלו לפחות כמו גודל הדגם שלך. max_concurrency
מגדיר את המכסה למספר הפניות בו-זמנית שניתן לעבד בו-זמנית (עד 50 פניות במקביל) עבור נקודת קצה אחת.
אנחנו צריכים גם לספק את ה-URI של תמונת מסקנות מחבקות, שתוכלו לאחזר באמצעות הקוד הבא:
כעת, כאשר יש לנו את קובץ התצורה ללא שרת, אנו יכולים ליצור נקודת קצה ללא שרת באותו אופן כמו נקודת הקצה שלנו בזמן אמת, באמצעות .deploy()
שיטה:
יש ליצור את נקודת הסיום תוך מספר דקות.
בצע הסקת מודל
כדי ליצור תחזיות, עלינו ליצור את צמד המשפטים על ידי הוספת ה [CLS]
ו [SEP]
אסימונים מיוחדים ובהמשך לשלוח את הקלט לנקודות הקצה של המודל. התחביר להסקת מסקנות בזמן אמת והסקה ללא שרת זהה:
בדוגמאות הבאות, אנו יכולים לראות שהמודל מסוגל לסווג נכון אם צמד משפטי הקלט מכיל משפטים מפורשים.
להלן דוגמה להסקה בזמן אמת.
להלן דוגמה ל-Serverless Inference.
הערכת ביצועי המודל
כדי להעריך את המודל, הבה נרחיב את הקוד הקודם ונשלח את כל 8,000 רשומות הבדיקה שלא נראו לנקודת הקצה בזמן אמת:
לאחר מכן, נוכל ליצור דוח סיווג באמצעות התחזיות שחולצו:
אנו מקבלים את ציוני המבחנים הבאים.
אנחנו יכולים לראות את זה roberta-base
בעל ציון ממוצע מאקרו משולב F1 של 92% ומתפקד מעט טוב יותר בזיהוי משפטים שהם פרפראזות. ה roberta-base
המודל מתפקד היטב, אבל זה נוהג טוב לחשב את ביצועי המודל תוך שימוש במודל אחד אחר לפחות.
הטבלה הבאה משווה roberta-base
תוצאות ביצועים באותה בדיקה שנקבעה מול שנאי מכוון אחר שנקרא paraphrase-mpnet-base-v2
, שנאי משפטים שהוכשר מראש במיוחד עבור משימת זיהוי הפרפרזה. שני הדגמים אומנו על מופע ml.p3.8xlarge.
התוצאות מראות זאת roberta-base
בעל ציון F1 גבוה ב-1% עם זמני אימונים וזמני מסקנות דומים מאוד באמצעות אירוח מסקנות בזמן אמת ב- SageMaker. ההבדל בביצועים בין הדגמים הוא מינורי יחסית, עם זאת, roberta-base
הוא בסופו של דבר המנצח מכיוון שיש לו מדדי ביצועים טובים יותר באופן שולי וזמני אימון והסקה כמעט זהים.
דיוק | להיזכר | ציון F1 | זמן אימון (ניתן לחיוב) | זמן מסקנות (סט מבחן מלא) | |
רוברטה-בסיס | 0.92 | 0.93 | 0.92 | דקות 18 | דקות 2 |
paraphrase-mpnet- base-v2 |
0.92 | 0.91 | 0.91 | דקות 17 | דקות 2 |
לנקות את
כשתסיים להשתמש בנקודות הקצה של המודל, תוכל למחוק אותן כדי להימנע מחיובים עתידיים:
סיכום
בפוסט זה, דנו כיצד לבנות במהירות מודל זיהוי פרפרזה באמצעות שנאי Hugging Face ב- SageMaker. כוונון עדין של שני שנאים מאומנים מראש, roberta-base
ו paraphrase-mpnet-base-v2
, באמצעות מערך הנתונים של PAWS (המכיל צמדי משפטים עם חפיפה מילונית גבוהה). הדגמנו ודנו את היתרונות של הסקנות בזמן אמת לעומת פריסת הסקת מסקנות ללא שרת, כשהאחרונה היא תכונה חדשה המכוונת לעומסי עבודה קפיציים ומבטלת את הצורך בניהול מדיניות קנה מידה. במבחן בלתי נראה עם 8,000 שיאים, הוכחנו ששני הדגמים השיגו ציון F1 של יותר מ-90%.
כדי להרחיב על פתרון זה, שקול את הדברים הבאים:
- נסה לכוונן עדין עם מערך הנתונים המותאם אישית שלך. אם אין לך מספיק תוויות הכשרה, תוכל להעריך את הביצועים של מודל מכוונן כמו זה המודגם בפוסט זה על מערך בדיקה מותאם אישית.
- שלב את המודל המכוונן הזה ביישום במורד הזרם הדורש מידע על האם שני משפטים (או בלוקים של טקסט) הם פרפראזות זה על זה.
בניין שמח!
על הכותבים
באלה קרישנמורתי הוא מדען נתונים עם שירותים מקצועיים של AWS, שם הוא נהנה ליישם למידת מכונה כדי לפתור בעיות עסקיות של לקוחות. הוא מתמחה בעיבוד מקרי שימוש בשפה טבעית ועבד עם לקוחות בתעשיות כמו תוכנה, פיננסים ובריאות. בזמנו הפנוי, הוא נהנה לנסות אוכל חדש, לצפות בקומדיות ובסרטים דוקומנטריים, להתאמן ב-Orange Theory ולהיות בחוץ על המים (גלישה במשוטים, שנורקלינג ובתקווה לצלול בקרוב).
איוון קוי הוא מדען נתונים עם שירותי AWS Professional, שם הוא מסייע ללקוחות לבנות ולפרוס פתרונות באמצעות למידת מכונה ב- AWS. הוא עבד עם לקוחות בתעשיות מגוונות, כולל תוכנות, פיננסים, תרופות, ובריאות. בזמנו הפנוי הוא נהנה לקרוא, לבלות עם משפחתו ולמקסם את תיק המניות שלו.
- '
- "
- 000
- 10
- 100
- 2019
- 2022
- 84
- אודות
- גישה
- חֶשְׁבּוֹן
- הושג
- לרוחב
- תעשיות
- כְּבָר
- אמזון בעברית
- הודיע
- אחר
- בקשה
- מריחה
- בערך
- טיעונים
- זמין
- AWS
- להיות
- הטבות
- גוּף
- גבול
- לִבנוֹת
- עסקים
- שיחה
- מסוגל
- מכוניות
- מקרים
- חיובים
- בחרו
- עִיר
- בכיתה
- מיון
- קוד
- טור
- משולב
- קהילה
- לחלוטין
- לחשב
- אמון
- מכולות
- מכיל
- יכול
- לִיצוֹר
- נוצר
- מנהג
- לקוח
- לקוחות
- נתונים
- מדען נתונים
- להפגין
- מופגן
- תלוי
- לפרוס
- פרס
- פריסה
- פרטים
- איתור
- צעצועי התפתחות
- אחר
- הפצה
- סרטים תיעודיים
- מסמכים
- הורדות
- נהיגה
- יעיל
- נקודת קצה
- אנגלית
- סביבה
- להקים
- להעריך
- דוגמה
- תערוכה
- לְהַרְחִיב
- פָּנִים
- משפחה
- מאפיין
- לממן
- ראשון
- טיסה
- להתמקד
- לעקוב
- הבא
- מזון
- חופשי
- מלא
- פונקציה
- פונקציונלי
- עתיד
- מטרה כללית
- בדרך כלל
- ליצור
- GitHub
- טוב
- יותר
- בריאות
- גובה
- עוזר
- כאן
- גָבוֹהַ
- גבוה יותר
- אירוח
- איך
- איך
- HTTPS
- הזדהות
- לזהות
- זיהוי
- זהות
- תמונה
- לכלול
- כולל
- תעשיות
- מידע
- קלט
- להתקין
- מעוניין
- סוגיה
- IT
- מקומות תעסוקה
- תוויות
- שפה
- גָדוֹל
- לשגר
- למידה
- סִפְרִיָה
- רשימה
- לִטעוֹן
- מכונה
- למידת מכונה
- עושה
- לנהל
- זכרון
- מדדים
- ML
- מודל
- מודלים
- יותר
- רוב
- מספר
- טבעי
- שלילי
- ניו יורק
- ניו יורק
- מחברה
- המיוחדות שלנו
- אופטימיזציה
- אפשרויות
- להזמין
- אחר
- שֶׁלוֹ
- מאמר
- פריז
- שותפות
- חולף
- טלאים
- ביצועים
- תקופות
- התרופות
- נקודה
- מדיניות
- תיק עבודות
- חיובי
- תרגול
- נבואה
- התחזיות
- בעיות
- תהליך
- תהליך
- מקצועי
- לספק
- שאלה
- Quora
- RAM
- שורה
- קריאה
- זמן אמת
- להמליץ
- רשום
- שוחרר
- לדווח
- מאגר
- לדרוש
- משאב
- משאבים
- תוצאות
- לַחֲזוֹר
- הפעלה
- ריצה
- סולם
- דרוג
- מַדְעָן
- אבטחה
- נבחר
- ללא שרת
- שירותים
- סט
- הצבה
- דומה
- פָּשׁוּט
- מידה
- קטן
- תוכנה
- מוצק
- פִּתָרוֹן
- פתרונות
- לפתור
- מיוחד
- מתמחה
- במיוחד
- הוצאה
- לְסוֹבֵב
- לפצל
- התחלה
- החל
- התחלות
- מניות
- אחסון
- חנות
- כתוצאה מכך
- לספק
- שוודיה
- מערכת
- יעד
- משימות
- טכניקות
- אומר
- מבחן
- דרך
- זמן
- טוקניזציה
- token
- מטבעות
- חלק עליון
- לפיד
- תְנוּעָה
- הדרכה
- תרגום
- us
- להשתמש
- אימות
- ערך
- מגוון
- לצפיה
- מים
- מה
- אם
- ויקיפדיה
- בתוך
- לְלֹא
- מילים
- עבד
- עובד
- מתאמן