【CTO講堂】如何用Python一門語言通吃高性能並發、GPU計算和深度...

2021-01-11 CSDN技術社區

為了幫助IT從業者職業之路擁有更多收穫,在諸多C粉的殷切期待下,由 CTO俱樂部打造的CTO線上講堂自登場以來獲得大家好評。本期邀請極驗驗證CTO黃勝藍帶來「如何用Python一門語言通吃高性能並發、GPU計算和深度學習 」的主題分享。

歡迎加入CTO講堂微信群與業界大咖零距離溝通,1月7日本期講堂報名方式拖至文末查看。


分享嘉賓:極驗驗證CTO 黃勝藍

嘉賓簡介:黃勝藍 ,現任武漢極意網絡科技有限公司CTO。高中時期NOIP一等獎保送至武漢大學,大學期間曾指導團隊獲得世界數學建模大賽金獎,同時負責武漢大學學生校園門戶網站的運維工作。於2013年加入武漢極意網絡科技有限公司,帶領團隊實現「行為式驗證」安全模型,同時構建了高效、穩定的服務架構承載每天數十億請求。對於技術發展有深刻見解,善於將適合的新技術融入公司技術架構中。

公司簡介:武漢極意網絡科技有限公司是全球首家「行為式驗證」安全技術服務提供商,開創了驗證安全從1.0時代到2.0時代的變革,並始終致力於為各大網站、應用、企業提供「更安全、更便捷、更具智慧的驗證」服務及解決方案。

極意擁有業內領先的自主智慧財產權與技術研發實力,其首創的「行為式驗證」安全技術,徹底顛覆了傳統「碼式驗證」安全技術的思想,完成了14年以來驗證安全領域的第一次飛躍——安全性提高44.78倍以上,平均用戶驗證時長僅不到以前的1/3,提高用戶交互度達20%以上,全面支持移動終端的觸屏驗證體驗。

極意擁有強大創新能力的核心團隊,裡面有第四屆中國僑界貢獻獎(創新團隊)核心成員負責項目整體運營、有獲得世界計算機性能大賽刷新世界紀錄的雅虎黑客負責雲伺服器構架、有世界數學建模大賽冠軍負責「多重行為判別算法」的研究。公司自成立以來,就受到國內外諸多投資機構的關注與投資,去年公司接受了來自IDG的數千萬投資。目前我們的客戶包括新浪博客、鬥魚、戰旗、聚美優品、網金社等數萬家網站,對於遊戲領域更是實現了全行業覆蓋。

以下是12月31日CTO講堂現場完整速記:

主持人:今天講堂現在開始,歡迎極驗驗證CTO黃勝藍,麻煩給大家介紹下自己吧。

黃勝藍:大家好,我叫黃勝藍,目前擔任武漢極意網絡科技有限公司CTO,在公司主要負責帶領團隊構建高性能的服務架構和行為式安全模型。

看了我的照片應該會有些人想知道我的年齡。我確實是比之前的嘉賓都會年輕很多,其實我今年上半年才剛剛踏出武漢大學的大門^_^。高中時期我通過計算機競賽一等獎保送到了武漢大學,這個經歷對我而言很重要,有了當時對於數據結構和算法較為深刻的學習使得現在在接觸實際工程中的一些概念時可以非常快速地了解其中的原理。大學大一大二在學校的自強網做運維工作,這段經歷也讓我受益匪淺,對於網際網路相關技術也有了更多的了解。大二的暑假機緣巧合加入了極驗驗證團隊。

主持人:請介紹一下目前極驗驗證的情況以及技術團隊構成。

黃勝藍:極驗驗證今年已經三歲了,目前我們的用戶幾乎遍布了網際網路各個領域,每天處理的驗證突破一億次,每秒數萬的並發對我們而言已經是常態。典型的客戶包括新浪博客、鬥魚TV、戰旗TV、熊貓TV、寶寶樹、聚美優品、東方航空等。去年公司收到了來自IDG的數千萬A輪投資,目前正在進行B輪,也是一線的投資機構。

比較有意思的有一次我到西電請了一些學生社團的負責人吃飯,十多個人中只有一個人沒見到過我們的產品。



這些是我們典型客戶的一個集中展示,分別是web端和移動端的。

團隊方面,目前員工將近五十人,其中技術團隊三十人多有,大部分都來自於武漢這邊的幾所高校,是一個非常非常年輕的團隊。雖然團隊在經驗層面相對欠缺,不過目前從成果來看,不論是技術的深度還是廣度都還算是拿得出手的。

主持人:介紹下極驗驗證如何兼顧安全性與用戶體驗?

黃勝藍:極驗驗證與傳統驗證碼對於驗證技術的理解是有著本質上的區別的。傳統驗證碼本質是人類可以理解圖片的內容而電腦程式沒有辦法理解,這樣的想法放在十年前或者五年前還算是靠譜,但是放在現在這樣一個電腦程式都可以實現無人駕駛汽車的年代指望通過幾張模糊不清的圖就想難倒電腦程式實在是太天真了,同時傳統驗證對於正常用戶的上網體驗影響極大。而極驗驗證的「行為式驗證「的概念,不再出一個難題作為門檻來限制用戶,而是跟用戶做一個小小的遊戲,在遊戲中通過行為來判斷用戶是正常用戶還是惡意的程序請求。

我們根據收集到的海量行為數據構建了人類行為的邊界,同時我們還動態實時地監控每個驗證一段時間的全部驗證行為,當這些行為的特徵分布發生變化時我們的驗證也會將分布異常集中的驗證行為擋住。所以極驗驗證可以在比對手更加安全的同時對於用戶也更加友好,實現安全與用戶體驗的雙重提升。


這個圖是某一次有個網站受到了惡意請求,我們將收集到的數據與正常人的數據從三個維度用tsne畫出來圖,很明顯可以看出區別。正是因為極驗驗證在產品的用戶體驗和安全性上都完勝了傳統的字符驗證碼,所以在市場上也出現了這樣一個現象,一個行業中一旦有一家網站上線了我們的產品,馬上就會有很多相同行業的網站主導找到我們接入產品,這也反映了我們的產品確實解決了驗證碼長期的痛點。

我們在後期也會繼續提升技術實力,優化體驗,為業界奉獻更安全、更便捷、更智慧的驗證。

主持人:技術架構是怎樣的?用到了哪些技術呢?

黃勝藍:簡單明了的一張圖,左半邊是提供驗證服務的集群,右半邊是存儲和分析日誌的集群。用到的技術都是業界主流的方案,但是為了更加穩定高效承載數萬的驗證請求並發,我們在一些地方做了修改。


主持人:極驗驗證採用基於協程的並發方案以及獨特的緩存方案,可高效穩定承載每天數十億次請求,能詳細介紹一下該方案麼?

黃勝藍:我們在不斷優化優化服務性能的過程中有三個最大的敵人:

第一個就是並發本身所帶來的開銷即新開處理線程、關閉處理線程、多個處理線程時間片輪轉所帶來的開銷。

實際上對於一些邏輯不那麼複雜的場景來說這些開銷甚至比真正的處理邏輯部分代碼的開銷更大。所以我們決定採用基於協程的並發方式,即服務進程只有一個(單cpu)所有的請求數據都由這個服務進程內部來維護,同時服務進程自行調度不同請求的處理順序,這樣避免了傳統多線程並發方式新建、銷毀以及系統調度處理線程的開銷。基於這樣的考慮我們選擇了基於Tornado框架實現api服務的開發。Tornado的實現非常簡潔明了,使用python的生成器作為協程,利用IOLoop實現了調度隊列。

第二個問題是資料庫的性能,這裡說的資料庫包括MongoDB和Redis,我這裡分開講。

先講MongoDB的問題,MongoDB主要存儲不同的用戶對於驗證的不同設置,比如該顯示什麼樣的圖片。

一開始每次驗證請求都會查詢MongoDB,當時我們的MongoDB是純內存的,同時三臺機器組成一個複製集,這樣的組合大概能穩定承載八九千的qps,後來隨著我們驗證量越來越大,這個承載能力逐漸就成為了我們的瓶頸。

為了徹底搞定這個問題,我們提出了最極端的解決方案,乾脆直接把資料庫中的數據完全緩存到服務進程裡定期批量更新,這樣查詢的開銷將大大降低。但是因為我們用的是Python,由於GIL的存在,在8核伺服器上會fork出來8個服務進程,進程之間不像線程那麼方便,所以我們基於mmap自己寫了一套夥伴算法構建了一個跨進程共享緩存。自從這套緩存上線之後,Mongodb的負載幾乎變成了零。

說完了MongoDB再說Redis的問題,Redis代碼簡潔、數據結構豐富、性能強大,唯一的問題是作為一個單進程程序,終究性能是有上限的。

雖然今年Redis發布了官方的集群版本,但是經過我們的測試,認為這套分布式方案的故障恢復時間不夠優秀並且運維成本較高。在Redis官方集群方案面世之前,開源世界有不少proxy方案,比如Twtter的TwemProxy和豌豆莢的Codis。這兩種方案測試完之後給我們的感覺TwemProxy運維還是比較麻煩,Codis使用起來讓人非常心曠神怡,無論是修改配置還是擴容都可以在配置頁面上完成,並且性能也還算不錯,但無奈當時Codis還有比較嚴重的BUG只能放棄之。

幾乎嘗試過各種方案之後,我們還是下決心自己實現一套分布式方案,目的是高度貼合我們的需求並且運維成本要低、擴容要方便、故障切換要快最重要的是數據冗餘一定要做好。

基於上面的考慮,我們確定基於客戶端的分布式方案,通過zookeeper來同步狀態保證高可用。具體來說,我們修改Redis源碼,使其向zookeeper註冊,客戶端由zookeeper上獲取Redis伺服器集群信息並根據統一的一致性哈希算法來計算數據應該存儲在哪臺Redis上,並在哈希環的下一臺Redis上寫入一份冗餘數據,當讀取原始數據失敗時可以立即嘗試讀取冗餘數據而不會造成服務中斷。

第三個問題是Python語言的性能問題,這個後面說。

主持人:您帶領團隊構建了「行為式驗證」安全模型,能談一下在這個過程中遇到了哪些困難以及大致的經歷嗎?(包括團隊管理、技術攻堅等方面)

黃勝藍:從產品第一版DEMO開發出來到現在我們遇到了數不清的問題,現在回頭看可以大致分為三個階段。

第一個階段是在主要解決性能問題,最早DEMO是用PHP和MYSQL寫出來的,每次驗證的臨時數據也會寫入MySQL,可以說整套服務也就只能小範圍玩一玩了。隨後的幾個月時間,我們圍繞著提升性能對整套服務不斷進行優化,最後形成了用Python語言,Tornado作為框架,Redis存儲驗證臨時數據,MongoDB作為資料庫的架構。 第二個階段是解決數據統計與分析的問題,搞定了服務的性能問題之後,用戶慢慢多了起來,相應產生的日誌也就越來越多。根據日誌準確快速統計相關數據、實時監控行為分布以及試驗安全模型所需要大量計算能力的問題又出現在我們面前。為了解決這樣的問題,我們用建立起自己的運算集群,由Flume收集日誌,Spark與Storm分別進行批處理與流處理,HDFS永久存儲,Ceph臨時存儲,Mesos進行調度。 第三個階段是我們對於數據與模型的理解,在提供驗證服務的同時我們也在不斷根據收集到的數據來更新我們的模型使得驗證更加安全,破解更加困難。

而在這個過程中最大的困難在於我們對於我們對於模型與特徵的理解。機器學習的算法做的都是一件事情即根據訓練樣本在特徵空間中尋找一個分類面來分割空間,然後利用這個分類面預測新樣本。不同的方法採用不同的數學模型來構建這個分類面,不同數學模型有著不同的表達能力,繪製出來的分類面形狀和特性就會不同,而如何在選擇合適的模型或者合適的模型組合訓練準確、有泛化性分類器就需要對數據有著深入的理解。

團隊的管理方面我們也在不斷探索如何構建一套科學合理的考核評價體系,從而使得項目按時完成的同時保持團隊的激情與探索欲望。這方面等會大家可以多多交流。

主持人:請結合實際情況,談談Python的多種形式優化。

黃勝藍:Python這個語言確實有點讓人又愛又恨,Python的語法、Python無比成熟的生態環境都是Python的優點。可以說對於一個網際網路公司Python幾乎可以滿足所有的業務需求,從web到自動化運維工具再到數據分析和機器學習,Python都可以搞定。但是Python的問題也很明顯,也就是它的性能問題。

好在現在Python世界也湧現出來了適用各種各樣情況下的性能優化手段,我在這裡結合我們遇到的實際情況簡單介紹幾個我們用到的。

1)使用C編寫Python擴展或者使用Cython。這兩種方式我們都有採用,也是業界比較常用的優化Python性能的方式。這裡面主要說一下Cython,優化程序性能的本質實際上是在平衡程式設計師時間和機器運算時間的成本,而利用Cython則可以非常靈活地尋找這中間的平衡。Cython可以使用介於Python和C之間的語法,當語法更接近Python時獲得的性能提升也就越少,而語法越接近於C時,性能也更加接近C。 2)使用pypy。這是一個支持jit的Python解釋器,其官方測試結果比較好看,就我們實際測試結果來看它的性能優勢不是很穩定,大部分項目是領先的但是有的項目又會莫名其妙的很慢。並且它對於C的擴展支持不佳。 3)使用Numba。對於數據分析、機器學習有過了解的人一定會聽說過Numpy,Numba就是專門用來優化基於Numpy程序的工具。利用它可以只加入一行代碼就將性能提升數倍,而缺點就是這種方式不能作為通用的優化手段,並且Numba雖然使用起來比較簡單,但其依賴相對複雜,部署起來會有點麻煩。

主持人:數據分析方面,請您談一談如何利用gpu加速數據分析。

黃勝藍:很多人可能會覺得gpu編程是一件很困難的事情,其實當真正接觸了之後就會了解到讓你的程序在gpu上運行其實並不難,真正的難點在於理解gpu的特性從而將最合適的任務交給gpu來做,同時採用合適的優化手段。

以我們為例,我們利用PyOpenCl將日誌中用戶的驗證行為進行特徵計算。計算流程中上下文的創建、任務隊列的創建以及緩衝區的控制都通過Python來控制,kernel部分由C寫。

這裡面相對麻煩一點的是緩衝區的問題,因為cpu和gpu是兩套獨立的內存,數據要拷貝才能進行計算,這部分代碼PyOpenCl封裝的比較好,借用了NumPy的數據類型,操作起來會比用C寫方便很多。

其中最核心部分是kernel,也就是將會運行在GPU上的代碼,其實這部分代碼的編寫也不需要掌握什麼特殊技能,我們的做法就是幾乎移植了在CPU上的版本,只是在GPU上多條數據同時一起計算而已。

所以就像前面說的,找到合適的任務用gpu進行計算其實並不是一件很困難的事情。那麼什麼樣的任務比較適合gpu上進行計算呢?我簡單歸納一下就是任務邏輯相對簡單(因為第一kernel要用C寫,太複雜的邏輯寫起來還是有點麻煩。第二優化和調試起來相對麻煩),重複性高的任務。比如排序、統計、查找、過濾、簡單的預處理等等。

主持人:深度學習技術方案的選擇方面,有哪些思考?

黃勝藍:深度學習是目前機器學習領域最大的熱門,也是網際網路巨頭們爭相角逐的戰場。對於中小企業而言,雖然可能沒有實力聘請頂尖的研發人員、沒有能力獲取頂尖的運算能力但是這並不意味著一定會無緣深度學習所帶來的變革。

目前開源的深度學習框架非常多,利用這些開源的深度學習庫可以非常方便的構建一個神經網絡並進行實驗。

Python也為我們提供了探索深度學習世界非常有用的工具,我們使用了兩個東西,一個是Theano,另一個叫做Kares。

Theano是一個數學表達式編譯器,對於普通程式設計師來說可能會對這個概念很奇怪,實際上很簡單,它可以把一系列數學表達式以及相應的符號連結編譯成可執行代碼,而這個可執行代碼還不僅僅是cpu,它同樣可以編譯出gpu可執行代碼。所以基於這樣的工具,我們就可以實現從數學表達式自動編譯成gpu上的可執行代碼,是不是很爽!

再來看Kares,它是一個深度學習庫,它將大牛們提出的各種網絡結構、激活函數、Cost Function、以及各種Trick做了統一的整理和封裝,可以用及其簡單的方式將各種方法組合成為一個神經網絡進行實驗,這個庫的底層是基於Theano的,也就是利用Theano將表達式編譯成了gpu代碼,所以當你真正想去做深度學習的實驗時你就會發現用這些工具其實可以非常非常快就構建一個實驗項目。

當然,不是有了這些工具就意味著探索深度學習的道路會一帆風順。理論方面,不僅要透徹了解神經網絡背後的數學模型,更要緊跟業界動態,不斷學習最新的理論與技巧;實踐方面,訓練出一個優秀的網絡往往需要大量的試驗,嘗試不同的網絡結構、trick與超參數,複雜的網絡往往需要更大量的數據來反向傳播更新權值,這些意味著對於運算能力、數據存儲能力都是極大的考驗。

探索深度學習的前提是一定要有一支高水平、全方面的團隊!

主持人:如今網際網路時代給各行各業帶來了巨大的變革,同時也加劇了行業從業者浮躁的心態,該如何沉下心來做事,並不斷提升技術能力?

黃勝藍:的確,這兩年行情比較火爆,行業對於技術人員的需求持續高漲,待遇也是水漲船高。帶來的結果就是很多技術人員在這樣環境下變得浮躁起來,不再深究代碼的優化、常常把新技術掛在嘴邊卻不甚了解、哪些技術待遇高就學什麼技術等等。

我認為作為技術人員一定要在網際網路浪潮中保持危機感和廣闊的技術視野。危機感可以督促自己不迷失在眼前取得的成績而是繼續努力力爭上遊。廣闊的技術視野可以讓你更加清楚認識到業界遇到了哪些問題,又是開發了哪些項目提出了哪些方法來解決這些問題的。看清楚了業界發展的方向就可以避免在提升技術能力的道路上走彎路。

主持人:請結合你的切身體會談談創業路上您都有哪些收穫和思考,對於如今越來越多想要投身創業大海的年輕人,有什麼建議?

黃勝藍:創業是九死一生的事情,首先也確定是否有能力承受可能的失敗,這個是最大的前提。第二就是選好方向,創業做一件事情的時候一定要保證你是這行裡面對這個行業了解最深的,否則做出來的東西一定沒什麼意義。

主持人:推薦一些覺得非常不錯的資料或者書籍吧。

黃勝藍:推薦一些比較基礎的吧學習Python建議可以看看《Python核心編程》這本書,講的比較細緻。有興趣了解深度學習的話可以看看UFLDL,很經典的一個教程  http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

互動環節:「跟用戶做一個小小的遊戲,在遊戲中通過行為來判斷用戶是正常用戶還是惡意的程序請求」這裡提的惡意程序的行為,能說一下嗎?
黃勝藍:我們的驗證是利用一個拼圖遊戲來收集用戶的行為,正常人類的行為由於受到肌肉結構、滑鼠等等限制會符合一些特徵,而攻擊者在模擬行為時則很難完全模擬。我們通過這樣的原理來區分正常用戶還是程序。 互動環節:您好,謝謝分享。我想請教一下,Python與PHP這兩種語言相比,Python的主要優勢是什麼?對電商行業應用而言,您對技術選型的建議是什麼?謝謝。
黃勝藍:php是世界上最好的語言。 比較這兩門語言,我們不談論語言本身的優劣,因為這些仁者見仁智者見智。
我從另一個方面講一下我的理解,Python的社區整體用戶層次相對較高,涉及的領域非常全面。而PHP的社區基本還局限在web開發方向。對於電商行業而言,最開始可能實現web邏輯也就夠了,但是規模起來之後要做推薦系統、反欺詐系統的時候PHP就完全不能滿足要求了。用Python的話則永遠跟得上需求,各種問題都能搞定。 互動環節:您好,能說說做為一個cto,第一公司工作職責,第二如何能像bat這樣的大公司技術看齊,謝謝。
黃勝藍:cto這個職位可能在不同的公司職責都不太一樣,甚至在一家創業公司不同時期都會發生很大的變化。團隊小時候可能需要引領技術方向,大一點之後就要做好技術管理。
第二個問題,像bat看齊我覺得毫無必要,業務不同規模不同。 互動環節:首先感謝黃總的分享  看到黃總用了很多開源技術 大家知道現在谷歌的技術還有推特的技術可能要翻牆 黃總有沒有好的翻牆工具 可以推薦。
黃勝藍:翻牆工具我們一般用shadowsocks。 互動環節:我想請教一下,您用python做過什麼有趣的項目來提高對高並發或是python的熟練度?我現在可以使用python實現一些簡單的腳本,不知道現在我應該哪些方面來提高自己對python的認識和熟練?
黃勝藍:我用python做的最有趣的項目就是寫了極驗驗證的後臺代碼。對python的理解和認識其實多看看書就行了,更重要的是了解python的重量級項目。如果做數據挖掘就一定要熟悉numpy、scipy這樣的項目。 互動環節:貴公司的產品我好像也用過尤其是拖拽式模式感覺挺好!想提問下驗證一旦出問題玩不了  對客戶網站的整個業務流程影響很大  會終止在那兒 請問是如何保證高可用的?  比如有沒有多區域部署。
黃勝藍:高可用方面我們的有多區部署。同時我們也考慮到驗證所處的關鍵地位,在我們的sdk中也包含了服務異常處理流程,會切換成一個本地版驗證,保證正常用戶不受影響。 互動環節:你們的驗證碼能更好的識別機器和人嗎?可以簡單說說你們判斷機器和人的機制嗎?
黃勝藍:我們的驗證是利用一個拼圖遊戲來收集用戶的行為,正常人類的行為由於受到肌肉結構、滑鼠等等限制會符合一些特徵,而攻擊者在模擬行為時則很難完全模擬。我們通過這樣的原理來區分正常用戶還是程序。 互動環節:tornado我們也有在用,作為遊戲的login伺服器時,有個問題,協程這種協作式工作流程會使得一次用戶請求在yield之後,被其它協程佔用cpu,最後導致該請求處理時間變長。這種場景你們有處理嗎?
黃勝藍:以前遇到過這樣的問題。這樣的問題一般是代碼邏輯中存在阻塞時間較長的部分,如果是io或者網絡導致的阻塞可以通過換成異步驅動搞定。如果是某些代碼長期佔用cpu計算,可以考慮把這部分代碼通過celery或者其他任務隊列扔給其他機器去處理。
還有一種情況是,即使用了異步驅動,後端資料庫處理不過來這麼多請求導致掛起的協程越來越多,最後大量出現超時或者錯誤。

想與業界大咖零距離溝通,歡迎加入CTO講堂微信群,參與CTO講堂!

【CTO講堂第31期預告】

分享主題:SaaS雲端語音通信架構詳解


分享嘉賓:容聯七陌CTO  張楊

嘉賓簡介:張楊,現任容聯七陌CTO。2007年畢業於北京理工大學計算機專業,同年加入合力億捷歷任研發工程師、項目經理、研發主管、研發經理、研發總監。2014年與上司合力億捷CTO蔡質彬離開合力,創立容聯七陌任職CTO。主要負責基於Asterisk 和Freeswitch 開發容聯七陌的核心軟體交換平臺,研發軟交換平臺核心BOSS計費系統、後臺運營管理系統。

公司簡介:容聯七陌是一家專注在企業通訊領域的SAAS雲服務提供商,公司不僅為企業提供專業的雲端通訊產品服務,更有平臺層通訊能力集成服務。公司憑藉在中國呼叫中心領域十年的積累,自主研發了基於雲端的呼叫中心通訊平臺,同時結合客戶的使用場景提供:雲客服、雲電銷、雲總機、雲會議等企業通訊產品,平臺用戶涵蓋客服坐席、銷售坐席、企業總機等客戶,公司企業客戶涵蓋金融、教育、網際網路、O2O、汽車、醫療等多個行業。

分享時間地點:1月7日(本周四)10:30 , CTO講堂群

加入方式:掃描二維碼加「C粉兒小助手」好友,申請入群。

還不是CTO俱樂部成員的各公司技術負責人,歡迎立即加入俱樂部:cto.csdn.net 。

更多俱樂部動態,歡迎掃碼關注微信號:

本文為CSDN原創文章,未經允許不得轉載,如需轉載請聯繫market#csdn.net(#換成@)

相關焦點

  • Go語言和Java、Python等其他語言的對比分析
    失控的依賴 每個工程師只是用了一個語言裡面的一部分 程序難以維護(可讀性差、文檔不清晰等) 更新的花費越來越長 交叉編譯困難如何解決當前的問題和痛點?像 C、C++、Java、Python 和 JavaScript 這些語言的並發和異步方式太控制就比較複雜了,而且容易出錯,而 Go 解決這個問題非常地優雅和流暢。這對於編程多年受盡並發和異步折磨的編程者來說,完全就是讓人眼前一亮的感覺。Go 是一種非常高效的語言,高度支持並發性。Go是為大數據、微服務、並發而生的一種程式語言。Go 作為一門語言致力於使事情簡單化。
  • 如何看待Python這門語言,淺談Python語言的發展前景
    那麼學習完python有什麼用呢?這也是許多人最關心的問題:python的應用領域還是比較廣泛的:1、Web和Internet開發2、科學計算3、人工智慧,主要基於以下幾點:1、在這個快魚吃慢魚的時代,python語言具有開發速度快,生態庫比較完善,有助於加快研發進度。
  • 【CTO講堂】如何構建高可用和可伸縮的架構?
    為了幫助IT從業者職業之路擁有更多收穫,在諸多C粉的殷切期待下,由CTO俱樂部打造的CTO線上講堂自登場以來獲得大家好評。本期邀請七牛首席架構師李道兵帶來「如何構建高可用和可伸縮的架構? 」的主題分享。歡迎加入CTO講堂微信群與業界大咖零距離溝通,每周都有技術大咖進群分享,報名拖至文末查看。
  • Python並發編程初步
    為了提高程序的效率,一個方面改變程序的順序執行,用異步方式,防止由於某個耗時步驟,而影響後續程序的執行。另一個方面是採用並發方式執行,重複利用多核CPU優勢加速執行。關於並發編程大家可能比較熟悉的是Golang的協程、通道和Node.js 的async.parallel異步並發編程。
  • Python語言是什麼?python框架有哪些?Python基礎教程
    Python是什麼,Python可以做哪些Python是一種跨平臺的電腦程式設計語言,是一種面向對象的動態類型語言,最初被設計用於編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,越來越多被用於獨立的
  • 如何利用 TVM 優化深度學習GPU op?教你用幾十行Python代碼實現2-3...
    歡迎對於深度學習,編譯原理,高性能計算,硬體加速有興趣的同學一起加入 dmlc 推動領導開源項目社區 。」據雷鋒網AI科技評論了解,大多數現有系統針對窄範圍的伺服器級 GPU 進行優化,且需要在包括手機、IOT 設備及專用加速器上部署大量工作。而 TVM 是一種將深度學習工作負載部署到硬體的端到端 IR(中間表示)堆棧。
  • Python語言的應用領域主要有哪些?
    這因為腳本語言寫起來簡單容易,用Python只是寫邏輯,幾行代碼就出來了。應用領域2:雲計算雲計算是未來發展的一大趨勢,Python是為雲計算服務的。用python來寫爬蟲,會比用其他程式語言寫要簡單的多,因為python本身就是一門簡潔的語言。應用領域5:網路遊戲開發在網路遊戲開發方面,Python 可以用更少的代碼描述遊戲業務邏輯。
  • 一起做實驗 多GPU並行計算訓練深度神經網絡
    整個展示過程由神奇獨特的人工智慧和演員互動,充滿科技含量的機器人和24塊機器人冰屏旋轉騰挪。短短8分鐘,讓世界看到了中國的飛速發展。這些新技術既神秘又讓人嚮往,而如何更好地應用新技術,把握抓住變革中的機會,也是大小廠商的日常探索課題。  今天,小編為您詳細解讀戴爾易安信在深度學習(Deep Learning)方向的解決方案。作為一家具有前瞻性的科技公司,戴爾易安信的深度學習有何不同呢?  主流深度學習工具知多少  這兩年風靡全球的深度學習,計算平臺越來越多的採用GPU計算加速。
  • 【CTO講堂】如何構建高性能網絡服務平臺及生態系統?
    為了幫助IT從業者職業之路擁有更多收穫,在諸多C粉的殷切期待下,由CTO俱樂部打造的CTO線上講堂自登場以來獲得大家好評。本期邀請武漢綠網副總經理雷葆華帶來「打造開放的高性能網絡平臺,助力SDN/NFV產業發展 」的創業主題分享。
  • 2019 Python 計算生態十二月推薦榜
    解釋器是解釋性語言的重要基石,它負責解釋執行項目代碼,完成項目的「最後一公裡」任務。解釋器又是一門語言的骨骼經脈,不懂得它的工作原理,就無法一覽編程全貌,也就難以深入所學語言。Python語言作為一門解釋性語言,入門極其簡單,十行代碼就能實現一個不錯的功能。在這個全民學Python,人人以Python程式設計師自居的時代,如果不學一學Python解釋器,恐怕最終也是泯然眾人,難有所成。
  • 深度學習中GPU和顯存分析
    點擊上方「新機器視覺」,選擇加"星標"或「置頂」重磅乾貨,第一時間送達轉自:機器學習AI算法工程深度學習最吃機器,耗資源,在本文,我將來科普一下在深度學習中:何為「資源」不同操作都耗費什麼資源如何充分的利用有限的資源如何合理選擇顯卡並糾正幾個誤區:0 預備知識nvidia-smi是Nvidia顯卡命令行管理套件,基於NVML庫,旨在管理和監控Nvidia GPU設備。
  • GPU成功案例:中山大學GPU高性能計算集群
    目前,信息產業面臨「多核革命」,高性能計算從單核到多核的硬體發展相對成熟,但相關的算法、軟體研發尚處於起步階段。這為廣東信息產業帶來了搶佔多核並行計算及軟體的制高點的機遇。  應用需求  團隊以建立多核計算機上的高效能計算方法為研究方向,具體研究內容廣泛,包括:  1、高性能與多核並行計算;  2、非平穩信號自適應數據分析及其在醫學信號處理中的應用;  3、計算機斷層重建新算法及其在醫療圖像中的應用;  4、企業評估和風險預警的統計學習方法;  5、油氣地震勘探巨量複雜數據處理的偏微分方程方法
  • Python的基礎教程,比PHP、GO等前景好的一門開發語言!
    Python代表了將來很長一段時間技術走向,其在人工智慧和網絡爬蟲、大數據分析等科學領域是有很大的優勢的。代表方向人工智慧Python何為PythonPython是一種解釋型、面向對象、動態數據類型的高級程序設計語言。
  • Python語言入門(1)-python語言裡有哪些東西
    為方便大家,我下載了放在百度網盤上, 連結: https://pan.baidu.com/s/1eKUSsVDBzoXYc3LwQWHmqw 提取碼: 4mr2上次介紹了python的歷史和使用它的IDE工具,今天從程式語言本身的角度介紹python。
  • 如何在 GPU 上加速數據科學
    無論您是用 pandas 處理一個大數據集,還是用 Numpy 在一個大矩陣上運行一些計算,您都需要一臺強大的機器,以便在合理的時間內完成這項工作。在過去的幾年中,數據科學家常用的 Python 庫已經非常擅長利用 CPU 能力。Pandas 的基礎代碼是用 C 語言編寫的,它可以很好地處理大小超過 100GB 的數據集。
  • 人工智慧深度學習領域中Python之外的語言如何應用
    深度學習領域目前主流的語言是Python,但一些深度學習框架也推出了其他語言的版本或適配方法。以谷歌(Google)公司著名的TensorFlow平臺為例,雖然訓練神經網絡的過程還需要使用Python語言,但對於已經訓練好的神經網絡模型,已經可以在Java、Javascript、C++、Go等語言中調用,以便利用這些模型進行計算並獲取神經網絡對於需解決問題的預測結果。下面我們來給出一個具體的實例幫助理解這種方式,實例將使用Go語言(Golang)。
  • python語言在全球廣泛應用
    很簡單,還是不能去理解如何利用一些簡單的python語法去實現這些簡單的功能。比如說同樣是logistic回歸,這麼多基礎的框架,如果用python來實現,你還得去看一堆代碼,然後再自己手寫一遍代碼。那麼在日常的實際工作中,到底需要哪些簡單的工具和代碼來解決實際的問題呢?
  • Golang語言併發模式
    時下,golang語言已經變成了最熱門的程式語言之一。藉助與他高效、靜態類型、以及強大的並發性,以及不乏動態語言特性的語法,吸引了大量C、C++、Java、python碼農成為他的擁躉。尤其是在容器領域,golang開發的docker更是一枝獨秀,風靡於零。
  • 深度學習篇——Tensorflow-GPU配置
    tensoflow-gpu安裝對於python 3.5和3.6的童鞋們而言,安裝tensorflow其實並不難,因為我們可以通過pip直接安裝。不過,第一要求你安裝的python是64位的,如下圖所示,注意劃黃色線的部分。
  • 《python深度學習·pdf》不缺的就是代碼示例和分析
    《python深度學習》本書由Keras之父、現任Google人: 工智能研究員的弗朗索瓦.肖萊(Francois Chollet)執筆,詳盡介紹了用Python和Keras進行深度學習的探索實踐,涉及計算機視覺、自然語言處理、生成式模型等應用。書中包含30多個代碼示例,步驟講解詳細透徹。