1

런타임에 우리의 ML 모델 (sci-kit를 통해)을 사용하여 교육 한 후이를 '.pkl'파일로 저장하고 서버 시작시 메모리에로드합니다. 제 질문은 두 가지입니다 :기계 학습 모델 많이 - 저장 및로드

  1. 동일한 작업을 수행하는 더 좋은 방법이 있습니까? 최고 압축을 사용한 후 하나의 .pkl 파일이 500MB 크기에 도달합니다. 모델을 다른 형식으로 저장할 수 있습니까?

  2. 어떻게 규모를 조정합니까? 같은 .pkl 파일이 많이 있습니다 (예 : 하나의 작업에 대해 서로 다른 언어의 20 개 모델이 있으며 마찬가지로 5 ~ 20 개의 모델이 5 개 있습니다). 모든 .pkl 파일을 동시에로드하면 서비스가 OOM으로 바뀝니다. 요청에 따라 각 .pkl 파일을로드/언로드하면 API가 느려지고 용납되지 않습니다. 유일하게 가능한 해결책을 로딩하거나 선택의 폭을 넓히는 방법은 무엇입니까?

고마워요!

+1

어떤 Scikit-Learn 모델 유형을 사용하고 있습니까? 500MB 피클 파일의 압축되지 않은 크기는 얼마입니까? Scikit-Inside 클래스에는 대부분 Numpy 행렬이 있습니다. 그들이 조밀하거나 희소 한 행렬인지 확인 했습니까? – user1808924

답변

0

임의의 포리스트에 대한 가지 치기와 같이 성능을 너무 많이 손상시키지 않으면 서 크기를 줄이는 데 사용할 수있는 여러 가지 유형의 모델이 있습니다. 그 외에도 모델 자체를 변경하지 않고 (즉, 복잡성을 줄임으로써) 모델 내부 메모리의 크기에 대해 할 수있는 일은 많지 않습니다.

나는 pickle 라이브러리 대신에 joblib 라이브러리를 사용해 보길 권한다. 거기에 "압축"매개 변수를 사용하여 압축이 얼마나 강력한지를 제어 할 수있다.

귀하가 사용하는 모델 유형을 고려할 때 우리는 귀하에게보다 명확하고 구체적인 조언을 제공 할 수 있습니다.