如果說前50年是AI的潛伏期,那么,2017就是人工智能的全面爆發年。我們在各行各業都可以看到AI的身影,包括各廠商推出的自研AI算法,以及滿屏的基于AI的智能化探索和研究,無可否認的是,人工智能技術已經滲透到生活的各個領域當中。那么,在AI技術實際落地的過程中,會遇到什么樣的瓶頸?基于深度學習的框架這么多,企業該如何選擇最適合自己的那一條道兒?
12月9日UCloud收官戰,聚焦AI技術的落地實踐,通過高可用的異構AI計算平臺構建過程、如何流程化地生產和發布AI產品、及深度學習性能優化工具和實現等內容分享,為開發者在快速落地AI應用和產品上提供了一些可用的方法和途徑。
美團丁雪濤:美團配送智能網絡規劃系統
美團配送已承擔日千萬級單量的配送,為上百萬商家和千萬級用戶提供服務。這其中如何建立配送網絡的規劃工具和規劃策略至關重要,不過,僅僅依靠人工來對百萬級別的網絡進行調整,不但效率低成本高,而且標準不一。來自美團的資深技術專家丁雪濤,就美團配送網絡的總體設計和規劃、商家配送范圍的策略和算法演進、區域規劃的策略等內容展開了深入分享。
美團的整個配送網絡整體設計包括三個核心概念:取件范圍、送件范圍以及配送范圍。取件范圍就表示加盟商的勢力范圍,每一個商家對應一個獨立的配送團隊,勢力范圍即配送小哥能夠為哪些地方取件,送件范圍的目的是為配送團隊規劃一個整體可以到達用戶的地;配送范圍是指商家的配送范圍,只有在這個配送范圍內的用戶才可以看到這樣一個商家。
那么,美團怎樣規劃取件范圍和配送范圍呢?在取件范圍的規劃上,美團以效率、體驗和公平為基準點,制定了生成劃分方案,即基于聚類和多目標優化,來生成候選劃分方案,通過迭代反饋,將生成的候選方案輸入到仿真系統,通過真實歷史訂單騎手配置來模擬配送過程,得出效率和體驗評估報告。
在配送范圍的規劃上,美團首先將配送場景劃分為常規配送范圍、惡劣天氣范圍、閑時配送范圍、新商家范圍等等,通過block決策、導航路線畫圖、中間指標、商家推薦、機器學習預估多種技術手段,分析出不同場景下最優的配送范圍。
UCloud 宋翔:構建商用AI平臺的挑戰與思考
隨后,UCloud 高級研發工程師宋翔,結合UCloud在AI PaaS產品研發過程中遇到的問題,以及AI平臺構建過程中的挑戰與解決方案,為現場參會者深入講解了如何構建一個高可用的異構AI計算平臺。
宋翔表示,目前,業界主流的AI算法和框架非常多,算法包括VCG、LSTM、RestNet、Fast-RCNN等等,而框架又有TensorFlow、Keras、Caffe、MXNet等,其組合種類更加讓人眼花繚亂。那么,如何在繁雜的組合里選擇合適的算法和框架?宋翔分享了AI平臺構建需要考慮的五大要素:算法兼容性、平臺擴展性、分布式話、縱向拓展、易用性,用戶可以以這五大要素為基準點,根據平臺構建的目的來搭配最適合的算法和框架。
基于以上五大要素,UCloud構建了自有的AI基礎平臺,里面包含AI訓練和AI在線服務兩大核心功能。如下圖所示,最上層是訓練日志和TensorBoard框架,下面接著就是圖形化界面,這里面主要是完成一些基本的部署操作,右側是Python SDK接口,接入層下面即為平臺核心的AI Train和AI Service,最底層封裝了所有的硬件和存儲接入。這個平臺看起來雖然簡單,但基本上包含了AI商用平臺的常用功能和接口,可以說是麻雀雖小,五臟俱全。
談起AI平臺的實現過程,宋翔表示,AI框架的構建最重要的兩點就是保障平臺的兼容性和可靠性。在兼容性上,UCloud采用了容器封裝和數據接入兩種方法實現環境的分離 ,將不同功能的AI框架、依賴環境、硬件設備、存儲分隔開來,讓不同的模塊實現不同的功能。可靠性的實現上,UCloud主要采用負載均衡、請求調度算法優化、性能監控以及高可用的部署等方式,完成全局的彈性擴容。
值得一提的是,UCloud在GitHub開源了自身基于AI基礎平臺的公共鏡像庫和SDK,用戶可以通過開源的SDK,將UCloud開源的鏡像庫打包成自身可以應用的鏡像,開發者可以再本地鏡像使用,也可以放在UCloud的在線服務或者說訓練的平臺,這些都是完全兼容的。感興趣的同學也可以訪問鏈接 https://github.com/ucloud/uai-sdk/,進行深入了解和演練。
UCloud范融:如何輕裝上陣玩轉AI
在產品化AI服務的過程中,普遍都會遇到基礎資源管理、使用、封裝等等問題,如何提升AI產品研發效率,簡化非核心業務的研發流程是各個公司最關心的問題之一。來自UCloud高級研發工程師范融,現場結合動手實踐,詳細分享了如何流程化地生產和發布AI產品,節省開發時間和成本。
本地開發AI之前,開發者需要提前配置基礎的環境,包括CPU、GPU的支持,以及深度學習框架準備和科學計算庫的加載等,基礎環境配置完成之后,即可進行開發工作。下圖為UCloud AI本地開發的整個過程,下層是基礎環境的配置,上面白框是應用代碼部分,這部分主要解決兩個的問題,一個是數據的訓練,一個是數據的預測。一般來說預測網絡和訓練網絡是類似的,如果預測模型和預測程序不止在本地運行,則需要加一個Web服務框架。
為了簡化應用代碼的部署和構建過程,UCloud提供了一些開源的工具和框架(上圖藍色框架的所有內容),包括輔助工具里面的代碼打包和自動部署工具,開發者也可以在UCloud提供的SDK里面免費下載使用,省去許多部署煩惱。
AI本地訓練雖然安全性比較高,但在資源申請和迭代開發方面具有一定的局限性,如字眼擴容較慢,多任務穿行是等待時間較長,調參困難等,范融認為,合理的將部分的AI Train放在云端實現,可以有效的完成云端資源的按需申請、多任務并行處理以及任務參數記錄等工作。在數據的上云實踐方面,UCloud提供了比較完善的工具和方法,用戶只需通過代碼改寫、打包鏡像、上傳訓練數據以及啟動任務四個步驟即可輕松上云。
Intel何普江:深度學習性能優化工具及實踐
UCloud的兩位講師分享了AI落地實踐的一些平臺構建思路和方法,來自Intel何普江,則現場分享了基于深度學習的性能優化工具和實踐經驗,包括在高性能計算庫(MKL和MKL-DNN)和框架(Intel發行版Caffe)的使用、注意事項和一些經驗,以及基于CPU的高效的RNN設計實現過程。
Intel數學核心函數庫(MKL)是一套高度優化、線程安全的數學例程、函數,能加速加速機器學習、科學研究、工程、財務和設計等領域的數學處理,并提供了稠密及稀疏線性代數 (BLAS, LAPACK, PARDISO), FFTs, vector math, summary statistics 等支持,具有標準的API以及高度優化的特點,最大限度發揮多核核和 SIMD指令的優勢。
MKL不同的是,MKL-DNN是一個開源的深度學習框架。下圖為使用Intel MKL-DNN進行推理的過程,有兩種方式可以實現這個過程,一種是訓練好的模型,直接進入模型轉換器,然后再用topo.txt(網絡拓撲)生成Inference.cpp(基于MKL-DNN的Inference代碼,在初始化的時候會加載weights.bin),這套邏輯需要用到Intel自身的網絡拓撲模型的中間表示形式。另外一種方式是待topo.txt生成后,再用簡單的代碼轉換器,實現輕量級的InferenceFramework.cpp(輕量級Inference框架,可以解析topo.txt并加載weights.bin)。
caffe是一個清晰、可讀性高、快速的深度學習框架,Intel發行版的Caffe同樣也是開源框架,它基于BAIR/BVLC Caffe改進而來,Intel在BAIR/BVLC Caffe的基礎上添加了流行檢測網絡的支持(如SSD),同時,也支持多節點訓練以及CAFFE、MKL2017和MKLDNN三種引擎。在RNN的優化上,何普江介紹到,Intel主要對高效的GEMM實現、一些小操作的合并、并行化元素級操作、合理的數據排布以及低精度表示上進行了系列改進實踐,優化之后的CPU性能基本上可以比GPU高甚至高出不少。
寫在最后
這次分享從平臺、方法和工具等不同角度,全面詮釋和講解了開發者該如何從0開始快速落地AI產品。雖然目前人工智能技術整體都還處在探索階段,不過相信大家定能從這次分享中吸取精華,有所收獲,在并將其應用在未來的開發者之路上。UCan下午茶2017系列沙龍,在走過了北京、上海、深圳、廣州等一線城市后,于美麗的杭州湖畔完美收官。
(新聞稿 2017-12-15)