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