Tentative d'inclusion du modèle d'apprentissage automatique dans le package python

Overview

Une personne de Mercari a publié de merveilleuses connaissances liées au développement et au fonctionnement de l'apprentissage automatique. https://mercari.github.io/ml-system-design-pattern/README_ja.html Développons un peu la gestion du modèle.

Tout d'abord, laissez-moi vous donner une vue d'ensemble. https://github.com/arc279/model-in-package-sample Je veux dire, c'est tout.

Ce qui suit est une explication des principaux points. Je n'expliquerai pas les outils de configuration, veuillez donc rechercher chacun d'eux sur Google si nécessaire.

L'environnement d'exécution de l'exemple est

(.venv) $ python -V
Python 3.8.1

Je l'envoie à.

Les données non sources peuvent être incluses dans le package python

Il y a quelque temps, dans la zone setuptools, des choses comme package_data et data_files étaient compliquées, mais Récemment MANIFEST.in et [importlib.resources](https: // docs) Il semble qu'il ait convergé vers .python.org / ja / 3 / library / importlib.html # module-importlib.resources).

Notez que ʻimportlib.resources a été ajouté depuis python 3.7, et les anciennes versions vous obligent à utiliser quelque chose comme pkg_resources. Pour être honnête, ce n'est pas facile à utiliser, donc si possible, utilisez ʻimportlib.resources dans la version 3.7 ou ultérieure.

Veuillez consulter cette zone pour savoir comment l'utiliser.

https://github.com/arc279/model-in-package-sample/blob/master/MANIFEST.in https://github.com/arc279/model-in-package-sample/blob/master/src/mymodel/init.py#L5

Une fois durci à une roue, il ressemble à ceci

Il contient un fichier * .pkl.

$ python setup.py bdist_wheel

(..snip..)

$ zipinfo -1 dist/mymodel-1.1.1_titanic.from_kaggle-py3-none-any.whl
mymodel/__init__.py
mymodel/version.py
mymodel/titanic_sample/__init__.py
mymodel/titanic_sample/models/__init__.py
mymodel/titanic_sample/models/LogisticRegression/__init__.py
mymodel/titanic_sample/models/LogisticRegression/model.pkl
mymodel/titanic_sample/models/RandomForestClassifier/__init__.py
mymodel/titanic_sample/models/RandomForestClassifier/model.pkl
mymodel/titanic_sample/models/SVC/__init__.py
mymodel/titanic_sample/models/SVC/model.pkl
mymodel/titanic_sample/models/SVC/__pycache__/__init__.cpython-38.pyc
mymodel/titanic_sample/models/__pycache__/__init__.cpython-38.pyc
mymodel-1.1.1_titanic.from_kaggle.dist-info/METADATA
mymodel-1.1.1_titanic.from_kaggle.dist-info/WHEEL
mymodel-1.1.1_titanic.from_kaggle.dist-info/top_level.txt
mymodel-1.1.1_titanic.from_kaggle.dist-info/RECORD

Côté utilisateur

Une fois qu'il est emballé dans une roue, il peut être mis avec un pip.

(.venv) $ pip install dist/mymodel-1.1.1_titanic.from_kaggle-py3-none-any.whl

(..snip..)

(.venv) $ pip list
Package         Version
--------------- -------------------------
joblib          0.15.1
mymodel         1.1.1-titanic.from-kaggle
numpy           1.18.5
pandas          1.0.4
pip             19.2.3
python-dateutil 2.8.1
pytz            2020.1
scikit-learn    0.23.1
scipy           1.4.1
setuptools      41.2.0
six             1.15.0
threadpoolctl   2.1.0
wheel           0.34.2

appel

(.venv) $ ipython
In [1]: import mymodel

In [2]: mymodel.__version__
Out[2]: '1.1.1-titanic.from-kaggle'

Lire les données dans le package

C'est une continuation d'ipython.

In [3]: import importlib.resources

In [4]: import pickle

In [5]: import mymodel.titanic_sample.models.LogisticRegression

In [6]: b = importlib.resources.read_binary(mymodel.titanic_sample.models.LogisticRegression, "model.pkl")

In [9]: len(b)
Out[9]: 739

In [10]: c = pickle.loads(b)

In [11]: c.__class__
Out[11]: sklearn.linear_model._logistic.LogisticRegression

Tu peux le faire. Voir cette zone pour plus de détails.

Au fait

En supprimant les points ci-dessus, nous pouvons obtenir l'implication qu'un ** un package python contenant uniquement des données ** est également possible. Je pense que le montant à inclure dépend du projet, de sorte que vous pouvez envisager diverses choses.

Enfin sur la gestion des versions

La convention de version du paquet python est plutôt bâclée, et la versioning sémantique ja /) peuvent être adoptées. Vous pouvez donc utiliser cet exemple de Mercari tel quel. https://mercari.github.io/ml-system-design-pattern/Operation-patterns/Data-model-versioning-pattern/design_ja.html

Comme ça. https://github.com/arc279/model-in-package-sample/blob/master/setup.cfg#L3 https://github.com/arc279/model-in-package-sample/blob/master/src/mymodel/version.py

Je parle de ça. Voir Sample github pour une vue d'ensemble.

Recommended Posts

Tentative d'inclusion du modèle d'apprentissage automatique dans le package python
Python: prétraitement dans l'apprentissage automatique: présentation
J'ai installé Python 3.5.1 pour étudier l'apprentissage automatique
Python: prétraitement en machine learning: acquisition de données
Une introduction à Python pour l'apprentissage automatique
[Python] Enregistrement des résultats d'apprentissage (modèles) dans l'apprentissage automatique
Python: prétraitement dans l'apprentissage automatique: conversion de données
Coursera Machine Learning Challenge en Python: ex6 (Comment ajuster les paramètres SVM)
[Python] Introduction facile à l'apprentissage automatique avec python (SVM)
J'ai essayé d'implémenter TOPIC MODEL en Python
Touchons une partie de l'apprentissage automatique avec Python
[Pour les débutants] Introduction à la vectorisation dans l'apprentissage automatique
Introduction à l'apprentissage automatique
J'ai essayé d'organiser les index d'évaluation utilisés en machine learning (modèle de régression)
Un débutant en apprentissage automatique a essayé de créer un modèle de prédiction de courses de chevaux avec python
Créez un environnement interactif pour l'apprentissage automatique avec Python
Outil MALSS (application) qui prend en charge l'apprentissage automatique en Python
Défis d'apprentissage automatique de Coursera en Python: ex2 (retour logistique)
Outil MALSS (basique) qui prend en charge l'apprentissage automatique en Python
Préparation au démarrage de «Python Machine Learning Programming» (pour macOS)
Coursera Machine Learning Challenge en Python: ex1 (régression linéaire)
Entropie croisée à revoir dans les devoirs de la semaine 2 de Coursera Machine Learning
Comment utiliser le modèle appris dans Lobe en Python
MALSS (introduction), un outil qui prend en charge l'apprentissage automatique en Python
Modèle d'apprentissage automatique prenant en compte la maintenabilité
Apprentissage automatique dans Delemas (s'entraîner)
Gestion des packages Python avec IntelliJ
Connectez-vous au site Web en Python
Apprentissage automatique avec Python! Préparation
Programmation Python Machine Learning> Mots-clés
Parler avec Python [synthèse vocale]
Utilisé en EDA pour l'apprentissage automatique
Commencer avec l'apprentissage automatique Python
Comment développer en Python
Super introduction à l'apprentissage automatique
Publier sur Slack en Python
Comment adapter plusieurs bibliothèques d'apprentissage automatique en une seule fois
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de régression
Le résultat de l'apprentissage automatique des ingénieurs Java avec Python www
Essayez d'évaluer les performances du modèle d'apprentissage automatique / de classification
Comment utiliser l'apprentissage automatique pour le travail? 03_Procédure de codage Python
Défis d'apprentissage automatique de Coursera en Python: ex7-2 (analyse principale)
Mettre en œuvre l'apprentissage de l'empilement en Python [Kaggle]
[Python] Comment faire PCA avec Python
Introduction à la rédaction de notes d'apprentissage automatique
Convertir Markdown en PDF en Python
Que diriez-vous d'Anaconda pour créer un environnement d'apprentissage automatique avec Python?
Comment collecter des images en Python
Défis de Coursera Machine Learning en Python: ex5 (ajustement des paramètres de régularisation)
Introduction aux bases de Python de l'apprentissage automatique (apprentissage non supervisé / analyse principale)
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 10 Introduction à Cupy
Apprentissage automatique par python (1) Classification générale
Comment utiliser SQLite en Python
Résumé de l'apprentissage automatique par les débutants de Python
Automatisez les tâches de routine dans l'apprentissage automatique
Dans la commande python, python pointe vers python3.8
Règles d'apprentissage Widrow-Hoff implémentées en Python