當前位置: 華文問答 > 數碼

機器學習相關崗位面試中,有哪些加(zhuang)分(bi)項?

2017-03-07數碼

舉一個我面試中遇到過的目前最牛的例子,簡稱M。我一般負責和人吃飯閑聊。這位先生以前在Intel,只大概看過機器學習的一些東西。

我:目前深度學習當中用mapreduce的比較少,因為我們經常要SGD,

M:哦我猜一下,所以你們用MPI,然後你要最佳化Allreduce。

我:。。。對的,然後很多時候網絡會有瓶頸,

M:恩,因為你們不想上infiniband。

我:。。。對的,

M:然後你們 網絡的 吞吐速度是夠的,但是延遲不理想。

我:。。。對的,

M:所以你們想要有異步通訊,但是同時又要控制 模型不發散。

我:。。。對的。

我:然後我們的模型在部署的時候希望盡量高速,一個方法是 找稀疏解,

M:但是你們發現稀疏性不夠,目前的執行庫需要1-5%的稀疏性才行。

我:。。。對的,

M:但是你們估計最多只有30%上下的稀疏性,否則模型質素就下降。

我:對的。但是還是有一些辦法,因為部署的時候模型是固定的,

M:所以可以做即時編譯然後行內參數。

我:。。。對的。

所以面試的加分項就是面試官還沒問問題,你就先回答完了。

裝b結束了,說說我大概想表達的意思吧:機器學習裏面了解怎麽推公式,怎麽解釋演算法等等,都是停留在技術的層面上。技術牛肯定是有加分的,但是如果要找一位演算法/系統架構師,更容易加分的是了解這些技術背後真正解決的問題,在出現 需求的時候能很快解釋背後的原理,然後找到解決問題的思路。這也是為啥我在面試的時候不問具體技術細節的緣故 - 開個玩笑,好的架構師只需要寫表頭檔就行。。。

=== 因為評論說沒看懂,具體展開說 ===

SGD+MPI+Allreduce:這個問的是機器學習當中SGD演算法怎樣並列化,以及如何處理並列當中的計算模式,討論可以見

Allreduce (or MPI) vs. Parameter server approaches

網絡瓶頸:需要正確估計計算時間和網絡通訊之間的比例,保證可以實作pipeline:

Pipeline (computing)

Infiniband以及ethernet:問的是大規模系統架構的時候的硬件選擇問題,不想上Infiniband是因為成本問題,以及容易被少數vendor lock in的風險。

網絡的吞吐和延遲的區別:

What is the difference between latency and throughput?

異步通訊的時候對於收斂性的影響:可以參見google的async sgd,sync sgd revisited,Eric Xing的latency bounded sgd,以及EASGD等一系列文章的討論。

模型的稀疏解:這個涉及到對於模型稀疏化能力的正確估計,目前的很多網絡要保證不丟準確率的情況下,很難做到傳統稀疏矩陣的那種要求。

稀疏矩陣庫的計算效率問題:這個如果做過數值最佳化的話應該是常識,但是五秒鐘裏面能從上一條跳到這一條然後找到瓶頸還是讓我很驚訝的。

即時編譯和行內參數:這個比較涉及到數值最佳化的一系列可能性,以及對於編譯器的期望,本身就是一道可以展開說一個鐘頭的問題。。。比如說,我們在做矩陣乘法的時候是需要pre-pack矩陣的,如果我們知道參數矩陣不會變,我們就可以預先pack,然後如果你可以自己寫編譯器來利用這些特性的話,你甚至可以沒有那個矩陣,直接出一個程式把參數都寫在指令裏頭。

一般面試是不會涉及到那麽多問題的,其中一兩個就夠討論了,M先生屬於特別牛的那種。。。