הורדה, עיבוד מקדים והעלאה של מערך הנתונים COCO
COCO הוא מערך נתונים גדול של זיהוי אובייקטים, פילוח ויצירת כיתובים. מודלים של למידת מכונה שמשתמשים במערך הנתונים COCO כוללים:
- Mask-RCNN
- Retinanet
- ShapeMask
כדי לאמן מודל ב-Cloud TPU, צריך להכין את נתוני האימון.
במאמר הזה מוסבר איך להכין את מערך הנתונים COCO למודלים שפועלים ב-Cloud TPU. אפשר להכין את מערך הנתונים של COCO רק אחרי שיוצרים מכונה וירטואלית ב-Compute Engine. הסקריפט שמשמש להכנת הנתונים, download_and_preprocess_coco.sh, מותקן במכונה הווירטואלית וצריך להריץ אותו במכונה הווירטואלית.
אחרי שמכינים את הנתונים על ידי הפעלת הסקריפט download_and_preprocess_coco.sh, אפשר להפעיל את Cloud TPU ולהריץ את האימון.
הורדה מלאה, עיבוד מקדים והעלאה של מערך הנתונים COCO לקטגוריה של Cloud Storage נמשכים כשעתיים.
ב-Cloud Shell, מגדירים את
gcloudעם מזהה הפרויקט.export PROJECT_ID=project-id gcloud config set project ${PROJECT_ID}
ב-Cloud Shell, יוצרים קטגוריה של Cloud Storage באמצעות הפקודה הבאה:
gcloud storage buckets create gs://bucket-name --project=${PROJECT_ID} --location=us-central2
יוצרים מכונה וירטואלית ב-Compute Engine כדי להוריד את מערך הנתונים ולעבד אותו מראש. למידע נוסף, אפשר לעיין במאמר בנושא יצירה והפעלה של מכונה של Compute Engine.
$ gcloud compute instances create vm-name \ --zone=us-central2-b \ --image-family=ubuntu-2204-lts \ --image-project=ubuntu-os-cloud \ --machine-type=n1-standard-16 \ --boot-disk-size=300GB \ --scopes=https://www.googleapis.com/auth/cloud-platform
מתחברים למכונה הווירטואלית של Compute Engine באמצעות SSH:
$ gcloud compute ssh vm-name --zone=us-central2-b
כשמתחברים למכונה הווירטואלית, שורת הפקודה של המעטפת משתנה מ-
username@projectnameל-username@vm-name.מגדירים שני משתנים: אחד לקטגוריית האחסון שיצרתם קודם, ואחד לספרייה שמכילה את נתוני האימון (
DATA_DIR) בקטגוריית האחסון.(vm)$ export STORAGE_BUCKET=gs://bucket-name
(vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco
מתקינים את החבילות שנדרשות לעיבוד מוקדם של הנתונים.
(vm)$ sudo apt-get update && \ sudo apt-get install python3-pip && \ sudo apt-get install -y python3-tk && \ pip3 install --user Cython matplotlib opencv-python-headless pyyaml Pillow numpy absl-py tensorflow && \ pip3 install --user "git+https://github.com/cocodataset/cocoapi#egg=pycocotools&subdirectory=PythonAPI" && \ pip3 install protobuf==3.19.0 tensorflow==2.11.0 numpy==1.26.4
מריצים את הסקריפט
download_and_preprocess_coco.shכדי להמיר את מערך הנתונים של COCO לקבוצה של קובצי TFRecord (*.tfrecord) שאפליקציית האימון מצפה להם.(vm)$ git clone https://github.com/tensorflow/tpu.git (vm)$ sudo -E bash tpu/tools/datasets/download_and_preprocess_coco.sh ./data/dir/coco
הפעולה הזו מתקינה את הספריות הנדרשות ואז מריצה את הסקריפט של העיבוד המקדים. הכלי יוצר
*.tfrecordקבצים בספריית הנתונים המקומית. ההורדה של COCO והסקריפט להמרה נמשכים כשעה.מעתיקים את הנתונים לקטגוריה של Cloud Storage.
אחרי שממירים את הנתונים לפורמט TFRecord, מעתיקים את הנתונים מהאחסון המקומי לקטגוריה של Cloud Storage באמצעות ה-CLI של gcloud. צריך גם להעתיק את קובצי ההערות. הקבצים האלה עוזרים לאמת את הביצועים של המודל.
(vm)$ gcloud storage cp ./data/dir/coco/*.tfrecord ${DATA_DIR} (vm)$ gcloud storage cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}
הסרת המשאבים
כדי לנקות את המשאבים של Compute Engine ו-Cloud Storage, פועלים לפי השלבים הבאים.
מתנתקים מהמכונה הווירטואלית ב-Compute Engine:
(vm)$ exit
מחיקת מכונה וירטואלית ב-Compute Engine:
$ gcloud compute instances delete vm-name \ --zone=us-central2-b
מחיקת הקטגוריה של Cloud Storage והתוכן שלה:
$ gcloud storage rm -r gs://bucket-name $ gcloud storage buckets delete gs://bucket-name