Vertex AI Workbench: สร้างโมเดลการจัดประเภทรูปภาพด้วยการโอนการเรียนรู้และผู้ดำเนินการสมุดบันทึก

1. ภาพรวม

ในห้องทดลองนี้ คุณจะได้ดูวิธีกำหนดค่าและเริ่มการดำเนินการกับสมุดบันทึกด้วย Vertex AI Workbench

สิ่งที่ได้เรียนรู้

โดยคุณจะได้เรียนรู้วิธีต่อไปนี้

  • ใช้พารามิเตอร์ในสมุดบันทึก
  • กำหนดค่าและเปิดใช้งานการเรียกใช้ Notebook จาก UI ของ Vertex AI Workbench

ค่าใช้จ่ายรวมในการเรียกใช้ห้องทดลองนี้บน Google Cloud อยู่ที่ประมาณ $2

2. ข้อมูลเบื้องต้นเกี่ยวกับ Vertex AI

ห้องทดลองนี้ใช้ข้อเสนอผลิตภัณฑ์ AI ใหม่ล่าสุดที่มีให้บริการใน Google Cloud Vertex AI ผสานรวมข้อเสนอ ML ทั่วทั้ง Google Cloud เข้าด้วยกันเพื่อมอบประสบการณ์การพัฒนาที่ราบรื่น ก่อนหน้านี้ โมเดลที่ฝึกด้วย AutoML และโมเดลที่กำหนดเองจะเข้าถึงได้ผ่านบริการแยกต่างหาก ข้อเสนอใหม่จะรวมทั้ง 2 อย่างไว้ใน API เดียว รวมทั้งผลิตภัณฑ์ใหม่อื่นๆ นอกจากนี้ คุณยังย้ายข้อมูลโปรเจ็กต์ที่มีอยู่ไปยัง Vertex AI ได้ด้วย หากมีความคิดเห็น โปรดดูหน้าการสนับสนุน

Vertex AI มีผลิตภัณฑ์ต่างๆ มากมายเพื่อรองรับเวิร์กโฟลว์ ML แบบครบวงจร ห้องทดลองนี้จะมุ่งเน้นที่ Vertex AI Workbench

Vertex AI Workbench ช่วยให้ผู้ใช้สร้างเวิร์กโฟลว์แบบสมุดบันทึกจากต้นทางถึงปลายทางได้อย่างรวดเร็วผ่านการผสานรวมเชิงลึกกับบริการข้อมูล (เช่น Dataproc, Dataflow, BigQuery และ Dataplex) และ Vertex AI ซึ่งช่วยให้นักวิทยาศาสตร์ข้อมูลเชื่อมต่อกับบริการข้อมูล GCP, วิเคราะห์ชุดข้อมูล, ทดสอบเทคนิคการสร้างแบบจำลองต่างๆ, นำโมเดลที่ได้รับการฝึกไปใช้งานจริง และจัดการ MLOps ผ่านวงจรของโมเดล

3. ภาพรวมกรณีการใช้งาน

ในห้องทดลองนี้ คุณจะได้ใช้การเรียนรู้การโอนเพื่อฝึกโมเดลการจัดประเภทอิมเมจในชุดข้อมูล DeepWeeds จากชุดข้อมูล TensorFlow คุณจะใช้ TensorFlow Hub เพื่อทดสอบเวกเตอร์ฟีเจอร์ที่ดึงมาจากสถาปัตยกรรมโมเดลต่างๆ เช่น ResNet50, Inception และ MobileNet ซึ่งทั้งหมดได้รับการฝึกล่วงหน้าในชุดข้อมูลการเปรียบเทียบ ImageNet การใช้โปรแกรมประมวลผลโน้ตบุ๊กผ่าน UI ของ Vertex AI Workbench จะช่วยให้คุณเปิดใช้งานงานในการฝึก Vertex AI ที่ใช้โมเดลที่ฝึกล่วงหน้าเหล่านี้และฝึกเลเยอร์สุดท้ายอีกครั้งเพื่อจดจำคลาสจากชุดข้อมูล DeepWeeds ได้

4. ตั้งค่าสภาพแวดล้อมของคุณ

คุณจะต้องมีโปรเจ็กต์ Google Cloud Platform ที่เปิดใช้การเรียกเก็บเงินเพื่อเรียกใช้ Codelab นี้ หากต้องการสร้างโปรเจ็กต์ ให้ทำตามวิธีการที่นี่

ขั้นตอนที่ 1: เปิดใช้ Compute Engine API

ไปที่ Compute Engine แล้วเลือกเปิดใช้หากยังไม่ได้เปิดใช้

ขั้นตอนที่ 2: เปิดใช้ Vertex AI API

ไปที่ส่วน Vertex AI ของ Cloud Console แล้วคลิกเปิดใช้ Vertex AI API

แดชบอร์ด Vertex AI

ขั้นตอนที่ 3: สร้างอินสแตนซ์ Vertex AI Workbench

จากส่วน Vertex AI ของ Cloud Console ให้คลิก Workbench ดังนี้

เมนู Vertex AI

เปิดใช้ Notebooks API หากยังไม่ได้เปิดใช้

Notebook_api

เมื่อเปิดใช้แล้ว ให้คลิกสมุดบันทึกที่มีการจัดการ

Notebooks_UI

จากนั้นเลือกสมุดบันทึกใหม่

new_notebook

ตั้งชื่อสมุดบันทึก แล้วคลิกการตั้งค่าขั้นสูง

create_notebook

ภายใต้การตั้งค่าขั้นสูง ให้เปิดใช้การปิดเมื่อไม่มีการใช้งาน และตั้งค่าจำนวนนาทีเป็น 60 ซึ่งหมายความว่าสมุดบันทึกจะปิดโดยอัตโนมัติเมื่อไม่ได้ใช้งาน คุณจึงไม่จำเป็นต้องมีค่าใช้จ่ายที่ไม่จำเป็น

idle_timeout

คุณปล่อยการตั้งค่าขั้นสูงอื่นๆ ทั้งหมดไว้ตามเดิมได้

จากนั้นคลิกสร้าง

เมื่อสร้างอินสแตนซ์แล้ว ให้เลือกเปิด JupyterLab

open_jupyterlab

ครั้งแรกที่คุณใช้อินสแตนซ์ใหม่ ระบบจะขอให้คุณตรวจสอบสิทธิ์

ตรวจสอบสิทธิ์

Vertex AI Workbench มีเลเยอร์ความเข้ากันได้ของข้อมูลประมวลผลที่ช่วยให้คุณเปิดใช้งานเคอร์เนลสําหรับ TensorFlow, PySpark, R และอื่นๆ ได้จากอินสแตนซ์โน้ตบุ๊กเดียว หลังจากตรวจสอบสิทธิ์แล้ว คุณจะเลือกประเภทของสมุดบันทึกที่ต้องการใช้จาก Launcher ได้

สำหรับห้องทดลองนี้ ให้เลือกเคอร์เนล TensorFlow 2

tf_kernel

5. เขียนโค้ดการฝึก

ชุดข้อมูล DeepWeeds ประกอบด้วยรูปภาพ 17,509 รูปที่บันทึกภาพวัชพืช 8 สายพันธุ์พื้นเมืองของออสเตรเลีย ในส่วนนี้ คุณจะได้เขียนโค้ดเพื่อประมวลผลชุดข้อมูล DeepWeeds ล่วงหน้า รวมถึงสร้างและฝึกโมเดลการจัดประเภทรูปภาพโดยใช้เวกเตอร์ฟีเจอร์ที่ดาวน์โหลดจาก TensorFlow Hub

คุณจะต้องคัดลอกข้อมูลโค้ดต่อไปนี้ลงในเซลล์ของสมุดบันทึก คุณจะเรียกใช้เซลล์หรือไม่ก็ได้

ขั้นตอนที่ 1: ดาวน์โหลดและเตรียมชุดข้อมูลล่วงหน้า

ก่อนอื่น ให้ติดตั้งชุดข้อมูล TensorFlow เวอร์ชันกลางคืนเพื่อให้แน่ใจว่าเรากำลังเก็บชุดข้อมูล DeepWeeds เวอร์ชันล่าสุด

!pip install tfds-nightly

จากนั้นนําเข้าไลบรารีที่จําเป็น ดังนี้

import tensorflow as tf
import tensorflow_datasets as tfds
import tensorflow_hub as hub

ดาวน์โหลดข้อมูลจากชุดข้อมูล TensorFlow และดึงข้อมูลจำนวนคลาสและขนาดชุดข้อมูล

data, info = tfds.load(name='deep_weeds', as_supervised=True, with_info=True)
NUM_CLASSES = info.features['label'].num_classes
DATASET_SIZE = info.splits['train'].num_examples

กำหนดฟังก์ชันการประมวลผลล่วงหน้าเพื่อปรับขนาดข้อมูลรูปภาพเป็น 255

def preprocess_data(image, label):
  image = tf.image.resize(image, (300,300))
  return tf.cast(image, tf.float32) / 255., label

ชุดข้อมูล DeepWeeds ไม่ได้มาพร้อมกับชุดการฝึก/ชุดตรวจสอบ โดยจะมีเฉพาะชุดข้อมูลการฝึกเท่านั้น ในโค้ดด้านล่าง คุณจะใช้ข้อมูล 80% นั้นสำหรับการฝึก และ 20% ที่เหลือสำหรับการตรวจสอบ

# Create train/validation splits

# Shuffle dataset
dataset = data['train'].shuffle(1000)

train_split = 0.8
val_split = 0.2
train_size = int(train_split * DATASET_SIZE)
val_size = int(val_split * DATASET_SIZE)

train_data = dataset.take(train_size)
train_data  = train_data.map(preprocess_data)
train_data  = train_data.batch(64)

validation_data = dataset.skip(train_size)
validation_data  = validation_data.map(preprocess_data)
validation_data  = validation_data.batch(64)

ขั้นตอนที่ 2: สร้างโมเดล

เมื่อสร้างชุดข้อมูลการฝึกและชุดข้อมูลที่ใช้ตรวจสอบแล้ว คุณก็พร้อมที่จะสร้างโมเดล TensorFlow Hub มีเวกเตอร์ฟีเจอร์ ซึ่งเป็นโมเดลก่อนการฝึกที่ไม่มีเลเยอร์การแยกประเภทระดับบนสุด คุณสามารถสร้างเครื่องมือแยกแยะองค์ประกอบโดยรวมโมเดลที่ฝึกไว้ล่วงหน้าด้วย hub.KerasLayer ซึ่งจะรวม TensorFlow SavedModel เป็นเลเยอร์ Keras จากนั้นเพิ่มเลเยอร์การแยกประเภทและสร้างโมเดลด้วย Keras Sequence API

ก่อนอื่น ให้กำหนดพารามิเตอร์ feature_extractor_model ซึ่งเป็นชื่อของเวกเตอร์ฟีเจอร์ TensorFlow Hub ที่จะใช้เป็นพื้นฐานสำหรับโมเดลของคุณ

feature_extractor_model = "inception_v3"

ถัดไป คุณต้องทำให้เซลล์นี้เป็นเซลล์พารามิเตอร์ซึ่งจะช่วยให้คุณส่งค่าสำหรับ feature_extractor_model ขณะรันไทม์ได้

ขั้นแรก ให้เลือกเซลล์แล้วคลิกที่เครื่องมือตรวจสอบพร็อพเพอร์ตี้ในแผงด้านขวา

property_inspector

แท็กเป็นวิธีง่ายๆ ในการเพิ่มข้อมูลเมตาลงในสมุดโน้ต พิมพ์ "parameters" ลงในช่อง "เพิ่มแท็ก" แล้วกด Enter ในภายหลังเมื่อกําหนดค่าการเรียกใช้ คุณจะส่งค่าต่างๆ ซึ่งในกรณีนี้คือโมเดล TensorFlow Hub ที่ต้องการทดสอบ โปรดทราบว่าคุณต้องพิมพ์คำว่า "parameters" (และไม่ใช่คำอื่น) เนื่องจากวิธีนี้ทำให้ตัวดำเนินการสมุดบันทึกรู้ว่าจะพารามิเตอร์เซลล์ใด

add_tag

คุณปิดเครื่องมือตรวจสอบคุณสมบัติได้โดยคลิกไอคอนรูปเฟืองคู่อีกครั้ง

สร้างเซลล์ใหม่และกำหนด tf_hub_uri ซึ่งคุณจะใช้การประมาณค่าสตริงเพื่อแทนที่ชื่อโมเดลที่ฝึกล่วงหน้าซึ่งคุณต้องการใช้เป็นโมเดลฐานสำหรับการทำงานที่เฉพาะเจาะจงของสมุดบันทึก ค่าเริ่มต้นเป็นคุณตั้งค่า feature_extractor_model เป็น "inception_v3" แต่ค่าที่ถูกต้องอื่นๆ คือ "resnet_v2_50" หรือ "mobilenet_v1_100_224" คุณดูตัวเลือกเพิ่มเติมได้ในแคตตาล็อก TensorFlow Hub

tf_hub_uri = f"https://tfhub.dev/google/imagenet/{feature_extractor_model}/feature_vector/5"

จากนั้นสร้างเครื่องมือแยกฟีเจอร์โดยใช้ hub.KerasLayer และส่งผ่าน tf_hub_uri ที่คุณกำหนดไว้ด้านบน ตั้งค่าอาร์กิวเมนต์ trainable=False ให้ตรึงตัวแปรเพื่อให้การฝึกแก้ไขเฉพาะเลเยอร์ตัวแยกประเภทใหม่ที่คุณจะเพิ่มด้านบนเท่านั้น

feature_extractor_layer = hub.KerasLayer(
    tf_hub_uri,
    trainable=False)

หากต้องการสร้างโมเดลให้เสร็จสมบูรณ์ ให้รวมเลเยอร์เครื่องมือแยกแยะองค์ประกอบในโมเดล tf.keras.Sequential และเพิ่มเลเยอร์แบบ Fully Connected เพื่อการแยกประเภท จำนวนหน่วยในส่วนหัวการจัดประเภทนี้ควรเท่ากับจํานวนคลาสในชุดข้อมูล

model = tf.keras.Sequential([
  feature_extractor_layer,
  tf.keras.layers.Dense(units=NUM_CLASSES)
])

สุดท้าย คอมไพล์และทำให้โมเดลพอดี

model.compile(
  optimizer=tf.keras.optimizers.Adam(),
  loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
  metrics=['acc'])

model.fit(train_data, validation_data=validation_data, epochs=3)

6. ดำเนินการสมุดบันทึก

คลิกไอคอนผู้ดำเนินการที่ด้านบนของโน้ตบุ๊ก

ผู้ดำเนินการ

ขั้นตอนที่ 1: กำหนดค่างานการฝึก

ตั้งชื่อการดําเนินการและระบุที่เก็บข้อมูลในโปรเจ็กต์

executor_config

ตั้งค่าประเภทเครื่องเป็น CPU 4 เครื่อง, RAM ขนาด 15 GB

และเพิ่ม NVIDIA GPU 1 รายการ

ตั้งค่าสภาพแวดล้อมเป็น TensorFlow Enterprise 2.6 (GPU)

เลือก "การเรียกใช้แบบครั้งเดียว"

ขั้นตอนที่ 2: กำหนดค่าพารามิเตอร์

คลิกเมนูแบบเลื่อนลงตัวเลือกขั้นสูงเพื่อตั้งค่าพารามิเตอร์ ในช่อง ให้พิมพ์ feature_extractor_model=resnet_v2_50 การดําเนินการนี้จะลบล้าง inception_v3 ซึ่งเป็นค่าเริ่มต้นที่คุณตั้งค่าไว้สําหรับพารามิเตอร์นี้ในสมุดบันทึกด้วย resnet_v2_50

advanced_options

แต่สามารถเลือกช่องใช้บัญชีบริการเริ่มต้นไว้ได้

จากนั้นคลิกส่ง

ขั้นตอนที่ 3: ตรวจสอบผลลัพธ์

ในแท็บการเรียกใช้ใน UI ของคอนโซล คุณจะเห็นสถานะของการเรียกใช้โน้ตบุ๊ค

executions_UI

หากคลิกชื่อการเรียกใช้ ระบบจะนำคุณไปยังงานการฝึก Vertex AI ที่โน้ตบุ๊คทำงานอยู่

vertex_training

เมื่องานเสร็จสมบูรณ์แล้ว คุณสามารถดูสมุดบันทึกเอาต์พุตได้โดยคลิกดูผลลัพธ์

view_result

ในโน้ตบุ๊กของเอาต์พุต คุณจะเห็นค่าของ feature_extractor_model ถูกเขียนทับด้วยค่าที่คุณส่งผ่านในรันไทม์

param_cells

🎉 ยินดีด้วย 🎉

คุณได้เรียนรู้วิธีใช้ Vertex AI Workbench เพื่อทำสิ่งต่อไปนี้แล้ว

  • ใช้พารามิเตอร์ในสมุดบันทึก
  • กำหนดค่าและเปิดใช้งานการเรียกใช้ Notebook จาก UI ของ Vertex AI Workbench

ดูข้อมูลเพิ่มเติมเกี่ยวกับส่วนต่างๆ ของ Vertex AI ได้ในเอกสารประกอบ

7. ล้างข้อมูล

โดยค่าเริ่มต้น สมุดบันทึกที่มีการจัดการจะปิดลงโดยอัตโนมัติหลังจากไม่มีการใช้งานเป็นเวลา 180 นาที หากต้องการปิดอินสแตนซ์ด้วยตนเอง ให้คลิกปุ่มหยุดในส่วน Vertex AI Workbench ของคอนโซล หากต้องการลบสมุดบันทึกทั้งหมด ให้คลิกปุ่ม "ลบ"

ลบ

หากต้องการลบที่เก็บข้อมูล ให้ใช้เมนูการนำทางใน Cloud Console เพื่อไปที่ "พื้นที่เก็บข้อมูล" เลือกที่เก็บข้อมูล แล้วคลิก "ลบ"

ลบพื้นที่เก็บข้อมูล