美文网首页
python里的dvc

python里的dvc

作者: 万州客 | 来源:发表于2022-05-28 23:59 被阅读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

    相关文章

      网友评论

          本文标题:python里的dvc

          本文链接:https://www.haomeiwen.com/subject/ylowprtx.html