استقرار نسخه نمایشی ابزار تفسیرپذیری یادگیری (LIT) در Google Cloud Platform

1. بررسی اجمالی

این آزمایشگاه دستورالعمل هایی را برای استقرار سریع نسخه ی نمایشی LIT ارائه می دهد. هدف این است که شما را با ابزار LIT برای کشف رفتار مدل آشنا کنیم. شما یک تحلیل احساسی انجام خواهید داد و از ویژگی Counterfactual LIT برای یافتن اهمیت کلمات خاص استفاده خواهید کرد. نسخه ی نمایشی شامل مجموعه داده ای برای انجام تجزیه و تحلیل است. این آزمایشگاه مراحلی را برای استقرار LIT در پلتفرم Google Cloud، تجزیه و تحلیل داده‌ها و حذف سرویس‌های مستقر ارائه می‌دهد.

ابزار تفسیرپذیری یادگیری (LIT) چیست؟

🔥LIT ابزاری بصری و تعاملی برای درک مدل ML است که از متن، تصویر و داده های جدولی پشتیبانی می کند. می توان آن را به عنوان یک سرور مستقل یا در محیط های نوت بوک مانند نوت بوک های Colab، Jupyter و Google Cloud Vertex AI اجرا کرد.

LIT برای پاسخ دادن به سوالاتی مانند:

  • مدل من در چه نوع نمونه هایی عملکرد ضعیفی دارد؟
  • چرا مدل من این پیش بینی را انجام داد؟ آیا می‌توان این پیش‌بینی را به رفتار خصمانه، یا به اولویت‌های نامطلوب در مجموعه آموزشی نسبت داد؟
  • اگر چیزهایی مانند سبک نوشتاری، زمان فعل، یا جنسیت ضمیر را تغییر دهم، آیا مدل من به طور ثابت رفتار می کند؟

این ابزار در LIT GitHub Repo موجود است. کاغذی برای آن نیز در ArXiv موجود است.

کاری که خواهی کرد

از Google Cloud Shell برای کشیدن، برچسب‌گذاری، فشار دادن و استقرار تصویر ظرف استفاده خواهید کرد.

شما از Google Artifact Registry استفاده خواهید کرد که به شما امکان می دهد مصنوعات را به صورت متمرکز ذخیره کنید و وابستگی ها را به عنوان بخشی از تجربه یکپارچه Google Cloud ایجاد کنید. شما تصویر داکر را در رجیستری مصنوع آپلود خواهید کرد. می‌توانید در مستندات Google Cloud Artifact Registry درباره آن اطلاعات بیشتری کسب کنید.

شما از Google Cloud Cloud Run ، یک سرویس مدیریت شده Knative، برای استقرار تصویر داکر استفاده خواهید کرد. این یک پلت فرم محاسباتی مدیریت شده است که به شما امکان می دهد کانتینرها را مستقیماً در بالای زیرساخت مقیاس پذیر Google اجرا کنید.

مجموعه داده

نسخه ی نمایشی از مجموعه داده های Stanford Sentiment Treebank استفاده می کند.

بانک درختی احساسات استنفورد اولین مجموعه با درختان تجزیه کاملاً برچسب‌گذاری شده است که امکان تجزیه و تحلیل کامل اثرات ترکیبی احساسات در زبان را فراهم می‌کند. این مجموعه بر اساس مجموعه داده‌ای است که توسط Pang و Lee (2005) معرفی شده است و شامل 11855 جمله منفرد است. استخراج شده از نقدهای فیلم با تجزیه کننده استنفورد (کلین و منینگ، 2003) و در مجموع شامل 215154 عبارت منحصر به فرد از آن درختان تجزیه شده است که هر کدام توسط 3 داور انسانی حاشیه نویسی شده است. مقاله مرجع

قبل از شروع

برای این راهنمای مرجع، به یک پروژه Google Cloud نیاز دارید. می توانید یک پروژه جدید ایجاد کنید یا پروژه ای را که قبلا ایجاد کرده اید انتخاب کنید.

2. Google Cloud Console و Cloud Shell را راه اندازی کنید

شما یک Google Cloud Console راه اندازی می کنید و در این مرحله از Google Cloud Shell استفاده می کنید.

2-الف: یک Google Cloud Console راه اندازی کنید

یک مرورگر راه اندازی کنید و به Google Cloud Console بروید.

Google Cloud Console یک رابط مدیریت وب قدرتمند و ایمن است که به شما امکان می دهد منابع Google Cloud خود را به سرعت مدیریت کنید. این یک ابزار DevOps در حال حرکت است.

2-b: Google Cloud Shell را راه اندازی کنید

Google Cloud Shell را راه اندازی کنید. برای مرجع تصویر زیر را ببینید.

Google Cloud Console راه اندازی شد

شما باید چیزی شبیه به این را ببینید:

Google Cloud Console

در مراحل بعدی از خط فرمان استفاده خواهید کرد.

Cloud Shell یک محیط توسعه و عملیات آنلاین است که در هر جایی با مرورگر شما قابل دسترسی است. می توانید منابع خود را با ترمینال آنلاین آن که با ابزارهایی مانند ابزار خط فرمان gcloud، kubectl و غیره از قبل بارگذاری شده است، مدیریت کنید. همچنین می‌توانید برنامه‌های مبتنی بر ابر خود را با استفاده از ویرایشگر پوسته ابری آنلاین توسعه دهید، بسازید، اشکال‌زدایی کنید، و آن‌ها را مستقر کنید. Cloud Shell یک محیط آنلاین و آماده برای توسعه دهندگان با مجموعه ابزار مورد علاقه از پیش نصب شده و 5 گیگابایت فضای ذخیره سازی دائمی فراهم می کند.

2-c: پروژه Google Cloud را تنظیم کنید

پروژه Google Cloud و مکانی را که در آن خدمات Google Cloud را ایجاد خواهید کرد، تنظیم کنید. از این اطلاعات برای ایجاد یک Google Cloud Workbench و یک Artifact Registry استفاده خواهید کرد. شما از اولی برای ساختن و هل دادن ظرف استفاده خواهید کرد. شما از دومی برای ذخیره تصویر ظرف استفاده خواهید کرد.

شما باید تنها متغیر اجباری PROJECT_ID را تنظیم کنید. شما می توانید متغیرهای دیگر را تغییر دهید، اما مقادیر پیش فرض برای اجرای آزمایشگاه کافی است. پروژه Google Cloud صحیح را تنظیم کنید. این توسط دستور gcloud استفاده می شود.

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

3. تصاویر Docker را در Google Cloud Artifact Registry مستقر کنید

3-الف: یک رجیستری مصنوع Google Cloud ایجاد کنید

ابتدا باید یک رجیستری مصنوع برای ذخیره تصاویر داکر ایجاد کنید.

# 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: تصویر Pull 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

تصویر داکر انتخابی خود را با استفاده از دستور زیر بکشید.

# 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: تصویر داکر را تگ کنید

ثالثاً، تصویری را که به‌تازگی کشیده‌اید به مخزن هدف تگ کنید.

# 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: Push Docker Image

سپس، تصویر 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 مستقر کنید

تصویر داکر را در فضای ابری از مخزن هدف مستقر کنید.

Google Cloud Deploy Cloud Run

در گزینه Deploy، "Deploy one Revision from an Container Image موجود" را انتخاب کنید.

در Config، نام سرویس خود را به عنوان $DEMO_NAME نامگذاری کنید، و منطقه را مانند $GCP_LOCATION انتخاب کنید.

برای احراز هویت، می‌توانید «اجازه به فراخوان‌های احراز هویت نشده» یا «نیاز به احراز هویت» را انتخاب کنید. اگر «نیاز به احراز هویت» را انتخاب کنید، ممکن است لازم باشد مراحل دیگری را برای دسترسی به نسخه نمایشی تکمیل کنید. بنابراین، توصیه می شود اگر فقط می خواهید با نسخه نمایشی آشنا شوید، "Allow unauthenticated invocations" را انتخاب کنید.

Google Cloud Run Config

در Containers config پورت Container را 5432، Memory را 32Gib و CPU را 8 انتخاب کنید.

پیکربندی کانتینر Google Cloud

پس از تنظیم پیکربندی، نمونه را ایجاد کنید.

4. سرویس LIT را در GCP مشاهده کنید

پس از ایجاد سرویس، می‌توانید گزارش‌ها را در Google Cloud Console تماشا کنید.

پیمایش: نوار بالا در Google Cloud Console → Cloud Run (در نوار جستجو) → برنامه آزمایشی 1 را انتخاب کنید → LOGS را انتخاب کنید. همچنین می توانید METRICS و غیره را بررسی کنید.

در Google Cloud Console از Search استفاده کنید و "Cloud Run" را تایپ کنید. برای مرجع تصویر زیر را ببینید.

جستجوی Google Cloud Console

سرویس 'demo1' را که به تازگی ایجاد کرده اید انتخاب کنید. برای مرجع خود تصویر زیر را ببینید.

فهرست اجرای Cloud Console Google Cloud

می توانید بخش LOGS را بررسی کنید. در عین حال، می توانید URL مرجع را پیدا کنید. برای مرجع خود تصویر زیر را ببینید. Google Cloud Console Cloud Run Log

می توانید بخش METRICS را بررسی کنید. برای مرجع خود تصویر زیر را ببینید. Google Cloud Console Cloud Run Metrics

5. URL دمو LIT را مرور کنید

اگر به دلیل خطای Forbidden نمی توانید به URL دسترسی پیدا کنید، باید سرویس را تغییر دهید و فراخوانی احراز هویت نشده را مجاز کنید.

LIT مجوز اجرای ابر را تغییر دهید

یا می توانید با استفاده از دستور زیر سرویس را به هاست محلی پراکسی کنید.

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

مطمئن شوید که منطقه همان GCP_LOCATION است. سپس می توانید URL میزبان محلی را مرور کنید.

سرویس پروکسی LIT

نسخه ی نمایشی LIT مانند تصویر زیر است:

خانه نسخه ی نمایشی LIT

شما تجزیه و تحلیل احساسات را در مجموعه داده های Stanford Sentiment Treebank بررسی خواهید کرد. مراحل زیر را دنبال کنید

  • از تابع جستجو در جدول داده های LIT برای یافتن 56 نقطه داده حاوی کلمه "نه" استفاده کنید.

جستجوی نسخه ی نمایشی LIT

  • دقت مدل BERT را در جدول متریک بررسی کنید. دقت مدل BERT بالاست.

دقت نمایشی LIT

  • نقاط داده فردی را انتخاب کنید و به دنبال توضیحات باشید. کلمه "افسردگی" را جستجو کنید.

دقت نمایشی LIT

  • "این فیلم گانگستری نهایی دوران افسردگی نیست" را انتخاب کنید. نقشه Salience را بررسی کنید. نقشه های برجسته نشان می دهد که "نه" و "نهایی" برای پیش بینی مهم هستند.

دقت نمایشی LIT

بسیاری از ویژگی های LIT وجود دارد که می توانید آنها را امتحان کنید. می‌توانید ویدیوی کوتاه یوتیوب ما یا LIT ArXiv را پیدا کنید که ویژگی‌های LIT را توضیح می‌دهد.

6. تبریک می گویم

آفرین برای تکمیل کد لبه! زمان برای خنک شدن!

تمیز کردن

برای پاکسازی آزمایشگاه، همه سرویس‌های ابری Google ایجاد شده برای آزمایشگاه را حذف کنید. برای اجرای دستورات زیر از Google Cloud Shell استفاده کنید.

اگر اتصال Google Cloud به دلیل عدم فعالیت از بین رفت، متغیرها را بازنشانی کنید. 2-c و 4-1 را برای تنظیم متغیرهای پوسته و تنظیم Google Cloud Project دنبال کنید.

# 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.