Quay lại bộ đề
Question #67 Topic 1
A data scientist has created a BigQuery ML model and asks you to create an ML pipeline to serve predictions. You have a REST API application with the requirement to serve predictions for an individual user ID with latency under 100 milliseconds. You use the following query to generate predictions: SELECT predicted_label, user_id FROM ML.PREDICT (MODEL 'dataset.model', table user_features). How should you create the ML pipeline?
Một nhà khoa học dữ liệu đã tạo ra một mô hình BigQuery ML và yêu cầu bạn tạo một đường ống (pipeline) ML để phục vụ các dự đoán. Bạn có một ứng dụng REST API với yêu cầu phục vụ các dự đoán cho từng ID người dùng riêng lẻ với độ trễ dưới 100 mili giây. Bạn sử dụng truy vấn sau để tạo dự đoán: `SELECT predicted_label, user_id FROM ML.PREDICT (MODEL 'dataset.model', table user_features)`. Bạn nên tạo pipeline ML như thế nào?
A
Add a WHERE clause to the query, and grant the BigQuery Data Viewer role to the application service account.
Thêm mệnh đề `WHERE` vào truy vấn, và cấp vai trò BigQuery Data Viewer cho tài khoản dịch vụ (service account) của ứng dụng.
B
Create an Authorized View with the provided query. Share the dataset that contains the view with the application service account.
Tạo một Authorized View với truy vấn được cung cấp. Chia sẻ tập dữ liệu chứa view đó với tài khoản dịch vụ của ứng dụng.
C
Create a Dataflow pipeline using BigQueryIO to read results from the query. Grant the Dataflow Worker role to the application service account.
Tạo một pipeline Dataflow sử dụng BigQueryIO để đọc kết quả từ truy vấn. Cấp vai trò Dataflow Worker cho tài khoản dịch vụ của ứng dụng.
D
Create a Dataflow pipeline using BigQueryIO to read predictions for all users from the query. Write the results to Bigtable using BigtableIO. Grant the Bigtable Reader role to the application service account so that the application can read predictions for individual users from Bigtable.
Tạo một pipeline Dataflow sử dụng BigQueryIO để đọc các dự đoán cho tất cả người dùng từ truy vấn. Ghi kết quả vào Bigtable sử dụng BigtableIO. Cấp vai trò Bigtable Reader cho tài khoản dịch vụ của ứng dụng để ứng dụng có thể đọc dự đoán cho từng người dùng cụ thể từ Bigtable.
Giải thích & Tài liệu tham khảo
Giải pháp này phù hợp nhất với yêu cầu độ trễ thấp dưới 100 mili giây cho từng ID người dùng và sử dụng BigQuery ML để tạo dự đoán.
- Phân tích lựa chọn D (Đúng):
- Tạo Dataflow pipeline để đọc dự đoán cho tất cả người dùng: Lợi dụng khả năng xử lý hàng loạt của Dataflow và BigQuery ML để tạo dự đoán cho một tập hợp lớn dữ liệu người dùng một cách hiệu quả. Đây là cách tiếp cận điển hình để xử lý các mô hình ML không yêu cầu dự đoán theo thời gian thực (ví dụ: dự đoán cho hàng triệu người dùng cùng lúc).
- Ghi kết quả vào Bigtable: Bigtable là cơ sở dữ liệu NoSQL với hiệu suất cao, độ trễ thấp, được thiết kế cho khối lượng công việc đọc/ghi lớn, phù hợp để phục vụ dự đoán cho từng người dùng một cách nhanh chóng. Độ trễ dưới 100 mili giây là yêu cầu quan trọng và Bigtable rất phù hợp cho trường hợp này.
- Ứng dụng đọc từ Bigtable: Thay vì truy vấn BigQuery trực tiếp mỗi khi cần dự đoán, ứng dụng sẽ truy vấn Bigtable, nơi dữ liệu dự đoán đã được tiền xử lý và lưu trữ. Điều này giúp đảm bảo độ trễ thấp cho từng yêu cầu.
- Cấp quyền Dataflow Worker và Bigtable Reader: Đảm bảo Dataflow có thể thực thi và ghi vào Bigtable, đồng thời ứng dụng có thể đọc từ Bigtable. Đây là một mô hình kiến trúc phổ biến để phục vụ các dự đoán ML theo yêu cầu với độ trễ thấp.
- Phân tích các lựa chọn khác (Sai/Không tối ưu):
- A. Thêm mệnh đề WHERE vào truy vấn và cấp quyền BigQuery Data Viewer: Mặc dù về mặt kỹ thuật, bạn có thể thực hiện một truy vấn BigQuery cho từng ID người dùng, việc này sẽ dẫn đến độ trễ cao. BigQuery được tối ưu cho các truy vấn phân tích lớn, quét toàn bộ hoặc một phần dữ liệu lớn, chứ không phải cho các truy vấn điểm (point queries) với độ trễ thấp liên tục cho từng bản ghi riêng lẻ. Việc truy vấn BigQuery trực tiếp cho mỗi yêu cầu người dùng sẽ vượt quá giới hạn độ trễ 100ms.
- B. Tạo Authorized View với truy vấn được cung cấp. Chia sẻ tập dữ liệu chứa view với tài khoản dịch vụ ứng dụng: Tương tự như A, việc Authorized View vẫn chỉ là một lớp trừu tượng trên BigQuery. Mặc dù nó cung cấp khả năng kiểm soát truy cập tốt hơn, nhưng vẫn không giải quyết được vấn đề độ trễ cao khi thực hiện truy vấn BigQuery cho từng người dùng.
- C. Tạo Dataflow pipeline sử dụng BigQueryIO để đọc kết quả từ truy vấn. Cấp quyền Dataflow Worker: Lựa chọn này không chỉ rõ làm thế nào ứng dụng REST API sẽ nhận được dự đoán. Nếu Dataflow chỉ đọc kết quả và không lưu vào một kho dữ liệu có độ trễ thấp như Bigtable, thì ứng dụng vẫn không có cách nào để truy vấn dự đoán riêng lẻ với độ trễ thấp. Dataflow là một công cụ xử lý dữ liệu, không phải là một kho dữ liệu để phục vụ truy vấn.
Tóm lại: Lựa chọn D kết hợp BigQuery ML, Dataflow và Bigtable một cách hiệu quả để đáp ứng tất cả các yêu cầu: dự đoán theo lô lớn, và phục vụ dự đoán riêng lẻ với độ trễ thấp.
(Đáp án được gợi ý bởi AI)