Các mô hình tạo nguyên mẫu trong Máy tính xách tay nền tảng AI

1. Tổng quan

Phòng thí nghiệm này sẽ hướng dẫn bạn sử dụng nhiều công cụ trong Sổ tay nền tảng AI để khám phá dữ liệu và xây dựng nguyên mẫu các mô hình học máy.

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

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

  • Tạo và tuỳ chỉnh một thực thể của Sổ tay trên nền tảng AI
  • Theo dõi mã sổ tay bằng git, được tích hợp trực tiếp vào Sổ tay nền tảng AI
  • Sử dụng công cụ What-If trong sổ tay của bạn

Tổng chi phí để chạy phòng thí nghiệm này trên Google Cloud là khoảng 1 đô la. Bạn có thể xem toàn bộ thông tin chi tiết về giá của Sổ tay dựa trên nền tảng AI tại đây.

2. Tạo một thực thể Sổ tay trên nền tảng AI

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 2: 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ạn sẽ cần có gói này để tạo thực thể sổ tay.

Bước 3: Tạo một thực thể sổ tay

Chuyển đến mục Sổ tay trên nền tảng AI trên Cloud Console rồi nhấp vào Phiên bản mới. Sau đó, hãy chọn loại phiên bản TensorFlow 2 Enterprise mới nhất không có GPU:

9f2bb4dec1ba4f4f.png.

Đặt tên cho thực thể hoặc sử dụng giá trị mặc định. Sau đó, chúng ta sẽ khám phá các cách tuỳ chỉnh. Nhấp vào nút Tuỳ chỉnh:

63be602ba45ca7c9.png.

AI Platform Notebook có nhiều lựa chọn tuỳ chỉnh, trong đó có: khu vực triển khai thực thể của bạn, loại hình ảnh, kích thước máy, số lượng GPU, v.v. Chúng ta sẽ sử dụng giá trị mặc định cho khu vực và môi trường. Đối với cấu hình máy, chúng tôi sẽ sử dụng máy n1-standard-8:

27101d232f765a17.pngS

Chúng ta sẽ không thêm GPU và sẽ sử dụng các giá trị mặc định cho ổ đĩa khởi động, kết nối mạng và quyền. Chọn Create (Tạo) để tạo phiên bản. Quá trình này sẽ mất vài phút để hoàn tất.

Sau khi tạo phiên bản, bạn sẽ thấy dấu kiểm màu xanh lục bên cạnh phiên bản đó trong giao diện người dùng của Sổ tay. Chọn Open JupyterLab để mở phiên bản của bạn và bắt đầu tạo nguyên mẫu:

3598f414887ea9a8.png.

Khi mở thực thể này, hãy tạo một thư mục mới có tên là lớp học lập trình. Đây là thư mục mà chúng ta sẽ làm việc trong suốt phòng thí nghiệm này:

c16a821546acd92.png

Nhấp vào thư mục lớp học lập trình mới tạo bằng cách nhấp đúp vào thư mục đó, sau đó chọn Sổ tay Python 3 trên trình chạy:

4390b1614ae8eae4.png.

Đổi tên sổ tay thành demo.ipynb hoặc bất kỳ tên nào mà bạn muốn đặt.

Bước 4: Nhập các gói Python

Tạo một ô mới trong sổ tay rồi nhập các thư viện mà chúng ta sẽ sử dụng trong lớp học lập trình này:

import pandas as pd
import tensorflow as tf
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense

import numpy as np
import json

from sklearn.model_selection import train_test_split
from sklearn.utils import shuffle
from google.cloud import bigquery
from witwidget.notebook.visualization import WitWidget, WitConfigBuilder

3. Kết nối dữ liệu BigQuery với sổ tay của bạn

BigQuery, kho dữ liệu lớn của Google Cloud, đã cung cấp công khai nhiều tập dữ liệu để bạn khám phá. Sổ tay trên nền tảng AI hỗ trợ tích hợp trực tiếp với BigQuery mà không cần xác thực.

Đối với phòng thí nghiệm này, chúng tôi sẽ sử dụng tập dữ liệu về sinh vật tự nhiên. Tệp này chứa dữ liệu về hầu hết mọi trường hợp sinh ở Hoa Kỳ trong khoảng thời gian 40 năm, bao gồm cả cân nặng khi sinh của trẻ và thông tin nhân khẩu học về cha mẹ của em bé. Chúng tôi sẽ sử dụng một số tính năng để dự đoán cân nặng khi sinh của em bé.

Bước 1: Tải dữ liệu BigQuery xuống sổ tay của chúng tôi

Chúng tôi sẽ sử dụng thư viện ứng dụng Python cho BigQuery để tải dữ liệu xuống Pandas DataFrame. Tập dữ liệu ban đầu là 21GB và chứa 123 triệu hàng. Để đơn giản hoá,chúng tôi sẽ chỉ sử dụng 10.000 hàng trong tập dữ liệu.

Tạo truy vấn và xem trước DataFrame kết quả bằng đoạn mã sau. Ở đây, chúng ta sẽ nhận được 4 đối tượng trong tập dữ liệu ban đầu, cùng với cân nặng của em bé (dữ liệu mà mô hình của chúng ta sẽ dự đoán). Tập dữ liệu đã tồn tại từ nhiều năm trước nhưng đối với mô hình này, chúng tôi sẽ chỉ sử dụng dữ liệu từ sau năm 2000:

query="""
SELECT
  weight_pounds,
  is_male,
  mother_age,
  plurality,
  gestation_weeks
FROM
  publicdata.samples.natality
WHERE year > 2000
LIMIT 10000
"""
df = bigquery.Client().query(query).to_dataframe()
df.head()

Để nhận bản tóm tắt các đối tượng số trong tập dữ liệu của chúng tôi, hãy chạy:

df.describe()

Điều này cho biết giá trị trung bình, độ lệch chuẩn, giá trị tối thiểu và các chỉ số khác cho các cột số của chúng tôi. Cuối cùng, hãy lấy một số dữ liệu trên cột boolean cho biết giới tính của em bé. Chúng ta có thể thực hiện việc này bằng phương thức value_counts của Pandas:

df['is_male'].value_counts()

Có vẻ như tập dữ liệu có tỷ lệ cân bằng gần như 50/50 theo giới tính.

Bước 2: Chuẩn bị tập dữ liệu để huấn luyện

Bây giờ, chúng ta đã tải tập dữ liệu xuống sổ tay dưới dạng Pandas DataFrame, chúng ta có thể tiến hành một số bước xử lý trước và tách tập dữ liệu đó thành các tập huấn luyện và kiểm thử.

Trước tiên, hãy thả các hàng có giá trị rỗng trong tập dữ liệu rồi xáo trộn dữ liệu:

df = df.dropna()
df = shuffle(df, random_state=2)

Tiếp theo, hãy trích xuất cột nhãn vào một biến riêng và tạo một DataFrame chỉ bằng các tính năng của chúng ta. Vì is_male là một boolean, nên chúng ta sẽ chuyển đổi loại này thành một số nguyên để tất cả dữ liệu đầu vào cho mô hình đều là giá trị số:

labels = df['weight_pounds']
data = df.drop(columns=['weight_pounds'])
data['is_male'] = data['is_male'].astype(int)

Bây giờ, nếu xem trước tập dữ liệu của chúng tôi bằng cách chạy data.head(), bạn sẽ thấy 4 tính năng mà chúng tôi sẽ dùng để huấn luyện.

4. Khởi chạy git

AI Platform Notebooks được tích hợp trực tiếp với git để bạn có thể quản lý phiên bản ngay trong môi trường sổ tay của mình. Tính năng này hỗ trợ việc cam kết mã ngay trong giao diện người dùng của sổ tay hoặc thông qua Thiết bị đầu cuối có trong JupyterLab. Trong phần này, chúng ta sẽ khởi chạy một kho lưu trữ git trong sổ tay và thực hiện cam kết đầu tiên thông qua giao diện người dùng.

Bước 1: Khởi chạy kho lưu trữ git

Trong thư mục của lớp học lập trình, hãy chọn Git rồi chọn Init trên thanh trình đơn trên cùng trong JupyterLab:

d9f1729358f18e58.png

Khi hệ thống hỏi bạn có muốn đặt thư mục này làm Git Repo hay không, hãy chọn Yes (Có). Sau đó chọn biểu tượng Git trên thanh bên trái để xem trạng thái của các tệp và cam kết của bạn:

1648d6828f11a6db.pngS

Bước 2: Thực hiện cam kết đầu tiên

Trong giao diện người dùng này, bạn có thể thêm tệp vào một cam kết, xem những điểm khác biệt về tệp (chúng ta sẽ nói về điều này sau) và thực hiện các thay đổi của bạn. Hãy bắt đầu bằng cách xác nhận tệp sổ tay mà chúng ta vừa thêm.

Đánh dấu vào hộp bên cạnh tệp sổ tay demo.ipynb để đặt tệp đó vào giai đoạn xác nhận (bạn có thể bỏ qua thư mục .ipynb_checkpoints/). Nhập thông báo cam kết vào hộp văn bản và sau đó nhấp vào dấu kiểm để thực hiện các thay đổi của bạn:

fe7366522a3a268f.png

Nhập tên và email của bạn khi được nhắc. Sau đó, quay lại thẻ Nhật ký để xem cam kết đầu tiên của bạn:

d03567c3592afb77.png

Xin lưu ý rằng ảnh chụp màn hình có thể không khớp chính xác với giao diện người dùng của bạn do các bản cập nhật kể từ khi phòng thí nghiệm này ra mắt.

5. Xây dựng và huấn luyện mô hình TensorFlow

Chúng tôi sẽ sử dụng tập dữ liệu về khả năng sinh sản của BigQuery mà chúng tôi đã tải xuống sổ tay để xây dựng một mô hình dự đoán cân nặng của em bé. Trong phòng thí nghiệm này, chúng ta sẽ tập trung vào công cụ của sổ tay thay vì độ chính xác của mô hình.

Bước 1: Chia dữ liệu thành các nhóm thử nghiệm và huấn luyện

Chúng ta sẽ sử dụng tiện ích Scikit Learn train_test_split để phân chia dữ liệu trước khi xây dựng mô hình:

x,y = data,labels
x_train,x_test,y_train,y_test = train_test_split(x,y)

Bây giờ, chúng ta đã sẵn sàng xây dựng mô hình TensorFlow!

Bước 2: Xây dựng và huấn luyện mô hình TensorFlow

Chúng ta sẽ xây dựng mô hình này bằng cách sử dụng API mô hình Sequential tf.keras, cho phép xác định mô hình dưới dạng một ngăn xếp các lớp. Tất cả mã chúng ta cần để xây dựng mô hình đều có ở đây:

model = Sequential([
    Dense(64, activation='relu', input_shape=(len(x_train.iloc[0]),)),
    Dense(32, activation='relu'),
    Dense(1)]
)

Sau đó, chúng ta sẽ biên dịch mô hình để có thể huấn luyện mô hình đó. Tại đây, chúng ta sẽ chọn trình tối ưu hoá, hàm mất dữ liệu và số liệu của mô hình mà chúng tôi muốn mô hình ghi nhật ký trong quá trình huấn luyện. Vì đây là mô hình hồi quy (dự đoán giá trị bằng số), nên chúng tôi sử dụng sai số bình phương trung bình thay vì độ chính xác làm chỉ số:

model.compile(optimizer=tf.keras.optimizers.RMSprop(),
              loss=tf.keras.losses.MeanSquaredError(),
              metrics=['mae', 'mse'])

Bạn có thể sử dụng hàm model.summary() tiện dụng của Keras để xem hình dạng và số lượng tham số có thể huấn luyện của mô hình tại mỗi lớp.

Bây giờ, chúng ta đã sẵn sàng huấn luyện mô hình của mình. Tất cả những gì chúng ta cần làm là gọi phương thức fit(), truyền vào đó dữ liệu huấn luyện và nhãn. Ở đây, chúng ta sẽ sử dụng thông số phần xác thực không bắt buộc. Tham số này sẽ lưu giữ một phần dữ liệu huấn luyện để xác thực mô hình ở mỗi bước. Lý tưởng nhất là bạn muốn thấy sự sụt giảm trong quá trình huấn luyện và xác thực cả hai đều giảm. Nhưng hãy nhớ rằng trong ví dụ này, chúng ta tập trung nhiều hơn vào công cụ về mô hình và sổ tay hơn là chất lượng mô hình:

model.fit(x_train, y_train, epochs=10, validation_split=0.1)

Bước 3: Tạo thông tin dự đoán về các ví dụ kiểm thử

Để xem hiệu suất của mô hình của chúng tôi, hãy tạo một số dự đoán thử nghiệm cho 10 ví dụ đầu tiên từ tập dữ liệu thử nghiệm của chúng tôi.

num_examples = 10
predictions = model.predict(x_test[:num_examples])

Sau đó, chúng tôi sẽ lặp lại các dự đoán của mô hình, so sánh chúng với giá trị thực tế:

for i in range(num_examples):
    print('Predicted val: ', predictions[i][0])
    print('Actual val: ',y_test.iloc[i])
    print()

Bước 4: Sử dụng git diff và áp dụng các thay đổi của bạn

Sau khi thực hiện một số thay đổi đối với sổ tay, bạn có thể dùng thử tính năng git diff trong giao diện người dùng git của Notebooks. Giờ đây, sổ tay demo.ipynb sẽ nằm trong phần "Đã thay đổi" trong giao diện người dùng. Di chuột qua tên tệp rồi nhấp vào biểu tượng điểm khác biệt:

a370facb3632fb32.png

Bằng cách đó, bạn sẽ có thể thấy sự khác biệt trong các thay đổi của mình, như sau:

461c502bd3ab910e.pngS

Lần này, chúng ta sẽ thực hiện các thay đổi thông qua dòng lệnh bằng Terminal. Trên trình đơn Git trong thanh trình đơn trên cùng của JupyterLab, hãy chọn Git Command in Terminal. Nếu mở thẻ git của thanh bên trái trong khi chạy các lệnh bên dưới, thì bạn có thể thấy những thay đổi được phản ánh trong giao diện người dùng git.

Trong thực thể thiết bị đầu cuối mới, hãy chạy lệnh sau để đặt tệp sổ tay của bạn vào giai đoạn xác nhận (commit):

git add demo.ipynb

Sau đó, chạy mã sau để xác nhận các thay đổi của bạn (bạn có thể sử dụng bất kỳ thông báo cam kết nào mà bạn muốn):

git commit -m "Build and train TF model"

Sau đó, bạn sẽ thấy cam kết mới nhất của mình trong nhật ký:

a4b44045e97cb7a7.png

6. Sử dụng công cụ What-If ngay trên sổ tay của bạn

Công cụ What-If là một giao diện trực quan có tính tương tác được thiết kế để giúp bạn trực quan hoá các tập dữ liệu của mình và hiểu rõ hơn về kết quả của các mô hình học máy. Đây là một công cụ nguồn mở do nhóm PAIR của Google tạo ra. Mặc dù hoạt động với mọi loại mô hình, nhưng nền tảng này có một số tính năng được thiết kế riêng cho Cloud AI Platform.

Công cụ What-If được cài đặt sẵn trong các phiên bản của Máy tính xách tay Cloud AI Platform có TensorFlow. Ở đây, chúng ta sẽ sử dụng lớp này để xem mô hình của mình đang hoạt động như thế nào nói chung và kiểm tra hành vi của mô hình đó trên các điểm dữ liệu từ tập hợp kiểm thử của chúng ta.

Bước 1: Chuẩn bị dữ liệu cho công cụ What-If

Để khai thác tối đa Công cụ What-If, chúng ta sẽ gửi cho công cụ này ví dụ từ tập hợp thử nghiệm cùng với nhãn thực tế cho các ví dụ đó (y_test). Bằng cách đó, chúng tôi có thể so sánh những gì mô hình của chúng tôi dự đoán với thực tế. Chạy dòng mã bên dưới để tạo một DataFrame mới bằng các ví dụ kiểm thử và nhãn của chúng:

wit_data = pd.concat([x_test, y_test], axis=1)

Trong phòng thí nghiệm này, chúng ta sẽ kết nối Công cụ What-If với mô hình mà chúng ta vừa huấn luyện trong sổ tay. Để làm được việc đó, chúng ta cần viết một hàm mà công cụ sẽ sử dụng để chạy các điểm dữ liệu kiểm thử này cho mô hình của chúng ta:

def custom_predict(examples_to_infer):
    preds = model.predict(examples_to_infer)
    return preds

Bước 2: Tạo thực thể cho công cụ What-If

Chúng ta sẽ tạo thực thể cho Công cụ What-If bằng cách truyền cho công cụ đó 500 ví dụ từ tập dữ liệu thử nghiệm nối liền + nhãn thông tin thực tế mà chúng ta vừa tạo. Chúng ta tạo một thực thể của WitConfigBuilder để thiết lập công cụ, truyền dữ liệu của công cụ này, hàm dự đoán tuỳ chỉnh mà chúng ta đã xác định ở trên, cùng với mục tiêu (điều chúng ta đang dự đoán) và loại mô hình:

config_builder = (WitConfigBuilder(wit_data[:500].values.tolist(), data.columns.tolist() + ['weight_pounds'])
  .set_custom_predict_fn(custom_predict)
  .set_target_feature('weight_pounds')
  .set_model_type('regression'))
WitWidget(config_builder, height=800)

Bạn sẽ thấy nội dung tương tự như sau khi Công cụ What-If tải:

fcdc1cb7ed8e364e.png

Trên trục x, bạn có thể thấy các điểm dữ liệu thử nghiệm được trải đều theo giá trị trọng số dự đoán của mô hình (weight_pounds).

Bước 3: Khám phá hành vi của mô hình bằng công cụ What-If

Có rất nhiều điều thú vị mà bạn có thể thực hiện với công cụ What-If. Chúng ta sẽ chỉ khám phá một vài thành phần trong số đó ở đây. Trước tiên, hãy cùng tìm hiểu trình chỉnh sửa điểm dữ liệu. Bạn có thể chọn bất kỳ điểm dữ liệu nào để xem các tính năng của nó và thay đổi giá trị của tính năng. Bắt đầu bằng cách nhấp vào một điểm dữ liệu bất kỳ:

2ba944f16240ff4b.png.

Ở bên trái, bạn sẽ thấy các giá trị tính năng cho điểm dữ liệu mà bạn đã chọn. Bạn cũng có thể so sánh nhãn thông tin thực tế của điểm dữ liệu đó với giá trị do mô hình dự đoán. Trong thanh bên trái, bạn cũng có thể thay đổi các giá trị tính năng và chạy lại dự đoán mô hình để xem tác động của thay đổi này đối với mô hình của bạn. Ví dụ: chúng ta có thể thay đổi gestation_weeks thành 30 cho điểm dữ liệu này bằng cách nhấp đúp vào thông tin dự đoán sẽ chạy lại:

aaa6a937c66758cf.png

Khi sử dụng trình đơn thả xuống trong mục biểu đồ của Công cụ What-If, bạn có thể tạo tất cả các loại hình ảnh tuỳ chỉnh. Ví dụ: đây là biểu đồ có các mô hình cân nặng dự đoán trên trục x, tuổi của người mẹ trên trục y và các điểm được tô màu theo lỗi suy luận (tối hơn có nghĩa là chênh lệch cao hơn giữa cân nặng dự đoán và cân nặng thực tế). Ở đây, giao diện có vẻ như khi trọng số giảm, lỗi của mô hình sẽ tăng nhẹ:

cd2ce527a9044e7b.png

Tiếp theo, hãy đánh dấu vào nút Biểu đồ phụ thuộc một phần ở bên trái. Biểu đồ này cho biết cách mỗi tính năng ảnh hưởng đến thông tin dự đoán của mô hình. Ví dụ: khi thời gian mang thai tăng lên, cân nặng dự đoán của em bé trong mô hình của chúng tôi cũng tăng lên:

1fec2a64fb03f432.pngS

Để có thêm ý tưởng khám phá bằng Công cụ What-If, hãy xem các đường liên kết ở đầu phần này.

7. Không bắt buộc: kết nối kho lưu trữ git cục bộ với GitHub

Cuối cùng, chúng ta sẽ tìm hiểu cách kết nối kho lưu trữ git trong thực thể máy tính xách tay với một kho lưu trữ trong tài khoản GitHub. Nếu muốn thực hiện bước này, bạn cần có tài khoản GitHub.

Bước 1: Tạo một kho lưu trữ mới trên GitHub

Trong tài khoản GitHub, hãy tạo một kho lưu trữ mới. Đặt tên và mô tả cho kho lưu trữ, quyết định xem bạn có muốn công khai kho lưu trữ hay không rồi chọn Tạo kho lưu trữ (bạn không cần khởi chạy bằng tệp README). Trên trang tiếp theo, bạn sẽ làm theo hướng dẫn đẩy một kho lưu trữ hiện có từ dòng lệnh.

Mở cửa sổ dòng lệnh và thêm kho lưu trữ mới làm điều khiển từ xa. Thay thế username trong URL kho lưu trữ bên dưới bằng tên người dùng GitHub và your-repo bằng tên của tên người dùng bạn vừa tạo:

git remote add origin git@github.com:username/your-repo.git

Bước 2: Xác thực với GitHub trong thực thể sổ tay

Tiếp theo, bạn cần xác thực với GitHub từ trong thực thể sổ tay của mình. Quy trình này thay đổi tuỳ thuộc vào việc bạn có bật tính năng xác thực hai yếu tố trên GitHub hay không.

Nếu bạn không biết nên bắt đầu từ đâu, hãy làm theo các bước trong tài liệu GitHub để tạo khoá SSH rồi thêm khoá mới vào GitHub.

Bước 3: Đảm bảo bạn đã liên kết chính xác kho lưu trữ GitHub của mình

Để đảm bảo bạn đã thiết lập đúng cách, hãy chạy git remote -v trong cửa sổ dòng lệnh. Bạn sẽ thấy kho lưu trữ mới của mình được liệt kê dưới dạng điều khiển từ xa. Sau khi thấy URL của kho lưu trữ GitHub và bạn đã xác thực đến GitHub từ sổ tay của mình, bạn đã sẵn sàng để đẩy trực tiếp sang GitHub từ thực thể sổ tay của mình.

Để đồng bộ hoá kho lưu trữ git sổ tay cục bộ của bạn với kho lưu trữ GitHub mới tạo, hãy nhấp vào nút tải lên đám mây ở đầu thanh bên Git:

eec001587bb9cfb1.png

Làm mới kho lưu trữ GitHub và bạn sẽ thấy mã sổ tay cùng với các thay đổi trước đó! Nếu người khác có quyền truy cập vào kho lưu trữ GitHub và bạn muốn kéo các thay đổi mới nhất xuống sổ tay của mình, hãy nhấp vào biểu tượng tải xuống trên đám mây để đồng bộ hoá các thay đổi đó.

Trên thẻ History (Nhật ký) của giao diện người dùng git Notebooks, bạn có thể xem các thay đổi cục bộ của mình có được đồng bộ hoá với GitHub hay không. Trong ví dụ này, origin/master tương ứng với kho lưu trữ của chúng ta trên GitHub:

2c3d1eb7cf95c24e.png.

Mỗi khi thực hiện thay đổi mới, bạn chỉ cần nhấp lại vào nút tải lên đám mây để đẩy những thay đổi đó vào kho lưu trữ GitHub.

8. Xin chúc mừng!

Bạn đã làm được rất nhiều điều trong phòng thí nghiệm này 👏👏👏

Tóm lại, bạn đã tìm hiểu cách:

  • Tạo một bản sao tuỳ chỉnh của Sổ tay nền tảng AI
  • Hãy khởi chạy một kho lưu trữ git cục bộ trong trường hợp đó, thêm các thay đổi thông qua giao diện người dùng git hoặc dòng lệnh, xem git diffs trong giao diện người dùng git của Notebook
  • Tạo và huấn luyện mô hình TensorFlow 2 đơn giản
  • Sử dụng công cụ What-If trong thực thể Sổ tay
  • Kết nối kho lưu trữ git của Notebook với một kho lưu trữ bên ngoài trên GitHub

9. Dọn dẹp

Nếu muốn tiếp tục sử dụng sổ tay này, bạn nên tắt sổ tay khi không sử dụng. Trên giao diện người dùng của Sổ tay trong Cloud Console, hãy chọn sổ tay đó rồi chọn Dừng:

ba727f9a0aefbc30.png

Nếu muốn xoá tất cả tài nguyên bạn đã tạo trong phòng thí nghiệm này, bạn chỉ cần xoá phiên bản của sổ tay thay vì dừng phiên bản đó.

Bằng cách sử dụng trình đơn Điều hướng trong Cloud Console, hãy duyệt đến Bộ nhớ và xoá cả hai bộ chứa bạn đã tạo để lưu trữ các thành phần mô hình.