Lorsque vous souhaitez gérer le modèle, le fichier de génération intermédiaire, la précision et d'autres résultats en même temps dans un système d'apprentissage automatique, vous souhaitez gérer non seulement le code en coupant la branche sur Github mais également en utilisant un stockage tel que S3.
Si vous souhaitez résoudre le même problème avec les outils existants, il semble préférable d'utiliser mlflow.
Cependant, que vous gériez la version avec mlflow ou que vous développiez votre propre application de gestion avec flask etc., ceux qui ont unifié le nom de branche de git et le nom d'objet de S3 J'avais le sentiment que c'était bien.
Il existe également un désir de vérifier l'étiquette de libération qui a été coupée dans le passé et de reproduire la valeur estimée à ce moment-là.
J'ai donc écrit le code Python pour obtenir toutes les balises de branche et de version distantes actuelles.
import subprocess
import pandas as pd
def get_current_branch(repository_dir='./') -> str:
'''Obtenez le nom actuel de la succursale
Args:
repository_dir(str):Répertoire avec référentiel
Return:
str
'''
cmd = "cd %s && git rev-parse --abbrev-ref HEAD" % repository_dir
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
proc.wait()
stdout_data = proc.stdout.read()
# stderr_data = proc.stderr.read()
current_branch = stdout_data.decode('utf-8').replace('\n','')
return current_branch
def get_remote_tags(repository='./') -> pd.core.frame.DataFrame:
'''Obtenir des balises distantes
Args:
repository(str):Répertoire avec référentiel ou URL du référentiel(Exemple: https://github.com/mlflow/mlflow )
Returns:
pd.core.frame.DataFrame
Note:
Si vous voulez obtenir une branche au lieu d'une balise,De cmd'--tags'À'-h'Vous pouvez le changer en.
'''
if repository.startswith('https://github.com/'):
cmd = "git ls-remote --tags %s" % repository
else:
cmd = "cd %s && git ls-remote --tags" % repository
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
proc.wait()
stdout_data = proc.stdout.read()
# stderr_data = proc.stderr.read()
if stdout_data:
tag_df = pd.DataFrame([r.split('\t') for r in stdout_data.decode('utf-8').split('\n')], columns=['hash', 'tag_name'])
return tag_df.dropna(how='any')
else:
print('cannot find tags.')
return pd.DataFrame(columns=['hash', 'tag_name'])
Recommended Posts