python里的dvc

2022-05-28  本文已影响0人  万州客

第一次,先找感觉。使用python进行ml中的一般东西了。mlflow,minio上一节已建好了。怎么使用git和dvc来联动呢?一个管理代码,一个管理数据和AI。本来想用 python PDM的,但好像速度不行,update慢,又冲突,又循环的。使用最传统的requirements.txt管理依赖吧。

一,安装一个gitlab

除了mlflow和minio,还安排一个gitlab。
docker-compose.yml

version: '3'
services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    container_name: gitlab
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.1.111:8993'
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
    ports:
      - '8993:8993'

二,安装一个dvc环境和依赖

requirements.txt
大约就是这几个,PDM导出的requirements.txt太多,就不贴了

    "lightgbm~=3.2",
    "mlflow~=1.18",
    "boto3~=1.17",
    "fastapi~=0.65",
    "uvicorn~=0.14",
    "dvc[s3]~=2.3",
    "pyarrow~=4.0",
    "scikit-learn~=0.24",
    "hydra-core~=1.1",
    "matplotlib~=3.4",
    "prefect~=0.14",
    "cloudpickle~=1.6",

三,将sklearn的iris数据导一个parquet格式

先转成csv,再导出parquet格式

import pandas as pd
from sklearn import datasets
from sklearn.datasets import load_iris

# =============iris to csv========================
iris_datasets = load_iris()
data_np = pd.DataFrame(iris_datasets.data,
                       columns=['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'])
label = pd.DataFrame(iris_datasets.target, columns=['target'])
data_np['target'] = label
data_np.to_csv("iris.csv")
# ==============csv to parquet========================
data = pd.read_csv('iris.csv')
data.to_parquet('iris.parquet')

四,设置gitlab和dvc

从gitlab上clone一个项目,初始化dvc

git clone http://192.168.1.111:8993/ai/dvc.git
dvc init

将那个iris的parquet的数据文件,放到data/raw目录下,使用dvc配置与minio的连接,然后push

(base) root@6bbb605efca8:/dvc# dvc remote add -d minio s3://mlflow -f
Setting 'minio' as a default remote.
(base) root@6bbb605efca8:/dvc# dvc remote modify minio endpointurl http://192.168.1.111:9000
(base) root@6bbb605efca8:/dvc# dvc remote modify minio access_key_id admin
(base) root@6bbb605efca8:/dvc# dvc remote modify minio secret_access_key adminadmin
(base) root@6bbb605efca8:/dvc# dvc push

如果项目目录有新增的AI模型相关的数据,选dvc push,再gitlab push。这样,gitlab里保存的是ai模型数据的s3://地址,而不是真的数据。
我觉得是通过gitlab和minio,将两部分的数据都管理起来了,但使用的命令要两边跳。

五,看效果和关系

2022-05-28 23_59_16-MessageCenterUI.png 2022-05-28 23_58_46-MessageCenterUI.png 2022-05-28 23_58_28-MessageCenterUI.png 2022-05-28 23_55_51-C__Windows_system32_cmd.exe.png
上一篇下一篇

猜你喜欢

热点阅读