แฒกแแแแแ แงแแแแแก! แแ แแแ CV แแแแแแแแแ แ CROC-แจแ. แฃแแแ 3 แฌแแแแ แแแฎแแ แชแแแแแแ แแ แแแฅแขแแแก CV-แแก แแแแแ แแฃแแแแแ. แแ แฎแแแก แแแแแแแแแแแจแ แฉแแแ แแแแ แ แ แแ แแแแแแแแแ, แแแแแแแแแ: แแแแแแ แแแแแแแ แแซแฆแแแแแก แแกแ, แ แแ แแแ แแแแก แแ แแก แแ แแฌแแแแแแ, แแ แแฌแแแแแแ, แแ แแแแแแ แแแแแแแแแ แขแแแแคแแแแ, แฃแงแฃแ แแแแแแ แแแแก แแ แแ แ แกแแแแ แแแก แแ แฆแ แฃแแแแแก. ; แฉแแแ แฉแแแฌแแ แแ แแแแแแแแแแ, แ แแแแแแแช แแแแแแแแแแแแแแแ แกแแแชแแแแฃแ แแแแจแ แแ แแแแแแแแ แ แแแแแแแแ แแแ แแแ แแแแก แแแแแแก; แฃแแ แฃแแแแแงแแคแแ, แ แแ แแฃแจแแแก แแชแแแ แฉแแคแฎแฃแขแ, แฎแแแแแแแแแแแ แแ แ.แจ. แแแแแแแแ แแแแแแจแ แแแแแ, แ แแแแแกแแช แกแฃแ แก แแแฌแแกแแแฃแแแแแจแ แจแแกแแแ; แงแแแแแคแแ แ แแแแแแแแแ, แ แแช แจแแแแแซแแ.
แ แแกแแแแก แแแแแแแ แแ แงแแแแแคแแ แก?
แแ แแแฅแขแแแแก แแแแฎแแ แชแแแแแแแก แแ แแชแแกแจแ แแฎแแแแแแ แแฃแฌแฃแแแแก, แแแแ แแฃแฌแฃแแก, แแแแแแ แ แแ แแแแแแแก แแ แแชแแแแ แแ แแแแแแแแจแ แแแแชแแแแแ.
แแแแแ แกแแขแฃแแชแแแก แกแแแฃแแแชแแ
แฌแแ แแแแแแแแแแ, แ แแ แฉแแแ แแแแแฆแแ แกแแแฃแจแแ แแฎแแแแแแ แแ แแแแแแแแ "N"-แจแ, แ แแแแแก แกแแฅแแแแแแแแช แแแแแแจแแ แแแฃแแแ ML-แแแ. แฉแแแ แแแฃแจแแแแ ML (DL, CV) แแ แแแฅแขแแ, แจแแแแแ แ แแขแแแฆแแช แแแแแแแแแแ แ แกแฎแแ แกแแแฃแจแแแแ, แแแแแแแ แแแกแแแแแแ แแ แแฃแแ แฃแแแแแแ แกแแแฃแแแ แแ แกแฎแแแก แแแแ แแแก.
- แแแแแ แกแแแแ แแแแก แแแแแแขแ, แ แแแแ แแ แฃแแแ แแแแแแฎแกแแแ แแ แกแแ แแแฉแแ แแแ, แ แ แฐแแแแ แแแ แแแแขแ แแแ แกแชแแแแ แแ, แ แแช แแแแแแ แแ, แ แ แจแแแแแแแแ แแแแแงแแแแแ.
แจแแแซแแแแ แแ แกแแแแแแแก แแ แแแแแ แแแ แแแแขแ, แแฃ แแแ แแแแฎแแแแ แแแคแแ แแแชแแแก แงแแแแ แแแจแแแแแแ: แแแแจแ, แแแแคแแแฃแ แแชแแแจแ, แแแฃแแจแ, แฆแ แฃแแแแจแ แกแแแฃแจแแ แแแ แแแแจแ. แแ แจแแแแฎแแแแแ แแแแฎแ แแแ แแแแขแ, แ แแแแกแแช แฐแแแแ แแแ แแแแขแ แแแ แแแแฎแแแแแ แแแแแแขแแ แแแฃแแ แฎแแแแแแก แกแแฎแแ แแแแจแ, แแแแแแแ, แคแแแขแแแแแก แคแ แแแ. แแฎแแ แฌแแ แแแแแแแแแ, แ แแ แแฅแแแ แแแแ แฃแแแแ แแ แ แแฅแแแแก แแ แแแฅแขแจแ, แแ แแแแ แแ แแแแแแแแแก แแ แแแฅแขแจแ, แ แแแแแแแช แแแขแแแ แแแแแแแแ แแ แแฅแแแ แแแแแแแแ แแแแแ แแแแฆแแ แแแแ แแ แแแแแแ แกแแฎแแแแ model_1.pb. แกแฃแ แแแแก แแแกแแกแ แฃแแแแแแ แแ แแแแแ แขแแแแแแแก แแแแแแกแแชแแแแ, แฌแแ แแแแแแแแแแ, แ แแ แแฅแแแแช แแแแฌแงแแแ แกแแแชแแแแแกแขแ แฎแแ แ. - แฒแแแแแ แซแ. แแแแแก แแแกแแจแแแแแ แฉแแแ แแ แงแแแแแ, แแแแช แแแกแแแ แแแแฃแจแแแแแ, แฃแแแ แจแแแฅแแแแ แแแ แแแ. แฎแจแแ แแ แฎแแแแ, แ แแ แ แแขแแแฆแแช แแ แแแแแแขแแแแก แแแแแแแแ แแแแแ. แแก แแกแแแ แจแแแซแแแแ แแแฎแแแก แแ แแขแ แแแแแแฃแ แ แแแแชแแแ. แแ แแแแแ แแ แแแแแฏแแ แแ แแแก แแแแแ แแแ, แแ แ?
- แแแแแแแแแ แแแแแแก (แแแแแแแแแ, แแแแฅแแแแก แแแขแแฅแขแแ แก). แฉแแแ แแแแแแแแ แ แแฅแแแแ, แ แแ แแก แฎแแแแ แซแแแแแ แแแ แแ - แแ แแ แแแแแแแ แฉแแแแ แจแแแแแ. แแแแแ แแฃแฌแแแแ แแแก car_detection_v1.pb. แจแแแแแ แแแแแ แฏแแจแแแ แแแแ แแก - car_detection_v2.pb. แแแ แแแแฃแแ แแแ แแแแแก แจแแแแแ, แฉแแแแ แแแแแแแแ แแ แฉแแแ แแแแแแ แแแกแฌแแแแแ แกแฃแ แฃแคแ แ แแแขแก, แกแฎแแแแแกแฎแแ แแ แฅแแขแแฅแขแฃแ แแก แแแแแงแแแแแแ. แจแแแแแแ, แแฅแแแแแ แแ แขแแคแแฅแขแแแแก แแแแแฃแแ, แ แแแแแแ แจแแกแแฎแแ แแแคแแ แแแชแแ แฃแแแ แจแแแ แแแแแก แฃแแขแแแแแแฃแแแ (แแแแ แแ แแแแก แแแแแแแแแแแ แแแแแแแแแแ, แ แแแแแ แแฎแแ แฉแแแ แแแแฅแแก แฃแคแ แ แแ แแแ แแขแแขแฃแแ แกแแแแแฎแแแ).
- แแแ แแ, แแฎแแ แงแแแแแคแแ แ แแแกแ แฃแแแ! แฉแแแ แแแแฅแแก แแแแแแ! แจแแแแแซแแแ แแแแแฌแงแแ แจแแแแแแ แแแแแแแก แขแ แแแแแแ, แแ แฅแแขแแฅแขแฃแ แแก แจแแแฃแจแแแแแ แแฎแแแ แแ แแแแแแแก แแแแแกแแญแ แแแแ, แแฃ แจแแแซแแแแ แฉแแแก แแแกแแแแแแ? แแ แแแ แแแแแแแแแแ?
แแ แแแแแแแแแก แแแแแขแแคแแชแแ แแแ
แแ แแแฅแขแแ แแ แแ แแแฃแฅแขแแ แแฃแจแแแแ แแ แแแแแ แแแแแแแแแก แกแแฅแแแ. แแ แแแ แแแแแแแแแแแจแ แแแแแแแแแแ แแแแแแ แแ แแแแแแ, แฃแคแ แ แแแขแ แแ แแแฅแขแแ แแ แแแแแ แแ แแแฅแขแแแ แ แแฃแแแแแ. แแกแแ แแฃ แแกแ, แกแแขแฃแแชแแแแ แแแแแ แแฆแฌแแ แแแ แชแแแแแแแ (แแ แแ แ แแฎแแแแ) แแแ แแแแฃแ แแแแแแแแชแแแแจแ แแแฎแแแแ แแแแแแ แแแแแแ แแแแแแ แแแแแแ. แงแแแแแแแ แแก แแฌแแแแก แแ แแแก แแแแแ แแแแก, แแแแแแฃแแแแแก, แแแ แแแแก, แจแแกแแซแแแ แแแแฎแแแ แแแแแแ แฃแแแแงแแคแแแแแแก แแ, แกแแแแแแแ, แแแแแ แแฃแ แคแฃแแก. แแแฃแฎแแแแแแ แแแแกแ, แ แแ แฉแแแ แงแแแแแแ แฉแแแฃแแแแ แแ แแแแงแแแแแ แแ แแกแ แแ แแแแแ แซแแแ แ แแแแแก, แแ แแฏแแ แ, แ แแ แแ แแแแก แกแฃแ แก แแ แแแแแแขแแแแก แแแแแแแ แแแแ แแแแแแ แแแ.
แแกแ แ แแ, แฉแแแ แแแแแแ แแ แแแแแแแแ แแแแก แแ แแ แชแแแแ แแ แแฎแแแแแ, แ แแ แแ แแก แแแแแกแแญแ แแแ แแ แแแแแแแแ. แแแแกแแแแแก แกแแญแแ แแ:
- แกแแแฃแจแแ แจแแแแแแแแก แแแฎแแ แฎแแแฃแแแ แจแแแแฎแแ;
- แแแแแแ แขแแแแก แแฎแแแ แแแแแแจแ แแแแแแแก แฉแแ แแแแก แแ แแชแแกแ;
- แแแแแแแแ แแแแก แแแ แแแแก แแแแแ แแแแก แแ แแชแแกแแก แแแแแ แขแแแแแ;
- แแแแแแแก แแแ แกแแแแแก แแ แแชแแกแแก แแแแคแแแฃแ แแชแแ;
- แแฅแแก แแแแแแแแแก แแแแแแแฌแแแแแก แแแกแแฎแแ แฎแแแแแ แแแ;
- แแแซแแแแแ แกแแฎแแแแฌแแคแ แแแ แแแแก แแแแแแแก แแแกแขแ แฃแแแแขแ;
- แแแแแแแ แแแแแแแแแก แฌแแ แแแแแแแแ แแแขแแแแก แแแ.
แ แแแแ แช แฉแแแก, แแฃแชแแแแแแแแ แกแแแฃแจแแ แแ แแชแแกแแก แจแแแฃแจแแแแแ, แ แแแแแแช แกแแจแฃแแแแแแก แแแแชแแแ แแแ แขแแแแ แแ แแแฎแแ แฎแแแฃแแแ แแแ แแแ แแก แกแแกแแชแแชแฎแแ แชแแแแ? แแ แแ แแฅแขแแแแก MLOps แแฌแแแแแ
MLOps, แแ DevOps แแแแฅแแแฃแ แ แกแฌแแแแแกแแแแก, แกแแจแฃแแแแแแก แแซแแแแก แแแแแชแแแแ แแแชแแแแ แแแแก แแ IT แแฃแแแแแก แแแแแแแจแ แแแแแ แแ แแแแแ แแแ แแแแแแแก แแแแแแแแ แแแแกแ แแ แแแแแ แแแแก แขแแแแ แแแแฅแแแฃแ แ แกแฌแแแแแแแก แแแแแแแแแก แแแแแขแแ แแแแแก, แแแแแแแชแแแกแ แแ แแแ แแแแก แแแแ.
แแฅแแแ แจแแแแซแแแแ
แจแแแแแแ แฉแแแก แกแขแแขแแแจแ แแ แแฆแแฌแแ แแ แแชแแกแแก แแฎแแแแ แแแฌแแแก. แแแแกแแฎแแ แชแแแแแแแแ แแแแแแแงแแแแ MLflow แแแกแขแ แฃแแแแขแก, แ แแแแแ... แแก แแ แแก แฆแแ แแแแแก แแ แแแฅแขแ, แแแกแแแแแจแแ แแแแแ แกแแญแแ แแ แแชแแ แ แ แแแแแแแแแก แแแแ แแ แแ แแก แแแขแแแ แแชแแ แแแแฃแแแ แฃแ ml แฉแแ แฉแแแแแแ. แจแแแแซแแแแ แแแขแแ แแแขแจแ แแแซแแแแแ แกแฎแแ แแแกแขแ แฃแแแแขแแแ, แ แแแแ แแชแแ Kubeflow, SageMaker, Trains แแ แ.แจ. แแ แจแแกแแซแแแ แแแแแแ แแก, แ แแแแแแช แฃแแแแแกแแ แจแแแกแแแแแแแ แแฅแแแแก แกแแญแแ แแแแแแก.
MLO-แแแแก โแจแแแแแโ MLFlow แแแกแขแ แฃแแแแขแแก แแแแแงแแแแแแก แแแแแแแแแก แแแแแงแแแแแแ
MLFlow แแ แแก แฆแแ แแแแแก แแแแขแคแแ แแ ml แแแแแแแแแก แกแแกแแชแแชแฎแแ แชแแแแแก แแแ แแแแกแแแแก (
MLflow แแแแชแแแก แแแฎ แแแแแแแแแขแก:
- MLflow Tracking - แแแแชแแแก แจแแแแแแแแก แฉแแฌแแ แแก แกแแแแแฎแแแก แแ แแแ แแแแขแ แแแก, แ แแแแช แแแแแแฌแแแ แแก แจแแแแแ;
- MLflow Project - แกแแจแฃแแแแแแก แแแซแแแแ แจแแคแฃแแแ แแแแ แแ แแแแแฎแแ แชแแแแแ แแแ แแแแแกแแแแ แแแแขแคแแ แแแแ;
- MLflow Models - แแแกแฃแฎแแกแแแแแแแ แแแแแแแแแก แฌแแ แแแแแแจแ แแแแแแแกแแแแแ;
- MLflow Registry - แกแแจแฃแแแแแแก แแแซแแแแ แจแแแแแฎแแ แแแแแแแแ แแ แแแ แแแ แแแแ แแแแแแแ แแแแ แชแแแขแ แแแแแแแฃแ แกแแชแแแจแ.
MLflow แแฃแจแแแแก แแ แแ แแแฃแแแ:
- แแแจแแแแ แแ แแก แขแ แแแแแแแก แกแ แฃแแ แชแแแแ, แแแ แแแแขแ แแแ แแ แแแขแ แแแ, แ แแแแแแแช แแแแแแ แ แแแแกแขแ แแชแแ;
- แแฅแกแแแ แแแแแขแ แแ แแก โแแแแโ, แ แแแแแแช แแ แแแ แแแแแแแแ แแแแก.
แแแแแแแแแก แงแแแแ แแแแแฏแ แแแแแ แแแแแ Ubuntu 18.04 แแแแ แแชแแฃแ แกแแกแขแแแแแ.
1. แแแแแแแแกแแ แกแแ แแแ แ
แแแแกแแแแแก, แ แแ แฉแแแ แแแ แขแแแแ แแแแ แแแ แฉแแแแ แแ แแแฅแขแ แแ แแแแแฆแแ แงแแแแ แกแแญแแ แ แแแคแแ แแแชแแ, แฉแแแ แแแแแแแแแกแแแ แกแแ แแแ แก. MLflow แแแแแแแแแแก แกแแ แแแ แก แแฅแแก แแ แ แซแแ แแแแแ แแแแแแแแแขแ:
- backend store - แแแกแฃแฎแแกแแแแแแแแ แ แแแแกแขแ แแ แแแฃแแ แแแแแแแแแก แจแแกแแฎแแ แแแคแแ แแแชแแแก แจแแกแแแแฎแแ (แแฎแแ แแแญแแ แแแแ 4 DBMS: mysql, mssql, sqlite แแ postgresql);
- แแ แขแแคแแฅแขแแแแก แแแฆแแแแ - แแแกแฃแฎแแกแแแแแแแแ แแ แขแแคแแฅแขแแแแก แจแแกแแแแฎแแ (แแฎแแ แแแญแแ แแแแ แจแแแแฎแแแก 7 แแแ แแแแขแ: Amazon S3, Azure Blob Storage, Google Cloud Storage, FTP แกแแ แแแ แ, SFTP แกแแ แแแ แ, NFS, HDFS).
แ แแแแ แช แแ แขแแคแแฅแขแแแแก แแแฆแแแแ แกแแแแ แขแแแแกแแแแก, แแแแฆแแ sftp แกแแ แแแ แ.
- แฏแแฃแคแแก แจแแฅแแแ
$ sudo groupadd sftpg
- แแแแแแขแแ แแแแฎแแแ แแแแแ แแ แแแแงแแแแ แแแกแแแแก แแแ แแแ
$ sudo useradd -g sftpg mlflowsftp $ sudo passwd mlflowsftp
- แฌแแแแแแก แ แแแแแแแแ แแแ แแแแขแ แแก แ แแแฃแแแ แแแ
$ sudo mkdir -p /data/mlflowsftp/upload $ sudo chown -R root.sftpg /data/mlflowsftp $ sudo chown -R mlflowsftp.sftpg /data/mlflowsftp/upload
- แแแแแแขแแ แ แแแแแแแแ แฎแแแ /etc/ssh/sshd_config
Match Group sftpg ChrootDirectory /data/%u ForceCommand internal-sftp
- แแแแแขแแแ แแแ แกแแ แแแกแ
$ sudo systemctl restart sshd
แ แแแแ แช backend แแแฆแแแแ แแแแฆแแ postgresql.
$ sudo apt update
$ sudo apt-get install -y postgresql postgresql-contrib postgresql-server-dev-all
$ sudo apt install gcc
$ pip install psycopg2
$ sudo -u postgres -i
# Create new user: mlflow_user
[postgres@user_name~]$ createuser --interactive -P
Enter name of role to add: mlflow_user
Enter password for new role: mlflow
Enter it again: mlflow
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
# Create database mlflow_bd owned by mlflow_user
$ createdb -O mlflow_user mlflow_db
แกแแ แแแ แแก แแแกแแฌแงแแแแ, แแฅแแแ แฃแแแ แแแแแแกแขแแแแ แแ แจแแแแแแ แแแแแแแก แแแแแขแแแ (แแแ แฉแแแ แจแแฅแแแแ แชแแแแ แแแ แขแฃแแแฃแ แ แแแ แแแ):
pip install mlflow
pip install pysftp
แแแแแ แแแแแฌแงแแ แฉแแแแ แกแแ แแแ แ
$ mlflow server
--backend-store-uri postgresql://mlflow_user:mlflow@localhost/mlflow_db
--default-artifact-root sftp://mlflowsftp:mlflow@sftp_host/upload
--host server_host
--port server_port
2. แแแแแแขแแ แแแแแแแแแ
แแแแกแแแแแก, แ แแ แฉแแแแ แขแ แแแแแแแก แจแแแแแแแ แแ แแแแแแ แแแก, แแแแแแแแแ แแแแก แแแแแแแแแ แแแแแแแแ แแแแแแ แ แ แฎแแแแแแ, แฎแแแ แฃแคแ แแกแแ แแแฎแแแแแแแแ แแ แแฅแแแ แจแแซแแแ แแจแแแแแ แแแแแแแแแแ แกแแกแฌแแแแ แแ แแชแแกแ, แฉแแแ แฃแแแ แแแแแแแขแแ แแแแแแแแแ. แแแแแแแแแ แแแจแแแแก แแแ แแแแขแ แแแแก, แแแขแ แแแแก, แแ แขแแคแแฅแขแแแแก แแ แแแแแกแแแแ แ แแแแแขแแแแแ แแแคแแ แแแชแแแก แจแแแแฎแแแก แขแ แแแแแแแก แแแฌแงแแแแก แจแแกแแฎแแ, แฉแแแแก แจแแแแฎแแแแแจแ, แกแแ แแแ แแ.
แแแแแแแแแ, แแ แจแแแฅแแแแ แแแขแแ แ
แแฅ แแ แแก แกแขแ แแฅแแแแแ, แกแแแแช แฎแแแแ แงแแแแแแ แกแแแแขแแ แแกแ:
def run(self, epochs, lr, experiment_name):
# getting the id of the experiment, creating an experiment in its absence
remote_experiment_id = self.remote_server.get_experiment_id(name=experiment_name)
# creating a "run" and getting its id
remote_run_id = self.remote_server.get_run_id(remote_experiment_id)
# indicate that we want to save the results on a remote server
mlflow.set_tracking_uri(self.tracking_uri)
mlflow.set_experiment(experiment_name)
with mlflow.start_run(run_id=remote_run_id, nested=False):
mlflow.keras.autolog()
self.train_pipeline.train(lr=lr, epochs=epochs)
try:
self.log_tags_and_params(remote_run_id)
except mlflow.exceptions.RestException as e:
print(e)
แแฅ self.remote_server แแ แแก แแแขแแ แ แจแแคแฃแแแ mlflow.tracking แแแแแแแแแ. MlflowClient (แแแฎแแ แฎแแแฃแแแแแกแแแแก แแแแแแแแ), แ แแกแ แแแฎแแแ แแแแแแช แแฅแแแ แแฅแกแแแ แแแแแขแก แแ แแฃแจแแแ แกแแ แแแ แแ. แจแแแแแแ, แแ แแฆแแแแจแแแ, แกแแ แฃแแแ แแแแ แแแแแแแก แแแจแแแแแก แจแแแแแแแ (mlflow.set_tracking_uri(self.tracking_uri)). แแ แฉแแ แแแ แแแขแแแแขแฃแ แฉแแฌแแ แแก mlflow.keras.autolog(). แแแแแแแ MLflow Tracking แแฎแแ แก แฃแญแแ แก แแแขแแแแขแฃแ แฉแแฌแแ แแก TensorFlow, Keras, Gluon XGBoost, LightGBM, Spark. แแฃ แแฅแแแ แแแ แแแแแแแ แแฅแแแแ แฉแแ แฉแ แแ แแแแแแแแแแ, แแแจแแ แงแแแแแแแแก แจแแแแซแแแแ แแจแแแ แแ แจแแกแแแ. แฉแแแ แแแฌแงแแแ แแแ แฏแแจแก. แแแแ แแแแกแขแ แแ แแ แขแแแแแ แแ แจแแแขแแแแ แแแ แแแแขแ แแแ แแแกแขแแแชแแฃแ แกแแ แแแ แแ.
แ แแแแแแแแ แฎแแแ แแ แแฅแแแ, แแกแแแ แ แแแแ แช แงแแแแแก, แแแฅแแ แฌแแแแแ แแแคแแ แแแชแแแแ แงแแแแ แแแจแแแแแก แจแแกแแฎแแ. แแแแแ แแ?
3. แแแแแแแ แแ แแแฅแขแก
แแฎแแ แแแแแ แแแแแแแแแแแ แแ แแแฅแขแแก แแแฌแงแแแ. แแแแกแแแแแก แแแแแแขแแ MLproject แแ conda.yaml แคแแแแ แแ แแแฅแขแแก root-แจแ.
MLแแ แแแฅแขแ
name: flow_segmentation
conda_env: conda.yaml
entry_points:
main:
parameters:
categories: {help: 'list of categories from coco dataset'}
epochs: {type: int, help: 'number of epochs in training'}
lr: {type: float, default: 0.001, help: 'learning rate'}
batch_size: {type: int, default: 8}
model_name: {type: str, default: 'Unet', help: 'Unet, PSPNet, Linknet, FPN'}
backbone_name: {type: str, default: 'resnet18', help: 'exampe resnet18, resnet50, mobilenetv2 ...'}
tracking_uri: {type: str, help: 'the server address'}
experiment_name: {type: str, default: 'My_experiment', help: 'remote and local experiment name'}
command: "python mlflow_training.py
--epochs={epochs}
--categories={categories}
--lr={lr}
--tracking_uri={tracking_uri}
--model_name={model_name}
--backbone_name={backbone_name}
--batch_size={batch_size}
--experiment_name={experiment_name}"
MLflow แแ แแแฅแขแก แแฅแแก แ แแแแแแแแ แแแแกแแแ:
- แกแแฎแแแ - แแฅแแแแ แแ แแแฅแขแแก แแแกแแฎแแแแแ;
- แแแ แแแ - แฉแแแก แจแแแแฎแแแแแจแ, conda_env แแแฃแแแแแแก, แ แแ Anaconda แแแแแแงแแแแแ แแแกแแจแแแแแ แแ แแแแแแแแแแฃแแแแแก แแฆแฌแแ แ แแ แแก conda.yaml แคแแแแจแ;
- แจแแกแแแแก แฌแแ แขแแแแแ - แแแฃแแแแแแก, แ แแแแแ แคแแแแแแ แแ แ แแแแแ แแแ แแแแขแ แแแแ แจแแแแแซแแแ แแแจแแแแ (แงแแแแ แแแ แแแแขแ แ แแแขแแแแขแฃแ แแ แแฌแแ แแแ แขแ แแแแแแแก แแแฌแงแแแแกแแก)
แแแแแ.แแแแแ
name: flow_segmentation
channels:
- defaults
- anaconda
dependencies:
- python==3.7
- pip:
- mlflow==1.8.0
- pysftp==0.2.9
- Cython==0.29.19
- numpy==1.18.4
- pycocotools==2.0.0
- requests==2.23.0
- matplotlib==3.2.1
- segmentation-models==1.0.1
- Keras==2.3.1
- imgaug==0.4.0
- tqdm==4.46.0
- tensorflow-gpu==1.14.0
แแฅแแแ แจแแแแซแแแแ แแแแแแงแแแแ แแแแแ แ, แ แแแแ แช แแฅแแแแ แแแจแแแแแก แแแ แแแ, แแแแแขแแแแแ แแแคแแ แแแชแแแกแแแแก แแแฎแแแ, แแฎแแแแ
4. แแแแแฌแงแแ แแแ แฏแแจแ
แฉแแแ แแแแแแ แแแ แแ แแแฅแขแก แแ แแแแแแแแแแ แ แแ แแแฅแขแแก แแแ แแฅแขแแ แแแจแ:
git clone https://github.com/simbakot/mlflow_example.git
cd mlflow_example/
แแแกแแจแแแแแ แกแแญแแ แแ แแแแแแแแแแแแแก แแแงแแแแแ
pip install mlflow
pip install pysftp
แแแแขแแ แ แแ แแแแแแแแจแ, แแ แแแงแแแแ conda_env, Anaconda แฃแแแ แแงแแก แแแแแกแขแแแแ แแแฃแแ แแฅแแแแก แแแแแแฃแขแแ แจแ (แแแแ แแ แแแแก แแแแแแแ แแชแแแแแ แจแแแแซแแแแ แงแแแแ แกแแญแแ แ แแแแแขแแก แแแแแกแขแแแแ แแแแ แแ แแแจแแแแแก แแแ แแแแขแ แแแแแ แแแแแจแแ).
แงแแแแ แแแกแแแแแแแแแแ แแขแแแ แแแกแ แฃแแแแฃแแแ แแ แจแแแแแซแแแ แแแแแฌแงแแ แขแ แแแแแแแก แแแฌแงแแแ. แแ แแแฅแขแแก แซแแ แแแแ:
$ mlflow run -P epochs=10 -P categories=cat,dog -P tracking_uri=http://server_host:server_port .
แแ แซแแแแแแก แจแแงแแแแแก แจแแแแแ แแแขแแแแขแฃแ แแ แจแแแฅแแแแแ แแแแแ แแแ แแแ แแ แแแแฌแงแแแ แกแฌแแแแแแ.
แแแแแ แแแงแแแแแ แแแแแแแแจแ แแแแแแ แ แขแ แแแแแแแก แแแแฅแแแแก แ แแแแแแแแ, แแแขแแแแ แแแแ, แ แแแแแแจแแช แแแแแแ แกแแแแแแขแแ แแแ (แกแ แฃแแ แกแแ แจแแแแซแแแแ แแแฎแแ
แจแแกแแซแแ แแแ แแแแขแ แแแแก แกแ แฃแแ แกแแ แจแแแแซแแแแ แแฎแแแแ MLproject แคแแแแจแ.
5. แจแแแคแแกแแ แกแฌแแแแแก แจแแแแแแแ
แขแ แแแแแแแก แแแกแ แฃแแแแแก แจแแแแแ แจแแแแแซแแแ แแ แแฃแแแ แจแ แแแแแแแแแ แฉแแแแ แกแแ แแแ แแก แแแกแแแแ แแแ
แแฅ แฉแแแ แแฎแแแแแ แงแแแแ แแฅแกแแแ แแแแแขแแก แฉแแแแแแแแแแก (แแแแ แแแ แชแฎแแแ), แแกแแแ แแแคแแ แแแชแแแก แแแจแแแแแแแก แจแแกแแฎแแ (แจแฃแแจแ). แฉแแแ แจแแแแแซแแแ แแแฎแแ แฃแคแ แ แแแขแแแฃแ แ แแแคแแ แแแชแแ (แแแ แแแแขแ แแแ, แแแขแ แแแ, แแ แขแแคแแฅแขแแแ แแ แ แแแแแแแแ แแแแแขแแแแแ แแแคแแ แแแชแแ) แแแแแแฃแแ แแแจแแแแแกแแแแก.
แแแแแแฃแแ แแแขแ แแแแกแแแแก แจแแแแแซแแแ แแแแแแแแ แแแ แชแแแแแแแแแแก แแกแขแแ แแแก
แแแแ. แแ แแแแแแขแจแ, แฉแแแ แจแแแแแซแแแ แแแแแแแแแแแแ แจแแแแแแแ "แฎแแแแ" แ แแแแแจแ แแ แแกแแแ แจแแแแซแแแแ แแแแงแแแแ แแแขแแแแขแฃแ แ แแแแแแแชแแ MLflow API-แแก แแแแแงแแแแแแ.
6. แแแแแแแก แ แแแแกแขแ แแชแแ
แแแก แจแแแแแ แ แแช แแแแแแแแแแแแ แฉแแแแ แแแแแแ แแ แแแแแแฌแงแแแขแแ, แ แแ แแก แแแแ แแ แแก แแ แซแแแแกแแแแก, แแแแ แซแแแแแ แแแก แ แแแแกแขแ แแชแแแก, แแแแกแแแแก แแแ แฉแแแ แฉแแแแแแแก แกแแญแแ แ แแแจแแแแแก (แ แแแแ แช แแแฉแแแแแแแ แฌแแแ แแแแแชแจแ) แแ แฉแแแแแแแ แ แฅแแแแแ.
แแแก แจแแแแแ แ แแช แฉแแแแก แแแแแแก แกแแฎแแแก แแแซแแแแ, แแแก แแฅแแก แแแ แกแแ. แแฃ แจแแแแแฎแแแ แกแฎแแ แแแแแแก แแแแแ แกแแฎแแแแ, แแแ แกแแ แแแขแแแแขแฃแ แแ แแแแแฎแแแแแ.
แแแแแแฃแ แแแแแแก แจแแแแแซแแแ แแแแแแแขแแ แแฆแฌแแ แ แแ แแแแ แฉแแแ แกแแแ แแแแแแแ แแแแแแแ แแ แ-แแ แแ (Staging, Production, Archived); แจแแแแแแแจแ, API-แก แแแแแงแแแแแแ, แฉแแแ แจแแแแแซแแแ แแ แแแแแแแ แแแแแแแ แฌแแแแแ, แ แแช, แแแ แกแแแก แจแแฅแแแแกแแแ แแ แแแ, แแแแแขแแแแ แแแฅแแแแแแแก แแซแแแแ.
แฉแแแ แแกแแแ แแแแฅแแก แแแ แขแแแ แฌแแแแแ แงแแแแ แแแแแแแ
แแ แแแแ แแแ แกแแแแ
แ แแแแ แช แฌแแแ แแแ แแแ แแคแจแ, แงแแแแ แแแแ แแชแแ แจแแแซแแแแ แแแแฎแแ แชแแแแแแก API-แก แแแแแงแแแแแแ.
7. แแแแแแแแกแแ แแแแแแ
แแ แแขแแแแ แฃแแแ แแแแฅแแก แแแฌแแ แแแแแ (แแแ แแก) แแแแแแ. แแแแแแแแ แแแแกแ, แแฃ แ แแแแ แจแแแแซแแแแ แแแแแแงแแแแ แแแ:
class SegmentationModel:
def __init__(self, tracking_uri, model_name):
self.registry = RemoteRegistry(tracking_uri=tracking_uri)
self.model_name = model_name
self.model = self.build_model(model_name)
def get_latest_model(self, model_name):
registered_models = self.registry.get_registered_model(model_name)
last_model = self.registry.get_last_model(registered_models)
local_path = self.registry.download_artifact(last_model.run_id, 'model', './')
return local_path
def build_model(self, model_name):
local_path = self.get_latest_model(model_name)
return mlflow.keras.load_model(local_path)
def predict(self, image):
image = self.preprocess(image)
result = self.model.predict(image)
return self.postprocess(result)
def preprocess(self, image):
image = cv2.resize(image, (256, 256))
image = image / 255.
image = np.expand_dims(image, 0)
return image
def postprocess(self, result):
return result
แแฅ self.registry แแ แแก แแกแแ แแแขแแ แ แจแแคแฃแแแ mlflow.tracking.MlflowClient-แแ, แแแฎแแ แฎแแแฃแแแแแกแแแแก. แกแแฅแแ แแแแจแแ, แ แแ แจแแแแแแแ แแแกแขแแแชแแฃแ แกแแ แแแ แแ แแ แแฅ แแแซแแ แแแแแแก แแแแแแแแฃแแ แกแแฎแแแแ แแ แฃแแฎแแแกแ แฌแแ แแแแแแก แแแ แกแแแ. แจแแแแแ, แแ แแแแแแแขแแแ แแแ แแ แขแแคแแฅแขแก แแแแแแฃแ แแ ./model แกแแฅแแฆแแแแแจแ แแ แแแจแแแแ แแแแแแก แแ แแแ แแฅแขแแ แแแแแ mlflow.keras.load_model(local_path). แแฎแแ แฉแแแ แจแแแแแซแแแ แแแแแแแงแแแแ แฉแแแแ แแแแแแ. CV (ML) แแแแแแแแแ แแแก แจแแฃแซแแแแ แแแ แขแแแแ แแแแฃแแฏแแแแกแแ แแแแแแ แแ แแแแแแฅแแแงแแแ แแฎแแแ แแแ แกแแแแ.
แแแกแแกแ แฃแแก
แแ แฌแแ แแแแแแแแแ แกแแกแขแแแ, แ แแแแแแช แแซแแแแ แกแแจแฃแแแแแแก:
- แชแแแขแ แแแแแแแฃแแ แจแแแแฎแแ ML แแแแแแแแแก, แขแ แแแแแแแก แแ แแแ แแกแแกแ แแ แจแแแแแแแแก แจแแกแแฎแแ;
- แกแฌแ แแคแแ แแแแแแแแกแแ แแแแแแแแ แแแแก แแแ แแแ;
- แแแแแแแแแ แแฃแจแแแแแก แแแแแแแแ แแแแแก แแแแแขแแ แแแแ แแ แแแแแแแ;
- แแแกแแฎแแ แฎแแแแแแ แแแแแแแแแก แแแแแแแ แแแแแก แแแ แกแแ แแ แแแ แแแ;
- แจแแแแแแ แแแฆแแแฃแแ แแแแแแแแแก แแแแแแแแแ แแแ แขแแแแ.
แแก แแแแแแแแ แกแแแแแแจแแ แแ แแแกแแฎแฃแ แแแ แ แแแแ แช แแแแกแแแแ แฌแแ แขแแแก แกแแแฃแแแ แ แกแแกแขแแแแก แแกแแจแแแแแแแ, แ แแแแแแช แจแแแซแแแแ แแแแชแแแแแก แจแแแแแแแแก แจแแคแแกแแแแก แแแขแแแแขแแแแชแแแก แแ แแแแแแแแแก แ แแแแกแขแ แแชแแแก (แแฃแแฅแขแแแ 5 แแ 6, แจแแกแแแแแแกแแ) แแ แแแแแแขแแแ แแแแแชแแแแ แแแแ แแแแก แแแ แกแแแแก, แแ แแฅแแแ แกแฎแแ แ แแแแก? แแฃแแฅแขแ, แ แแกแ แแฅแแแช แแชแแแแแแแ แแ แแก แแก, แ แแ แแฅแแแ แแญแแ แแแแแ MLOps แแแแแแแแแแจแ, MLflow แแฎแแแแ แแแแแแก แแแฆแฌแแแแก แกแแจแฃแแแแแแ.
แแแฌแแ แแ แ แ แแ แแแแแแแแ แจแแแฎแแแแ แ แแช แแ แแแแแแแขแแแ?
แ แแก แแแแแแขแแแแแ แกแแกแขแแแแก, แ แแแ แแก แแแแแแแงแแคแแแแก แแฅแแแแก แกแแญแแ แแแแแแก?
แ แ แแแกแขแ แฃแแแแขแแแกแ แแ แแแแแแแแแก แแงแแแแแ แแ แแแแแแแแแก แแแแแแแแ แแ แแแฌแแแแก แแแแแกแแญแ แแแแ?
PS แแแแขแแแแ แ แแแแแแแแ แแแแแก:
github แแ แแแฅแขแ -
MLflow -
แฉแแแ แกแแแฃแจแแ แแ.แฌแแ แแแ แแแแฎแแแแแกแแแแก - [แแ.แคแแกแขแแ แแแชแฃแแแ]
แฉแแแแ แแแแแแแแ แแแ แแแแฃแแแ แแแกแแแแซแแแแก แกแฎแแแแแกแฎแแ แฆแแแแกแซแแแแแแก IT แกแแแชแแแแแกแขแแแแกแแแแก, แแแแแแแแแ: 8 แแแแแกแก แแแกแแแแแก แแ แแแ 19:00 แกแแแแแ แแแแแแ แแแแ CV แจแแฎแแแแ แ แแแแแแ แคแแ แแแขแจแ, แแแแแขแแ แแกแแแแก แจแแแแฎแแแแแจแ แจแแแแซแแแแ แแแแฆแแ แแแแแฌแแแแแแ, แ แแแแกแขแ แแชแแ.
แฌแงแแ แ: www.habr.com