1. ภาพรวม
ในแล็บนี้ คุณจะได้เรียนรู้วิธีกำหนดค่าและเปิดใช้การดำเนินการสมุดบันทึกด้วย Vertex AI Workbench
สิ่งที่คุณจะได้เรียนรู้
โดยคุณจะได้เรียนรู้วิธีต่อไปนี้
- ใช้พารามิเตอร์ใน Notebook
- กำหนดค่าและเปิดใช้การดำเนินการ Notebook จาก UI ของ Vertex AI Workbench
ค่าใช้จ่ายทั้งหมดในการเรียกใช้ Lab นี้ใน 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 ช่วยให้ผู้ใช้สร้างเวิร์กโฟลว์ที่อิงตาม Notebook แบบครบวงจรได้อย่างรวดเร็วผ่านการผสานรวมอย่างลึกซึ้งกับบริการข้อมูล (เช่น Dataproc, Dataflow, BigQuery และ Dataplex) และ Vertex AI ซึ่งช่วยให้นักวิทยาศาสตร์ข้อมูลเชื่อมต่อกับบริการข้อมูลของ GCP วิเคราะห์ชุดข้อมูล ทดลองใช้เทคนิคการสร้างโมเดลต่างๆ นำโมเดลที่ฝึกแล้วไปใช้งานจริง และจัดการ MLOps ตลอดวงจรของโมเดลได้
3. ภาพรวมกรณีการใช้งาน
ในแล็บนี้ คุณจะได้ใช้การเรียนรู้แบบถ่ายโอนเพื่อฝึกโมเดลการแยกประเภทรูปภาพในชุดข้อมูล DeepWeeds จาก TensorFlow Datasets คุณจะใช้ TensorFlow Hub เพื่อทดลองกับเวกเตอร์ฟีเจอร์ที่ดึงมาจากสถาปัตยกรรมโมเดลต่างๆ เช่น ResNet50, Inception และ MobileNet ซึ่งทั้งหมดได้รับการฝึกมาแล้วล่วงหน้าในชุดข้อมูลเปรียบเทียบ ImageNet การใช้ประโยชน์จากเครื่องมือเรียกใช้ Notebook ผ่าน UI ของ Vertex AI Workbench จะช่วยให้คุณเปิดตัวงานใน Vertex AI Training ที่ใช้โมเดลที่ผ่านการฝึกมาก่อนเหล่านี้ และฝึกเลเยอร์สุดท้ายซ้ำเพื่อจดจำคลาสจากชุดข้อมูล DeepWeeds
4. ตั้งค่าสภาพแวดล้อม
คุณจะต้องมีโปรเจ็กต์ Google Cloud Platform ที่เปิดใช้การเรียกเก็บเงินเพื่อเรียกใช้ Codelab นี้ หากต้องการสร้างโปรเจ็กต์ ให้ทำตามวิธีการที่นี่
ขั้นตอนที่ 1: เปิดใช้ Compute Engine API
ไปที่ Compute Engine แล้วเลือกเปิดใช้หากยังไม่ได้เปิดใช้
ขั้นตอนที่ 2: เปิดใช้ Vertex AI API
ไปที่ส่วน Vertex AI ของ Cloud Console แล้วคลิกเปิดใช้ Vertex AI API

ขั้นตอนที่ 3: สร้างอินสแตนซ์ Vertex AI Workbench
จากส่วน Vertex AI ของ Cloud Console ให้คลิก Workbench

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

เมื่อเปิดใช้แล้ว ให้คลิก MANAGED NOTEBOOKS

จากนั้นเลือก NOTEBOOK ใหม่

ตั้งชื่อ Notebook แล้วคลิกการตั้งค่าขั้นสูง

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

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

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

Vertex AI Workbench มีเลเยอร์ความเข้ากันได้ในการคำนวณที่ช่วยให้คุณเปิดตัวเคอร์เนลสำหรับ TensorFlow, PySpark, R ฯลฯ ได้จากอินสแตนซ์ Notebook เดียว หลังจากตรวจสอบสิทธิ์แล้ว คุณจะเลือกประเภท Notebook ที่ต้องการใช้จากตัวเรียกใช้งานได้
สำหรับแล็บนี้ ให้เลือกเคอร์เนล TensorFlow 2

5. เขียนโค้ดการฝึก
ชุดข้อมูล DeepWeeds ประกอบด้วยรูปภาพ 17,509 รูปที่จับภาพวัชพืช 8 สายพันธุ์ที่แตกต่างกันซึ่งเป็นพืชพื้นเมืองของออสเตรเลีย ในส่วนนี้ คุณจะได้เขียนโค้ดเพื่อประมวลผลล่วงหน้าของชุดข้อมูล DeepWeeds รวมถึงสร้างและฝึกโมเดลการจัดประเภทรูปภาพโดยใช้เวกเตอร์ฟีเจอร์ที่ดาวน์โหลดจาก TensorFlow Hub
คุณจะต้องคัดลอกข้อมูลโค้ดต่อไปนี้ลงในเซลล์ของ Notebook คุณจะดำเนินการกับเซลล์หรือไม่ก็ได้
ขั้นตอนที่ 1: ดาวน์โหลดและประมวลผลชุดข้อมูลล่วงหน้า
ก่อนอื่น ให้ติดตั้ง TensorFlow Datasets เวอร์ชันล่าสุดเพื่อให้แน่ใจว่าเราจะใช้ชุดข้อมูล DeepWeeds เวอร์ชันล่าสุด
!pip install tfds-nightly
จากนั้นนำเข้าไลบรารีที่จำเป็น
import tensorflow as tf
import tensorflow_datasets as tfds
import tensorflow_hub as hub
ดาวน์โหลดข้อมูลจาก TensorFlow Datasets แล้วแยกจำนวนคลาสและขนาดชุดข้อมูล
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 Sequential API
ก่อนอื่น ให้กําหนดพารามิเตอร์ feature_extractor_model ซึ่งเป็นชื่อของฟีเจอร์เวกเตอร์ TensorFlow Hub ที่คุณจะใช้เป็นพื้นฐานสําหรับโมเดล
feature_extractor_model = "inception_v3"
จากนั้นคุณจะเปลี่ยนเซลล์นี้ให้เป็นเซลล์พารามิเตอร์ ซึ่งจะช่วยให้คุณส่งค่าสำหรับ feature_extractor_model ในรันไทม์ได้
ก่อนอื่น ให้เลือกเซลล์แล้วคลิกเครื่องมือตรวจสอบพร็อพเพอร์ตี้ในแผงด้านขวา

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

คุณปิดเครื่องมือตรวจสอบพร็อพเพอร์ตี้ได้โดยคลิกไอคอนรูปเฟือง 2 อันอีกครั้ง
สร้างเซลล์ใหม่และกำหนด tf_hub_uri ซึ่งคุณจะใช้การประมาณค่าสตริงเพื่อแทนที่ชื่อของโมเดลที่ฝึกมาแล้วล่วงหน้าซึ่งคุณต้องการใช้เป็นโมเดลพื้นฐานสำหรับการดำเนินการ Notebook ที่เฉพาะเจาะจง โดยค่าเริ่มต้น คุณได้ตั้งค่า 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 และเพิ่มเลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์สำหรับการจัดประเภท จำนวนหน่วยในส่วนหัวของการจัดประเภทนี้ควรเท่ากับจำนวนคลาสในชุดข้อมูล
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. เรียกใช้ Notebook
คลิกไอคอน Executor ที่ด้านบนของ Notebook

ขั้นตอนที่ 1: กำหนดค่างานการฝึก
ตั้งชื่อการดำเนินการและระบุที่เก็บข้อมูลในโปรเจ็กต์

ตั้งค่าประเภทเครื่องเป็น 4 CPU, RAM 15 GB
และเพิ่ม NVIDIA GPU 1 ตัว
ตั้งค่าสภาพแวดล้อมเป็น TensorFlow Enterprise 2.6 (GPU)
เลือกการดำเนินการแบบครั้งเดียว
ขั้นตอนที่ 2: กำหนดค่าพารามิเตอร์
คลิกเมนูแบบเลื่อนลงตัวเลือกขั้นสูงเพื่อตั้งค่าพารามิเตอร์ พิมพ์ feature_extractor_model=resnet_v2_50 ในช่อง ซึ่งจะลบล้าง inception_v3 ซึ่งเป็นค่าเริ่มต้นที่คุณตั้งไว้สำหรับพารามิเตอร์นี้ใน Notebook ด้วย resnet_v2_50

คุณสามารถปล่อยให้ช่องใช้บัญชีบริการเริ่มต้นเลือกอยู่ได้
จากนั้นคลิกส่ง
ขั้นตอนที่ 3: ตรวจสอบผลลัพธ์
ในแท็บการดำเนินการใน UI ของคอนโซล คุณจะดูสถานะการดำเนินการ Notebook ได้

หากคลิกชื่อการดำเนินการ ระบบจะนำคุณไปยังงานการฝึก Vertex AI ที่ Notebook ของคุณกำลังทำงานอยู่

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

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

🎉 ยินดีด้วย 🎉
คุณได้เรียนรู้วิธีใช้ Vertex AI Workbench เพื่อทำสิ่งต่อไปนี้
- ใช้พารามิเตอร์ใน Notebook
- กำหนดค่าและเปิดใช้การดำเนินการ Notebook จาก UI ของ Vertex AI Workbench
ดูข้อมูลเพิ่มเติมเกี่ยวกับส่วนต่างๆ ของ Vertex AI ได้ที่เอกสารประกอบ
7. ล้างข้อมูล
โดยค่าเริ่มต้น Notebook ที่มีการจัดการจะปิดโดยอัตโนมัติหลังจากไม่มีการใช้งานเป็นเวลา 180 นาที หากต้องการปิดอินสแตนซ์ด้วยตนเอง ให้คลิกปุ่มหยุดในส่วน Vertex AI Workbench ของคอนโซล หากต้องการลบ Notebook ทั้งหมด ให้คลิกปุ่มลบ

หากต้องการลบ Storage Bucket ให้ใช้เมนูการนำทางใน Cloud Console โดยไปที่ Storage เลือก Bucket แล้วคลิกลบ
