Thực hành tốt nhất để lưu trữ các mô hình học máy Python


24

Các thực tiễn tốt nhất để lưu, lưu trữ và chia sẻ các mô hình học máy là gì?

Trong Python, chúng tôi thường lưu trữ biểu diễn nhị phân của mô hình, sử dụng dưa chua hoặc joblib. Mô hình, trong trường hợp của tôi, có thể lớn ~ 100Mo. Ngoài ra, joblib có thể lưu một mô hình vào nhiều tệp trừ khi bạn đặt compress=1( /programming/33497314/sklearn-dumping-model-USE-joblib-dumps-multipl-files-which-one-is-the- corre ).

Nhưng sau đó, nếu bạn muốn kiểm soát quyền truy cập vào các mô hình và có thể sử dụng các mô hình từ các máy khác nhau, cách tốt nhất để lưu trữ chúng là gì?

Tôi có một vài lựa chọn:


Bạn đã có được một cách hiệu quả để làm điều này?
iNet

Câu trả lời:



2

Tôi đã đối mặt với vấn đề này (và vẫn phải đối mặt với nó ngày hôm nay) trong nhiều năm. Tôi thực sự biết rằng, nếu bạn không cung cấp các yêu cầu chi tiết, bạn không thể mong đợi một câu trả lời nghiêm túc. Tôi giải thích bản thân với các ví dụ về công việc của tôi:

  • Tôi thường xuyên thử nhiều biến thể của cùng một mô hình để tìm ra tham số nào hoạt động tốt nhất. Phải mất vài ngày để đào tạo một mô hình duy nhất tạo ra một số đầu ra mà sau này được sử dụng để đánh giá. Để làm như vậy, tôi tạo một kết xuất NumPy đơn giản của mô hình vì nó dễ dàng chia sẻ nó giữa các máy chủ hoặc đồng nghiệp. Bạn nên tránh dưa chua vì nó lưu trữ nhiều hơn (các thể hiện của lớp, thư viện ...) thay vì chỉ các tham số mà mô hình của bạn đã học. Nhập mô hình trên máy khác có thể không hoạt động nếu môi trường python hơi khác.

  • Khi đẩy một mô hình trong sản xuất, tôi cần 1) phiên bản của mô hình mà tôi có thể tải nhanh trong trường hợp máy chủ bị hỏng (thường là định dạng nhị phân, chỉ lưu trữ những gì cần thiết như trọng lượng của mạng thần kinh) và 2) cách giữ mô hình trong RAM để xử lý nhanh các yêu cầu API.

Đối với hai mục đích khác nhau, tôi cần ba định dạng khác nhau. Sau đó, nói chung hơn, việc lựa chọn định dạng phụ thuộc vào các công cụ bạn sử dụng. Ví dụ: nếu bạn làm việc với TensorFlow, bạn có thể quan tâm đến hệ thống Phục vụ TensorFlow của họ


1

Tôi muốn đề xuất thêm 2 cách tiếp cận.

  1. Lưu trữ chúng trong bộ lưu trữ tài liệu (ví dụ: mongoDB) - phương pháp này được khuyến nghị khi các tệp mô hình của bạn nhỏ hơn 16Mb (hoặc phân đoạn công việc), sau đó bạn có thể lưu trữ mô hình dưới dạng dữ liệu nhị phân. Ngoài ra, một số thư viện ML hỗ trợ xuất và nhập mô hình trong json (ví dụ LightGBM), làm cho nó trở thành một ứng cử viên hoàn hảo để lưu trữ trong lưu trữ tài liệu. Ưu điểm : dễ dàng theo dõi việc tạo mô hình và truy cập dễ dàng, Nhược điểm : mọi thứ sẽ trở nên lộn xộn nếu đối tượng mô hình quá lớn.

  2. Lưu trữ mô hình của bạn trên bộ nhớ đối tượng (ví dụ: Amazon S3) - phương pháp này rất tốt nếu các mô hình của bạn rất lớn, trong trường hợp này bạn có được dung lượng lưu trữ không giới hạn và API khá dễ dàng, bạn chắc chắn phải trả nhiều tiền hơn. Ưu điểm : Không giới hạn dung lượng và khả năng lưu trữ các định dạng tệp tùy ý. Nhược điểm : chi phí và thực tế là để làm đúng, bạn sẽ cần phát triển hệ thống theo dõi của riêng mình.

chúc may mắn!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.