1

В настоящее время после обучения наших моделей ML (через sci-kit), чтобы использовать их во время работы, я сохраняю их как файл .pkl и загружаю его в память во время запуска сервера. Мой вопрос: два раза:Множество моделей машинного обучения - сохранение и загрузка

  1. Есть ли лучший способ сделать то же самое? Один файл .pkl достигает размера 500 МБ после использования самого высокого сжатия. Могу ли я сохранить свою модель в другом формате?

  2. Как это масштабировать? У меня много таких файлов .pkl (например, 20 моделей для разных языков для одной задачи, и у меня есть 5 таких задач, т. Е. Модели ~ 5 * 20). Если я загружу все такие файлы .pkl одновременно, служба будет работать OOM. Если я загружаю/выгружаю каждый файл .pkl по запросу, API становится медленным, что неприемлемо. Как мне масштабировать или выборочно загружать единственно возможное решение?

Спасибо!

+1

Какие типы моделей Scikit-Learn вы используете? Что представляет собой несжатый размер файла с расчетом на 500 МБ? Внутри классов Scikit-Learn обычно есть матрицы Numpy. Вы проверяли, являются ли они плотными или разреженными матрицами? – user1808924

ответ

0

Существует несколько типов моделей, для которых вы можете уменьшить размер без ущерба для производительности, например, для обрезки случайных лесов. Помимо этого не так много можно сделать для размера модели в памяти без изменения самой модели (т. Е. Уменьшения ее сложности).

Я бы предложил попробовать библиотеку joblib вместо библиотеки pickle, там вы можете использовать параметр «compress», чтобы контролировать, насколько сильным будет ваше сжатие (с компромиссом с загрузкой дольше).

Также обратите внимание, что, учитывая тип моделей, которые вы используете, мы можем предоставить вам более конкретные и конкретные рекомендации.

Смежные вопросы