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

Trong lớp học này, bạn sẽ được hướng dẫn sử dụng nhiều công cụ trong AI Platform Notebooks để khám phá dữ liệu và tạo nguyên mẫu cho 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ể AI Platform Notebooks
  • Theo dõi mã sổ tay bằng git, được tích hợp trực tiếp vào Sổ tay trên Nền tảng AI
  • Sử dụng Công cụ giả định trong sổ tay

Tổng chi phí để chạy lớp học này trên Google Cloud là khoảng 1 USD. Bạn có thể xem toàn bộ thông tin chi tiết về giá của Máy tính xách tay 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 có một dự án trê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 dự án, hãy làm theo hướng dẫn tại đây.

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

Chuyển đến Compute Engine rồi chọn Bật nếu bạn chưa bật. Bạn sẽ cần thông tin này để tạo thực thể sổ tay.

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

Chuyển đến phần AI Platform Notebooks (Sổ tay AI Platform) của Cloud Console rồi nhấp vào New Instance (Thực thể mới). Sau đó, hãy chọn loại thực thể 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 tên mặc định. Sau đó, chúng ta sẽ khám phá các tuỳ chọn tuỳ chỉnh. Nhấp vào nút Tuỳ chỉnh:

63be602ba45ca7c9.png

Sổ tay AI Platform có nhiều tuỳ chọn tuỳ chỉnh, bao gồm: khu vực triển khai thực thể, loại hình ảnh, kích thước máy, số lượng GPU, v.v. Chúng ta sẽ sử dụng các 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 ta sẽ sử dụng máy n1-standard-8:

27101d232f765a17.png

Chúng ta sẽ không thêm GPU nào 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 Tạo để tạo thực thể. Quá trình này sẽ mất vài phút thì mới hoàn tất.

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

3598f414887ea9a8.png

Khi mở thực thể, 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 lớp học lập trình này:

c16a821546acd92.png

Nhấp đúp vào thư mục lớp học lập trình mới tạo, rồi 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 bạn muốn đặt.

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

Tạo một ô mới trong sổ tay và 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

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 AI Platform hỗ trợ tích hợp trực tiếp với BigQuery mà không cần xác thực.

Trong lớp học lập trình này, chúng ta sẽ sử dụng dữ liệu tổng hợp về số ca sinh. Cơ sở dữ liệu này chứa thông tin về gần như mọi ca sinh ở Hoa Kỳ trong khoảng thời gian 40 năm, bao gồm cả cân nặng lúc sinh của trẻ và thông tin nhân khẩu học về cha mẹ của trẻ. Chúng ta sẽ sử dụng một tập hợp con các tính năng để dự đoán trọng lượng lúc sinh của trẻ sơ sinh.

Bước 1: Tải dữ liệu BigQuery xuống sổ tay

Chúng ta sẽ sử dụng thư viện ứng dụng Python cho BigQuery để tải dữ liệu xuống một DataFrame Pandas. Tập dữ liệu ban đầu có dung lượng 21 GB và chứa 123 triệu hàng. Để đơn giản,chúng ta 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 thu được bằng mã sau. Ở đây, chúng ta sẽ lấy 4 đặc điểm từ tập dữ liệu ban đầu, cùng với trọng lượng của em bé (đây là điều mà mô hình của chúng ta sẽ dự đoán). Tập dữ liệu này có từ nhiều năm trước, nhưng đối với mô hình này, chúng ta 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()

Để xem thông tin tóm tắt về các đặc điểm dạng số trong tập dữ liệu của chúng ta, hãy chạy:

df.describe()

Biể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ố. 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 này gần như cân bằng 50/50 theo giới tính.

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

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

Trước tiên, hãy xoá các hàng có giá trị rỗng khỏi tập dữ liệu và 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 biệt và tạo một DataFrame chỉ chứa các đặc điểm của chúng ta. Vì is_male là một boolean, nên chúng ta sẽ chuyển đổi nó thành một số nguyên để tất cả dữ liệu đầu vào cho mô hình đều là 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 ta bằng cách chạy data.head(), bạn sẽ thấy 4 đặc điểm mà chúng ta sẽ sử dụng để huấn luyện.

4. Khởi chạy git

Máy tính xách tay Nền tảng AI tích hợp trực tiếp với git để bạn có thể kiểm soát phiên bản ngay trong môi trường máy tính xách tay. Tính năng này hỗ trợ việc xác nhận mã ngay trong giao diện người dùng của sổ tay hoặc thông qua Terminal 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 thay đổi đầu tiên thông qua giao diện người dùng.

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

Trong thư mục lớp học lập trình, hãy chọn Git rồi chọn Init (Khởi tạo) trên thanh trình đơn trên cùng trong JupyterLab:

d9f1729358f18e58.png

Khi được hỏi liệu bạn có muốn đặt thư mục này làm Kho lưu trữ Git hay không, hãy chọn Yes (Có). Sau đó, hãy 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à thay đổi:

1648d6828f11a6db.png

Bước 2: Thực hiện thay đổi đầ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 thay đổi, xem sự khác biệt về tệp (chúng ta sẽ xem xét điều này sau) và thực hiện thay đổi. 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 để đưa tệp đó vào giai đoạn thực hiện thay đổi (bạn có thể bỏ qua thư mục .ipynb_checkpoints/). Nhập thông báo xác nhận vào hộp văn bản, sau đó nhấp vào dấu kiểm để xác nhận các thay đổi:

fe7366522a3a268f.png

Nhập tên và email của bạn khi được nhắc. Sau đó, hãy quay lại thẻ History (Nhật ký) để xem thay đổi đầu tiê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 lớp học này được xuất bản.

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

Chúng ta sẽ sử dụng tập dữ liệu về tỷ lệ sinh của BigQuery mà chúng ta đã tải xuống sổ tay để xây dựng một mô hình dự đoán trọng lượng của trẻ sơ sinh. Trong lớp học lập trình này, chúng ta sẽ tập trung vào công cụ cho sổ tay, thay vì độ chính xác của chính mô hình.

Bước 1: Phân chia dữ liệu thành tập huấn luyện và tập kiểm thử

Chúng ta sẽ sử dụng tiện ích train_test_split của Scikit Learn để phân tách dữ liệu trước khi tạo 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 tạo 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 API mô hình tf.keras Sequential. API này cho phép chúng ta 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 để tạo mô hình đều có tại đâ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 đó. Ở đây, chúng ta sẽ chọn trình tối ưu hoá, hàm tổn thất và các chỉ số mà chúng ta muốn mô hình ghi lại trong quá trình huấn luyện. Vì đây là mô hình hồi quy (dự đoán giá trị số), nên chúng ta sẽ sử dụng sai số trung bình vuông 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 lợi 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 ở mỗi lớp.

Bây giờ, chúng ta đã sẵn sàng huấn luyện mô hình. Tất cả những gì chúng ta cần làm là gọi phương thức fit(), truyền dữ liệu huấn luyện và nhãn vào phương thức đó. Ở đây, chúng ta sẽ sử dụng thông số validation_split (không bắt buộc). Thông số này sẽ 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 cả tổn thất trong quá trình huấn luyện và xác thực đề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ụ mô hình và sổ tay thay vì chất lượng mô hình:

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

Bước 3: Tạo dự đoán trên các ví dụ kiểm thử

Để xem mô hình của chúng ta đang hoạt động như thế nào, hãy tạo một số dự đoán thử nghiệm trên 10 ví dụ đầu tiên trong tập dữ liệu thử nghiệm.

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

Sau đó, chúng ta sẽ lặp lại các kết quả dự đoán của mô hình, so sánh các kết quả đó 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à xác nhận các thay đổi

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

a370facb3632fb32.png

Khi đó, bạn sẽ thấy sự khác biệt của các thay đổi, như sau:

461c502bd3ab910e.png

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 cách sử dụng Terminal. Trong trình đơn Git trên thanh trình đơn trên cùng của JupyterLab, hãy chọn Git Command in Terminal (Lệnh Git trong dòng lệnh). Nếu mở thẻ git của thanh bên trái trong khi chạy các lệnh bên dưới, bạn sẽ thấy các thay đổi được phản ánh trong giao diện người dùng git.

Trong phiên bản dòng lệnh mới, hãy chạy lệnh sau để đưa tệp sổ tay vào giai đoạn cam kết:

git add demo.ipynb

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

git commit -m "Build and train TF model"

Sau đó, bạn sẽ thấy thay đổi mới nhất trong nhật ký:

a4b44045e97cb7a7.png

6. Sử dụng Công cụ giả định ngay trong sổ tay

Công cụ giả định là một giao diện trực quan tương tác được thiết kế để giúp bạn trực quan hoá tập dữ liệu 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 tại Google tạo ra. Mặc dù hoạt động với mọi loại mô hình, nhưng công cụ này có một số tính năng được xây dựng riêng cho Cloud AI Platform.

Công cụ giả định được cài đặt sẵn trong các phiên bản Máy tính xách tay của Nền tảng AI trên đám mây có TensorFlow. Ở đây, chúng ta sẽ sử dụng hàm này để xem hiệu suất tổng thể của mô hình và kiểm tra hành vi của mô hình trên các điểm dữ liệu trong tập kiểm thử.

Bước 1: Chuẩn bị dữ liệu cho Công cụ giả định

Để khai thác tối đa Công cụ giả định, chúng ta sẽ gửi cho công cụ này các ví dụ trong tập kiểm thử cùng với nhãn thực tế cho các ví dụ đó (y_test). Nhờ đó, chúng ta có thể so sánh kết quả dự đoán của mô hình với thực tế. Chạy dòng mã bên dưới để tạo một DataFrame mới với 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 lớp học lập trình này, chúng ta sẽ kết nối Công cụ giả định với mô hình mà chúng ta vừa huấn luyện trong sổ tay. Để làm 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 bản sao cho công cụ Xem tình huống

Chúng ta sẽ tạo bản sao của Công cụ giả định bằng cách truyền vào 500 ví dụ từ tập dữ liệu kiểm thử được nối + nhãn 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, 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 (vật thể mà 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 như sau khi Công cụ giả định tải:

fcdc1cb7ed8e364e.png

Trên trục x, bạn có thể thấy các điểm dữ liệu kiểm thử được trải rộng 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ụ giả định

Bạn có thể làm được nhiều điều thú vị với Công cụ giả định. Chúng ta sẽ chỉ tìm hiểu một vài trong số đó tại đây. Trước tiên, hãy xem 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 đặc điểm của điểm dữ liệu đó và thay đổi giá trị đặc điểm. Bắt đầu bằng cách nhấp vào bất kỳ điểm dữ liệu nào:

2ba944f16240ff4b.png

Ở bên trái, bạn sẽ thấy các giá trị đặc điểm cho điểm dữ liệu mà bạn đã chọn. Bạn cũng có thể so sánh nhãn thực tế của điểm dữ liệu đó với giá trị mà mô hình dự đoán. Trong thanh bên trái, bạn cũng có thể thay đổi giá trị đặc điểm và chạy lại tính năng dự đoán mô hình để xem thay đổi này ảnh hưởng như thế nào đến 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 điểm dữ liệu đó và chạy lại quy trình dự đoán:

aaa6a937c66758cf.png

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

cd2ce527a9044e7b.png

Tiếp theo, hãy đánh dấu vào nút Biểu đồ phần phụ thuộc ở bên trái. Biểu đồ này cho thấy mức độ ảnh hưởng của từng đặc điểm đến kết quả dự đoán của mô hình. Ví dụ: khi thời gian mang thai tăng lên, trọng lượng dự đoán của trẻ sơ sinh trong mô hình của chúng tôi cũng tăng lên:

1fec2a64fb03f432.png

Để biết thêm ý tưởng khám phá bằng Công cụ giả định, 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ể sổ 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 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à nội dung mô tả, quyết định xem bạn có muốn kho lưu trữ này ở chế độ công khai 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ó qua dòng lệnh.

Mở cửa sổ Dòng lệnh rồi thêm kho lưu trữ mới làm kho lưu trữ từ xa. Thay thế username trong URL kho lưu trữ bên dưới bằng tên người dùng GitHub của bạn và your-repo bằng tên của kho lưu trữ 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 phiên bản sổ tay. Quy trình này sẽ khác nhau tuỳ thuộc vào việc bạn đã bật tính năng xác thực hai yếu tố trên GitHub hay chưa.

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

Bước 3: Đảm bảo bạn đã liên kết đúng kho lưu trữ GitHub

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

Để đồng bộ hoá kho lưu trữ git của sổ tay cục bộ 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ã trong 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 của bạn và bạn muốn tải các thay đổi mới nhất xuống sổ tay, 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ẻ Nhật ký của giao diện người dùng git trong Sổ tay, 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 tôi trên GitHub:

2c3d1eb7cf95c24e.png

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

8. Xin chúc mừng!

Bạn đã làm được rất nhiều việc trong lớp học lập trình này 👏👏👏

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

  • Tạo và tuỳ chỉnh một thực thể Sổ tay trên Nền tảng AI
  • Khởi chạy kho lưu trữ git cục bộ trong thực thể đó, thêm các thay đổi thông qua giao diện người dùng git hoặc dòng lệnh, xem các thay đổi git trong giao diện người dùng git của Sổ tay
  • Xây dựng và huấn luyện một mô hình TensorFlow 2 đơn giản
  • Sử dụng Công cụ giả định trong thực thể Notebook
  • Kết nối kho lưu trữ git của Sổ tay 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 máy tính xách tay này, bạn nên tắt máy 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 lớp học này, bạn chỉ cần xoá thực thể sổ tay thay vì dừng thực thể đó.

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