成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

DevOps二三事:用持續集成構建自動模型訓練系統的理論和實踐指南

開發 前端 機器學習
近幾年來,機器學習飛速發展,開展機器學習試驗變成小事一樁。有了scikit-learn和Keras這樣的資源庫,只需幾行代碼,就能創建模型。

本文轉載自公眾號“讀芯術”(ID:AI_Discovery)。

近幾年來,機器學習飛速發展,開展機器學習試驗變成小事一樁。有了scikit-learn和Keras這樣的資源庫,只需幾行代碼,就能創建模型。

然而,把數據科學項目轉變成有意義的應用程序(比如公告團隊決策或融入產品的模型)卻愈加困難。傳統的機器學習項目涉及許多不同的技能組合,想同時掌握全部技能,即便不是絕無可能也絕非易事——那些罕見的既能開發優質軟件,又能做工程師的數據科學家即為獨角獸!

機器學習領域愈加成熟,許多工作都將融合軟件、工程和數學知識,一些工作已然如此了。

引用傳奇數據科學家、工程師、批判觀察家Vicki Boykis博客《數據科學現已不同》中的話:“在熱潮后期,數據科學漸漸與工程學靠攏。顯而易見的是,數據科學家所需技能的可視性將減弱、數據依賴性將降低,且會愈加偏向傳統計算機科學課程。”

[[336829]]

為什么數據科學家需要了解DevOps

有那么多工程和軟件技能,數據科學家應該學習什么呢?我選DevOps。

DevOps是開發和運營的合稱,它于2009年在比利時的一場會議中誕生。該會議旨在緩解技術組織中開發、運營因長期的巨大分歧而產生的緊張態勢。軟件開發人員需要快速產出、頻繁試驗,而運營團隊則優先考慮服務的穩定性及可用性(這群人讓服務器全天候運轉)。其目標對立,彼此之間更是競爭關系。

這不禁令人想到當下的數據科學。通過實驗,數據科學家創造價值:用新方式建模、組合、轉換數據。同時,聘用數據科學家的技術組織更看重穩定性。

這種分歧波及范圍廣泛:最新的Anaconda數據科學狀況報告顯示,認為自己能詮釋數據科學對其組織影響的受訪者不足一半(48%)。據估計,數據科學家創建的模型大多被束之高閣。我們目前沒有十分可行的方式,能在建模團隊及部署團隊間傳遞模型。數據科學家、開發者及落實二者工作的工程師有著截然不同的工具、限制及技能。

DevOps的出現旨在解決開發者和運營者之間的軟件僵局,并取得了極大成功:許多團隊部署新代碼的頻率從數月一次變為一天數次?,F在面對的是機器學習和運營的對抗,MLOps這一為數據科學服務的DevOps原則閃亮登場。

DevOps二三事:用持續集成構建自動模型訓練系統的理論和實踐指南

圖源:unsplash

持續集成

DevOps既是理論,又是實踐,它包括:

  • 自動化一切事物
  • 快速獲得新想法的反饋
  • 減少工作流中的手動交接

在典型的數據科學項目中,存在如下應用:

  • 自動化一切事物。重復且可預測的部分數據處理、模型訓練及模型測試皆可自動化。
  • 快速獲得新想法的反饋。當數據、代碼或軟件環境發生變化時,在類生產環境下迅速對其進行測試(即,生產中有依賴項和限制的機器)。
  • 減少工作流中的手動交接。盡可能為數據科學家找尋模型測試的機會,切勿等到開發人員在生產環境下檢測模型效果再行動。

為實現以上目標,DevOps采用的標準是持續集成(continuous integration, CI)。關鍵在于,改變項目源代碼時(一般是通過git commits更改),軟件被自動創建并測試,每個行為都會得到反饋。通常,CI與創建新功能Git分支的軟件開發活動模型Git-flow配合使用。功能分支通過自動測試便可候選并入主分支。

DevOps二三事:用持續集成構建自動模型訓練系統的理論和實踐指南

CI在軟件開發過程中的示意圖

由此即可實現自動化——改變代碼觸發自動構建,測試緊隨其后。由于迅速得到測試結果,便可以得到快速反饋,因此,開發者能對代碼進行反復迭代。并且,由于一切皆為自動,無需等待他人反饋,實現零切換。

所以,我們為什么不使用已存在于機器學習中的CI呢?我將部分歸因于文化,比如數據科學與軟件工程群體的低交叉性。

另一部分就是技術原因。比如,了解模型性能,需查看準確率、特異度和敏感度等指標。要了解模型的性能,就需要查看準確率、特異度和靈感度等指標。數據可視化(如混淆矩陣或損失圖)或許會對此有所幫助。所以,測試通過/失敗并不會阻礙反饋。若要了解模型是否得到改進,我們需要了解當前問題領域的知識,所以測試結果需要以高效且可人為詮釋的方式報道。

DevOps二三事:用持續集成構建自動模型訓練系統的理論和實踐指南

機器學習項目中的連續集成

持續集成系統如何運作?

現在,看看典型的CI系統如何運作。多虧了GitHub Actions和GitLab CI這類圖像界面清晰且為新手提供詳細操作文檔的工具,學習CI系統的門檻降至最低。由于GitHub Actions對開源項目完全免費,我們就用它舉例:

其運作方式如下:

(1) 建立一個GitHub倉庫。創建名為.github/workflows的目錄,在目錄中放置一個特殊的.yaml文件,其中包含要運行的腳本,如:

  1. $ python train.py 

(2) 更改項目庫內文件,git commit更新,然后提交到GitHub庫。

  1. # Create a new git branch for experimenting$ git checkout -b "experiment" 
  2. $ edit train.py# git add, commit, and push your changes 
  3. $ git add . && commit -m "Normalized features" 
  4. $ git push origin experiment 

(3) 檢測到推送,GitHub立刻在其中一臺計算機上運行.yaml文件的函數。

(4) GitHub彈出通知,是否成功運行函數。

DevOps二三事:用持續集成構建自動模型訓練系統的理論和實踐指南

在GitHub倉庫的操作選項卡中找到以上內

就這么簡單!只需更新代碼,并把更新提交到數據庫,工作流就自動執行。

回到第一步提到的特殊的.yaml文件——快速看一個。隨意命名,文件后綴是.yaml即可,并將其儲存在.github/workflows中。如:

  1. # .github/workflows/ci.yamlname: train-my-model 
  2. on: [push]jobs: 
  3.    run: 
  4.       runs-on: [ubuntu-latest] 
  5.    steps: 
  6.       - uses: actions/checkout@v2 
  7.       - name: training 
  8.       run: | 
  9.          pip install -r requirements.txt 
  10.          python train.py 

指令多如云,但大多數都是從一個Action到另一個Action——大可照搬這份GitHubActions指南,記得在“運行”段填寫工作流就好。

若文件在項目庫中,只要GitHub檢測到代碼更新(通過推送變更),GitHub Actions便會部署Ubuntu服務器,嘗試執行安裝需求的命令并運行Python腳本。請注意,項目倉庫中必須有工作流程所需文件——在這里為requirements.txt和train.py!

得到更好的反饋

自動訓練很酷,但對所有的結果來說,采用易于理解的格式也很重要?,F在,GitHub Actions允許訪問純文本格式的服務器日志。

DevOps二三事:用持續集成構建自動模型訓練系統的理論和實踐指南

GitHub Actions日志的打印輸出示例

但了解模型性能是個棘手的活兒。模型和數據都是高維且非線性的——若無圖片,了解這二者太難了。

我可以展示一種將數據可視化放入CI循環的方法。近幾個月,我在Iterative.ai的團隊(做數據版本控制)一直在研究工具包,助力GitHub Actions和GitLab CI在機器學習項目中的使用,稱為持續機器學習(Continuous Machine Learning ,簡稱CML)。這是開源且免費的。

團隊的基本理念是:“用GitHub Actions訓練機器學習模型”。我們已經建立了一些函數,可給出更詳細的報告而非一個成功/失敗的通知。CML有助于在報告中放置圖片和表格,如這個SciKit-learn生成的混淆矩陣:

DevOps二三事:用持續集成構建自動模型訓練系統的理論和實踐指南

在GitHub中點Pull Request即顯示此報告

為了制作報告,GitHub Actions執行Python模型訓練腳本,用CML函數把模型準確率和混淆矩陣寫入markdown文件。然后CML把markdown文件傳到GitHub。

修改后的.yaml文件包含以下工作流(新添加的行以粗體突出顯示)。

  1. name: train-my-model 
  2. on: [push] 
  3. jobs:  
  4.    run:    
  5.       runs-on: [ubuntu-latest]    
  6.       container: docker://dvcorg/cml-py3:latest     
  7.       steps:      
  8.       - uses: actions/checkout@v2       
  9.       - name: training        
  10.         env:           
  11.            repo_token: ${{secrets.GITHUB_TOKEN }}    
  12.         run: |      
  13.   
  14.            # train.py outputs metrics.txtand confusion_matrix.png  
  15.            pip3 install -rrequirements.txt          
  16.            python train.py                    
  17.         
  18.            # copy the contents ofmetrics.txt to our markdown report 
  19.            cat metrics.txt >>report.md                     # addour confusion matrix to report.md 
  20.            cml-publishconfusion_matrix.png --md >> report.md            # send the report to GitHub fordisplay  
  21.            cml-send-comment report.md 

記住,.yaml現在包含更多詳細配置信息,例如特殊的Docker容器和環境變量,以及一些要運行的新代碼。每個CML項目中的容器及環境變量的詳細信息都是固定的,用戶無需操作,只關注代碼就行。

將這些CML函數添加到工作流中,我們便在CI系統中創建了更完整的反饋循環:

  • 建立一個Git分支,在分支上更新代碼。
  • 自動訓練模型并生成度量(準確率)和可視化(混淆矩陣)。
  • 將這些結果嵌入到Pull Request中的可視報告。

當你和隊友還在考慮更新是否有助于實現建模目標時,各種可參照的可視化表盤就已經新鮮出爐了。另外,該報告通過Git連接到確切項目版本(數據和代碼)、訓練所用服務器及服務器的日志。無比詳細!工作空間不再總是漂浮著與代碼無關的圖表了。

這就是CI在數據科學項目中的基本概念。明確一下,這只是使用CI的最簡單的實例。實際操作中很可能遇到各種更為復雜的情況。CML也有一些特性,可幫你使用儲存在GitHub庫之外的大數據集(使用DVC)并在云端進行訓練,而非在默認的GitHub Actions服務器訓練。這意味著能使用GPU和其它專業設置。

例如,我用GitHub Actions創建一個項目以部署EC2 GPU,然后訓練神經風格轉換模型。這是我的CML報告:

DevOps二三事:用持續集成構建自動模型訓練系統的理論和實踐指南

還可使用自己的Docker容器,進一步模擬

CI對機器學習的最后思考

總結一下,DevOps不是一種特定技術。它既是理論,又是一系列原則和實踐,用于徹底重建開發軟件過程,其高效性在于解決了團隊工作及測試新代碼的系統性瓶頸。

未來,數據科學愈加成熟,掌握在機器學習項目中運用DevOps原則的人就更加炙手可熱——薪資可觀,組織影響力大。持續集成是DevOps的基礎,也是已知的建立具有可靠自動化、快速測試和團隊自治文化的最有效方法之一。

GitHub Actions或GitLab CI之類的系統可實現CI。可使用這些服務構建自動模型訓練系統。其益處頗多:

  • 代碼、數據、模型和訓練基礎(硬軟件環境)都是git版本。
  • 自動化工作、進行高頻測試并得到迅速反饋(使用CML即可拿到可視化報告)。從長期看,這無疑會加速項目發展。
  • CI系統讓每個團隊成員都能看到工作進展。大家無需絞盡腦汁搜集最佳運行的代碼、數據及模型。

[[336832]]

圖源:unsplash

一旦入了坑,一鍵git commit就能自動進行模型訓練、記錄并報告,絕對讓你樂翻天。行動起來,感覺棒極了!

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2015-09-29 10:08:26

DockerJava持續集成

2014-04-24 11:36:43

DevOps運維開發

2018-11-20 08:00:00

持續集成持續部署Git代碼倉庫

2020-06-23 10:41:08

云計算DevOps持續集成

2021-01-18 14:51:34

JenkinsNginx前端

2017-04-28 08:57:58

持續集成DevOpsC#

2017-02-27 18:35:23

集成交付部署

2016-08-05 17:19:37

持續集成持續交付系統運維

2023-01-16 08:00:00

2021-07-23 10:17:17

網絡攻擊存儲供應鏈

2023-02-20 08:02:38

智能自動化交付

2017-03-02 15:40:12

iOSAndroidJenkins

2023-03-19 11:47:57

Taro小程序持續集

2017-10-19 09:47:55

容器化微服務集成

2014-11-20 13:49:15

2022-04-20 09:00:00

軟件開發自動化測試工具

2021-03-31 09:00:00

管道集成工具

2019-04-18 10:35:30

持續集成工具Buddy

2021-10-19 15:01:26

API檢測工具網絡安全

2013-08-07 14:19:30

禁用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产成人精品女人久久久野战 | 狠狠躁躁夜夜躁波多野结依 | av手机在线 | 精品欧美乱码久久久久久 | 久久久久国产精品一区二区 | 澳门永久av免费网站 | 国产精品久久久久久模特 | 国产96色在线 | 国产精品成人久久久久 | 欧美精| 成人免费观看男女羞羞视频 | 97avcc| 男女羞羞视频在线观看 | 一级片免费视频 | 你懂的在线视频播放 | 久久99久久98精品免观看软件 | 日韩另类 | 在线观看亚洲精品 | 黄视频网址 | 337p日本欧洲亚洲大胆精蜜臀 | 亚洲成人国产精品 | 国产成人自拍av | 爱高潮www亚洲精品 中文字幕免费视频 | 午夜影视 | 四虎永久免费地址 | 一区二区三区回区在观看免费视频 | 亚洲免费在线观看 | 北条麻妃国产九九九精品小说 | 亚洲国产精品成人 | 欧美一级在线免费 | 精品国产乱码久久久 | 欧美色综合| 色婷婷久久久亚洲一区二区三区 | 欧美精品久久久久 | 亚洲91精品 | 亚洲精品久久区二区三区蜜桃臀 | 天堂va在线观看 | av网站在线免费观看 | 亚洲 中文 欧美 日韩 在线观看 | 国产精品一区一区三区 | 欧美国产精品久久久 |