Vertex AI Workbench: Xây dựng mô hình phân loại hình ảnh bằng công cụ học chuyển và trình thực thi sổ tay

1. Tổng quan

Trong phòng thí nghiệm này, bạn sẽ tìm hiểu cách định cấu hình và khởi chạy các quá trình thực thi trên sổ tay bằng Vertex AI Workbench.

Kiến thức bạn sẽ học được

Bạn sẽ tìm hiểu cách:

  • Sử dụng tham số trong sổ tay
  • Định cấu hình và chạy các lần thực thi sổ tay từ giao diện người dùng Vertex AI Workbench

Tổng chi phí để chạy phòng thí nghiệm này trên Google Cloud là khoảng 2 USD.

2. Giới thiệu về Vertex AI

Lớp học này sử dụng sản phẩm AI mới nhất có trên Google Cloud. Vertex AI tích hợp các giải pháp học máy trên Google Cloud vào một trải nghiệm phát triển liền mạch. Trước đây, bạn có thể truy cập vào các mô hình được huấn luyện bằng AutoML và mô hình tuỳ chỉnh thông qua các dịch vụ riêng biệt. Dịch vụ mới kết hợp cả hai thành một API duy nhất, cùng với các sản phẩm mới khác. Bạn cũng có thể di chuyển các dự án hiện có sang Vertex AI. Nếu bạn có ý kiến phản hồi, vui lòng xem trang hỗ trợ.

Vertex AI bao gồm nhiều sản phẩm để hỗ trợ quy trình làm việc toàn diện về máy học. Phòng thí nghiệm này sẽ tập trung vào Vertex AI Workbench.

Vertex AI Workbench giúp người dùng nhanh chóng xây dựng quy trình làm việc toàn diện dựa trên sổ tay thông qua việc tích hợp sâu với các dịch vụ dữ liệu (như Dataproc, Dataflow, BigQuery và Dataplex) và Vertex AI. Nền tảng này cho phép các nhà khoa học dữ liệu kết nối với các dịch vụ dữ liệu của GCP, phân tích tập dữ liệu, thử nghiệm nhiều kỹ thuật lập mô hình, triển khai các mô hình đã qua đào tạo vào thực tế và quản lý MLOps thông qua vòng đời của mô hình.

3. Tổng quan về trường hợp sử dụng

Trong phòng thí nghiệm này, bạn sẽ sử dụng công nghệ học chuyển đổi để huấn luyện một mô hình phân loại hình ảnh trên tập dữ liệu DeepWeeds của Tập dữ liệu TensorFlow. Bạn sẽ sử dụng TensorFlow Hub để thử nghiệm các vectơ tính năng trích xuất từ nhiều cấu trúc mô hình, chẳng hạn như ResNet50, InceptionMobileNet, tất cả đều được huấn luyện trước về tập dữ liệu điểm chuẩn ImageNet. Bằng cách tận dụng trình thực thi sổ tay thông qua giao diện người dùng Vertex AI Workbench, bạn sẽ bắt đầu các lệnh trên Vertex AI Training sử dụng các mô hình được huấn luyện trước này và huấn luyện lại lớp cuối cùng để nhận dạng các lớp từ tập dữ liệu DeepWeeds.

4. Thiết lập môi trường

Bạn cần một dự án Google Cloud Platform đã bật tính năng thanh toán để chạy lớp học lập trình này. Để tạo một dự án, hãy làm theo hướng dẫn tại đây.

Bước 1: Bật Compute Engine API

Chuyển đến Compute Engine rồi chọn Bật nếu bạn chưa bật.

Bước 2: Bật Vertex AI API

Chuyển đến mục Vertex AI trong Cloud Console rồi nhấp vào Bật API Vertex AI.

Trang tổng quan Vertex AI

Bước 3: Tạo một phiên bản Vertex AI Workbench

Trong mục Vertex AI trên Cloud Console, hãy nhấp vào Workbench:

Trình đơn Vertex AI

Bật Notebooks API nếu bạn chưa bật.

Notebook_api

Sau khi bật, hãy nhấp vào SÁCH GHI CHÚ CỦA QUẢN LÝ:

Notebooks_UI

Sau đó, chọn NOTEBOOK MỚI.

new_notebook

Đặt tên cho sổ tay của bạn, sau đó nhấp vào Cài đặt nâng cao.

create_notebook

Trong phần Cài đặt nâng cao, hãy bật tính năng tắt khi không hoạt động và đặt số phút thành 60. Điều này có nghĩa là máy tính xách tay của bạn sẽ tự động tắt khi không sử dụng để bạn không phải chịu các chi phí không cần thiết.

idle_timeout

Bạn có thể giữ nguyên mọi chế độ cài đặt nâng cao khác.

Tiếp theo, hãy nhấp vào Tạo.

Sau khi tạo phiên bản, hãy chọn Open JupyterLab.

open_jupyterlab

Trong lần đầu tiên sử dụng một thực thể mới, bạn sẽ được yêu cầu xác thực.

xác thực

Vertex AI Workbench có một lớp tương thích điện toán cho phép bạn chạy hạt nhân cho TensorFlow, PySpark, R, v.v., tất cả đều từ một thực thể máy tính xách tay. Sau khi xác thực, bạn có thể chọn loại sổ tay mình muốn sử dụng trong trình chạy.

Đối với phòng thí nghiệm này, hãy chọn hạt nhân TensorFlow 2.

tf_kernel

5. Viết mã huấn luyện

Tập dữ liệu DeepWeeds bao gồm 17.509 hình ảnh chụp 8 loài cỏ dại khác nhau có nguồn gốc từ Úc. Trong phần này, bạn sẽ viết mã để xử lý trước tập dữ liệu DeepWeeds, đồng thời xây dựng và huấn luyện một mô hình phân loại hình ảnh bằng cách sử dụng các vectơ tính năng được tải xuống từ TensorFlow Hub.

Bạn cần sao chép các đoạn mã sau đây vào các ô trong sổ tay của mình. Việc thực thi các ô là không bắt buộc.

Bước 1: Tải và xử lý trước tập dữ liệu

Trước tiên, hãy cài đặt phiên bản hằng đêm của tập dữ liệu TensorFlow để đảm bảo chúng ta đang lấy được phiên bản mới nhất của tập dữ liệu DeepWeeds.

!pip install tfds-nightly

Sau đó, hãy nhập các thư viện cần thiết:

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

Tải dữ liệu từ Tập dữ liệu TensorFlow xuống rồi trích xuất số lượng lớp và kích thước tập dữ liệu.

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

Xác định hàm xử lý trước để điều chỉnh tỷ lệ dữ liệu hình ảnh theo 255.

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

Tập dữ liệu DeepWeeds không đi kèm với các phần phân tách huấn luyện/xác thực. Mô hình này chỉ đi kèm với một tập dữ liệu huấn luyện. Trong mã bên dưới, bạn sẽ sử dụng 80% dữ liệu đó để huấn luyện và 20% còn lại để xác thực.

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

Bước 2: Tạo mô hình

Giờ đây, sau khi tạo tập dữ liệu huấn luyện và xác thực, bạn đã sẵn sàng xây dựng mô hình của mình. TensorFlow Hub cung cấp các vectơ đặc trưng, là các mô hình được huấn luyện trước mà không có lớp phân loại trên cùng. Bạn sẽ tạo một trình trích xuất tính năng bằng cách gói mô hình đã huấn luyện trước với hub.KerasLayer, mô hình này sẽ gói TensorFlow SavedModel dưới dạng lớp Keras. Sau đó, bạn sẽ thêm lớp phân loại và tạo một mô hình bằng Keras õ API.

Trước tiên, hãy xác định thông số feature_extractor_model. Đây là tên của vectơ đặc điểm của TensorFlow Hub mà bạn sẽ dùng làm cơ sở cho mô hình của mình.

feature_extractor_model = "inception_v3"

Tiếp theo, bạn sẽ đặt ô này làm ô tham số, cho phép bạn truyền giá trị cho feature_extractor_model trong thời gian chạy.

Trước tiên, hãy chọn ô đó rồi nhấp vào công cụ kiểm tra tài sản trên bảng điều khiển bên phải.

property_inspector

Thẻ là một cách đơn giản để thêm siêu dữ liệu vào sổ tay của bạn. Nhập "thông số" trong hộp Thêm thẻ và nhấn Enter. Sau này, khi định cấu hình quá trình thực thi, bạn sẽ truyền các giá trị khác nhau, trong trường hợp này là mô hình TensorFlow Hub, bạn muốn kiểm thử. Lưu ý rằng bạn phải nhập từ "tham số" (và không phải bất kỳ từ nào khác) vì đây là cách trình thực thi của sổ tay biết cần tham số ô nào.

add_tag

Bạn có thể đóng trình kiểm tra tài sản bằng cách nhấp lại vào biểu tượng bánh răng kép.

Tạo một ô mới và xác định tf_hub_uri, trong đó bạn sẽ sử dụng nội suy chuỗi để thay thế tên của mô hình huấn luyện trước mà bạn muốn sử dụng làm mô hình cơ sở cho một quá trình thực thi cụ thể của sổ tay. Theo mặc định, bạn đã đặt feature_extractor_model thành "inception_v3", nhưng các giá trị hợp lệ khác là "resnet_v2_50" hoặc "mobilenet_v1_100_224". Bạn có thể khám phá các lựa chọn khác trong danh mục TensorFlow Hub.

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

Tiếp theo, hãy tạo trình trích xuất tính năng bằng hub.KerasLayer và truyền vào tf_hub_uri mà bạn đã xác định ở trên. Thiết lập đối số trainable=False để cố định các biến sao cho quá trình huấn luyện chỉ sửa đổi lớp thuật toán phân loại mới mà bạn sẽ thêm vào trên cùng.

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

Để hoàn tất mô hình, hãy gói lớp trình trích xuất tính năng trong mô hình tf.keras.Sequential và thêm lớp được kết nối đầy đủ để phân loại. Số lượng đơn vị trong đầu phân loại này phải bằng số lượng lớp trong tập dữ liệu:

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

Cuối cùng, hãy biên dịch và điều chỉnh mô hình.

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. Thực thi sổ tay

Nhấp vào biểu tượng Người thực thi ở đầu sổ tay.

người thi hành

Bước 1: Định cấu hình công việc huấn luyện

Đặt tên cho quá trình thực thi và cung cấp một bộ chứa lưu trữ trong dự án.

executor_config

Đặt Loại máy thành 4 CPU, 15 GB RAM.

Và thêm 1 NVIDIA GPU.

Đặt môi trường thành TensorFlow Enterprise 2.6 (GPU).

Chọn Thực thi một lần.

Bước 2: Định cấu hình các thông số

Nhấp vào trình đơn thả xuống TÙY CHỌN NÂNG CAO để đặt thông số của bạn. Nhập feature_extractor_model=resnet_v2_50 vào hộp. Thao tác này sẽ ghi đè inception_v3 (giá trị mặc định mà bạn đã đặt cho tham số này trong sổ tay) bằng resnet_v2_50.

advanced_options

Bạn có thể chọn hộp sử dụng tài khoản dịch vụ mặc định.

Sau đó, nhấp vào GỬI

Bước 3: Kiểm tra kết quả

Trong thẻ Các lượt thực thi trên giao diện người dùng Console, bạn có thể xem trạng thái thực thi trên sổ tay của mình.

executions_UI

Nếu nhấp vào tên quá trình thực thi, bạn sẽ được chuyển đến công việc Đào tạo Vertex AI nơi máy tính xách tay của bạn đang chạy.

vertex_training

Khi công việc hoàn tất, bạn có thể xem sổ tay đầu ra bằng cách nhấp vào XEM KẾT QUẢ.

view_result

Trong sổ ghi kết quả, bạn sẽ thấy giá trị của feature_extractor_model đã bị ghi đè bằng giá trị bạn đã truyền vào trong thời gian chạy.

param_cells

🎉 Xin chúc mừng! 🎉

Bạn đã tìm hiểu cách sử dụng Vertex AI Workbench để:

  • Sử dụng các tham số trong sổ tay
  • Định cấu hình và chạy các lần thực thi sổ tay từ giao diện người dùng Vertex AI Workbench

Để tìm hiểu thêm về các phần khác nhau của Vertex AI, hãy xem tài liệu này.

7. Dọn dẹp

Theo mặc định, sổ tay được quản lý sẽ tự động tắt sau 180 phút không hoạt động. Nếu bạn muốn tắt thực thể theo cách thủ công, hãy nhấp vào nút Dừng trong phần Vertex AI Workbench của bảng điều khiển. Nếu bạn muốn xoá hoàn toàn sổ tay, hãy nhấp vào nút Xoá.

xóa

Để xoá Bộ chứa Storage, hãy sử dụng trình đơn Điều hướng trong Cloud Console, duyệt đến Bộ nhớ, chọn bộ chứa rồi nhấp vào Xoá:

Xoá bộ nhớ