<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          人工智能項目的 Python 版本管理工具DVC

          共 3771字,需瀏覽 8分鐘

           ·

          2020-09-13 01:33


          1. 人工智能項目的版本管理

          對于傳統(tǒng)的軟件工程項目(比如java, web), git是一個非常不錯的代碼版本管理工具。但是人工智能項目,如機器學(xué)習(xí)或者深度學(xué)習(xí),和傳統(tǒng)軟件工程項目有一定的差別

          • 代碼和文件:人工智能項目除了代碼以外,還要大量的訓(xùn)練數(shù)據(jù),還有文件比較大的模型文件
          • 開發(fā)過程:人工智能項目開發(fā)過程,存在一定的不確定性,是一個探索調(diào)優(yōu)的過程。需要很多的組合調(diào)參(不同的參數(shù),不同的數(shù)據(jù)等),然后分別做評估,挑選最好的模型。這是一個相對復(fù)雜的過程,要匹配參數(shù),數(shù)據(jù),代碼,模型。

          如上所述,這些差別,git存在一定不足

          • git建議的單個文件在50M,并不擅長管理操作大的文件,如幾十G的文件
          • git因為大數(shù)據(jù)上管理的不足,就無法管理與之相互關(guān)聯(lián)的一連串的迭代變化

          是時候祭出DVC, data version control,數(shù)據(jù)版本管理工具。

          2. 什么是DVC

          dvc即data version control, 是一種針對人工智能項目(機器學(xué)習(xí)或者深度學(xué)習(xí))的數(shù)據(jù)版本管理工具。DVC的操作和GIT類似,可以認(rèn)為為GIT的二次開發(fā)封裝。結(jié)合GIT,DVC可以有效的管理人工智能項目的整個流程,包括代碼,數(shù)據(jù),訓(xùn)練配置,模型。

          GIT和DVC分工如下:

          • dvc:負(fù)責(zé)數(shù)據(jù)和模型等大文件的存儲、下載等管理,同時生成元數(shù)據(jù)(.dvc文件)描述這些數(shù)據(jù)和模型, 并且串聯(lián)整個人工智能項目工作流
          • git:負(fù)責(zé)代碼和dvc生成的元數(shù)據(jù)文件的版本管理

          3. DVC操作

          3.1.安裝

          pip?install?dvc

          3.2.數(shù)據(jù)版本管理

          3.2.1 初始化

          #?到git目錄下
          git?config?--global?user.name?"xxxx"
          git?config?--global?user.email?"[email protected]"
          git?clone?ssh://[email protected]/test/test.git
          cd?test/

          #?dvc?初始化
          dvc?init
          #?將dvc?初始化的文件提交?git
          git?commit?-m?"Initialize?DVC"

          #?初始化后會在項目目錄下生成.dvc文件夾,存儲dvc相關(guān)的信息
          .dvc
          ├──?config
          ├──?plots
          │???├──?confusion.json
          │???├──?default.json
          │???├──?scatter.json
          │???└──?smooth.json
          └──?tmp
          ????└──?index

          3.2.2 添加數(shù)據(jù)

          可以通過dvc add/git add將數(shù)據(jù)和模型添加到版本管理中

          #?假設(shè)數(shù)據(jù)在arch_train/model_zoo/nsfw_online_err.zip
          dvc?add?arch_train/model_zoo/nsfw_online_err.zip
          git?add?arch_train/model_zoo/.gitignore?arch_train/model_zoo/nsfw_online_err.zip.dvc


          #?.dvc?后綴為數(shù)據(jù)的元數(shù)據(jù)文件,默認(rèn)為存儲路徑為.dvc/cache下
          cat?arch_train/model_zoo/nsfw_online_err.zip.dvc
          outs:
          -?md5:?26eb560df48bf11ddf303135749b0c60
          ??path:?nsfw_online_err.zip

          .
          ├──?cache
          │???└──?26
          │???????└──?eb560df48bf11ddf303135749b0c60

          3.2.3 版本切換管理

          可以配合git的分支管理,來獲取分支下不同的數(shù)據(jù)和模型。

          #?切換分支
          git?checkout?分支名

          #?dvc通過git中的.dvc?文件,切換這個分支下數(shù)據(jù)
          dvc?checkout

          3.2.3 共享代碼(push/pull)

          當(dāng)多人開發(fā)時,dvc push會根據(jù)config中的遠(yuǎn)程主機配置,將數(shù)據(jù)push到遠(yuǎn)程主機。遠(yuǎn)程主機可以是ssh,http還有云盤存儲等。

          #?建立?遠(yuǎn)程服務(wù)?ssh或者h(yuǎn)ttp
          #?這里以本地的其他目錄為例子
          mkdir?-p?/tmp/dvc-storage
          dvc?remote?add?-d?myremote?/tmp/dvc-storage
          git?commit?.dvc/config?-m?"Configure?local?remote"
          #?新建后?就會在`.dvc/config`存儲遠(yuǎn)程主機訪問的方式
          vim?config?
          [core]
          ????remote?=?myremote
          ['remote?"myremote"']
          ????url?=?/tmp/dvc-storage

          #?dvc?push?上傳數(shù)據(jù)
          dvc?push

          #?遠(yuǎn)程主機中數(shù)據(jù)是上傳的一個備份
          tree?/tmp/dvc-storage/
          /tmp/dvc-storage/
          └──?26
          ????└──?eb560df48bf11ddf303135749b0c60

          1?directory,?1?file
          ls?-l??/tmp/dvc-storage/26
          total?93400
          -r--r--r--?1?root?root?95640298?Sep??4?13:44?eb560df48bf11ddf303135749b0c60
          ls?-lh??/tmp/dvc-storage/26
          total?92M
          -r--r--r--?1?root?root?92M?Sep??4?13:44?eb560df48bf11ddf303135749b0c60

          如果數(shù)據(jù)變更,同樣dvc+git進行版本管理

          #?數(shù)據(jù)變化
          dvc?add?arch_train/model_zoo/nsfw_online_err.zip
          git?commit?arch_train/model_zoo/.gitignore?arch_train/model_zoo/nsfw_online_err.zip.dvc?-m?"Dataset?updates"
          dvc?push

          當(dāng)其他人想使用共享代碼和數(shù)據(jù)時 git clone + dvc pull

          #?下載代碼和數(shù)據(jù).dvc
          git?clone?ssh://[email protected]/test/test.git
          cd?test/

          #?根據(jù).dvc和config遠(yuǎn)程主機配置,下載對應(yīng)的數(shù)據(jù)和模型
          dvc?pull?

          3.3 串聯(lián)工作流

          3.2中已經(jīng)介紹了dvc的最常用的操作,可以看出操作和git的操作基本上吻合的,原理上可以和git對等。可以通過dvc run來建立訓(xùn)練和評估過程的依賴關(guān)系,即將輸入的數(shù)據(jù),預(yù)訓(xùn)練的模型,配置和輸出的模型和訓(xùn)練腳本關(guān)聯(lián)起來,可以很方面追溯執(zhí)行過程, 每次關(guān)聯(lián)dvc都會生成一個yaml配置來描述這個關(guān)聯(lián)性。dvc run的主要參數(shù)

          • -n 操作的名稱
          • -p 配置,可以是多個,文件或者文件夾
          • -d 操作依賴的數(shù)據(jù),腳本和模型等,可以是多個,文件或者文件夾
          • -o 操作的輸出,可以是多個,文件或者文件夾
          • command:執(zhí)行操作的命令如python -u train.py
          dvc?run?-n?prepare?\
          ??????????-p?prepare.seed,prepare.split?\
          ??????????-d?src/prepare.py?-d?data/data.xml?\
          ??????????-o?data/prepared?\
          ??????????python?src/prepare.py?data/data.xml

          4. 總結(jié)

          dvc把數(shù)據(jù)、模型、算法腳本和Metrics當(dāng)成一次代碼checkout,配合git就可以很方面的管理每一次訓(xùn)練的所有環(huán)節(jié),還可以通過dvc metrics show -T來比較不同版本的模型性能。更多詳細(xì)的dvc功能參見https://dvc.org/doc/start;歡迎交流討論。總結(jié)如下

          • dvc add/push/pull 管理數(shù)據(jù)
          • dvc run 管理工作流串聯(lián)
          • 建議一個模型迭代一個分支,該分支囊括代碼,數(shù)據(jù),模型,配置, 模型評估;可以完美迭代模型優(yōu)化,而處亂不驚。


          作者簡介:wedo實驗君, 數(shù)據(jù)分析師;熱愛生活,熱愛寫作


          贊 賞 作 者



          Python中文社區(qū)作為一個去中心化的全球技術(shù)社區(qū),以成為全球20萬Python中文開發(fā)者的精神部落為愿景,目前覆蓋各大主流媒體和協(xié)作平臺,與阿里、騰訊、百度、微軟、亞馬遜、開源中國、CSDN等業(yè)界知名公司和技術(shù)社區(qū)建立了廣泛的聯(lián)系,擁有來自十多個國家和地區(qū)數(shù)萬名登記會員,會員來自以工信部、清華大學(xué)、北京大學(xué)、北京郵電大學(xué)、中國人民銀行、中科院、中金、華為、BAT、谷歌、微軟等為代表的政府機關(guān)、科研單位、金融機構(gòu)以及海內(nèi)外知名公司,全平臺近20萬開發(fā)者關(guān)注。

          長按掃碼添加“Python小助手”



          ▼點擊成為社區(qū)會員? ?喜歡就點個在看吧

          瀏覽 75
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美黑人在线 | 婷婷五月激情综合 | 四虎影院a | 日本色情视频网站 | 黄色AV天堂 |