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
Thông tin về lớp học lập trình này
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 các tham số trong sổ tay
- Định cấu hình và khởi chạy các quá trình 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
Phòng thí nghiệm 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 có nhiều sản phẩm nhằm hỗ trợ quy trình học máy toàn diện. 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, Inception và MobileNet, 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 Enable (Bật) nếu bạn chưa bật tính năng này.
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.
Bước 3: Tạo một thực thể Vertex AI Workbench
Trong phần Vertex AI của Cloud Console, hãy nhấp vào Workbench (Bàn làm việc):
Bật API Notebooks nếu chưa bật.
Sau khi bật, hãy nhấp vào SÁCH QUẢN LÝ SÁCH:
Sau đó, chọn SÁCH LƯU Ý MỚI.
Đặt tên cho sổ tay của bạn, sau đó nhấp vào Cài đặt nâng cao.
Trong phần Advanced Settings (Cài đặt nâng cao), hãy bật chế độ tắt ở trạng thái rảnh và đặt số phút là 60 phút. Điều này có nghĩa là sổ tay của bạn sẽ tự động tắt khi không được sử dụng, do đó bạn không phải chịu các chi phí không cần thiết.
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.
Vào lần đầu tiên sử dụng một phiên bản mới, bạn sẽ được yêu cầu 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 khởi chạy các hạt nhân cho TensorFlow, PySpark, R, v.v., tất cả từ một thực thể sổ tay duy nhất. 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 lớp học lập trình này, hãy chọn hạt nhân TensorFlow 2.
5. Viết mã huấn luyện
Bộ dữ liệu của 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 xuống và xử lý trước tập dữ liệu
Trước tiên, hãy cài đặt phiên bản hoạt động 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 tiền xử lý để chia tỷ lệ dữ liệu hình ảnh theo tỷ lệ 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 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 được huấn luyện trước bằng hub.KerasLayer
. Mô hình này sẽ gói TensorFlow SavedModel dưới dạng một 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 tham số feature_extractor_model
. Đây là tên của vectơ đặc điểm TensorFlow Hub mà bạn sẽ 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ố. Điều này sẽ cho phép bạn truyền một 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 trình kiểm tra thuộc tính trên bảng điều khiển bên phải.
Thẻ là một cách đơn giản để thêm siêu dữ liệu vào sổ tay. Nhập "thông số" trong hộp Thêm thẻ và nhấn Enter. Sau đó, khi định cấu hình phương thức 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 mà bạn muốn kiểm thử. Xin lưu ý rằng bạn phải nhập từ "parameters" (thông số) (chứ không phải từ nào khác) vì đây là cách trình thực thi sổ tay biết được ô nào cần được tham số hoá.
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 tuỳ 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 cách sử dụng hub.KerasLayer
và truyền tf_hub_uri
mà bạn đã xác định ở trên vào. 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ố đơn vị trong phần đầu phân loại này phải bằng số 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.
Bước 1: Thiết lập 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.
Đặ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: Thiết lập tham 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
.
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ẻ Thực thi trong giao diện người dùng của Bảng điều khiển, bạn có thể xem trạng thái thực thi của sổ tay.
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 trong Vertex AI Training mà sổ tay của bạn đang chạy.
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Ả.
Trong sổ tay kết quả, bạn sẽ thấy giá trị của feature_extractor_model
đã bị ghi đè bằng giá trị mà bạn đã truyền vào trong thời gian chạy.
🎉 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à khởi chạy các quá trình 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, các 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 trên 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á.
Để 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á: