1. Tổng quan
Trong phòng thí nghiệm này, bạn sẽ tìm hiểu cách sử dụng Vertex AI (nền tảng học máy được quản lý mới ra mắt của Google Cloud) để xây dựng quy trình học máy toàn diện. Bạn sẽ học được cách chuyển từ dữ liệu thô sang mô hình được triển khai, đồng thời sẵn sàng phát triển và đưa các dự án học máy của riêng mình vào sản xuất bằng Vertex AI. Trong phòng thí nghiệm này, chúng ta sẽ sử dụng Cloud Shell để tạo một hình ảnh Docker tuỳ chỉnh nhằm minh hoạ các vùng chứa tuỳ chỉnh để huấn luyện bằng Vertex AI.
Mặc dù chúng ta đang sử dụng TensorFlow cho mã mô hình ở đây, nhưng bạn có thể dễ dàng thay thế bằng một khung khác.
Kiến thức bạn sẽ học được
Bạn sẽ tìm hiểu cách:
- Tạo và chứa mã huấn luyện mô hình bằng Cloud Shell
- Gửi một quy trình huấn luyện mô hình tuỳ chỉnh đến Vertex AI
- Triển khai mô hình đã huấn luyện đến một điểm cuối và sử dụng điểm cuối đó để nhận dự đoán
Tổng chi phí để chạy bài tập thực hành 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 sản phẩm học máy trên Google Cloud để mang đến trải nghiệm phát triển liền mạch. Trước đây, các mô hình được huấn luyện bằng AutoML và các mô hình tuỳ chỉnh có thể truy cập thông qua các dịch vụ riêng biệt. Sản phẩm mới này 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 truy cập vào trang hỗ trợ.
Vertex có nhiều công cụ giúp bạn thực hiện từng giai đoạn của quy trình làm việc ML, như bạn có thể thấy trong sơ đồ bên dưới. Chúng ta sẽ tập trung vào việc sử dụng Training (Huấn luyện) và Prediction (Dự đoán) của Vertex, được làm nổi bật bên dưới.

3. Thiết lập môi trường
Thiết lập môi trường theo tốc độ của riêng bạn
Đăng nhập vào Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. (Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.)



Hãy nhớ mã dự án, một tên duy nhất trên tất cả các dự án trên Google Cloud (tên ở trên đã được sử dụng và sẽ không hoạt động đối với bạn, xin lỗi!).
Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên của Google Cloud.
Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp" để biết cách tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi hướng dẫn này. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí trị giá 300 USD.
Bước 1: Khởi động Cloud Shell
Trong phòng thí nghiệm này, bạn sẽ làm việc trong một phiên Cloud Shell. Đây là một trình thông dịch lệnh do một máy ảo chạy trong đám mây của Google lưu trữ. Bạn có thể dễ dàng chạy phần này trên máy tính của mình, nhưng việc sử dụng Cloud Shell sẽ giúp mọi người có được trải nghiệm có thể tái tạo trong một môi trường nhất quán. Sau khi hoàn thành bài thực hành, bạn có thể thử lại phần này trên máy tính của mình.

Kích hoạt Cloud Shell
Ở trên cùng bên phải của Cloud Console, hãy nhấp vào nút bên dưới để Kích hoạt Cloud Shell:

Nếu chưa từng khởi động Cloud Shell, bạn sẽ thấy một màn hình trung gian (bên dưới phần hiển thị đầu tiên) mô tả về Cloud Shell. Nếu vậy, hãy nhấp vào Tiếp tục (và bạn sẽ không bao giờ thấy màn hình này nữa). Sau đây là giao diện của màn hình xuất hiện một lần:

Quá trình cung cấp và kết nối với Cloud Shell chỉ mất vài phút.

Máy ảo này được trang bị tất cả các công cụ phát triển mà bạn cần. Nền tảng này cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn có thể thực hiện hầu hết, nếu không muốn nói là tất cả, công việc trong lớp học lập trình này chỉ bằng một trình duyệt hoặc Chromebook.
Sau khi kết nối với Cloud Shell, bạn sẽ thấy rằng mình đã được xác thực và dự án đã được đặt thành mã dự án của bạn.
Chạy lệnh sau trong Cloud Shell để xác nhận rằng bạn đã được xác thực:
gcloud auth list
Đầu ra của lệnh
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
Chạy lệnh sau trong Cloud Shell để xác nhận rằng lệnh gcloud biết về dự án của bạn:
gcloud config list project
Đầu ra của lệnh
[core] project = <PROJECT_ID>
Nếu không, bạn có thể đặt bằng lệnh sau:
gcloud config set project <PROJECT_ID>
Đầu ra của lệnh
Updated property [core/project].
Cloud Shell có một số biến môi trường, trong đó có GOOGLE_CLOUD_PROJECT chứa tên của dự án trên đám mây hiện tại. Chúng ta sẽ sử dụng thông tin này ở nhiều nơi trong lớp học này. Bạn có thể xem bằng cách chạy:
echo $GOOGLE_CLOUD_PROJECT
Bước 2: Bật API
Trong các bước sau, bạn sẽ thấy nơi cần đến các dịch vụ này (và lý do), nhưng hiện tại, hãy chạy lệnh này để cấp cho dự án của bạn quyền truy cập vào các dịch vụ Compute Engine, Container Registry và Vertex AI:
gcloud services enable compute.googleapis.com \
containerregistry.googleapis.com \
aiplatform.googleapis.com
Thao tác này sẽ tạo ra một thông báo thành công tương tự như sau:
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
Bước 3: Tạo một vùng lưu trữ trên Cloud Storage
Để chạy một quy trình huấn luyện trên Vertex AI, chúng ta cần có một vùng lưu trữ để lưu trữ các thành phần mô hình đã lưu. Chạy các lệnh sau trong thiết bị đầu cuối Cloud Shell để tạo một nhóm:
BUCKET_NAME=gs://$GOOGLE_CLOUD_PROJECT-bucket
gsutil mb -l us-central1 $BUCKET_NAME
Bước 4: Tạo bí danh cho Python 3
Mã trong lớp học này sử dụng Python 3. Để đảm bảo bạn sử dụng Python 3 khi chạy các tập lệnh mà bạn sẽ tạo trong bài tập thực hành này, hãy tạo một bí danh bằng cách chạy lệnh sau trong Cloud Shell:
alias python=python3
Mô hình mà chúng ta sẽ huấn luyện và phân phát trong lớp học lập trình này được xây dựng dựa trên hướng dẫn này trong tài liệu TensorFlow. Hướng dẫn này sử dụng tập dữ liệu MPG tự động từ Kaggle để dự đoán hiệu suất nhiên liệu của một chiếc xe.
4. Chứa mã huấn luyện
Chúng ta sẽ gửi công việc huấn luyện này đến Vertex bằng cách đặt mã huấn luyện vào một vùng chứa Docker và đẩy vùng chứa này đến Google Container Registry. Bằng cách sử dụng phương pháp này, chúng ta có thể huấn luyện một mô hình được xây dựng bằng bất kỳ khung nào.
Bước 1: Thiết lập tệp
Để bắt đầu, trong cửa sổ dòng lệnh của Cloud Shell, hãy chạy các lệnh sau để tạo các tệp mà chúng ta sẽ cần cho vùng chứa Docker:
mkdir mpg
cd mpg
touch Dockerfile
mkdir trainer
touch trainer/train.py
Bây giờ, bạn sẽ có một thư mục mpg/ có dạng như sau:
+ Dockerfile
+ trainer/
+ train.py
Để xem và chỉnh sửa các tệp này, chúng ta sẽ sử dụng trình chỉnh sửa mã tích hợp sẵn của Cloud Shell. Bạn có thể chuyển đổi qua lại giữa trình chỉnh sửa và thiết bị đầu cuối bằng cách nhấp vào nút trên thanh trình đơn trên cùng bên phải trong Cloud Shell:

Bước 2: Tạo một Dockerfile
Để chứa mã của chúng ta, trước tiên, chúng ta sẽ tạo một Dockerfile. Trong Dockerfile, chúng ta sẽ thêm tất cả các lệnh cần thiết để chạy hình ảnh. Thao tác này sẽ cài đặt tất cả các thư viện mà chúng ta đang dùng và thiết lập điểm truy cập cho mã huấn luyện.
Trong trình chỉnh sửa tệp Cloud Shell, hãy mở thư mục mpg/ rồi nhấp đúp để mở Dockerfile:

Sau đó, sao chép nội dung sau vào tệp này:
FROM gcr.io/deeplearning-platform-release/tf2-cpu.2-3
WORKDIR /
# Copies the trainer code to the docker image.
COPY trainer /trainer
# Sets up the entry point to invoke the trainer.
ENTRYPOINT ["python", "-m", "trainer.train"]
Dockerfile này sử dụng hình ảnh Docker Deep Learning Container TensorFlow Enterprise 2.3. Deep Learning Containers trên Google Cloud được cài đặt sẵn nhiều khung học máy và khoa học dữ liệu phổ biến. Chúng tôi đang sử dụng TF Enterprise 2.3, Pandas, Scikit-learn và những thư viện khác. Sau khi tải hình ảnh đó xuống, Dockerfile này sẽ thiết lập điểm truy cập cho mã huấn luyện của chúng ta. Chúng ta sẽ thêm mã này trong bước tiếp theo.
Bước 3: Thêm mã huấn luyện mô hình
Trong trình chỉnh sửa Cloud Shell, hãy mở tệp train.py rồi sao chép mã bên dưới (mã này được điều chỉnh từ hướng dẫn trong tài liệu TensorFlow).
# This will be replaced with your bucket name after running the `sed` command in the tutorial
BUCKET = "BUCKET_NAME"
import numpy as np
import pandas as pd
import pathlib
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
print(tf.__version__)
"""## The Auto MPG dataset
The dataset is available from the [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/).
### Get the data
First download the dataset.
"""
"""Import it using pandas"""
dataset_path = "https://storage.googleapis.com/io-vertex-codelab/auto-mpg.csv"
dataset = pd.read_csv(dataset_path, na_values = "?")
dataset.tail()
"""### Clean the data
The dataset contains a few unknown values.
"""
dataset.isna().sum()
"""To keep this initial tutorial simple drop those rows."""
dataset = dataset.dropna()
"""The `"origin"` column is really categorical, not numeric. So convert that to a one-hot:"""
dataset['origin'] = dataset['origin'].map({1: 'USA', 2: 'Europe', 3: 'Japan'})
dataset = pd.get_dummies(dataset, prefix='', prefix_sep='')
dataset.tail()
"""### Split the data into train and test
Now split the dataset into a training set and a test set.
We will use the test set in the final evaluation of our model.
"""
train_dataset = dataset.sample(frac=0.8,random_state=0)
test_dataset = dataset.drop(train_dataset.index)
"""### Inspect the data
Have a quick look at the joint distribution of a few pairs of columns from the training set.
Also look at the overall statistics:
"""
train_stats = train_dataset.describe()
train_stats.pop("mpg")
train_stats = train_stats.transpose()
train_stats
"""### Split features from labels
Separate the target value, or "label", from the features. This label is the value that you will train the model to predict.
"""
train_labels = train_dataset.pop('mpg')
test_labels = test_dataset.pop('mpg')
"""### Normalize the data
Look again at the `train_stats` block above and note how different the ranges of each feature are.
It is good practice to normalize features that use different scales and ranges. Although the model *might* converge without feature normalization, it makes training more difficult, and it makes the resulting model dependent on the choice of units used in the input.
Note: Although we intentionally generate these statistics from only the training dataset, these statistics will also be used to normalize the test dataset. We need to do that to project the test dataset into the same distribution that the model has been trained on.
"""
def norm(x):
return (x - train_stats['mean']) / train_stats['std']
normed_train_data = norm(train_dataset)
normed_test_data = norm(test_dataset)
"""This normalized data is what we will use to train the model.
Caution: The statistics used to normalize the inputs here (mean and standard deviation) need to be applied to any other data that is fed to the model, along with the one-hot encoding that we did earlier. That includes the test set as well as live data when the model is used in production.
## The model
### Build the model
Let's build our model. Here, we'll use a `Sequential` model with two densely connected hidden layers, and an output layer that returns a single, continuous value. The model building steps are wrapped in a function, `build_model`, since we'll create a second model, later on.
"""
def build_model():
model = keras.Sequential([
layers.Dense(64, activation='relu', input_shape=[len(train_dataset.keys())]),
layers.Dense(64, activation='relu'),
layers.Dense(1)
])
optimizer = tf.keras.optimizers.RMSprop(0.001)
model.compile(loss='mse',
optimizer=optimizer,
metrics=['mae', 'mse'])
return model
model = build_model()
"""### Inspect the model
Use the `.summary` method to print a simple description of the model
"""
model.summary()
"""Now try out the model. Take a batch of `10` examples from the training data and call `model.predict` on it.
It seems to be working, and it produces a result of the expected shape and type.
### Train the model
Train the model for 1000 epochs, and record the training and validation accuracy in the `history` object.
Visualize the model's training progress using the stats stored in the `history` object.
This graph shows little improvement, or even degradation in the validation error after about 100 epochs. Let's update the `model.fit` call to automatically stop training when the validation score doesn't improve. We'll use an *EarlyStopping callback* that tests a training condition for every epoch. If a set amount of epochs elapses without showing improvement, then automatically stop the training.
You can learn more about this callback [here](https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/EarlyStopping).
"""
model = build_model()
EPOCHS = 1000
# The patience parameter is the amount of epochs to check for improvement
early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)
early_history = model.fit(normed_train_data, train_labels,
epochs=EPOCHS, validation_split = 0.2,
callbacks=[early_stop])
# Export model and save to GCS
model.save(BUCKET + '/mpg/model')
Sau khi bạn sao chép đoạn mã ở trên vào tệp mpg/trainer/train.py, hãy quay lại Terminal trong Cloud Shell và chạy lệnh sau để thêm tên nhóm của riêng bạn vào tệp:
sed -i "s|BUCKET_NAME|$BUCKET_NAME|g" trainer/train.py
Bước 4: Tạo và kiểm thử vùng chứa cục bộ
Từ Terminal, hãy chạy lệnh sau để xác định một biến có URI của hình ảnh vùng chứa trong Google Container Registry:
IMAGE_URI="gcr.io/$GOOGLE_CLOUD_PROJECT/mpg:v1"
Sau đó, hãy tạo vùng chứa bằng cách chạy lệnh sau từ gốc của thư mục mpg:
docker build ./ -t $IMAGE_URI
Sau khi bạn tạo vùng chứa, hãy đẩy vùng chứa đó vào Google Container Registry:
docker push $IMAGE_URI
Để xác minh rằng hình ảnh của bạn đã được chuyển đến Container Registry, bạn sẽ thấy nội dung tương tự như sau khi chuyển đến mục Container Registry của bảng điều khiển:

Sau khi đẩy vùng chứa lên Container Registry, chúng ta đã sẵn sàng bắt đầu một quy trình huấn luyện mô hình tuỳ chỉnh.
5. Chạy một quy trình huấn luyện trên Vertex AI
Vertex cung cấp cho bạn hai lựa chọn để huấn luyện mô hình:
- AutoML: Huấn luyện các mô hình chất lượng cao mà chỉ cần rất ít công sức và chuyên môn về học máy.
- Huấn luyện tuỳ chỉnh: Chạy các ứng dụng huấn luyện tuỳ chỉnh của bạn trên đám mây bằng cách sử dụng một trong các vùng chứa được tạo sẵn của Google Cloud hoặc sử dụng vùng chứa của riêng bạn.
Trong phòng thí nghiệm này, chúng ta sẽ sử dụng quy trình huấn luyện tuỳ chỉnh thông qua vùng chứa tuỳ chỉnh của riêng mình trên Google Container Registry. Để bắt đầu, hãy chuyển đến phần Huấn luyện trong phần Vertex của Cloud Console:

Bước 1: Bắt đầu công việc huấn luyện
Nhấp vào Tạo để nhập các tham số cho mô hình đã triển khai và công việc huấn luyện của bạn:
- Trong mục Tập dữ liệu, hãy chọn Không có tập dữ liệu được quản lý
- Sau đó, hãy chọn Khoá huấn luyện tuỳ chỉnh (nâng cao) làm phương pháp huấn luyện rồi nhấp vào Tiếp tục.
- Nhập
mpg(hoặc tên bất kỳ mà bạn muốn đặt cho mô hình) cho Tên mô hình - Nhấp vào Tiếp tục
Trong bước Cài đặt vùng chứa, hãy chọn Vùng chứa tuỳ chỉnh:

Trong hộp đầu tiên (Hình ảnh vùng chứa), hãy nhấp vào Duyệt qua rồi tìm vùng chứa bạn vừa chuyển đến Container Registry. Đoạn mã sẽ trông giống như sau:

Để trống các trường còn lại rồi nhấp vào Tiếp tục.
Chúng ta sẽ không sử dụng tính năng điều chỉnh siêu tham số trong hướng dẫn này, vì vậy, hãy bỏ đánh dấu hộp Bật tính năng điều chỉnh siêu tham số rồi nhấp vào Tiếp tục.
Trong phần Điện toán và giá, hãy giữ nguyên khu vực đã chọn và chọn n1-standard-4 làm loại máy của bạn:

Vì mô hình trong bản minh hoạ này huấn luyện nhanh chóng, nên chúng ta sẽ sử dụng một loại máy nhỏ hơn.
Trong bước Vùng chứa dự đoán, hãy chọn Không có vùng chứa dự đoán:

6. Triển khai một điểm cuối mô hình
Trong bước này, chúng ta sẽ tạo một điểm cuối cho mô hình đã huấn luyện. Chúng ta có thể sử dụng phương thức này để nhận kết quả dự đoán về mô hình thông qua Vertex AI API. Để làm được điều này, chúng tôi đã cung cấp một phiên bản của các thành phần mô hình được huấn luyện đã xuất trong một vùng chứa GCS công khai.
Trong một tổ chức, thường sẽ có một nhóm hoặc cá nhân chịu trách nhiệm xây dựng mô hình và một nhóm khác chịu trách nhiệm triển khai mô hình đó. Các bước mà chúng ta sẽ thực hiện ở đây sẽ cho bạn thấy cách lấy một mô hình đã được huấn luyện và triển khai mô hình đó để dự đoán.
Ở đây, chúng ta sẽ sử dụng Vertex AI SDK để tạo một mô hình, triển khai mô hình đó đến một điểm cuối và nhận được một dự đoán.
Bước 1: Cài đặt Vertex SDK
Trong cửa sổ dòng lệnh Cloud Shell, hãy chạy lệnh sau để cài đặt Vertex AI SDK:
pip3 install google-cloud-aiplatform --upgrade --user
Chúng ta có thể sử dụng SDK này để tương tác với nhiều phần khác nhau của Vertex.
Bước 2: Tạo mô hình và triển khai điểm cuối
Tiếp theo, chúng ta sẽ tạo một tệp Python và dùng SDK để tạo một tài nguyên mô hình rồi triển khai tài nguyên đó đến một điểm cuối. Trong trình chỉnh sửa tệp trong Cloud Shell, hãy chọn Tệp rồi chọn Tệp mới:

Đặt tên deploy.py cho tệp. Mở tệp này trong trình chỉnh sửa rồi sao chép mã sau:
from google.cloud import aiplatform
# Create a model resource from public model assets
model = aiplatform.Model.upload(
display_name="mpg-imported",
artifact_uri="gs://io-vertex-codelab/mpg-model/",
serving_container_image_uri="gcr.io/cloud-aiplatform/prediction/tf2-cpu.2-3:latest"
)
# Deploy the above model to an endpoint
endpoint = model.deploy(
machine_type="n1-standard-4"
)
Tiếp theo, hãy quay lại Terminal trong Cloud Shell, cd quay lại thư mục gốc và chạy tập lệnh Python mà bạn vừa tạo:
cd ..
python3 deploy.py | tee deploy-output.txt
Bạn sẽ thấy các nội dung cập nhật được ghi vào nhật ký trên thiết bị đầu cuối khi các tài nguyên đang được tạo. Quá trình này sẽ mất từ 10 đến 15 phút để chạy. Để đảm bảo mô hình hoạt động đúng cách, hãy chuyển đến mục Mô hình của bảng điều khiển trong Vertex AI:

Nhấp vào mgp-imported và bạn sẽ thấy điểm cuối cho mô hình đó đang được tạo:

Trong Cloud Shell Terminal, bạn sẽ thấy một nhật ký tương tự như nhật ký sau khi quá trình triển khai điểm cuối hoàn tất:
Endpoint model deployed. Resource name: projects/your-project-id/locations/us-central1/endpoints/your-endpoint-id
Bạn sẽ sử dụng thông tin này trong bước tiếp theo để nhận được thông tin dự đoán về điểm cuối đã triển khai.
Bước 3: Nhận thông tin dự đoán trên điểm cuối đã triển khai
Trong trình chỉnh sửa Cloud Shell, hãy tạo một tệp mới có tên là predict.py:

Mở predict.py rồi dán đoạn mã sau vào:
from google.cloud import aiplatform
endpoint = aiplatform.Endpoint(
endpoint_name="ENDPOINT_STRING"
)
# A test example we'll send to our model for prediction
test_mpg = [1.4838871833555929,
1.8659883497083019,
2.234620276849616,
1.0187816540094903,
-2.530890710602246,
-1.6046416850441676,
-0.4651483719733302,
-0.4952254087173721,
0.7746763768735953]
response = endpoint.predict([test_mpg])
print('API response: ', response)
print('Predicted MPG: ', response.predictions[0][0])
Tiếp theo, hãy quay lại Terminal và nhập nội dung sau để thay thế ENDPOINT_STRING trong tệp dự đoán bằng điểm cuối của riêng bạn:
ENDPOINT=$(cat deploy-output.txt | sed -nre 's:.*Resource name\: (.*):\1:p' | tail -1)
sed -i "s|ENDPOINT_STRING|$ENDPOINT|g" predict.py
Giờ là lúc chạy tệp predict.py để nhận thông tin dự đoán từ điểm cuối mô hình đã triển khai của chúng ta:
python3 predict.py
Bạn sẽ thấy phản hồi của API được ghi lại, cùng với hiệu suất nhiên liệu dự đoán cho dự đoán kiểm thử của chúng tôi.
🎉 Xin chúc mừng! 🎉
Bạn đã tìm hiểu cách sử dụng Vertex AI để:
- Huấn luyện một mô hình bằng cách cung cấp mã huấn luyện trong một vùng chứa tuỳ chỉnh. Bạn đã sử dụng một mô hình TensorFlow trong ví dụ này, nhưng bạn có thể huấn luyện một mô hình được xây dựng bằng bất kỳ khung nào bằng cách sử dụng các vùng chứa tuỳ chỉnh.
- Triển khai mô hình TensorFlow bằng vùng chứa được tạo sẵn trong cùng quy trình mà bạn đã dùng để huấn luyện.
- Tạo một điểm cuối mô hình và tạo một dự đoán.
Để 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ếu bạn muốn xem kết quả của quy trình huấn luyện mà bạn đã bắt đầu ở Bước 5, hãy chuyển đến phần huấn luyện của bảng điều khiển Vertex.
7. Dọn dẹp
Để xoá điểm cuối mà bạn đã triển khai, hãy chuyển đến mục Endpoints (Điểm cuối) trong bảng điều khiển Vertex rồi nhấp vào biểu tượng xoá:

Để xoá Thùng lưu trữ, hãy sử dụng trình đơn Điều hướng trong Cloud Console, duyệt tìm Bộ nhớ, chọn thùng của bạn rồi nhấp vào Xoá:
