精华来了(含PPT) | 淘系技术嘉年华-杭州站
出品|阿里巴巴新零售淘系技術部
2019年8月3日,「淘系技術嘉年華-杭州站」移動端的技術創新和實踐,在阿里巴巴西溪園區舉辦,38 度的高溫也擋不住大家對技術的熱情,170 位開發者齊聚,進行了一次面對面的技術交流。線上直播在線觀看達 38000 余人次。
本次技術沙龍我們榮幸的邀請到 5 位來自阿里與華為終端的技術專家,為開發者們分享淘系 App 移動端技術創新和實踐的主題,助力應用高效開發。五位大咖與你分享端智能 MNN、手淘性能優化、手淘時間穿越、Flutter、華為折疊屏適配等眾多全球前沿移動端話題!是不是充滿期待 ?那么這次參與的同學們關注的技術和問題又將是什么呢。小編也為大家整理了滿滿的技術干貨哦,我們一起來看看~
關注「淘寶技術」微信公眾號,回復“沙龍”即可獲取本次活動完整版 PPT ~
干貨來嘍
隨著來自阿里的資深技術專家兼金牌主持人——白衣 進行的開場介紹和暖場,活動正式開始。
他提到了隨著移動生態的進一步繁榮和創新,移動 AI 、跨平臺、體驗優化、高效測試等成為熱門話題,為了持續創新不斷提升用戶體驗,淘系技術部希望能夠把自己的經驗帶給大家。
淘系技術部資深技術專家?白衣
0
1
?兼容并蓄——MNN的異構計算設計與實踐
淘系技術部算法專家?霞影
本議題主要分享端上推理引擎 MNN 為了應對移動端上復雜的異構環境所進行的實踐與探索。包括:異構計算的定義與移動端上的異構計算環境,兼容多種硬件平臺的 Backend 插件機制,異構設備計算結果正誤與精度控制,針對不同 GPU 硬件的性能優化策略,多硬件設備并行計算探索。探討推理引擎如何更好的利用硬件資源與未來的發展方向。
作為通用的端上推理引擎,MNN 會被部署到各種各樣的移動端設備上面,而移動端設備是多樣的,從系統層面來說分 IOS 和 Android ,從芯片層面 Android 陣營又有高通、聯發科、海思麒麟幾家并立,即便是同一類芯片也有每代的版本差別。對于異構計算而言,這種碎片化是非常大的挑戰。
首先是兼容性問題,同一套代碼可能在 A 手機上跑得好好的,而在 B 手機上就崩潰或者不能使用了。異構計算的使用需要用標準,也就是一組 API ,這個標準在 IOS 和 Android 上面不一樣,比如 IOS 上 GPU 的使用標準是Metal,而 Android 上面,由于歷史原因,是 OpenCL、OpenGL、Vulkan 三套標準并存的局面,沒有一套標準能覆蓋所有設備。
其次是性能問題,移動端上面由于功耗和面積的限制,像 GPU 之類的算力受到內存帶寬的制約,不能充分發揮。此外中低端芯片往往會挑 GPU 的配置下手,這也導致其 GPU 的算力不如 CPU 。
為了盡可能解決兼容性和性能的問題,我們將端上推理的計算過程分解為 圖計算調度、形狀計算、資源準備、執行計算四步。
圖計算調度是確定計算圖執行順序。形狀計算是由每個算子去根據輸入的大小計算輸出的大小。這兩步跟具體的硬件設備無關,我們將其抽離成 Schedule 和 SizeComputer 。資源準備與執行計算這個與硬件相關,我們封裝了后端(Backend)這個接口去抽象。Backend 包括三類接口函數,內存交互、內存申請與創建執行器。
每個算子的執行器又包括 onResize 和onExecute 兩個接口,onResize 接口中作資源準備環節中除內存申請之外的工作,onExecute 是在最后執行計算過程的調用的接口。通過這樣的接口設計,我們盡可能地降低了各種的硬件的適配成本,并且由于我們分離了資源準備和執行計算的過程,可以將非計算的損耗降為一次性的工作。
針對不同設備的 GPU ,其優化策略是相似的,主要會從三個方面進行優化:內存、并發、內核。
內存指的是在 GPU 計算之中讀取的內存量與內存訪問效率,對應的優化策略包括但不限于這三點:
1、在計算精度允許的情況下選用 Fp16 作為中間數據存儲格式,這樣相對原始Float類型可以減少一半的訪問量;
2、根據 GPU 的型號選擇使用 Image 或是 Buffer ,有些 GPU 針對 Image 有特殊的緩存優化,利用它可以提高內存訪問效率;
3、根據算法選擇合適的內存布局,減少運算所需的內存讀寫量。并發是指的任務的劃分,包括整體并發數(Global size)和局部并發數(Local size),這要求我們選擇適宜并行的算法,并且根據 GPU 型號確認局部并發數大小。內核是指著色器語言等的編寫,這要求我們選擇時鐘周期較少的函數、減少條件分支等。
0
2
?手淘性能優化實踐
淘系技術部高級技術專家?之羲
本議題主要分享了航母級應用手機淘寶在性能優化過程中沉淀下來的思考與實踐,圍繞著基礎體驗與大促保障兩個核心場景下不同技術挑戰,實施的優化策略與方法,借此探討手淘在性能優化過程中的一些思考。
手淘的業務場景也比較復雜,從瀏覽到下單支付流程涉及多個頁面鏈路較長,在業務上也直面市場變化,而航母戰略,使得手機淘寶的技術復雜度和代碼規模都到了一定的高度,面對這樣的技術挑戰,圍繞基礎體驗和大促保障的核心場景,在架構層面,系統層面及策略層面制定優化方法。
大促是電商最核心的場景,大促保障的體驗核心點是高流暢性,高穩定性,高實時性,高動態性,為此構建了像 weex 這樣的動態框架,并在逐年大促中優化和演進。同時,細分設備能力及容災的策略,保障了較好的穩定性和性能。
性能優化無止境,手淘根據自身的特點總結了4個優化方向,一是系統層面的優化,二是提升硬件的吞吐率,減少硬件阻塞,三是架構優化,重塑模塊間的關系提升架構效率,四是因地制宜,針對設備能力量身定制功能。
0
3
?手淘客戶端時間穿越
淘系技術部高級測試開發專家?韓鍔
本議題主要分享手淘通過時間穿越的方式,提前體驗雙十一客戶端總體情況,提前驗證手淘功能以及性能。包括客戶端、服務端時間穿越的方式,以及客戶端全鏈路驗收的方式。
時間穿越的技術實現分為服務端,客戶端,灰度環境三個部分。
服務端
所謂時間穿越實際就是將整條鏈路進行基于當前時間的偏移,也就是需要更改應用的時間。
應用的時間是取自集團提供的 NTP 服務,所以需要做的第一步是自建一個 NTP 服務,自建 NTP 服務能夠提供集團 NTP+ 偏移的一個新的時間服務。之后我們將有需要進入未來時間的應用都擴容到打有指定標記的宿主機群上,接下來只需要將宿主機的時間指向我們的自建 NTP 服務就完成了應用的時間變更能力。為了使應用無需進行任何改造以及部分應用涉及到預算問題,我們打通了底層部分,支持應用的一鍵擴容。
客戶端
客戶端的時間并非取自用戶設置的時間,又因為手淘后端應用數量巨大,穿越后必然會存在一部分應用處于當前時間,另外一部分應用處于未來時間的情況,根據上文的邏輯,客戶端的時間會被在當前時間和未來時間來回的糾正,導致整個客戶端無法使用,我們采用上圖所示方案,來規避上述問題。
灰度環境
該如何保證線上用戶不能進入到未來時間的環境中?又如何使指定用戶進入到未來時間的環境呢?
對于淘系的應用我們采用的是系統灰度環境;非淘系的應用采用的是微服務接口。兩種情況都是在統一接入層對當前的請求進行一次判斷,如果請求是白名單用戶發起的,就進入到未來時間的灰度環境中,如果請求是非白名單用戶發起的,那么就進入到正常的線上應用中。通過這種方式保證了在不影響線上用戶的前提下,保證指定用戶進入到未來時間的環境中。
0
4
?Flutter在閑魚的技術演進和創新
淘系技術部無線技術專家?吉豐
本議題主要分享了閑魚在 Flutter 技術架構實踐和演進過程中的問題、解法和創新。從兩個階段來切入,如何接入和如何規模化應用。包括通用混合棧的設計實現、高性能外接紋理方案的開拓和應用,以及在規模化應用 Flutter 中沉淀的 fish-redux 應用框架。
fish-redux 應用框架核心是解決復雜業務環境下的,代碼高耦合和低復用的問題。通過通用框架的設計思想和理念的分享,傳達了函數式編程,簡化的狀態管理使用方式,創新型的組件化抽象等關鍵特點。聽眾不管是前端還是客戶端還是 Flutter 開發,可以從中獲得收益。
Dart 一體化是解決資源不均衡、協同低效、關注點分離、多端不一致、協議約定成本高、產能非線性等問題。講解了閑魚在 Dart 一體化中如何消除云端技術壁壘、如何發揮帶來的業務關注點聚焦紅利、如何促進生產關系重塑。給聽眾帶來一些新的啟發。
0
5
華為 MateX 折疊屏適配指導
華為終端MateX項目經理?閆鴻飛
本議題將從Mate X規格和接口介紹、基礎適配、典型案例分享、進階適配、開發與調試五個角度為現場的開發者介紹了折疊屏適配指導的實踐經驗。
華為 Mate X 適配項目經理閆鴻飛從 Mate X 規格和接口介紹、基礎適配、典型案例分享、進階適配、開發與調試五個角度為現場的開發者介紹了折疊屏適配指導的實踐經驗。
?
其中,華為 Mate X 適配項目經理閆鴻飛在適配的環境方面做了精細的講解,方便開發者適配。第一個遠程真機,推薦大家使用,因為無論從屏幕的比例效果,還是折疊這個形態,在遠程真機上都可以模擬,但是差別就是沒有實際顯示對應的機器的信息和名稱,但是從 UI 適配和折疊的適配上,從我們實踐經驗來看,基本上可以滿足大家的需求,這樣就省去大家很多的對真機的依賴。
第二個是谷歌瀏覽器。從 Android Studio 3.5 Canary 版本開始,開發者可創建一個運行 QBeta 2 版本的折疊屏虛擬設備,其支持的硬件配置分別為7.3英寸(折疊后為4.6英寸),以及 8 英寸(折疊后為 6.6 英寸)。建議開發者選擇 8 英寸的設備來模擬適配華為的 MateX 折疊屏手機。
備注:Android Studio 3.5 Canary 版本下載地址:
https://developer.android.google.cn/studio/preview
在兩個配置中,模擬器均允許開發者通過屏幕控制來觸發折疊/展開操作,旋轉屏幕方向以及快速操作,點擊模擬器左上角的按鈕就可以在折疊態和折疊態之間切換。
?
最后一個就是用命令模擬調試的方式,更多是基于真機來開發,開發者也可以在非折疊屏手機上面通過命令修改手機的屏幕分辨率來進行模擬調試:
1.折疊切展開模擬方法:
預先將手機設置主屏分辨率:adb shell wm size 1148x2480
通過修改手機分辨率為全屏分辨率模擬狀態切換:adb shell wm size2200x2480
2.展開切折疊模擬方法:
預先將手機設置全屏分辨率:adb shell wm size 2200x2480
通過修改手機分辨率為主屏分辨率模擬狀態切換:adb shell wm size1148x2480
3.分辨率恢復方法:
adb shell wm size reset
圓桌討論
這次技術沙龍的最后一個環節——圓桌討論,60 多位同學積極參加話題討論,本環節分為三個主題,端 AI 與 5G 、跨平臺、客戶端體驗。現場的同學們照例走向自己喜歡的主題并圍圈而坐。在創新技術的探索上有什么疑問大家都可以暢所欲言,與各位資深技術專家進行深度的交流。
最后
本次淘系技術嘉年華大家共度了一個美好的下午。我們將會馬不停蹄的繼續向前,和更多的開發者面對面交流,那么下一站會是哪里呢?
你希望我們去哪里呢?歡迎在評論區里留言,很可能就是你所在的城市哦!讓我們下次再見咯~
我就知道你“在看”
總結
以上是生活随笔為你收集整理的精华来了(含PPT) | 淘系技术嘉年华-杭州站的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 代码源每日一题-宝箱(贪心/思维)
- 下一篇: 父爱如山,催泪微电影感动全网