הדגמה של פריסת הכלי לחיזוי למידה (LIT) ב-Google Cloud Platform

1. סקירה כללית

שיעור ה-Lab הזה מספק הוראות לפריסה מהירה של הדגמת LIT. המטרה היא להכיר את כלי LIT כדי לחקור את ההתנהגות של המודל. תבצעו ניתוח סנטימנטלי ותשתמשו בתכונה 'LIT נגדית' כדי למצוא את החשיבות של מילים ספציפיות. ההדגמה כוללת מערך נתונים לביצוע הניתוח. בשיעור ה-Lab תקבלו שלבים לפריסת LIT ב-Google Cloud Platform, לניתוח הנתונים ולמחיקת השירותים שנפרסו.

מהו הכלי להבנת הפרשנות (LIT)?

🔥LIT הוא כלי אינטראקטיבי וויזואלי להבנת מודלים של למידת מכונה, שתומך בטקסט, בתמונה ובנתונים בטבלה. אפשר להריץ אותו כשרת עצמאי או בתוך סביבות notebook כמו Colab, Jupyter ו-Google Cloud Vertex AI.

LIT נועד לענות על שאלות כמו:

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

הכלי זמין במאגר GitHub של LIT. ניתן למצוא מאמר על כך גם ב-ArXiv.

הפעולות שתבצעו:

משתמשים ב-Google Cloud Shell כדי לשלוף, לתייג, לדחוף את קובץ האימג' בקונטיינר ולפרוס אותו.

שימוש ב-Google Artifact Registry יאפשר לכם לאחסן באופן ריכוזי ארטיפקטים וליצור יחסי תלות כחלק מחוויה משולבת ב-Google Cloud. עליך להעלות את קובץ האימג' של ה-Docker ל-Artifact Registry. מידע נוסף בנושא זמין במסמכי התיעוד של Google Cloud Artifact Registry.

כדי לפרוס את קובץ האימג' של Docker, תשתמשו ב-Google Cloud Cloud Run, שירות Knative מנוהל. זוהי פלטפורמת מחשוב מנוהלת שמאפשרת להריץ קונטיינרים ישירות על גבי התשתית של Google הניתנת להתאמה.

מערך נתונים

ההדגמה משתמשת במערך הנתונים Stanford Sentiment Treebank.

"The Stanford Sentiment Treebank הוא הקורפוס הראשון עם עצי ניתוח מתויגים מלא, שמאפשר ניתוח מלא של ההשפעות ההרכבת של סנטימנט בשפה. הקורפוס מבוסס על מערך הנתונים שהוצגו על ידי Pang ולי (2005) והוא מורכב מ-11,855 משפטים יחידים שנשלפו מביקורות על סרטים. הוא מנותח על ידי המנתח של סטנפורד (Klein and Manning, 2003) והוא כולל סך של 215,154 ביטויים ייחודיים מעצי הניתוח האלה, ששלושה שופטים אנושיים הוסיפו לכל אחד מהם הערות." מאמר עזרה

לפני שמתחילים

במדריך הזה תצטרכו פרויקט ב-Google Cloud. אפשר ליצור פרויקט חדש או לבחור פרויקט שכבר יצרת.

2. הפעלת מסוף Google Cloud ו-Cloud Shell

בשלב הזה תשיקו את מסוף Google Cloud ותשתמשו ב-Google Cloud Shell.

2-א: השקת מסוף Google Cloud

מפעילים דפדפן ונכנסים אל מסוף Google Cloud.

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

2-ב: השקת Google Cloud Shell

מפעילים את Google Cloud Shell. אפשר להיעזר בתמונה הבאה.

השקה של מסוף Google Cloud

אתם אמורים לראות משהו כזה:

Google Cloud Console

בשלבים הבאים תשתמשו בשורת הפקודה.

Cloud Shell היא סביבת פיתוח ותפעול אונליין שאפשר לגשת אליה מכל מקום באמצעות הדפדפן. תוכלו לנהל את המשאבים באמצעות טרמינל אונליין שנטען מראש בכלים כמו כלי שורת הפקודה של Google Cloud, kubectl ועוד. תוכלו גם לפתח, לפתח, לנפות באגים ולפרוס אפליקציות מבוססות-ענן באמצעות ה-Cloud Shell Editor אונליין. שירות Cloud Shell מספק סביבה מוכנה מראש של מפתחים, עם ערכת כלים מועדפים מותקנת מראש ונפח אחסון מתמיד של 5GB.

2.ג: הגדרת פרויקט ב-Google Cloud

מגדירים את הפרויקט ב-Google Cloud ואת המיקום שבו יוצרים את שירותי Google Cloud. המידע ישמש אתכם כדי ליצור Google Cloud Workbench ו-Artifact Registry. תשתמשו בשיטה הראשונה כדי לבנות ולדחוף קונטיינר. תשתמשו בפורמט השני כדי לאחסן את קובץ האימג' של הקונטיינר.

עליכם להגדיר את משתנה החובה היחיד PROJECT_ID. אפשר לשנות את שאר המשתנים, אבל ערכי ברירת המחדל מספיקים להפעלת שיעור ה-Lab. מגדירים את הפרויקט הנכון ב-Google Cloud. המאפיין הזה משמש את הפקודה ב-gcloud.

# Set your GCP Project ID.
export PROJECT_ID=[Your project ID]

3. פריסת תמונות Docker ב-Google Cloud Artifact Registry

3-א: יצירת Google Cloud Artifact Registry

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

# Set Google Cloud Location.
export GCP_LOCATION=us-central1
# Set image container artifact repo name.
export ARTIFACT_REPO=lit-demo
# Set lit demo name.
export DEMO_NAME=demo1

# Use below cmd to list all Google Cloud Artifact locations:
# gcloud artifacts locations list
# Create a repo to upload the docker container images.
gcloud artifacts repositories create $ARTIFACT_REPO \
    --repository-format=docker \
    --location=$GCP_LOCATION \
    --description="LIT Demos"

# Validate the repo creation.
gcloud artifacts repositories describe $ARTIFACT_REPO \
    --location=$GCP_LOCATION

3-b: שליפת תמונת Docker

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

# List all the public LIT docker images.
gcloud container images  list-tags  us-east4-docker.pkg.dev/lit-demos/lit-app/lit-app

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

תמונות Google Cloud Docker

מושכים את תמונת ה-Docker הרצויה באמצעות הפקודה שלמטה.

# Set your chosen tag.
export TAG=[Your Chosen Tag]

# Pull the chosen docker image.
docker pull us-east4-docker.pkg.dev/lit-demos/lit-app/lit-app:$TAG

3-c: תמונת Docker

שלישית, מתייגים את התמונה שלמדתם עכשיו למאגר היעד.

# Push the pulled docker image to target repository.
docker tag  us-east4-docker.pkg.dev/lit-demos/lit-app/lit-app:$TAG  $GCP_LOCATION-docker.pkg.dev/$PROJECT_ID/$ARTIFACT_REPO/$DEMO_NAME:$TAG

3-d: תמונת Docker של Push

לאחר מכן, מעבירים את קובץ האימג' של ה-Docker למאגר היעד.

# Push the pulled docker image to the target repository.
docker push  $GCP_LOCATION-docker.pkg.dev/$PROJECT_ID/$ARTIFACT_REPO/$DEMO_NAME:$TAG

3-e: פריסת קובץ האימג' של Docker ל-CloudRun

פורסים את קובץ האימג' של ה-Docker להרצה בענן ממאגר היעד.

Google Cloud לפרוס את Cloud Run

באפשרות הפריסה, בוחרים באפשרות "פריסת גרסה אחת מקובץ קונטיינר קיים".

ב'תצורה', נותנים לשירות שם זהה ל-$DEMO_NAME, ובוחרים את האזור שיהיה זהה לשם של $GCP_LOCATION.

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

תצורת Google Cloud Run

בהגדרה של Containers, בוחרים שיציאת הקונטיינר תהיה 5432, הזיכרון יהיה 32Gib והמעבד יהיה 8.

הגדרת קונטיינרים של Google Cloud

אחרי שקובעים את ההגדרות, יוצרים את המכונה.

4. הצגת שירות LIT ב-GCP

אחרי יצירת השירות תוכלו לצפות ביומנים במסוף Google Cloud.

ניווט: הסרגל העליון במסוף Google Cloud ← Cloud Run (בסרגל החיפוש) ← בוחרים באפליקציית ההדגמה (דמו1) ← בוחרים באפשרות LOGS. אפשר גם לבדוק את המדדים וכו'.

במסוף Google Cloud, משתמשים ב-Search ומקלידים Cloud Run. אפשר להיעזר בתמונה הבאה.

חיפוש במסוף Google Cloud

בוחרים את 'demo1' השירות החדש שיצרתם. אפשר לעיין בתמונה בהמשך לעיונך.

רשימת Cloud Run במסוף Google Cloud

ניתן לבדוק את הקטע LOGS. בינתיים, תוכלו למצוא את כתובת ה-URL של קובץ העזר. אפשר לעיין בתמונה בהמשך לעיונך. יומן Cloud Run במסוף Google Cloud

אפשר לעיין בקטע 'מדדים'. אפשר לעיין בתמונה בהמשך לעיונך. מדדי Cloud Run במסוף Google Cloud

5. עיון בכתובת ה-URL של ההדגמה של LIT

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

שינוי הרשאת LIT ל-Cloud Run

לחלופין, אפשר להעביר את השירות לשרת proxy באמצעות הפקודה שלמטה.

# Proxy the service to local host.
gcloud run services proxy $DEMO_NAME --project $PROJECT_ID

יש לוודא שהאזור זהה ל-GCP_LOCATION. לאחר מכן אפשר לעיין בכתובת ה-URL של המארח המקומי.

שירות LIT Proxy

הדגמת LIT נראית כמו צילום המסך הבא:

דף הבית של הדגמת LIT

תבדקו את 'ניתוח סנטימנטל' במערך הנתונים Stanford Sentiment Treebank. צריך לפעול לפי השלבים הבאים:

  • משתמשים בפונקציית החיפוש בטבלת הנתונים של LIT כדי למצוא את 56 הנקודות שמכילות את המילה 'not'.

חיפוש הדגמה של LIT

  • בודקים את רמת הדיוק של מודל BERT בטבלת המדדים. רמת הדיוק של מודל BERT היא גבוהה.

דיוק ההדגמה של LIT

  • לבחור נקודות על הגרף ולחפש הסברים. מחפשים את המילה 'דיכאון'.

דיוק ההדגמה של LIT

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

דיוק ההדגמה של LIT

יש הרבה תכונות של LIT שאפשר לנסות. אתם יכולים למצוא את הסרטון הקצר של YouTube או את LIT ArXiv שמסבירים את התכונות של LIT.

6. מזל טוב

כל הכבוד על השלמת ה-Codelab! הגיע הזמן להירגע!

הסרת המשאבים

כדי לנקות את שיעור ה-Lab, צריך למחוק את כל שירותי Google Cloud שנוצרו לשיעור ה-Lab. מריצים את הפקודות הבאות באמצעות Google Cloud Shell.

אם Google Cloud Connection אבד בגלל חוסר פעילות, אפסו את המשתנים. פועלים לפי סעיפים 2-ג ו-4-1 כדי להגדיר את משתני המעטפת ולהגדיר את הפרויקט ב-Google Cloud.

# Delete the Cloud Run Service.
gcloud run services delete $DEMO_NAME \
--region=$GCP_LOCATION

# Delete the Artifact Registry.
gcloud artifacts repositories delete $ARTIFACT_REPO\
	--location=$GCP_LOCATION

### **Further reading**

Continue learning the LIT tool features with the below materials:

* LIT open source code base: [Git repo](https://github.com/PAIR-code/lit)
* LIT paper: [ArXiv](https://arxiv.org/pdf/2008.05122.pdf)
* LIT feature video demo: [Youtube](https://www.youtube.com/watch?v=CuRI_VK83dU)


### **License**

This work is licensed under a Creative Commons Attribution 2.0 Generic License.