Vertex AI: Xây dựng mô hình phát hiện gian lận bằng AutoML

1. Tổng quan

Trong phòng thí nghiệm này, bạn sẽ sử dụng Vertex AI để huấn luyện và phân phát mô hình có dữ liệu dạng bảng. Đây là sản phẩm AI mới nhất trên Google Cloud và hiện đang ở giai đoạn dùng thử.

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

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

  • Tải tập dữ liệu được quản lý lên Vertex AI
  • Huấn luyện mô hình bằng AutoML
  • Triển khai mô hình AutoML đã huấn luyện cho một điểm cuối và sử dụng điểm cuối đó để nhận thông tin dự đoán

Tổng chi phí để chạy phòng thí nghiệm này trên Google Cloud là khoảng 22 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, các mô hình được huấn luyện bằng AutoML và mô hình tuỳ chỉnh có thể truy cập được 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 các sản phẩm được làm nổi bật dưới đây: AutoML cho dữ liệu dạng bảng, Dự đoán và Workbench.

Tổng quan về sản phẩm Vertex

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

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

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

Trang tổng quan Vertex

Bước 3: Tạo một thực thể Vertex AI Workbench

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

Trình đơn Vertex AI

Tại đó, trong phần Sổ tay do người dùng quản lý, hãy nhấp vào Sổ tay mới:

Tạo sổ tay mới

Sau đó, hãy chọn phiên bản mới nhất của loại thực thể TensorFlow Enterprise (có LTS) không có GPU:

Thực thể TFE

Sử dụng các tuỳ chọn mặc định rồi nhấp vào Tạo.

Bước 5: Mở Sổ tay

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

Mở Sổ tay

Dữ liệu mà chúng tôi sử dụng để huấn luyện mô hình của mình là từ Tập dữ liệu phát hiện gian lận thẻ tín dụng này. Chúng tôi sẽ sử dụng phiên bản của tập dữ liệu này được cung cấp công khai trong BigQuery.

4. Tạo Tập dữ liệu được quản lý

Trong Vertex AI, bạn có thể tạo các tập dữ liệu được quản lý cho nhiều loại dữ liệu. Sau đó, bạn có thể tạo số liệu thống kê trên các tập dữ liệu này và sử dụng chúng để huấn luyện mô hình bằng AutoML hoặc mã mô hình tuỳ chỉnh của riêng bạn.

Bước 1: Tạo tập dữ liệu

Trong trình đơn Vertex trong bảng điều khiển của bạn, hãy chọn Tập dữ liệu:

Chọn Tập dữ liệu

Trong phòng thí nghiệm này, chúng tôi sẽ xây dựng một mô hình phát hiện gian lận để xác định xem có nên phân loại một giao dịch cụ thể bằng thẻ tín dụng là gian lận hay không.

Trên trang Tập dữ liệu, hãy đặt tên cho tập dữ liệu, sau đó chọn BảngHồi quy/phân loại. Sau đó, hãy Tạo tập dữ liệu:

Tạo tập dữ liệu

Có một số cách để nhập dữ liệu vào Tập dữ liệu được quản lý trong Vertex:

  • Tải lên tệp cục bộ từ máy tính của bạn
  • Chọn tệp trên Cloud Storage
  • Chọn dữ liệu từ BigQuery

Ở đây, chúng ta sẽ tải dữ liệu lên từ một bảng BigQuery công khai.

Bước 2: Nhập dữ liệu từ BigQuery

Chọn "Chọn một bảng hoặc chế độ xem từ BigQuery" làm phương thức nhập, rồi sao chép dòng sau vào hộp bảng BigQuery: bigquery-public-data.ml_datasets.ulb_fraud_detection. Sau đó chọn Tiếp tục:

Nhập dữ liệu về BQ

Sau khi nhập tập dữ liệu, bạn sẽ thấy giao diện như sau:

Dữ liệu đã nhập

Nếu muốn, bạn có thể nhấp vào Tạo số liệu thống kê để xem thêm thông tin về tập dữ liệu này, nhưng bạn không bắt buộc phải làm vậy trước khi chuyển sang bước tiếp theo. Tập dữ liệu này chứa các giao dịch thẻ tín dụng thực. Hầu hết các tên cột đã bị che khuất, đó là lý do các tên này được gọi là V1, V2, v.v.

5. Huấn luyện mô hình bằng AutoML

Sau khi bạn tải một tập dữ liệu được quản lý lên, chúng tôi đã sẵn sàng huấn luyện một mô hình bằng dữ liệu này. Chúng tôi sẽ đào tạo một mô hình phân loại để dự đoán liệu một giao dịch cụ thể có phải là gian lận hay không. Với Vertex AI, bạn có 2 lựa chọn về các mô hình huấn luyện:

  • AutoML: Đào tạo các mô hình chất lượng cao mà không cần nhiều công sức và kiến thức chuyên môn về máy học.
  • Đào tạo tuỳ chỉnh: Chạy các ứng dụng huấn luyện tuỳ chỉnh trên đám mây bằng một trong các vùng chứa tích hợp 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ẽ dùng AutoML để huấn luyện.

Bước 1: Bắt đầu công việc đào tạo

Trên trang chi tiết về tập dữ liệu mà bạn đã dừng lại ở bước trước, hãy chọn Đào tạo mô hình mới ở trên cùng bên phải. Chọn mục tiêu là Phân loại, chọn AutoML để huấn luyện mô hình, sau đó nhấp vào Tiếp tục:

Bước 1 huấn luyện mô hình

Đặt tên cho mô hình của bạn hoặc bạn có thể sử dụng mặc định. Trong cột Mục tiêu, hãy chọn Lớp. Đây là số nguyên cho biết một giao dịch cụ thể có phải là gian lận hay không (0 nếu không phải lừa đảo, 1 là gian lận).

Sau đó chọn Tiếp tục:

Bước 2 huấn luyện mô hình

Trong bước này, hãy di chuyển xuống rồi nhấp vào để mở rộng Tùy chọn nâng cao. Do tập dữ liệu này không cân bằng quá nhiều (dưới 1% dữ liệu chứa các giao dịch gian lận), nên hãy chọn tuỳ chọn AUC PRC để tối đa hoá độ chính xác cho lớp ít phổ biến hơn:

Các lựa chọn huấn luyện nâng cao

Chọn Tiếp tục rồi chuyển đến bước cuối cùng (Tính toán và định giá). Tại đây, hãy nhập 1 làm số giờ nút cho ngân sách của bạn và bật tính năng dừng sớm. Việc huấn luyện mô hình AutoML trong 1 giờ điện toán thường là một khởi đầu tốt để tìm hiểu xem có mối quan hệ giữa các tính năng và nhãn bạn đã chọn hay không. Từ đó, bạn có thể sửa đổi các tính năng và huấn luyện để có thêm thời gian nhằm cải thiện hiệu suất của mô hình. Tiếp theo, hãy chọn Bắt đầu đào tạo.

Bạn sẽ nhận được email khi công việc đào tạo hoàn tất. Quá trình đào tạo sẽ mất nhiều hơn một giờ một chút để tính đến thời gian trong việc sắp xếp và chia nhỏ tài nguyên.

6. Tìm hiểu các chỉ số đánh giá mô hình

Ở bước này, chúng ta sẽ xem hiệu suất của mô hình.

Sau khi hoàn tất công việc huấn luyện mô hình, hãy chuyển đến thẻ Models (Mô hình) trong Vertex. Nhấp vào mô hình bạn vừa huấn luyện rồi xem thẻ Đánh giá. Có nhiều chỉ số đánh giá ở đây – chúng ta sẽ tập trung vào 2 chỉ số: Ma trận nhầm lẫnTầm quan trọng của tính năng.

Bước 1: Hiểu ma trận nhầm lẫn

Ma trận nhầm lẫn cho chúng ta biết tỷ lệ phần trăm ví dụ từ mỗi lớp trong tập kiểm thử mà mô hình của chúng ta đã dự đoán chính xác. Trong trường hợp tập dữ liệu không cân bằng như tập dữ liệu chúng tôi đang xử lý, đây là thước đo hiệu suất của mô hình tốt hơn so với độ chính xác tổng thể.

Hãy nhớ rằng dưới 1% số ví dụ trong tập dữ liệu của chúng tôi là các giao dịch gian lận, vì vậy nếu độ chính xác của mô hình là 99% thì có khả năng là 99% sẽ ngẫu nhiên đoán được loại không gian lận. Đó là lý do việc xem xét độ chính xác của mô hình cho từng lớp là một chỉ số tốt hơn.

Nếu di chuyển xuống thẻ Đánh giá, bạn sẽ thấy một ma trận nhầm lẫn có dạng như sau (tỷ lệ phần trăm chính xác có thể thay đổi):

Ma trận nhầm lẫn

Ma trận nhầm lẫn cho thấy mô hình ban đầu của chúng tôi có thể phân loại chính xác 85% ví dụ gian lận trong tập hợp kiểm thử của chúng tôi. Điều này khá tốt, đặc biệt là khi xem xét sự mất cân bằng đáng kể về tập dữ liệu của chúng ta. Tiếp theo, chúng ta có thể thử huấn luyện mô hình của mình để có thêm số giờ điện toán để xem liệu chúng ta có thể cải thiện từ mức 85% này hay không.

Bước 2: Xem xét tầm quan trọng của tính năng

Bên dưới ma trận nhầm lẫn, bạn sẽ thấy biểu đồ tầm quan trọng của tính năng như sau:

Tầm quan trọng của tính năng

Điều này cho chúng tôi thấy các tính năng cung cấp tín hiệu lớn nhất cho mô hình của chúng tôi khi đưa ra dự đoán. Tầm quan trọng của tính năng là một loại AI giải thích – một lĩnh vực bao gồm nhiều phương pháp để hiểu rõ hơn về một mô hình học máy đang đưa ra dự đoán. Biểu đồ tầm quan trọng của tính năng thấy ở đây được tính dưới dạng tổng hợp bằng cách xem xét tất cả các dự đoán của mô hình trên tập kiểm thử của chúng tôi. Công cụ này cho chúng tôi thấy các tính năng quan trọng nhất trong một loạt ví dụ.

Biểu đồ này sẽ thú vị hơn nếu hầu hết các đối tượng trong tập dữ liệu của chúng tôi không bị che khuất. Chẳng hạn, chúng tôi có thể biết rằng loại giao dịch (chuyển khoản, tiền gửi, v.v.) là chỉ báo gian lận lớn nhất.

Trong tình huống thực tế, các giá trị tầm quan trọng của tính năng có thể được dùng để giúp chúng tôi cải thiện mô hình và tin tưởng hơn vào dự đoán của mình. Chúng tôi có thể quyết định xoá các tính năng ít quan trọng nhất vào lần huấn luyện mô hình tiếp theo hoặc kết hợp hai trong số các tính năng quan trọng hơn của chúng tôi thành một nhiều tính năng để xem liệu điều này có cải thiện hiệu suất của mô hình hay không.

Tại đây, chúng tôi đang xem xét tầm quan trọng của tính năng theo từng đợt, nhưng cũng có thể chúng tôi cũng có thể xem tầm quan trọng của tính năng đối với từng dự đoán riêng lẻ trong Vertex AI. Chúng ta sẽ tìm hiểu cách làm việc này sau khi triển khai mô hình.

7. Triển khai mô hình đến một điểm cuối

Hiện tại, chúng ta đã có mô hình đã huấn luyện, bước tiếp theo là tạo Điểm cuối trong Vertex. Một tài nguyên mô hình trong Vertex có thể được liên kết với nhiều điểm cuối và bạn có thể phân chia lưu lượng truy cập giữa các điểm cuối.

Bước 1: Tạo điểm cuối

Trên trang mô hình, hãy chuyển đến thẻ Triển khai và kiểm thử rồi nhấp vào Triển khai cho điểm cuối:

Triển khai và thử nghiệm

Đặt tên cho điểm cuối, chẳng hạn như fraud_v1, đặt Quyền truy cập thành Chuẩn rồi nhấp vào Tiếp tục.

Giữ chế độ cài đặt chia tách lưu lượng và loại máy làm chế độ cài đặt mặc định, rồi nhấp vào Xong rồi nhấp vào Tiếp tục.

Chúng tôi sẽ không sử dụng tính năng giám sát mô hình cho điểm cuối này, vì vậy, bạn có thể bỏ chọn điểm cuối đó rồi nhấp vào Triển khai. Quá trình triển khai điểm cuối của bạn sẽ mất vài phút. Khi hoàn tất, bạn sẽ thấy một dấu kiểm màu xanh lục bên cạnh hoàn tất:

Điểm cuối đã triển khai

Bạn sắp đạt được mục tiêu rồi! Giờ đây, bạn đã sẵn sàng nhận thông tin dự đoán về mô hình đã triển khai.

8. Nhận thông tin dự đoán về mô hình đã triển khai của chúng tôi

Có một vài tùy chọn để nhận dự đoán mô hình:

  • Giao diện người dùng Vertex AI
  • Vertex AI API

Chúng tôi sẽ hiển thị cả hai ở đây.

Bước 1: Nhận thông tin dự đoán về mô hình trong giao diện người dùng

Trên trang mô hình nơi điểm cuối của bạn được hiển thị (nơi chúng ta đã dừng lại ở bước cuối cùng), hãy di chuyển xuống phần Kiểm thử mô hình của bạn:

Mô hình thử nghiệm

Ở đây, Vertex AI đã chọn các giá trị ngẫu nhiên cho từng tính năng của mô hình mà chúng tôi có thể sử dụng để đưa ra thông tin dự đoán thử nghiệm. Bạn có thể thay đổi các giá trị này nếu muốn. Di chuyển xuống cuối trang rồi chọn Dự đoán.

Trong phần Kết quả dự đoán của trang, bạn sẽ thấy tỷ lệ phần trăm dự đoán của mô hình cho từng lớp. Ví dụ: điểm số tin cậy 0.99 cho lớp 0 có nghĩa là mô hình của bạn cho rằng ví dụ này có 99% là không lừa đảo.

Bước 2: Nhận thông tin dự đoán về mô hình bằng Vertex AI API

Giao diện người dùng là một cách tuyệt vời để đảm bảo điểm cuối được triển khai của bạn đang hoạt động như mong đợi, nhưng có khả năng bạn sẽ muốn nhận được dự đoán một cách linh hoạt thông qua lệnh gọi API REST. Để cho bạn biết cách nhận thông tin dự đoán về mô hình tại đây, chúng tôi sẽ sử dụng thực thể Vertex Workbench mà bạn đã tạo ở phần đầu của phòng thí nghiệm này.

Tiếp theo, hãy mở thực thể sổ tay mà bạn đã tạo rồi mở một sổ tay Python 3 trong Trình chạy:

Mở sổ tay

Trong sổ tay, hãy chạy lệnh sau trong một ô để cài đặt Vertex SDK:

!pip3 install google-cloud-aiplatform --upgrade --user

Sau đó, hãy thêm một ô vào sổ tay để nhập SDK và tạo tệp tham chiếu đến điểm cuối bạn vừa triển khai:

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)

Bạn cần thay thế hai giá trị trong chuỗi endpoint_name ở trên bằng số dự án và điểm cuối của mình. Bạn có thể tìm mã số dự án bằng cách chuyển đến trang tổng quan dự án rồi nhận giá trị Số dự án.

Bạn có thể tìm thấy mã điểm cuối trong phần điểm cuối của bảng điều khiển tại đây:

Tìm mã điểm cuối

Cuối cùng, hãy đưa ra dự đoán cho điểm cuối của bạn bằng cách sao chép và chạy mã bên dưới trong một ô mới:

test_instance={
    'Time': 80422,
    'Amount': 17.99,
    'V1': -0.24,
    'V2': -0.027,
    'V3': 0.064,
    'V4': -0.16,
    'V5': -0.152,
    'V6': -0.3,
    'V7': -0.03,
    'V8': -0.01,
    'V9': -0.13,
    'V10': -0.18,
    'V11': -0.16,
    'V12': 0.06,
    'V13': -0.11,
    'V14': 2.1,
    'V15': -0.07,
    'V16': -0.033,
    'V17': -0.14,
    'V18': -0.08,
    'V19': -0.062,
    'V20': -0.08,
    'V21': -0.06,
    'V22': -0.088,
    'V23': -0.03,
    'V24': 0.01,
    'V25': -0.04,
    'V26': -0.99,
    'V27': -0.13,
    'V28': 0.003
}

response = endpoint.predict([test_instance])

print('API response: ', response)

Bạn sẽ thấy thông tin dự đoán vào khoảng .67 cho lớp 0, tức là mô hình cho rằng có 67% khả năng giao dịch này không phải là giao dịch lừa đảo.

🎉 Xin chúc mừng! 🎉

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

  • Tải tập dữ liệu được quản lý lên
  • Huấn luyện và đánh giá mô hình dựa trên dữ liệu dạng bảng bằng AutoML
  • Triển khai mô hình đến một điểm cuối
  • Nhận thông tin dự đoán về điểm cuối của mô hình bằng SDK cho Vertex

Để 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.

9. Dọn dẹp

Nếu muốn tiếp tục sử dụng sổ tay mà bạn đã tạo trong phòng thí nghiệm này, bạn nên tắt sổ tay đó khi không sử dụng. Trong giao diện người dùng Workbench trong Cloud Console, hãy chọn sổ tay rồi chọn Stop (Dừng).

Nếu muốn xoá hoàn toàn sổ tay, bạn chỉ cần nhấp vào nút Xoá ở trên cùng bên phải.

Để xoá điểm cuối bạn đã triển khai, hãy chuyển đến phần Điểm cuối trong bảng điều khiển Vertex AI rồi huỷ triển khai mô hình khỏi điểm cuối của bạn:

Xoá điểm cuối

Để 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ớ