丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開發(fā)者 正文
發(fā)私信給三川
發(fā)送

0

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

本文作者: 三川 2017-04-23 19:26
導(dǎo)語:本次公開課對(duì)兩個(gè)話題進(jìn)行了梳理:企業(yè)大數(shù)據(jù)平臺(tái)和 TensorFlow 應(yīng)用場(chǎng)景。

本周四,雷鋒網(wǎng) AI 研習(xí)社邀請(qǐng)了跨國 IT 巨頭 ThoughtWorks 的資深數(shù)據(jù)架構(gòu)師白發(fā)川,主講線上公開課,為大家講解 TensorFlow 在工程項(xiàng)目中的應(yīng)用。

講師

白發(fā)川:自我介紹一下,我是 ThoughtWorks 白發(fā)川,之前一直從事大數(shù)據(jù),后來我們開始做人工智能方向的一些嘗試和工作。我們致力于將人工智能、機(jī)器學(xué)習(xí)、大數(shù)據(jù)結(jié)合在一塊。在研究了了很多相關(guān)的機(jī)器學(xué)習(xí)框架之后,我們也做了自己的深度學(xué)習(xí)框架——deeplearning.scala。它由 scala 編寫,目前是開源的,大家可以了解下。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

這是公開課的錄制視頻:

公開課文字版

不方便看視頻的童鞋,可閱讀以下雷鋒網(wǎng)對(duì)本次公開課的文字轉(zhuǎn)錄。

由于篇幅較長(zhǎng),本次公開課的文字轉(zhuǎn)錄被拆為上下兩部分,這是下篇。上篇請(qǐng)見雷鋒網(wǎng) TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(上) | AI 研習(xí)社。

白發(fā)川:上文我們提到了幾種不同的大數(shù)據(jù)架構(gòu),它們和之前提到的數(shù)據(jù)成熟度評(píng)估模型相關(guān)——我們首先會(huì)評(píng)估一個(gè)企業(yè)的數(shù)據(jù)到達(dá)了怎樣一個(gè)級(jí)別,才知道在目前哪一種解決方案最為適合。

人工智能與大數(shù)據(jù)

現(xiàn)在我們來談?wù)勅斯ぶ悄堋?/p>

其實(shí)人工智能這個(gè)概念并不是近期才有的,很早、幾十年前大家就已經(jīng)在提人工智能了。人工智能的核心目標(biāo)是我們希望機(jī)器像人一樣的思考。那機(jī)器怎樣才能像人一樣思考?

這里面發(fā)展出了兩個(gè)分支:一個(gè)是早期的概率論模型,另一個(gè)是神經(jīng)網(wǎng)絡(luò)。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

我們常見的 HMM、貝葉斯,都是屬于概率論的。概率論對(duì)于數(shù)據(jù)的處理,你基本上存在一個(gè)抽樣或者以概率形式去計(jì)算的。所以在很早的時(shí)候數(shù)據(jù)量不是特別大的情況下,概率論會(huì)是一個(gè)特別好的選擇。

另外,概率論可以處理不太大的數(shù)據(jù)集,所以說相對(duì)來講它會(huì)更加常用。比如說我們使用 HMM 去做分詞,這也是個(gè)非常要好的一個(gè)場(chǎng)景。另外一個(gè)分支是神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)很早就提出了,但近幾年才是各種深度神經(jīng)網(wǎng)絡(luò)框架逐漸火起來的一個(gè)時(shí)代。因?yàn)樵谧罱覀儼l(fā)現(xiàn),計(jì)算機(jī)的計(jì)算能力被提高了——神經(jīng)網(wǎng)絡(luò)在數(shù)據(jù)量越大的情況下,它的效果越好;在神經(jīng)網(wǎng)絡(luò)層次越深的情況下,它的效果更好;而這一切背后依靠的都是計(jì)算機(jī)的計(jì)算能力。神經(jīng)網(wǎng)絡(luò)也有好幾種,比如說深度神經(jīng)網(wǎng)絡(luò)、遞歸神經(jīng)網(wǎng)絡(luò)、卷積等。如果計(jì)算機(jī)的計(jì)算能力沒有發(fā)展,我們談的人工智能將繼續(xù)的停留在實(shí)驗(yàn)室。所以背后如果沒有數(shù)據(jù)的支撐,AI 基本上談不上任何效果。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

我們不可能拿十條數(shù)據(jù)來訓(xùn)練,如果我們要上生產(chǎn)環(huán)境。這樣的數(shù)據(jù)在本質(zhì)上達(dá)不到生產(chǎn)需求。在很早的時(shí)候,數(shù)據(jù)一直在發(fā)展的過程中,其實(shí)人工智能也是在發(fā)展的,只是它發(fā)展的階段不一樣。在很早的時(shí)候,人工智能可能只是停留在理論階段,我們知道有算法有論文,但是真正要應(yīng)用到生產(chǎn)中,讓它商業(yè)化、市場(chǎng)化,其實(shí)有很大的跨度。在這之后,我們會(huì)進(jìn)入到一個(gè)新階段:很多企業(yè)會(huì)做 AI lab,去開一個(gè)實(shí)驗(yàn)室來根據(jù)現(xiàn)有數(shù)據(jù)做嘗試,看有沒有更好的方法。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

再下一個(gè)階段,就到了大數(shù)據(jù)時(shí)代。這時(shí),數(shù)據(jù)的處理性能變得特別的高。我們發(fā)現(xiàn),AI 本來就是依賴于數(shù)據(jù)的,既然數(shù)據(jù)的處理能力提高了,AI 一定會(huì)迎來非常好的發(fā)展。這就是目前我們所面臨的情況。很多企業(yè)會(huì)借助于大數(shù)據(jù)平臺(tái)來對(duì)數(shù)據(jù)做處理。有了大數(shù)據(jù)之后,很多企業(yè)也會(huì)以人工智能來更好地服務(wù)于自身業(yè)務(wù)。

這里是一個(gè)生產(chǎn)中使用的、比較好的人工智能架構(gòu)方案。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

正如上篇提到的,數(shù)據(jù)和人工智能,兩者是可以完全分開,但兩者結(jié)合才是最終的解決方案。拿掉人工智能,我們可以把數(shù)據(jù)作為一個(gè)大數(shù)據(jù)平臺(tái)去使用。有了人工智能,我們可以在大數(shù)據(jù)平臺(tái)之上擴(kuò)充,讓它變成一個(gè)更完美的架構(gòu),所以這就是為什么數(shù)據(jù)架構(gòu)非常重要——你的人工智能到底能不能很好的接入。圖中可以看到,數(shù)據(jù)平臺(tái)主要負(fù)責(zé)的是數(shù)據(jù)處理、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)檢索以及數(shù)據(jù)探索等一系列數(shù)據(jù)準(zhǔn)備相關(guān)的工作。

當(dāng)數(shù)據(jù)準(zhǔn)備好了之后,對(duì)于機(jī)器學(xué)習(xí)這一塊,它只是根據(jù)你的數(shù)據(jù)做特征提取、做模型訓(xùn)練,很大的一部分工作都會(huì)在數(shù)據(jù)平臺(tái)上。最簡(jiǎn)單來講,有的企業(yè)可能對(duì)數(shù)據(jù)的隱秘性要求比較高——會(huì)有數(shù)據(jù)加密、各種加密。那在運(yùn)算過程中會(huì)有數(shù)據(jù)解密,加密這個(gè)過程、解密這個(gè)動(dòng)作是沒有辦法讓神經(jīng)網(wǎng)絡(luò)去做的,只能放在數(shù)據(jù)平臺(tái)。所以數(shù)據(jù)平臺(tái)對(duì)于數(shù)據(jù)的處理能力要求非常高,直接決定了后面的效果。

當(dāng)我們的數(shù)據(jù)平臺(tái)搭建完成了之后,本質(zhì)上來講就已經(jīng)有了數(shù)據(jù)分布式環(huán)境。這是我們要做的,只是說有一個(gè)系統(tǒng)可以很好地加在分布式數(shù)據(jù)上,訓(xùn)練出一個(gè)模型。目前 TensorFlow 已經(jīng)支持模型分布式,這是一個(gè)非常好的效果。

在很早的時(shí)候,模型訓(xùn)練是不支持分布式訓(xùn)練的,就是你的模型在一臺(tái)機(jī)器上訓(xùn)練,就獨(dú)立地訓(xùn)練出來。沒有辦法讓兩臺(tái)機(jī)器配合去訓(xùn)練一個(gè)模型。而在目前來講 TensorFlow 已經(jīng)做得非常好,支持模型分布式訓(xùn)練,當(dāng)然這得借助于它的計(jì)算圖概念。

對(duì)于 Tensorflow 計(jì)算圖這一系列很細(xì)的技術(shù)問題,后面"TensorFlow & 神經(jīng)網(wǎng)絡(luò)算法高級(jí)應(yīng)用班”課程都會(huì)講到—— Tensorflow 怎樣支持模型的分布式訓(xùn)練。在這個(gè)架構(gòu)里邊,我們底層有 GPU、CPU 系統(tǒng)的人工智能集群,在這之上,我們創(chuàng)建的模型分布式訓(xùn)練會(huì)產(chǎn)生模型。數(shù)據(jù)平臺(tái)還會(huì)提供另外一個(gè)功能,就是的實(shí)時(shí)流。

大家看到的這架構(gòu)里邊有一個(gè)分支,就是實(shí)時(shí)流。它與人工智能結(jié)合起來就是實(shí)時(shí)預(yù)測(cè),實(shí)時(shí)預(yù)測(cè)之后,數(shù)據(jù)展示出來直接以決策的形式反饋給使用者,實(shí)際上實(shí)時(shí)流另外還有一個(gè)功能就是模型的持續(xù)訓(xùn)練。而在使用的這個(gè)地方,大家還能看到有個(gè)箭頭,就是數(shù)據(jù)又進(jìn)入了大數(shù)據(jù)平臺(tái)。這是我們目前提倡的一個(gè)架構(gòu),叫數(shù)據(jù)驅(qū)動(dòng)架構(gòu)。就用戶產(chǎn)生數(shù)據(jù),數(shù)據(jù)服務(wù)于用戶。如果說你的這個(gè)過程是良性的:比如說我用這個(gè)系統(tǒng),系統(tǒng)服務(wù)于我,這個(gè)過程是良性的,越來越好;當(dāng)我用的系統(tǒng)越多,它對(duì)我的體驗(yàn)越好,那這個(gè)系統(tǒng)就會(huì)自我進(jìn)化,變得越來越好,所以這種架構(gòu)也是我們目前在所有實(shí)施中采用地方案。

TensorFlow 的工程實(shí)踐

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

TensorFlow 本身是一個(gè)深度神經(jīng)網(wǎng)絡(luò)框架。它的計(jì)算模塊,也就是核心 Core 是由 C++ 寫的。它對(duì)外提供了很多 API,早期只有 Python,1.0 之后增加了 Java API,但還處于測(cè)試階段,不是特別穩(wěn)定,也不是特別完善。所以對(duì)于 TensorFlow 我們還是優(yōu)先使用 Python。

對(duì)于 Python 來講,我們會(huì)把機(jī)器學(xué)習(xí)這一塊包裝成一個(gè)服務(wù),或者說以其他形式來提供使用。在這一塊,它對(duì)外提供的是 Python,它內(nèi)部是 C++,中間就有一個(gè)數(shù)據(jù)交換,發(fā)生在內(nèi)存中——就是將 Python 需要的計(jì)算邏輯轉(zhuǎn)成 C++ ,由底層計(jì)算之后再返回結(jié)果。

在一個(gè)完整的人工智能系統(tǒng)里,分布式存在于兩個(gè)地方:數(shù)據(jù)分布式和模型分布式。數(shù)據(jù)分布式主要是由數(shù)據(jù)湖支撐的,我們的數(shù)據(jù)被分布式存儲(chǔ)。分布式數(shù)據(jù)存儲(chǔ)的好處在于,我可以快速地把數(shù)據(jù)從不同節(jié)點(diǎn)拿過來。這個(gè)時(shí)候?qū)τ谙到y(tǒng)來講,要擴(kuò)展的僅僅是帶寬。

在真正的生產(chǎn)里邊,對(duì)于企業(yè)來講,做一個(gè)專線搭建 GB 級(jí)網(wǎng)絡(luò)帶寬,在本質(zhì)上的成本會(huì)遠(yuǎn)遠(yuǎn)低于提高計(jì)算機(jī)硬件。這也是數(shù)據(jù)分布式為什么會(huì)存在、并且做得越來越好的一個(gè)原因。

另外,TensorFlow 支持模型分布式。當(dāng)我們數(shù)據(jù)分布式之后,我們的模型分布式,兩者結(jié)合起來整個(gè)訓(xùn)練的速度會(huì)變得特別快。在 Tensorflow 里,模型計(jì)算可以根據(jù)你自己寫的訓(xùn)練模型代碼生成計(jì)算圖,然后根據(jù)你的計(jì)算圖將獨(dú)立的每一個(gè)計(jì)算圖分布到不同的節(jié)點(diǎn),然后進(jìn)行訓(xùn)練,最終產(chǎn)生一個(gè)唯一的模型,這也是 TensorFlow 在分布式訓(xùn)練方面做得非常好的一點(diǎn)。

但是我們回頭來看,TensorFlow 在本質(zhì)上、在使用過程中,它就是一個(gè)python庫。所以當(dāng)我們?cè)谧鲆粋€(gè)神經(jīng)網(wǎng)絡(luò)工程項(xiàng)目的時(shí)候,我們可以講 TensorFlow 是我們的一個(gè)庫,我們用了它。相對(duì)來講,它所占的是我們系統(tǒng)中的一小個(gè)模塊。

TensorFlow 是一個(gè)深度的神經(jīng)網(wǎng)絡(luò)框架,但是它并不是唯一的,像 Caffe、MXnet、Theano,還有 Java 版的 Deeplearning4j。這類框架早就存在了。那么為什么說 TensorFlow 是我們認(rèn)為一個(gè)比較好的選擇?

在開發(fā)中來講,大家對(duì)它的定義是“工程化做的最好的深度神經(jīng)網(wǎng)絡(luò)框架”,因此傾向于選擇于 TensorFlow。其他的框架在很多場(chǎng)景之下,像實(shí)驗(yàn)室或者高校大家也會(huì)用;但對(duì)工程師來講,我們希望更友好的方式包 API 使用方式,能讓工程師更容易懂;降低門檻,降低對(duì)數(shù)學(xué)的要求。

一個(gè)神經(jīng)網(wǎng)絡(luò)框架,設(shè)計(jì)得越原始,對(duì)數(shù)學(xué)的要求越高。這對(duì)工程師不是特別友好。而 TensorFlow 是介于這兩者中比較一個(gè)折中的一個(gè)方案。

Python

既然 TensorFlow 說白了就是一個(gè) Python 庫,那么當(dāng)我們開發(fā)人工智能項(xiàng)目的時(shí)候,本質(zhì)上我們的開發(fā)就演變成了如何做好python項(xiàng)目的開發(fā)。

目前無論是做機(jī)器學(xué)習(xí)還是做數(shù)據(jù)分析,Python 有非常好的勢(shì)頭,大家都在用它。而更多的平臺(tái)提供出來的,其實(shí)也是 Python作為api的方式, Python 在占的比重是非常大的。因此做人工智能項(xiàng)目,學(xué)習(xí) Python 是非常重要的。就是說要研究 TensorFlow,之前得打好基礎(chǔ)先學(xué)好 Python。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

對(duì)于 Python 來講,有 Python2 和 3,我們目前建議用 Python3。在 Python 里會(huì)涉及到非常多的庫,我們需要管理庫,它就和 yum 一樣,我們可以使用 pip 來對(duì)我們的庫做一些管理,下面有個(gè) virtualenv。對(duì)于 Python 的這種輕量級(jí)語言來講,在我們系統(tǒng)里邊,有時(shí)會(huì)涉及不同版本的 Python 項(xiàng)目存在,這就需要一個(gè)好的隔離環(huán)境,讓我們的兩個(gè)環(huán)境隔離起來,不要相互影響。比如說我一個(gè)項(xiàng)目是 Python2,另外一個(gè)項(xiàng)目是 Python3,我希望這兩個(gè)工程在我系統(tǒng)里面同時(shí)運(yùn)行,virtualenv 提供了非常好的這樣一個(gè)功能:封裝了 Python 的環(huán)境,可以讓你不一樣的版本、不一樣的庫在一個(gè)系統(tǒng)里同時(shí)存在。對(duì)于 virtualenv  來講,它提供的就是一個(gè) Python 虛擬環(huán)境,我們?cè)谏a(chǎn)過程中會(huì)發(fā)現(xiàn),當(dāng)你的 virtualenv 非常多的時(shí)候,管理起來特別困難。于是我們會(huì)選擇 virtualenvwrapper,它的作用是管理系統(tǒng)里邊所有的 virtualenv,包括你的創(chuàng)建你的切換,都可以完整管理起來。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

當(dāng)我們有開發(fā)環(huán)境——就是前面提到的幾種工具,都是開發(fā)過程中隨時(shí)會(huì)用的。有了這些工具之后,下一步就是開發(fā)代碼。

對(duì)于 Python 來講,工具非常多。IPython Notebook 是一個(gè)輕量級(jí)的一個(gè) Python web IDE,我們可以在網(wǎng)頁上進(jìn)行 Python 代碼編寫。它分為不同階段,可以局部執(zhí)行代碼,能很快地把我們的代碼所見即所得。這也是我們?cè)谧鰯?shù)據(jù)探索或者一些嘗試的時(shí)候優(yōu)先的選擇。我們可以很快分析出,我們的整個(gè)操作到底對(duì)不對(duì),還需不需要繼續(xù)。

所以這里解釋了我們?yōu)槭裁匆?virtualenv——我們需要一個(gè)獨(dú)立的環(huán)境來運(yùn)行我們的工程。這種思想和目前的 Docker 有一點(diǎn)類似。另外,當(dāng)做一個(gè)比較大的項(xiàng)目的時(shí)候,我們可能會(huì)借助于集成開發(fā)環(huán)境地 IDE,像 Pycharm 式目前在開發(fā)中非常常用的,基本上百分之百會(huì)用到的 IDE。在正式環(huán)境之下,特別是一個(gè) team,大家協(xié)助開發(fā)的時(shí)候特別會(huì)用到。

CI/CD

對(duì)于工程開發(fā)來講,我們的一個(gè)項(xiàng)目在開發(fā)之后,我們需要上線,我們需要測(cè)試,我們需要部署;對(duì)于非人工智能的項(xiàng)目,我們會(huì)有 CI/CD。代碼寫完之后,我們需要部署、需要測(cè)試、需要運(yùn)行,這一系列我們可以自動(dòng)化,便是 CI/CD。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

我們的代碼提到版本控制器,CI/CD 會(huì)自動(dòng)監(jiān)聽到代碼發(fā)生變化,然后把代碼打包、運(yùn)型測(cè)試。成功之后給你部署,把結(jié)果以可視化的形式展示出來。這是我們一般項(xiàng)目開發(fā)中常用的 CI/CD 工具,那么在一個(gè) AI 項(xiàng)目里,我們會(huì)不會(huì)做 CI/CD?

其實(shí)是會(huì)做的。

首先,人工智能的 CI/CD 和一般項(xiàng)目來講流程差不多,但會(huì)有一些差異化的地方。前邊還是一樣,代碼邏輯發(fā)生更改之后會(huì)觸發(fā)整個(gè) CI/CD 的 pipeline,還有一個(gè)分支:數(shù)據(jù) pipeline 觸發(fā)。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

數(shù)據(jù) pipeline 是什么?

前面提到人工智能數(shù)據(jù),分為兩塊:一個(gè)是數(shù)據(jù)部分,一個(gè)是人工智能部分。這就意味著在我們的人工智能項(xiàng)目里邊,它有邏輯,在數(shù)據(jù)里面它有數(shù)據(jù)。當(dāng)我有新數(shù)據(jù)進(jìn)來,或者說我的模型邏輯代碼發(fā)生變更,這兩者都會(huì)觸發(fā)你的 CI/CD 。

CI/CD 被觸發(fā)之后,除了和一般的項(xiàng)目一樣要做基本的單元測(cè)試評(píng)估之外,我們多了一個(gè)功能,就是模型評(píng)估。這一部分功能的話,更多的是在 CI/CD 上做改造。

什么是模型評(píng)估?對(duì)于一般的系統(tǒng)來講,什么樣的情況之下,我們認(rèn)為這個(gè)測(cè)試是掛的。就是它的真正輸出和我們期望的輸出不一致,我們就可以認(rèn)為它掛了。

那對(duì)于 AI 來講,什么樣的情況下,我們認(rèn)為這個(gè)這一次的開發(fā)是失敗的?那就是模型在變壞,一次一次的變壞。比如我第一次訓(xùn)練出來的模型準(zhǔn)確度 90%,第二次 80%,第三次 70%。從這個(gè)角度來講,雖然說代碼運(yùn)行非常正確,但效果在降低,而這個(gè)評(píng)估應(yīng)該被 CI/CD 記錄下來。最后提交代碼、模型訓(xùn)練出來之后,相比上一次的模型,如果它的效果更差,那你這次的 CI/CD 是掛地,整個(gè) task 是不通過的。

這樣,我們可以保證整個(gè)開發(fā)的性能是在上升的,就避免了一個(gè) team 悶頭開發(fā)代碼不停地?fù)Q方法,最后發(fā)現(xiàn)模型一次比一次差。

TensorFlow 應(yīng)用場(chǎng)景

本質(zhì)上講,AI 是為了更好地幫助人來進(jìn)行思考和輔助人做決策,所以場(chǎng)景相對(duì)來講會(huì)比較廣泛,也比較通用。但差別點(diǎn)是在于:你要在這個(gè)通用場(chǎng)景里,實(shí)現(xiàn)怎樣的需求?

圖像識(shí)別

比如一提到人工智能或者深度學(xué)習(xí),或者卷積神經(jīng)網(wǎng)絡(luò),大家都會(huì)想到圖像識(shí)別,這是一個(gè)非常通用的領(lǐng)域。但對(duì)于在這個(gè)領(lǐng)域之內(nèi),要達(dá)到怎樣地細(xì)化程度,就是需要我們進(jìn)行評(píng)估和實(shí)現(xiàn)的。比如在我們之前做的項(xiàng)目里邊,我們?cè)?jīng)做過一個(gè)電商的系統(tǒng),是用來分析它的圖片的——一個(gè)電商賣家可能會(huì)上傳特別多的圖片,對(duì)于整個(gè)電商平臺(tái)來講,它希望對(duì)圖片做分析,知道上傳地圖片里邊包含哪些物體,比如說我們?cè)谶@個(gè)圖片里邊能夠識(shí)別出這個(gè)是沙發(fā)、另外一個(gè)是人,等等這一系列的一些物體識(shí)別。TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

倉儲(chǔ)機(jī)器人

這就是利用 TensorFlow 在圖像識(shí)別領(lǐng)域細(xì)分領(lǐng)域的一個(gè)實(shí)現(xiàn)。除此之外的話,除了圖像領(lǐng)域、對(duì)于 AI 這個(gè)概念,很多人提到 AI 大家會(huì)想到機(jī)器人。而實(shí)際上在工業(yè)界,機(jī)器人應(yīng)用非常廣泛,特別是在倉庫來講,倉儲(chǔ)機(jī)器人以亞馬遜為首開始率先帶領(lǐng)這個(gè)行業(yè)。目前已經(jīng)變得非常的常用,至少大家都在對(duì)這方面進(jìn)行投入、研發(fā)。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

倉儲(chǔ)機(jī)器人的主要功能是搬遷貨物。上圖中大家可以看到,一個(gè)倉儲(chǔ)機(jī)器人馱了一個(gè)貨架。早期倉庫的運(yùn)作是“人到貨”,人到貨物前邊把要的東西拿過來,這個(gè)效果非常差。

有了新型的 AI 配合的倉儲(chǔ)機(jī)器人,我們的目標(biāo)是“貨到人”——我人站著不動(dòng),我需要什么貨由機(jī)器人搬過來。那這里會(huì)遇到一個(gè)什么問題?

那就是多個(gè)機(jī)器人在倉庫里邊移動(dòng)的時(shí)候,要保證安全性——兩個(gè)機(jī)器人不撞在一塊。另外它們要找到最短的路徑,這被叫做倉儲(chǔ)機(jī)器人路徑規(guī)劃:你到底應(yīng)該按照怎樣的方式去走。這也是 AI 的一個(gè)應(yīng)用場(chǎng)景。那么這也是用 TensorFlow 做的實(shí)現(xiàn)。

智能評(píng)卷系統(tǒng)

以前對(duì)卷子進(jìn)行評(píng)分,一般是都是人來做,甚至多個(gè)人打分。但在人工智能領(lǐng)域,我們發(fā)現(xiàn)這種人靠經(jīng)驗(yàn)做的東西,其實(shí)計(jì)算機(jī)也可以做。在我們使用 TensorFlow  這個(gè)框架的時(shí)候,有一個(gè)功能叫遞歸神經(jīng)網(wǎng)絡(luò),它主要是用來處理時(shí)間序列訓(xùn)練。在自然語言這一塊,它也有特別好的優(yōu)勢(shì),可以用來做這個(gè)事兒。所以這個(gè)本質(zhì)上的項(xiàng)目目的,是用機(jī)器打分來替換人來給卷子評(píng)分。

智能招聘

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

智能招聘的目的是為了讓求職者、應(yīng)聘者和招聘方,雙方有一個(gè)非常好的 match,讓最合適的人去最需要他的地方。這樣的話,我們就需要對(duì)雙方做非常多的數(shù)據(jù)分析,而數(shù)據(jù)除了來自于個(gè)人本身,還會(huì)來自于社交或者其他地方,然后根據(jù)雙方所有數(shù)據(jù)做一個(gè) match。

在線廣告投放系統(tǒng)

看起來它和推薦系統(tǒng)有點(diǎn)類似,但是當(dāng)我們?cè)谧鲞@個(gè)系統(tǒng)的時(shí)候,其實(shí)你會(huì)發(fā)現(xiàn)在線廣告投放系統(tǒng)和推薦系統(tǒng)會(huì)有本質(zhì)上的差別的。

說推薦系統(tǒng)受益者是用戶使用者,而對(duì)于一個(gè)廣告系統(tǒng),它的受益者是平臺(tái)或廣告主。另外,推薦系統(tǒng)要找出的是符合使用者個(gè)體的最優(yōu)推薦方案;但在線廣告投放系統(tǒng)要達(dá)到的是利潤最大化。

其次它有一種規(guī)則,比如說我設(shè)計(jì)好這個(gè)廣告,不管它是否合理,我就是要投放。那這里的話有更多的規(guī)則干涉,配合及其學(xué)習(xí),共同實(shí)現(xiàn)一個(gè)在線廣告投放系統(tǒng)。這一塊相對(duì)來講比推薦系統(tǒng)復(fù)雜很多。

推薦系統(tǒng)

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

推薦系統(tǒng)在很多地方都會(huì)用,甚至在任何涉及到對(duì)用戶進(jìn)行服務(wù)的時(shí)候,其實(shí)都是涉及到推薦。比如我們用的很多 APP,會(huì)給你推送很多新聞,本質(zhì)上這些新聞都是經(jīng)過篩選之后的。在推薦這個(gè)領(lǐng)域。已經(jīng)有很多存在的并且被廣泛應(yīng)用的方法。比如說基于人或者基于物的協(xié)同過濾,已經(jīng)被廣泛使用了?,F(xiàn)在我們更多的嘗試的事,是使用深度神經(jīng)網(wǎng)絡(luò)讓推薦的效果變得更好。這里邊有模型有算法,其實(shí)就是 TensorFlow 應(yīng)用的一個(gè)場(chǎng)景。

最下邊的數(shù)據(jù)服務(wù)我要強(qiáng)調(diào)一點(diǎn):我們做任何一個(gè) AI 系統(tǒng),重點(diǎn)一定不是建一個(gè)模型,而是數(shù)據(jù)集、數(shù)據(jù)架構(gòu)。這一塊才是最重要的。

智能問答

其實(shí)我們可以把智能問答理解為常見的聊天機(jī)器人。這一塊的話,在實(shí)踐來講很早的時(shí)候,我們可以直接通過關(guān)鍵字搜索,靜態(tài)的給你返回,利用搜索引擎給你一個(gè)反饋。本質(zhì)上來講,這個(gè)時(shí)代算不上智能問答,只能說是一個(gè)文獻(xiàn)檢索。后來的話,什么樣的情況才叫智能問答?

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

智能問答并不是簡(jiǎn)單地根據(jù)關(guān)鍵字,它能夠明白我說的這句話到底是什么意思。

這樣除了找出結(jié)果之外,它有一個(gè)很重要的功能,就是理解你說話。這就涉及一個(gè)技術(shù):自然語言處理。所以在智能問答里邊,我們除了要做一個(gè)相關(guān)的檢討之外,我們還要做自然語言處理。

另外,對(duì)于客戶端來講,我們的輸入除了文本,可能還有語音,還有圖片檢索;所以你的思路也會(huì)變得特別多。這個(gè)領(lǐng)域目前來講,是人工智能發(fā)展的還不錯(cuò)的一個(gè)領(lǐng)域。而這一塊我們做的聊天機(jī)器人,其實(shí)它的模型基本上也是用 TensorFlow 來做的。

用 TensorFlow 給企業(yè)構(gòu)建一個(gè)智能問答,它的好處到底在哪?

目前來講,其實(shí)我們有很多云方面的、相關(guān)的、通用的一些解決方案。但對(duì)于行業(yè)來講,垂直的智能問答并不是通用智能問題能解決的問題。比如說一個(gè)行業(yè),它有很多行話,而這個(gè)行話不是時(shí)常被提及的,所以在這種方面對(duì)于企業(yè)來講,它會(huì)構(gòu)造一個(gè)屬于自己的垂直行業(yè)的智能問答,可以快速給自己做服務(wù),比如售后服務(wù)。當(dāng)用戶買了產(chǎn)品出了問題需要售后,這個(gè)時(shí)候機(jī)器人就可以派上用場(chǎng)了,而沒有必要百分之百的放很多的客服人員進(jìn)行問答。

生產(chǎn)中的問題

做一個(gè)人工智能項(xiàng)目的開發(fā)過程中,TensorFlow 只是你的一個(gè)框架。它做了相關(guān)的算法的實(shí)現(xiàn),給了你比較友好的API,讓你可以特別好得創(chuàng)建各種神經(jīng)網(wǎng)絡(luò),進(jìn)行各種訓(xùn)練。這方面來講,更多是編程語言方面的熟悉或者說基礎(chǔ)知識(shí)的理解。比如說什么是損失函數(shù),什么是梯度下降。這種細(xì)節(jié)的編程級(jí)別的知識(shí),在后面的培訓(xùn)課里我們會(huì)非常詳細(xì)的提到。這里邊提到的問題,更多的是在整個(gè)工程來講——因?yàn)槲覀兗热话?TensorFlow 應(yīng)用到工程中,構(gòu)建一個(gè)人工智能項(xiàng)目,肯定不是為了玩一玩,而是希望用它解決生產(chǎn)上的現(xiàn)實(shí)問題。

所以這一章要談?wù)勎仪懊嫣岬降臄?shù)據(jù)探索。在很早的時(shí)候,我們發(fā)現(xiàn)構(gòu)建的數(shù)據(jù)湖缺少數(shù)據(jù)探索功能。一個(gè)數(shù)據(jù)湖放了好幾 PB 的數(shù)據(jù)都在那兒,但是我連一個(gè)快速檢索管理元數(shù)據(jù),這種快速查找功能都做不到。后來我們會(huì)做一個(gè)數(shù)據(jù)探索服務(wù)來解決這個(gè)問題,進(jìn)行各種預(yù)覽,給數(shù)據(jù)科學(xué)家提供非常好的支撐。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

文件處理

在下邊的話就是對(duì)于小文件。首先,我們的 TensorFlow 所處理的數(shù)據(jù)一定是前期規(guī)整后的。也就是說 TensorFlow 沒有辦法直接接入生產(chǎn)環(huán)境,拿到未經(jīng)處理的數(shù)據(jù)自己做處理。這一系列功能都發(fā)生在大數(shù)據(jù)架構(gòu),所以大數(shù)據(jù)架構(gòu)本質(zhì)上是給人工智能、TensorFlow 這一層提供良好的數(shù)據(jù)處理。

在這個(gè)過程中我們會(huì)遇到小文件的問題。比如說我的文件有幾百億個(gè),曾經(jīng)我們會(huì)遇到數(shù)據(jù)湖里面放的百億千億的文件。這個(gè)時(shí)候就面臨文件個(gè)數(shù)多、文件小這種問題。對(duì)于這種文件處理的話,我們一般會(huì)有好幾種場(chǎng)景。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

第一種如果是靜態(tài)文件,比如我這個(gè)數(shù)據(jù),一批次導(dǎo)入幾千萬個(gè)文件就是這么多,可能不會(huì)再有持續(xù)進(jìn)來,那最簡(jiǎn)單的方式就是壓縮。壓縮有多種方式,對(duì)不一樣的實(shí)踐,比如 Hadoop 有自己 的 sequence file 的方式。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

除了這種方式,還有第二種場(chǎng)景數(shù)據(jù)處理,會(huì)應(yīng)用在數(shù)據(jù)實(shí)時(shí)進(jìn)入的情況下。比如我數(shù)據(jù)一直在來,每次來的都是小文件。持續(xù)進(jìn)來,這個(gè)時(shí)候采用靜態(tài)壓縮方式就不合適了,因?yàn)閿?shù)據(jù)一直在來。你可能把 10個(gè)1kb 壓到 1個(gè)10kb,但沒有什么意義。所以對(duì)于這種情況,我們之前在數(shù)據(jù)湖里設(shè)計(jì)了一個(gè)系統(tǒng),叫小文件系統(tǒng)。它用來攔截所有數(shù)據(jù)請(qǐng)求,把小文件存下來之后,在后臺(tái)有一個(gè)獨(dú)立的后臺(tái)線程,專門干什么事——做后臺(tái)壓縮。當(dāng)你的文件個(gè)數(shù)或者說某一個(gè)特征觸發(fā)了這個(gè)閥值之后,它會(huì)觸發(fā)一個(gè)線程,把小文件進(jìn)行壓縮。

在這個(gè)小文件服務(wù)里邊,它要記錄的是被壓縮之后這個(gè)文件里邊包含哪些文件,分別 index 在哪個(gè)地方把它索引起來。這樣,當(dāng)我們有一個(gè)請(qǐng)求要訪問小文件的時(shí)候,這個(gè)請(qǐng)求首先被小文件服務(wù)攔截下來,根據(jù)它要查找的文件通過管理系統(tǒng)去看它在哪個(gè)位置,然后拿到那個(gè)大文件將它解壓出來再把小文件返回去,這樣的話就可以解決掉一個(gè)小文件的問題。這種場(chǎng)景對(duì)于文件持續(xù)不斷的進(jìn)來,但是文件個(gè)數(shù)少可以作為一個(gè)非常好的解決。

實(shí)際上對(duì)于小文件,還有另外一種方式,就是我們可以把小文件放在kafka,它對(duì)于小文件處理是非常好的。但是卡夫卡有一個(gè)問題是處理不了大文件,特別是當(dāng)文件差異過大,比如小文件一兩 K、大文件幾個(gè) G,那基本卡夫卡就抓瞎了。

前面提到的是我們對(duì)少量文件處理。下邊是我們?cè)?jīng)遇到的文件個(gè)數(shù)多問題——多達(dá)百億以上。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

我們知道,對(duì)于一個(gè)集 Hadoop 作為實(shí)施的數(shù)據(jù)服務(wù)系統(tǒng)來講,他的所有元數(shù)據(jù)是放在 NameNode。而 NameNode 里有很大的一個(gè) hashtable 用來存儲(chǔ)元數(shù)據(jù),記錄了這個(gè)元數(shù)據(jù)在哪個(gè) DataNode 之上。當(dāng)我們要訪問某一個(gè)文件的時(shí)候,先找 NameNode ,根據(jù) 哈希table 找到這個(gè)文件在哪個(gè) DataNode 之上,把這個(gè)地址返回客戶端,客戶端拿著這個(gè)東西再去請(qǐng)求 DataNode,于是這一個(gè)文件請(qǐng)求過程就完成了。

所以瓶頸在哪個(gè)地方?

你的 DataNode 如果存放的文件記錄特別多,就會(huì)導(dǎo)致你的整個(gè)內(nèi)存爆掉。因?yàn)槊恳粋€(gè)文件進(jìn)來,原信息要占一定的內(nèi)存空間的。雖然說 Hadoop 號(hào)稱是以廉價(jià)小型機(jī)為基礎(chǔ),但是它強(qiáng)調(diào) NameNode 配置一定要高于其他節(jié)點(diǎn),至少是高配的,這樣才能保證你的整個(gè)集群可以運(yùn)行得很好。早期 NameNode 提供了僅僅是 HA 的功能,你的所有的原信息都在一個(gè) NameNode 里邊,等你的文件過多,它基本就會(huì)產(chǎn)生非常大的問題。

按照生產(chǎn)環(huán)境真正來講,一個(gè) NameNode 能夠存放的最大文件個(gè)數(shù)可能就在 700 萬左右。就他的這個(gè)問題并不是因?yàn)?哈希table 到達(dá)上限,而是因?yàn)槟忝恳粋€(gè)源文件進(jìn)來,你的數(shù)據(jù)會(huì)占一部分存儲(chǔ),你的內(nèi)存沒辦法擴(kuò)展那么大,所以這個(gè)才是瓶頸。

在這個(gè)之后,出了一個(gè) Hadoop 2.0 聯(lián)盟。聯(lián)盟就是把 NameNode 分?jǐn)偟讲煌墓?jié)點(diǎn)之上,每一個(gè)節(jié)點(diǎn)掛載在不同的目錄之下,于是把目錄水平拆分,我一個(gè) NameNode 的只負(fù)責(zé)一個(gè)目錄,那這樣的結(jié)構(gòu)帶來的好處是什么:它并不是簡(jiǎn)單的拆分。

在我們整個(gè)IT開發(fā)過程中,我們后來產(chǎn)生了一個(gè)微服務(wù),這種思想其實(shí)它本質(zhì)上是為了做什么,是把你的業(yè)務(wù)獨(dú)立拆分開,就我們的一個(gè)大系統(tǒng)的問題在哪?當(dāng)你的系統(tǒng)一宕機(jī)之后,你的整個(gè)需求全部出問題,都沒法訪問。但是當(dāng)我們將業(yè)務(wù)拆分成不同的子系統(tǒng),我其中一個(gè)宕機(jī)之后,我剩下的系統(tǒng)可以繼續(xù)使用。

在 Hadoop 聯(lián)盟之后出來之后,我們會(huì)發(fā)現(xiàn),某一個(gè)文件夾出問題之后,我剩下的數(shù)據(jù)還可以繼續(xù)使用。那這樣的話,我們?cè)谠O(shè)計(jì)數(shù)據(jù)的時(shí)候會(huì)怎么做?不一樣的目錄,我們可能面對(duì)的是不一樣的業(yè)務(wù)場(chǎng)景,或者說不一樣的部門。這樣的話,一個(gè)大數(shù)據(jù)平臺(tái)提供給企業(yè)之之后,我們有一個(gè)非常好的容錯(cuò)性,就是當(dāng)某一個(gè)企業(yè)部門的數(shù)據(jù)出現(xiàn)問題之后,不會(huì)影響到其他地方。很好地直接在這一層做了安全隔離。對(duì)于一個(gè)企業(yè)來講,它不太可能會(huì)做幾套大數(shù)據(jù)平臺(tái),一般會(huì)有一套大數(shù)據(jù)平臺(tái),給整個(gè)企業(yè)提供一個(gè)統(tǒng)一的服務(wù),并且在之上構(gòu)建人工智能系統(tǒng),這樣的話對(duì)我們底層的數(shù)據(jù)設(shè)施要求非常高。而這一塊 Hadoop 除了處理文件個(gè)數(shù)多之外,還提供了這種安全隔離,很好地解決這個(gè)問題。

集群搭建方式

下面這里大家看到的是集群搭建方式。

在應(yīng)用 TensorFlow 和大數(shù)據(jù)進(jìn)行整合的時(shí)候,我們會(huì)有好幾種不同的處理方式,比如說數(shù)據(jù)平臺(tái)和 AI 集群獨(dú)立開。我們都知道,TensorFlow 的優(yōu)勢(shì)還是要利用 GPU。當(dāng)然這并不是 TensorFlow 的問題,而是對(duì)于任何數(shù)值計(jì)算的框架,GPU 是最高效的。因?yàn)?GPU 做苦力活、做純粹的數(shù)值計(jì)算非常擅長(zhǎng);而 CPU 對(duì)邏輯計(jì)算更擅長(zhǎng),那這樣的話大家會(huì)傾向于用 GPU 來做數(shù)值計(jì)算,而深度神經(jīng)網(wǎng)絡(luò)里邊本質(zhì)上就是不同的矩陣,各種純粹的數(shù)學(xué)運(yùn)算。所以在企業(yè)里邊我們都會(huì)搭建統(tǒng)一的 GPU 集群,專門用來訓(xùn)練模型。

這樣就面臨一個(gè)問題:我們?cè)谧鲆粋€(gè)企業(yè)級(jí) AI 系統(tǒng)的時(shí)候,我們的數(shù)據(jù)平臺(tái)到底應(yīng)該怎樣和 AI 系統(tǒng)進(jìn)行整合,合并在一塊?

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

我們可以完全的獨(dú)立,一個(gè)數(shù)據(jù)平臺(tái),一個(gè)AI系統(tǒng)。我們也可以把 AI 系統(tǒng)和數(shù)據(jù)系統(tǒng)部署在一塊。就是我們同一臺(tái)服務(wù)器里面部署的 CPU,還有數(shù)據(jù)服務(wù)相關(guān)的東西。當(dāng)我們計(jì)算的時(shí)候,我們的模型訓(xùn)練在 GPU 上,數(shù)據(jù)處理在其他地方,這也就整合成了一套。所以有兩種部署方式,一種是獨(dú)立的,一種是一體的,那對(duì)哪一種更好?肯定是一體的最好。為什么?

因?yàn)閷?duì)于獨(dú)立的來講,我們?nèi)绻?dú)立,意味著雖然說數(shù)據(jù)是分布式可以快速獲取到,但是你不可避免的有一個(gè) suffle 的動(dòng)作,你需要把數(shù)據(jù)從不同節(jié)點(diǎn)拉到一個(gè)節(jié)點(diǎn)之上,再把這個(gè)數(shù)據(jù)拿出來遞給 AI 系統(tǒng),讓它在 GPU 里面進(jìn)行訓(xùn)練??雌饋碓谖覀兡壳皝碇v,如果我們有非常高的帶寬以及計(jì)算性能這個(gè)都不是問題,但在我們用的過程中,我們會(huì)發(fā)現(xiàn)其實(shí)更好的方式還是將它合為一體。

這樣的好處是在于,首先,我們前面提到 Tensorflow 支持模型分布式。我可以在不同節(jié)點(diǎn)上進(jìn)行訓(xùn)練。而數(shù)據(jù)在大數(shù)據(jù)平臺(tái)之上,它有一個(gè)數(shù)據(jù)分布式,同時(shí) Tensorflow 支持直接從分布式文件系統(tǒng)例如 hdfs上面直接 load數(shù)據(jù)。這樣的情況下一個(gè)比較好的布置方式是怎樣的?

我們的模型分布式進(jìn)行訓(xùn)練,在當(dāng)前節(jié)點(diǎn)之上訓(xùn)練的時(shí)候就直接加載當(dāng)前節(jié)點(diǎn)的數(shù)據(jù),這樣的話直接省掉了整個(gè)網(wǎng)絡(luò)帶寬,直接在當(dāng)前 節(jié)點(diǎn) 進(jìn)行訓(xùn)練了,這是我們最理想的情況,所以也是把所有集群部署在一體上最好的體驗(yàn)方式。

當(dāng)然這個(gè)在實(shí)施過程中可能會(huì)根據(jù)不一樣的生產(chǎn)的客觀環(huán)境會(huì)有一部分調(diào)整,所以這種問題一般也只能現(xiàn)場(chǎng)遇到現(xiàn)場(chǎng)解釋。但對(duì)于集群搭建來講,我們會(huì)有這兩種方法。

TensorFlow On Spark

我前面提到 Tensorflow 有一個(gè)模型分布式。實(shí)際上后來 TensorFlow 也可以支持在 Spark 上運(yùn)行,就是 TensorFlow On Spark。對(duì)于這個(gè)來講,其實(shí)思路也是我前面提到的:我挪的只是計(jì)算,根本不用挪數(shù)據(jù)。我既然要訓(xùn)練模型,那我把我訓(xùn)練的模型挪到數(shù)據(jù)之上就可以了。所以整個(gè) TensorFlow  可以跑在 Spark 集群里邊。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

之前我們?cè)谏a(chǎn)中運(yùn)行來看的話,這樣的效果其實(shí)并不是很好。首先來講,你在 Spark 里面運(yùn)行 TensorFlow,它是一個(gè)獨(dú)立的。因?yàn)镾park 本身是分布式的,如果 TensorFlow 再是分布式,兩個(gè)分布式一重疊就出問題了。所以說在這個(gè)場(chǎng)景里邊,其實(shí) TensorFlow 是單機(jī)獨(dú)立地運(yùn)行在一個(gè) Spark executor面。這樣的話,它產(chǎn)生的是多個(gè)模型,最終的話它會(huì)運(yùn)算出一個(gè)最好的模型,然后再來使用。只是在這個(gè)過程中有一個(gè)分布式的交叉驗(yàn)證,讓所有的測(cè)試訓(xùn)練驗(yàn)證的過程更通用,提高我們?cè)谡麄€(gè)模型訓(xùn)練過程中的速度。

調(diào)試

在我們開發(fā) TensorFlow 或者說其他的 AI 架構(gòu)的時(shí)候,我們都會(huì)面臨一個(gè)問題:調(diào)試。其實(shí)不單單是在AI 里邊,如果我們做一般的開發(fā),做多線程的時(shí)候,調(diào)試也是一個(gè)非常困難的事情。而我們現(xiàn)在做 AI,TensorFlow 這種可以分布式訓(xùn)練,還可以分布式讀取數(shù)據(jù),兩者分布式疊在一塊調(diào)試就變得更加困難。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

對(duì)于 TensorFlow 來講,在開始的時(shí)候我們可能只有一個(gè) Tensorboard,我們把計(jì)算圖導(dǎo)出來,通過 Tensorboard 來查看整個(gè)模型的計(jì)算圖是怎樣的,變量是怎樣變化的,這樣變化下去會(huì)不會(huì)有問題,通過這個(gè)方面來監(jiān)控我們的訓(xùn)練過程。

另外,在 1.0 之后提出了 TFDBG。這種調(diào)試方式其實(shí)可以支持我們以斷點(diǎn)的形式去做處理,但是前面我們提到,TensorFlow 支持模型分布式訓(xùn)練,那在這個(gè) debug 里面,分布式的這種多線程的訓(xùn)練會(huì)變得特別困難。所以一旦我們使用了 DBG,其實(shí)它就把你的分布式訓(xùn)練給廢掉了,直接把你的分布式拉成了當(dāng)前的一個(gè) 同步的訓(xùn)練,否則的話,你在多線程之下并行的訓(xùn)練之下,其實(shí)這種方式調(diào)試也會(huì)特別困難。而這兩種方式是 TensorFlow 做調(diào)試的一些方法。就特別少,而這一塊看起來雖然它有這個(gè)功能,實(shí)際上還是我們?cè)陂_發(fā)過程中遇到的非常困難的問題,基本上在調(diào)試方面會(huì)有很多問題,不是那么順利。

測(cè)試

最后是測(cè)試。無論是人工智能還是大數(shù)據(jù),測(cè)試這一塊其實(shí)是一個(gè)特別頭疼的事。首先來講,我們的大數(shù)據(jù)和人工智能的測(cè)試和傳統(tǒng)測(cè)試不一樣。

對(duì)于傳統(tǒng)測(cè)試來講,我們的輸出是固定的,我們只需要定義好 AC 或者寫好單元測(cè)試,就能夠保證這個(gè)結(jié)果輸出是對(duì)的。但是在大數(shù)據(jù)來講,我們沒有辦法寫一個(gè)測(cè)試說,這個(gè)模型 AC 應(yīng)該怎么寫。另外對(duì)于大數(shù)據(jù)來講,我們也沒有辦法預(yù)先定義好AC。比如說我們通過大數(shù)據(jù)配合人工智能訓(xùn)練了一TB 的數(shù)據(jù)或者一 PB 的數(shù)據(jù),最終計(jì)算出來一個(gè)值,那我們?cè)鯓尤プC明計(jì)算出的這個(gè)值是對(duì)的?就我們可以簡(jiǎn)單到一個(gè)什么場(chǎng)景,我們對(duì)于 TP 的數(shù)據(jù)求了一個(gè)累加,最終計(jì)算出來一個(gè)值,那我們?cè)趺醋C明我們這個(gè)值是對(duì)的?

我們不太可能人工一條一條計(jì)算,所以這也是 AI 系統(tǒng)和大數(shù)據(jù)相關(guān)所面臨到的一個(gè)問題,就是我們?cè)趺慈y(cè)試我們的 AI 系統(tǒng)。對(duì)于這一塊,我們有各種不一樣的嘗試,但目前也沒有一個(gè)最終的定好的方法,就是我們可以證明這件事,這個(gè)運(yùn)行測(cè)試是對(duì)的。

最后一個(gè)是驗(yàn)收。在做這種項(xiàng)目的時(shí)候,我們會(huì)面臨驗(yàn)收?qǐng)鼍?。我們把模型?xùn)練出來了,怎么去定義這件事?比如說我們訓(xùn)練出一個(gè)模型,說有 90% 的成功率,那我們這個(gè) 90% 的成功率怎么去證明,怎么去讓別人相信這件事就是 90%?所以前面提到的測(cè)試配合驗(yàn)收,其實(shí)是在我們整個(gè)開發(fā)過程中所面臨的一些問題。應(yīng)該說目前來講,都沒有一個(gè)特別好的一個(gè)解決方案能把這個(gè)事情很好地證明好。

今就到這里,謝謝大家的收看,現(xiàn)在大家有什么問題,相關(guān)的東西相關(guān)的問題大家都可以提好,今天的課程就到這個(gè)地方,謝謝大家就在后面的課程的話,我們還有一系列的一些相關(guān)的課程,大家歡迎大家觀看,謝謝!

“TensorFlow & 神經(jīng)網(wǎng)絡(luò)算法高級(jí)應(yīng)用班”要開課啦!

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

下周,ThoughtWorks 佟達(dá)、白發(fā)川兩位老師主持的 TensorFlow 培訓(xùn)將上線 mooc.ai,向?qū)W員系統(tǒng)性地傳道解惑。

你是否一直希望有個(gè)老司機(jī)能手把手帶領(lǐng)入門?這就是一次好機(jī)會(huì)。

ThoughtWorks

授課方 ThoughtWorks 是全球領(lǐng)先的 IT 咨詢公司,聯(lián)合國婦女兒童組織、世界衛(wèi)生組織合作伙伴??偛吭谥ゼ痈?,42 個(gè)辦公室分布在全球的 15 個(gè)國家。

2012年,ThoughtWorks 排在 Google,F(xiàn)acebook 之前,被評(píng)為全球最難面試的公司。

2016 年,ThoughtWorks 力壓群雄,獲得全球“最佳女性科技人員雇主”獎(jiǎng)項(xiàng)。

培訓(xùn)課介紹:

從初級(jí)到高級(jí),理論+實(shí)戰(zhàn),一站式深度了解 TensorFlow!

本課程面向深度學(xué)習(xí)開發(fā)者,講授如何利用 TensorFlow 解決圖像識(shí)別、文本分析等具體問題。課程跨度為 10 周,將從 TensorFlow 的原理與基礎(chǔ)實(shí)戰(zhàn)技巧開始,一步步教授學(xué)員如何在 TensorFlow 上搭建 CNN、自編碼、RNN、GAN 等模型,并最終掌握一整套基于 TensorFlow 做深度學(xué)習(xí)開發(fā)的專業(yè)技能。

兩名授課老師佟達(dá)、白發(fā)川身為 ThoughtWorks 的資深技術(shù)專家,具有豐富的大數(shù)據(jù)平臺(tái)搭建、深度學(xué)習(xí)系統(tǒng)開發(fā)項(xiàng)目經(jīng)驗(yàn)。

開課時(shí)間:4 月 25 日(星期二)開課,每周二、四晚 20:00-21:00

開課時(shí)長(zhǎng):總學(xué)時(shí) 20 小時(shí),分 10 周完成,每周 2 次,每節(jié)課 1 小時(shí)。

授課地址:http://www.mooc.ai/course/82 

線上授課,開放預(yù)約!

相關(guān)文章:

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(上) | AI 研習(xí)社

萬事開頭難!入門TensorFlow,這9個(gè)問題TF Boys 必須要搞清楚

TensorFlow 與 Apache Spark 結(jié)合:雅虎開源“TensorFlowOnSpark”

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

TensorFlow在工程項(xiàng)目中的應(yīng)用 公開課視頻+文字轉(zhuǎn)錄(下) | AI 研習(xí)社

分享:
相關(guān)文章

用愛救世界
當(dāng)月熱門文章
最新文章
請(qǐng)?zhí)顚懮暾?qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說