Python 머신 러닝 모델을 저장하는 모범 사례


24

머신 러닝 모델을 저장, 저장 및 공유하는 모범 사례는 무엇입니까?

파이썬에서는 일반적으로 pickle 또는 joblib을 사용하여 모델의 이진 표현을 저장합니다. 필자의 경우 모델은 ~ 100Mo 크기 일 수 있습니다. 또한 joblib은 설정하지 않는 한 하나의 모델을 여러 파일에 저장할 수 있습니다 compress=1( /programming/33497314/sklearn-dumping-model-using-joblib-dumps-multiple-files-which-one-is-the- corre ).

그러나 모델에 대한 액세스 권한을 제어하고 다른 시스템의 모델을 사용하려면 모델을 저장하는 가장 좋은 방법은 무엇입니까?

몇 가지 선택이 있습니다.


이 작업을 효율적으로 수행 했습니까?
iNet

답변:



2

나는 수년 동안이 문제에 직면했다 (그리고 여전히 오늘날 직면하고있다). 자세한 요구 사항을 제공하지 않으면 심각한 답변을 기대할 수 없습니다. 나는 내 작업의 예를 들어 설명합니다.

  • 정기적으로 동일한 모델의 여러 변형을 시도하여 어떤 매개 변수가 가장 적합한 지 찾습니다. 하나의 단일 모델을 학습하는 데 며칠이 걸리며 나중에 평가에 사용되는 일부 출력을 생성합니다. 이를 위해 서버 또는 동료간에 쉽게 공유 할 수 있으므로 모델의 간단한 NumPy 덤프를 만듭니다. 피클은 모델에서 배운 매개 변수보다 훨씬 더 많은 클래스 (인스턴스, 라이브러리 등)를 저장하므로 피클을 피해야합니다. 파이썬 환경이 약간 다른 경우 다른 컴퓨터에서 모델을 가져 오는 것이 작동하지 않을 수 있습니다.

  • 프로덕션에서 모델을 푸시 할 때 1) 서버 고장 (일반적으로 이진 형식, 신경망의 가중치와 같은 필요한 것만 저장)의 경우 빠르게로드 할 수있는 모델 버전과 2) a가 필요합니다. API 요청을 신속하게 처리하기 위해 모델을 RAM에 유지하는 방법.

서로 다른 두 가지 목적을 위해서는 세 가지 형식이 필요합니다. 더 일반적으로 말하면 형식의 선택은 사용하는 도구에 따라 다릅니다. 예를 들어, TensorFlow를 사용하는 경우 TensorFlow Serving 시스템에 관심이있을 수 있습니다.


1

2 가지 접근법을 더 제안하고 싶습니다.

  1. 문서 저장소 (예 : mongoDB)에 저장합니다. 이 방법은 모델 파일이 16Mb보다 작거나 joblib 샤드가있는 경우 권장되며 모델을 이진 데이터로 저장할 수 있습니다. 또한 일부 ML 라이브러리는 json (예 : LightGBM)으로 모델 내보내기 및 가져 오기를 지원하므로 문서 저장소에 저장할 수있는 완벽한 후보입니다. 장점 : 모델 생성 및 접근 용이성, 단점 : 모델 객체가 너무 큰 경우 문제가 발생합니다.

  2. 모델을 객체 스토리지 (예 : Amazon S3)에 저장합니다. 이 방법은 모델이 매우 큰 경우에 유용합니다.이 경우 무제한 스토리지와 상당히 쉬운 API를 얻으면 더 많은 비용을 지불해야합니다. 장점 : 무제한 공간 및 임의의 파일 형식을 저장하는 기능. 단점 : 비용, 그리고 그것을 제대로하려면 자신의 추적 시스템을 개발해야합니다.

행운을 빕니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.