Wenn Sie das Modell, die Datei der Zwischengenerierung, die Genauigkeit und andere Ergebnisse gleichzeitig in einem maschinellen Lernsystem verwalten möchten, möchten Sie nicht nur den Code verwalten, indem Sie den Zweig auf Github abschneiden, sondern auch Speicher wie S3 verwenden.
Wenn Sie das gleiche Problem mit vorhandenen Tools lösen möchten, ist es besser, mlflow zu verwenden.
Unabhängig davon, ob Sie die Version mit mlflow verwalten oder Ihre eigene Verwaltungsanwendung mit flask usw. entwickeln, diejenigen, die den Zweignamen von git und den Objektnamen von S3 vereinheitlicht haben Ich hatte das Gefühl, dass es gut war.
Es besteht auch der Wunsch, das in der Vergangenheit geschnittene Release-Tag zu überprüfen und den geschätzten Wert zu diesem Zeitpunkt zu reproduzieren.
Also habe ich den Python-Code geschrieben, um alle aktuellen Zweig- und Remote-Release-Tags zu erhalten.
import subprocess
import pandas as pd
def get_current_branch(repository_dir='./') -> str:
'''Rufen Sie den aktuellen Filialnamen ab
Args:
repository_dir(str):Verzeichnis mit Repository
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:
'''Holen Sie sich Remote-Tags
Args:
repository(str):Verzeichnis mit Repository oder URL des Repositorys(Beispiel: https://github.com/mlflow/mlflow )
Returns:
pd.core.frame.DataFrame
Note:
Wenn Sie einen Zweig anstelle eines Tags erhalten möchten,Von cmd'--tags'Zu'-h'Sie können es in ändern.
'''
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