稀疏矩陣計算心得

在機(jī)器學(xué)習(xí)中望伦,經(jīng)常遇到稀疏向量林说,稀疏矩陣。如何高效處理這些稀疏對象屯伞,決定了一些模型能否在線落地應(yīng)用腿箩。目前正在專攻這方面,自己瞎琢磨劣摇,走了不少彎路珠移,也有一點(diǎn)心得。這里記錄下來末融,不斷總結(jié)钧惧。

當(dāng)遇到計算瓶頸時:

  • 算法層面改進(jìn)

    這是最直接,收益也最大的勾习。

    比如在千萬級以上的向量空間中搜索最近鄰居浓瞪,暴力的兩兩計算代碼層面無論如何加速計算量依然太大了。
    faiss通過預(yù)訓(xùn)練聚類和向量壓縮大大減少搜索時的計算量巧婶。上億級別搜索也能在毫秒級完成乾颁。

    例外情況是計算量本身不是特別大,而且在代碼層面很方便加速艺栈,改進(jìn)對CPU負(fù)載的也不是特別大英岭。比如利用avx和openmp,這時直接代碼加速也是可行的湿右。

  • 第三方庫

    當(dāng)要在代碼層面加速時诅妹,首先考慮已有的第三方庫。選擇庫時第一原則輕量毅人,穩(wěn)定漾唉,而不是花哨,功能強(qiáng)大堰塌。

    BLAS實(shí)現(xiàn)中openblas最好用,但是只支持稠密矩陣分衫。MKL支持稀疏矩陣场刑,性能也最好,但是編譯鏈接很麻煩。

  • 手動優(yōu)化

    BLAS庫適用場景是超大矩陣和超大向量牵现,一次計算結(jié)果寫回內(nèi)存铐懊。如果計算步驟過多,中間結(jié)果讀寫內(nèi)存會有很大開銷瞎疼,這時比較適合手動優(yōu)化科乎。

    手動優(yōu)化需要充分利用寄存器和緩存,盡量讓中間結(jié)果在寄存器和緩存中保存贼急。其實(shí)挺難的茅茂,而且現(xiàn)代硬件已經(jīng)特別復(fù)雜,自己臆想的一些手段不一定就符合硬件的喜好太抓。所以驗(yàn)證很重要空闲。

  • 并行計算
    當(dāng)并行數(shù)不大時,可以直接使用cpu并行走敌。但是cpu核心畢竟比較少碴倾,大規(guī)模并行GPU更有優(yōu)勢,這是目前正在嘗試的方向掉丽。

心得:

  • 工程實(shí)現(xiàn)常常要對公式做變換跌榔,利于向量計算或并行計算。因此理解核心算法才能做出取舍和變換捶障。
  • 多多學(xué)習(xí)第三方庫的優(yōu)秀算法僧须,第三方庫的實(shí)現(xiàn)通常為了考慮通用性優(yōu)化沒有做到極致。而為了適應(yīng)手頭的需求可以各種魔改残邀,優(yōu)化就是特化皆辽。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市芥挣,隨后出現(xiàn)的幾起案子驱闷,更是在濱河造成了極大的恐慌,老刑警劉巖空免,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件空另,死亡現(xiàn)場離奇詭異,居然都是意外死亡蹋砚,警方通過查閱死者的電腦和手機(jī)扼菠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坝咐,“玉大人循榆,你說我怎么就攤上這事∧幔” “怎么了秧饮?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我盗尸,道長柑船,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任泼各,我火速辦了婚禮鞍时,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扣蜻。我一直安慰自己逆巍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布弱贼。 她就那樣靜靜地躺著蒸苇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吮旅。 梳的紋絲不亂的頭發(fā)上溪烤,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機(jī)與錄音庇勃,去河邊找鬼檬嘀。 笑死,一個胖子當(dāng)著我的面吹牛责嚷,可吹牛的內(nèi)容都是我干的鸳兽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼罕拂,長吁一口氣:“原來是場噩夢啊……” “哼揍异!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起爆班,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤衷掷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后柿菩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體戚嗅,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年枢舶,在試婚紗的時候發(fā)現(xiàn)自己被綠了懦胞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡凉泄,死狀恐怖躏尉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情后众,我是刑警寧澤醇份,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布稼锅,位于F島的核電站,受9級特大地震影響僚纷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拗盒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一怖竭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧陡蝇,春花似錦痊臭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至恼策,卻和暖如春鸦致,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涣楷。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工分唾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狮斗。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓绽乔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親碳褒。 傳聞我的和親對象是個殘疾皇子折砸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容