Tích hợp liên tục (CI)
Nâng cao quy trình AI/ML bằng Tích hợp Liên tục. Tự động hóa việc kiểm thử, cải thiện chất lượng mã và đơn giản hóa quá trình phát triển mô hình một cách dễ dàng.
Tích hợp liên tục (CI) là một phương pháp phát triển phần mềm, trong đó các nhà phát triển thường xuyên hợp nhất các thay đổi mã của họ vào một kho lưu trữ trung tâm, sau đó các bản dựng và kiểm tra tự động được chạy. Mục tiêu chính của CI là phát hiện sớm các vấn đề tích hợp, cải thiện chất lượng mã và hợp lý hóa quy trình phát triển. Trong bối cảnh của Trí tuệ nhân tạo (AI) và Học máy (ML), CI mở rộng ra ngoài các kiểm tra mã truyền thống để bao gồm xác thực dữ liệu, mô hình và hiệu suất pipeline tổng thể, tạo thành một thành phần quan trọng của Vận hành học máy (MLOps).
Các nguyên tắc chính của Tích hợp liên tục
Quy trình CI được xây dựng trên nền tảng tự động hóa và lặp lại thường xuyên. Các nhà phát triển đẩy các thay đổi nhỏ, thường xuyên vào một kho lưu trữ chung bằng cách sử dụng hệ thống kiểm soát phiên bản như Git. Mỗi lần đẩy sẽ kích hoạt một quy trình làm việc tự động, hoặc pipeline, thực hiện một số bước chính:
- Xây dựng tự động: Hệ thống tự động biên dịch mã để đảm bảo nó tích hợp chính xác. Đối với các dự án ML, điều này có thể bao gồm việc thiết lập môi trường bằng các công cụ container hóa như Docker.
- Kiểm thử tự động: Một bộ các bài kiểm tra chạy để xác thực các thay đổi mới. Điều này bao gồm kiểm thử đơn vị cho logic mã, kiểm thử tích hợp cho các tương tác thành phần và các kiểm thử chuyên biệt cho ML, chẳng hạn như xác thực dữ liệu và đánh giá mô hình.
- Vòng phản hồi nhanh: Nếu bất kỳ bước nào trong quy trình bị lỗi, nhóm phát triển sẽ được thông báo ngay lập tức. Điều này cho phép họ giải quyết các vấn đề một cách nhanh chóng trước khi chúng trở nên phức tạp hơn và được tích hợp vào cơ sở mã chính.
CI cho Machine Learning (CI4ML)
Áp dụng CI (Tích hợp liên tục) cho các dự án Machine Learning (Học máy) mang đến những thách thức riêng. Ngoài mã nguồn, hệ thống ML còn liên quan đến dữ liệu và các mô hình đã huấn luyện, cũng cần được kiểm soát phiên bản và xác thực. Một quy trình CI hiệu quả cho một dự án ML, chẳng hạn như một dự án liên quan đến mô hình Ultralytics YOLO, bao gồm các bước bổ sung:
- Xác thực dữ liệu: Tự động kiểm tra dữ liệu mới để đảm bảo tính chính xác, tuân thủ lược đồ và độ lệch tập dữ liệu tiềm ẩn. Các công cụ như Great Expectations có thể được sử dụng cho việc này.
- Kiểm thử mô hình: Chạy các thử nghiệm để kiểm tra sự suy giảm hiệu suất. Điều này bao gồm so sánh các chỉ số hiệu suất của mô hình mới với phiên bản cơ sở trên một tập dữ liệu kiểm định tiêu chuẩn.
- Xác thực quy trình huấn luyện: Đảm bảo rằng chính quy trình huấn luyện mô hình có thể tái tạo và hiệu quả. Điều này có thể được quản lý bằng cách sử dụng các nền tảng như Ultralytics HUB, nền tảng này hợp lý hóa việc quản lý tập dữ liệu và quy trình làm việc huấn luyện.
Các Ứng dụng Thực tế
- Phát triển lái xe tự động: Một nhóm làm việc trên một mô hình phát hiện đối tượng cho xe tự hành sử dụng một quy trình CI. Khi một nhà phát triển gửi mã để cải thiện khả năng của mô hình trong việc phát hiện người đi bộ vào ban đêm, quy trình sẽ tự động kích hoạt. Nó chạy các kiểm thử đơn vị, huấn luyện lại một phiên bản nhẹ của mô hình YOLO11 trên một tập dữ liệu kiểm thử và đánh giá mAP của nó. Nếu độ chính xác không giảm và tất cả các kiểm thử đều vượt qua, thay đổi sẽ được phê duyệt để hợp nhất. Các công cụ CI phổ biến như GitHub Actions hoặc Jenkins thường được sử dụng để tự động hóa các quy trình làm việc này.
- Phân tích ảnh y tế: Trong một hệ thống được thiết kế để phát hiện khối u trong ảnh y tế, một nhà khoa học dữ liệu có thể thêm dữ liệu tăng cường mới để cải thiện độ mạnh mẽ. Quy trình CI xác thực định dạng và phân phối dữ liệu mới. Sau đó, nó kích hoạt một lần chạy xác thực bằng mô hình được đào tạo trước để đảm bảo các dự đoán của mô hình trên "bộ dữ liệu vàng" vẫn nhất quán, ngăn chặn hành vi không mong muốn trong sản xuất. Quá trình này giúp duy trì các tiêu chuẩn cao về độ tin cậy, rất quan trọng đối với AI trong chăm sóc sức khỏe.
Tích hợp liên tục so với Phân phối/Triển khai liên tục (CD)
Mặc dù có liên quan chặt chẽ, CI khác biệt với Continuous Delivery và Continuous Deployment (CD).
- Tích hợp Liên tục (CI): Tập trung vào việc tích hợp thường xuyên và kiểm tra tự động các thay đổi mã. Đầu ra là một bản dựng đã được xác thực sẵn sàng cho giai đoạn tiếp theo. Ultralytics sử dụng CI để kiểm tra tất cả các yêu cầu kéo trước khi hợp nhất chúng.
- Phân phối Liên tục (CD): Mở rộng CI bằng cách tự động chuẩn bị mọi thay đổi đã được xác thực để phát hành cho môi trường dàn dựng hoặc sản xuất. Tuy nhiên, triển khai mô hình cuối cùng cho sản xuất yêu cầu phê duyệt thủ công. Cách tiếp cận này được trình bày chi tiết trong các hướng dẫn từ các nguồn như Atlassian.
- Triển khai Liên tục (CD): Tiến thêm một bước bằng cách tự động triển khai mọi thay đổi đã được xác thực trực tiếp vào sản xuất mà không cần bất kỳ sự can thiệp nào của con người. Điều này thể hiện mức độ tự động hóa cao nhất trong vòng đời phát hành phần mềm.
Cùng với nhau, các phương pháp CI và CD là nền tảng cho một chiến lược MLOps mạnh mẽ, nhằm mục đích thống nhất việc phát triển và vận hành các hệ thống máy học, từ thử nghiệm ban đầu đến triển khai và giám sát mô hình liên tục.