Thiết kế Dataclass Bất biến Xác thực Cấu hình Huấn luyện AI
Khi huấn luyện các mô hình AI tại AI Empire Academy, các siêu tham số (Hyperparameters) cần được đảm bảo tính toàn vẹn tuyệt đối: sau khi khởi tạo, không một hàm nào được phép thay…
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: dataclass decorator, post init, type annotations.
Nội dung đề bài
Mục tiêu kiến thức
- Sử dụng module chuẩn
dataclassesvới cờfrozen=Trueđể tạo cấu trúc dữ liệu bất biến (Immutable Data Structure). - Tùy biến kiểm tra tính hợp lệ của trường dữ liệu thông qua phương thức
__post_init__. - Hỗ trợ tính toán hash và so sánh bằng tự động để dùng làm khóa trong Cache hoặc Set.
Mô tả bài toán
Khi huấn luyện các mô hình AI tại AI Empire Academy, các siêu tham số (Hyperparameters) cần được đảm bảo tính toàn vẹn tuyệt đối: sau khi khởi tạo, không một hàm nào được phép thay đổi cấu hình làm sai lệch kết quả thí nghiệm (Reproducibility).
Hãy cài đặt lớp @dataclass(frozen=True) có tên TrainingConfig: Các trường dữ liệu:
model_name: strlearning_rate: floatbatch_size: intlayers: tuple[int, ...]optimizer: str = "adam"weight_decay: float = 0.01
Phương thức __post_init__ phải kiểm tra các quy tắc nghiêm ngặt sau và ném ValueError tương ứng nếu vi phạm:
model_name: Sau khistrip(), chuỗi không được rỗng. Nếu rỗng, némValueError("model_name khong duoc de trong").learning_rate: Phải thỏa mãn 0 < learning_rate ≤ 1.0. Nếu không, némValueError("learning_rate phai thuoc (0, 1]").batch_size: Phải là số nguyên dương và là lũy thừa của 2 (ví dụ 1, 2, 4, 8, 16, 32, 64, 128, ...). Nếu không, némValueError("batch_size phai la luy thua cua 2").layers: Phải làtuplecó ít nhất 1 phần tử và mọi phần tử đều phải > 0. Nếu không, némValueError("layers phai gom cac so nguyen duong").optimizer: Chuyển về chữ thường phải nằm trong tập hợp{"adam", "sgd", "adamw"}. Nếu không, némValueError("optimizer khong hop le").weight_decay: Phải ≥ 0.0. Nếu không, némValueError("weight_decay khong the am").
Vì frozen=True, bất kỳ hành vi gán lại giá trị cho thuộc tính (ví dụ cfg.learning_rate = 0.01) phải tự động bị từ chối bởi dataclasses.FrozenInstanceError.
Input
- Các tham số truyền vào hàm/lớp from hoặc dữ liệu đầu vào theo định dạng mô tả.
Output
- Kết quả trả về của hàm/lớp from hoặc dữ liệu in ra màn hình theo đúng đặc tả.
Ràng buộc
- Thời gian chạy tối đa: 1000ms.
- Giới hạn bộ nhớ: 256MB.
Ví dụ 1
Input
from(model_name='transformer_base', learning_rate=0.001, batch_size=32, layers=[512, 1024, 512], optimizer='adamw', weight_decay=0.01)Output
TrueGiải thích
Hàm được gọi với các tham số mẫu trên và trả về kết quả chính xác theo yêu cầu.
Ví dụ 2
Input
from(model_name='cnn_model', learning_rate=0.001, batch_size=50, layers=[64, 128], optimizer='adam')Output
TrueGiải thích
Hàm được gọi với bộ tham số thứ hai và trả về kết quả tương ứng theo thiết kế.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
