Кращі практики для зберігання моделей машинного навчання Python


24

Які найкращі практики для збереження, зберігання та спільного використання моделей машинного навчання?

У Python ми зазвичай зберігаємо двійкове представлення моделі, використовуючи соління або joblib. Моделі, в моєму випадку, можуть бути ~ 100Мо великими. Крім того, joblib може зберігати одну модель у декількох файлах, якщо ви не встановите compress=1( /programming/33497314/sklearn-dumping-model-using-joblib-dumps-multiple-files-which-one-is-the- коре ).

Але тоді, якщо ви хочете контролювати права доступу до моделей і мати можливість використовувати моделі з різних машин, який найкращий спосіб їх зберігати?

У мене є кілька варіантів:


Ви отримали ефективний спосіб зробити це?
iNet

Відповіді:



2

Я стикався з цією проблемою (і досі стикаюся з нею сьогодні) протягом багатьох років. Я дійсно річ, що, якщо ви не надаєте детальних вимог, ви не можете очікувати серйозної відповіді. Я пояснюю себе на прикладах моєї роботи:

  • Я регулярно пробую кілька варіантів однієї моделі, щоб знайти, які параметри працюють найкраще. Тренування однієї моделі потребує декількох днів, яка дає певний результат, який згодом використовується для оцінки. Для цього я роблю простий дамп NumPy моделі, оскільки легко поділитися ним між серверами або колегами. Вам слід уникати соління, оскільки він зберігає набагато більше (екземпляри класу, бібліотеки ...), ніж просто параметри, засвоєні вашою моделлю. Імпорт моделі на іншу машину може не спрацювати, якщо середовище python трохи відрізняється.

  • Коли підштовхують модель у виробництві, мені потрібна 1) версія моделі, яку я можу швидко завантажувати у разі поломки сервера (як правило, двійковий формат, зберігаючи лише те, що необхідно, наприклад, ваги нейронної мережі) та 2) a спосіб зберегти модель в оперативній пам'яті для швидкого вирішення запитів API.

Для двох різних цілей мені потрібні три різні формати. Тоді, загалом кажучи, вибір формату залежить від використовуваних інструментів. Наприклад, якщо ви працюєте з TensorFlow, вас може зацікавити їх система обслуговування TensorFlow


1

Я хотів би запропонувати ще 2 підходи.

  1. Зберігайте їх у сховищі документів (наприклад, mongoDB) - цей метод рекомендується, коли файли вашої моделі менше 16 Мбіт (або фрагменти joblib є), тоді ви можете зберігати модель як бінарні дані. крім того, деякі бібліотеки ML підтримують експорт та імпорт моделі в json (наприклад, LightGBM), що робить його ідеальним кандидатом для зберігання в зберіганні документів. Переваги : легке відстеження генерації моделі та легкий доступ, недоліки : речі стануть брудними, якщо об’єкт моделі занадто великий.

  2. Зберігайте свою модель на об'єктному сховищі (наприклад, Amazon S3) - цей спосіб хороший, якщо ваші моделі дуже великі, в цьому випадку ви отримуєте необмежену кількість пам’яті та досить простий API, ви платите більше, це точно. Переваги : необмежений простір та можливість зберігання довільних форматів файлів. Недоліки : вартість та той факт, що для того, щоб це зробити правильно, потрібно буде розробити власну систему стеження.

Щасти!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.