Как распространить модели sklearn, чтобы они работали на разных архитектурах? - PullRequest
2 голосов
/ 27 января 2020

У меня есть две модели:

  1. sklearn.linear_model.Lasso
  2. sklearn.ensemble.GradientBoostingRegressor

, которые я использую для решения той же проблемы. После обучения я сохраняю модели, используя joblib. Идея состоит в том, чтобы опубликовать sh эти постоянные модели, чтобы другие могли их использовать. Однако я просто попытался загрузить выгруженную модель Gradient Boosting на 32-битную Python установку (предварительно обучив ее на 64-битной Python установке) и получил эту ошибку:

  File "sklearn\tree\_tree.pyx", line 607, in sklearn.tree._tree.Tree.__cinit__
ValueError: Buffer dtype mismatch, expected 'SIZE_t' but got 'long long'

Документы очень мало подробностей об этой проблеме: https://github.com/scikit-learn/scikit-learn/pull/7899/files

Странно, я не получаю эту ошибку при загрузке модели Лассо. Итак, два вопроса:

1) Как сохранить мою модель, чтобы ее можно было использовать на разных архитектурах?

2) Можно ли сохранить определенные типы алгоритмов sklearn для использования на разных архитектурах а не другие? Если да, как я могу сказать? Этот ответ: Scikits-Learn RandomForrest, обученный на 64-битной python, не открывается на 32-битной python, указывает, что это также относится и к Random Forest, но это не дает понять, на какие другие модели это влияет.

Я понимаю, что эту проблему также можно решить, всегда докеризируя любое приложение, обучающее / загружая модель, но я публикую для образовательных целей, где докеризация все сложно.

Большое спасибо!

...