成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

在開始第一個機器學習項目之前就了解的那些事兒

BearyChat / 1590人閱讀

摘要:此外,與訓練機器學習模型的作業(yè)相比,作業(yè)具有不同的執(zhí)行配置文件。此外,還制作了一個界面,以便控制機器學習的參數(shù)指定用于訓練的數(shù)據(jù)量等。

摘要: 一份機器學習過來人的經(jīng)驗清單分享,主要是包含一些關(guān)于構(gòu)建機器學習工作流以及Apache Spark應(yīng)該注意的一些事項,希望這個清單能夠幫助那些正在學習機器學習的相關(guān)人員少走一些彎路,節(jié)約一些時間。

當我們學習任何一個新的內(nèi)容或遇到新的事情時,隨著時間的推移,可能回過頭來會發(fā)現(xiàn),當時要是怎樣結(jié)果又會怎樣。身邊很多人包括我自己在讀完大學后,發(fā)現(xiàn)如果高中再努力一些或重新把大學時間利用好,人生的路途是不是能更順利些……曾經(jīng)聽一位老師說過“青春就像這樣,不管你怎樣過都會過得一團糟”。事實上,大多數(shù)學生沒有利用好時間是由于沒有明確的方向。同理,對于新入職的員工而言,有一個師父在平時的工作中以他過來人的經(jīng)驗引導一下,新員工的發(fā)展也會更順利些。那么對于學習機器學習而言,這里有一份過來人的經(jīng)驗分享清單,希望這個清單能夠幫助那些正在學習機器學習的相關(guān)人員少走一些彎路,節(jié)約一些時間。

這份清單主要是包含一些關(guān)于構(gòu)建機器學習工作流以及Apache Spark相關(guān)的具體內(nèi)容。

預測是困難的

對于任何未知的事情,很難對其做出一個準確的時間預測,但我們會朝著目標前進。然而隨著時間的推移,在努力的過程中逐漸會出現(xiàn)錯誤,這是由于我們無法預測采用哪種方法就能夠得出好的結(jié)果,能夠做的只有確保項目組可以快速地迭代更新。

項目有很大的未知數(shù),請確保團隊能夠進行快速迭代更新

在開始之前驗證數(shù)據(jù)是否完整

當開始使用機器學習管道時,我們已經(jīng)收集了大約3年時間的原始數(shù)據(jù)。但沒有對原始數(shù)據(jù)做任何處理,只是將其存儲以防萬一。原始數(shù)據(jù)采用CSV文件形式,此時沒有注意到這些數(shù)據(jù)存在問題,另外編寫這些文件的代碼會隨著時間的推移而導致一些錯誤。因此在構(gòu)建機器學習管道的同時,還需要修復造成錯誤的數(shù)據(jù)問題,最終在Apache Spark中編寫相關(guān)的代碼來清理歷史數(shù)據(jù)。在進行到中間時刻才發(fā)現(xiàn)問題,而不是在最初,這無疑增加了項目的難度。

**在開展工作之前,請確保數(shù)據(jù)正確

對數(shù)據(jù)進行一次預處理,對構(gòu)建模型進行一百萬次訓練

在最初訓練機器學習模型時,我們嘗試加載所有的數(shù)據(jù)。而采用的數(shù)據(jù)大小是TB級別,如果每次訓練都加載所有數(shù)據(jù)會導致訓練速度很慢。因此,每次訓練時不需要加載所有的數(shù)據(jù),可以對其做一些預處理,創(chuàng)建一個新的小數(shù)據(jù)集。此外,并沒有刪掉原始數(shù)據(jù)集,將其作為備份以防后續(xù)過程中出現(xiàn)新的錯誤。

不要將ETL和模型訓練混淆。如果你正在訓練1000個模型且不想執(zhí)行1000次預處理,可以只做一次預處理并保存,然后將其用于所有的模型訓練需求。

為不同的團隊成員提供輕易的訪問途徑

在上文說過,我們將原始數(shù)據(jù)存儲在AWS S3中備份。當開始使用機器學習開展工作時,發(fā)現(xiàn)為每個人提供輕松地訪問途徑顯得至關(guān)重要。只給予讀取權(quán)限是不夠的,科研人員不會通過筆記本下載TB級的數(shù)據(jù),且不會隨身攜帶筆記本電腦來處理TB級的數(shù)據(jù),這只會浪費每個人的時間。我們發(fā)現(xiàn)使用支持像Apache Spark這樣環(huán)境的Notebook可以達到這個目的,比如Jupyter、zeepelin等,讀者可以根據(jù)自己的平臺選擇合適的Notebook。

為小組人員提供訪問TB級數(shù)據(jù)的途徑,此外必須提供合適的工具使其能夠從中很好的理解這些數(shù)據(jù),比如Jupyter、zeppelin等這些基于spark集群的Notebook。

對于大數(shù)據(jù)而言,監(jiān)控是必須的

當處理大數(shù)據(jù)時,傳統(tǒng)的軟件工程方法是不起作用的。一般的程序可能花費幾分鐘就可以運行完畢,但大數(shù)據(jù)可能需要幾小時到幾天的時間。與傳統(tǒng)軟件編程相比,如何在大數(shù)據(jù)情況下減少批量處理作業(yè)的完成時間這一問題更為復雜。使用云計算可以水平降低機器要求以及縮短運行時間。但是,我們應(yīng)該增加機器的數(shù)量還是完全改變機器的類型?分布式環(huán)境中的瓶頸在哪里?等等這些問題都是減少執(zhí)行時間時需要解決的問題。

對于Apache Spark而言,很難弄清楚需要的機器類型。Amazon EMR帶有Ganglia,這讓我們一眼就可以監(jiān)視集群內(nèi)存/CPU。但有時候也不得不去檢查底層的EC2實例監(jiān)測,因為Ganglia并不完美,將二者結(jié)合起來使用是很不錯的方法。此外,與訓練機器學習模型的作業(yè)相比,ETL作業(yè)具有不同的執(zhí)行配置文件。ETL占用了大量的網(wǎng)絡(luò)和內(nèi)存,機器學習需要更多的計算,可以為這兩種類型的作業(yè)選擇不同的實例類型。

需要從CPU/內(nèi)存/網(wǎng)絡(luò)/IO監(jiān)控方面優(yōu)化成本,此外發(fā)現(xiàn)不同的工作(ETL、機器學習)有不同的機器要求。

在一開始就需要對機器學習預測進行基準測試

對機器學習模型的預測有沒有延遲要求?如果有的話,在選擇任何具體框架之前,請確定該框架的訓練模型是否可以滿足你的延遲要求。對于基礎(chǔ)模型而言,很容易就能掌握其中包含的數(shù)學基本理論,并理所當然的認為它會運行得很快。但事實證明,還有一些其它因素可能會導致預測的速度不如理論上預期的那樣快。建立一個簡單的模型并進行基準測試。如果在建立管道后才發(fā)現(xiàn)問題,這可能會浪費大量的時間。當發(fā)現(xiàn)Spark不能滿足延遲要求時,可以使用mleap庫提升預測延遲。

如果有延遲需求,請從要使用的框架中制作出一個簡單模型,精度、準確率或其它指標都無關(guān)緊要,只需要以預測延遲為基準點。

無論AWS如何顯示,S3都不是一個文件系統(tǒng)

使用AWS的GUI或CLI很容易忘記S3不是一個文件系統(tǒng),S3是一個對象存儲庫,存儲的對象是json、圖片等內(nèi)容。這個區(qū)別很重要,因為在S3中重命名內(nèi)容并不像在真正的文件系統(tǒng)中那樣快。如果在一個文件系統(tǒng)中移動一個對象,它可能會很快地移動,但這在S3中是無法實現(xiàn)的。為什么這個顯得很重要呢?因為當通過Apache將數(shù)據(jù)寫入S3時,Apache Spark會產(chǎn)生臨時文件,然后將其移動到新的秘鑰中。基于以上原因,Apache Spark有一個設(shè)置,可以告訴它不寫入臨時文件,而是寫入最終輸出。我們使用了這種設(shè)置,在寫入AWS s3上節(jié)約了大量的時間。

Apache Spark主要是基于Scala

如果使用的是Apache Spark,你應(yīng)該知道它主要是基于Scala的。Java和Python等應(yīng)用接口也可以工作,但是網(wǎng)上的例子大多是基于Scala的。而我們使用的是Java,這是由于之前的技術(shù)棧使用的是Java。在剛開始時,對于機器學習和Scala等方面都沒有任何專業(yè)知識,我們簡單地認為機器學習對于項目而言至關(guān)重要,而Scala不是。因此,無法讓團隊像處理機器學習問題那樣處理Scala曲線。將Scala翻譯成Java并不難,但將Spark Scala翻譯為Spark Java很困難,因為這些應(yīng)用接口在Java中難以使用。

如果你不了解Scala并且還想使用 Spark Mllib,那么可能需要在選擇語言方面考慮妥協(xié)。這種解決方案不是理想的工程解決方案,而是一個實用的解決方案。

知識分享對于團隊合作而言很重要

如果將機器學習與現(xiàn)有系統(tǒng)集成在一起,那么將不得不與其他開發(fā)人員打交道。此外,還需要與業(yè)務(wù)、操作、營銷等人員進行交流。但是這些人員中的大多數(shù)人不會對機器學習有很好的理解,因此他們需要這方面的知識,但是他們又不能坐下來學習機器學習相關(guān)課程。這個時候就應(yīng)該做一些機器學習方面的知識分享,只需要解釋一些涉及外行常見的術(shù)語即可,比如訓練集/測試集/驗證集、模型等,而不必教他們相關(guān)算法等深奧的內(nèi)容。

對于專業(yè)人員來說,很容易忘記機器學習中充滿了術(shù)語,雖然你可能完全熟悉這些術(shù)語,但對于團隊中的其他人而言,這些可能會是完全陌生的詞語,因為不是所有人都參加過機器學習課程。

對數(shù)據(jù)庫構(gòu)建版本控制可能是一個好的想法

可能需要對數(shù)據(jù)庫構(gòu)建版本控制方案,并且可以在不重新部署整個軟件的情況下切換不同的模型訓練代碼以使用不同的數(shù)據(jù)集。我們創(chuàng)建了一些模型,并用一些數(shù)據(jù)對其進行了嘗試,結(jié)果發(fā)現(xiàn)數(shù)據(jù)量不夠,模型工作得不夠好。因此,為數(shù)據(jù)庫建立版本控制方案,以便可以在V1版本上訓練模型并繼續(xù)生成下一個版本。新版本中足夠的數(shù)據(jù)后,就可以切換模型訓練代碼以使用新數(shù)據(jù)集。此外,還制作了一個UI界面,以便控制機器學習的參數(shù)、指定用于訓練的數(shù)據(jù)量等?;旧峡梢酝ㄟ^UI可以輕松地配置一些參數(shù),以確保對用于訓練的數(shù)據(jù)進行更改時不需要重新部署相關(guān)參數(shù)。

文章標題《Things I wish we had known before we started our first Machine Learning project》,作者:Aseem Bansal

詳細內(nèi)容請查看原文

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68913.html

相關(guān)文章

  • 一頭扎進機器學習前應(yīng)該知道那些事兒

    摘要:當掌握機器學習基本知識以及清楚自己所要處理的任務(wù)后,應(yīng)用機器學習就不會那么難了。因此,在學習和應(yīng)用機器學習之前,我們首先應(yīng)該明確自己的任務(wù)是什么,以及適合使用哪種機器學習方法來完成。 摘要: 本文簡單總結(jié)了機器學習的幾大任務(wù)及其對應(yīng)的方法,方便初學者根據(jù)自己的任務(wù)選擇合適的方法。當掌握機器學習基本知識以及清楚自己所要處理的任務(wù)后,應(yīng)用機器學習就不會那么難了。 機器學習一直是一個火熱的研...

    moven_j 評論0 收藏0
  • 關(guān)于增強學習你應(yīng)該了解五件事兒

    摘要:摘要本文主要是講解了機器學習中的增強學習方法的基本原理,常用算法及應(yīng)用場景,最后給出了學習資源,對于初學者而言可以將其作為入門指南。下圖表示了強化學習模型中涉及的基本思想和要素。 摘要: 本文主要是講解了機器學習中的增強學習方法的基本原理,常用算法及應(yīng)用場景,最后給出了學習資源,對于初學者而言可以將其作為入門指南。 強化學習(Reinforcement Learning)是當前最熱門的...

    huangjinnan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<