MindSpore,易用性提升的思考与实践
作者:王磊
更多精彩分享,歡迎訪問和關注:https://www.zhihu.com/people/wldandan
AI 框架作為發展人工智能所必需的基礎設施之一,承擔著 AI 技術生態中操作系統的角色,是 AI學術創新與產業商業化的重要載體。AI框架開源,能夠依靠開源社區,聚合人才和智慧,助推AI框架的快速升級,對AI框架的發展至關重要。隨著AI框架的快速發展,也將極大的助力人工智能由理論走入實踐, 快速進入了場景化應用得時代。
而一款成功的開源軟件,往往在構筑代碼/核心能力時,也需要考慮軟件的易用性,從而獲得開發者的青睞。
概述
在使用開源軟件的過程中,大家可能或多或少都遇到過一些問題,比如安裝過程復雜、找不到案例、缺少示例、問題定位難等,我把這些問題稱之為開源軟件的“摩擦力”。
一個成功的開源軟件,想要贏得開發者的青睞,代碼/核心能力的開放實際上只是冰山一角,如何構建開發者體驗,持續提升軟件易用性,從而消除開源軟件的“摩擦力”,也是我們需要思考的工作。
MindSpore是華為公司2020年3月開源的全場景AI計算框架,源于全產業的最佳實踐,旨在實現易開發、高效執行、全場景覆蓋三大目標。其具有自動并行、動靜態圖結合、全場景部署協同、全棧協同加速等特點。
2020年3月正式開源至今,從最初的0.1版本快速迭代到1.7版本,獲得國內眾多高校、科研機構、企業和開發者的支持。MindSpore的下載量突破145萬+;內外部核心貢獻者超過1300個;在100+高校開課,覆蓋學生5萬+。
對于MindSpore,我們如何進一步提升其易用性呢?
什么是易用性
說起易用性,咱先聊聊什么是開發者體驗。開發者體驗(DX,Developer eXperience)來源于用戶體驗(UX,User eXperience)。用戶體驗指人們對于使用的產品、系統或者服務的認知印象和回應用戶。通俗來講就是“這個東西好不好用,用起來方不方便”。而開發者體驗,與用戶體驗類似,面向的對象主要是開發者,關注的內容變為庫、API、文檔、相關工具等。如下先簡單介紹用戶體驗和開發者體驗的發展歷程。
- 1995年,美國認知心理學家Donald Norman提出“用戶體驗”概念,他將用戶體驗設計定義為三層,本能層、行為層和反思層。首先是如何通過第一印象去吸引用戶;然后在用戶使用產品時,又如何通過產品的交互體驗去吸引用戶;最后上升到產品的意義,以及使用者對產品產生的情感升華。
- 2007年,挪威用戶體驗設計師Magnus Revang提出“用戶體驗輪” 研究模型。在該模型中,通過圍繞核心價值周邊的因素,比如可獲取性、可靠性、易得性和易用性等,共同去實現中間的核心-價值。
- 2010年,Google提出了HEART模型,主要用來衡量Web應用的用戶體驗,主要衡量因素包含愉悅感、參與度、接受度和留存率等。
- 2017年,ThoughtWorks 提出開發者體驗的一些關鍵因素,比如文檔、錯誤呈現、易用、交互和觸點等。
那么,開發者體驗和易用性又有什么關系呢?開發者體驗的覆蓋范圍要比易用性更大。從開源軟件使用角度看,開發者體驗包含三個層次:能用/可用->易用/好用->享用/愛用。
第一階段,能用/好用。關注點是軟件功能本身的完備可用、質量穩定可靠。在該階段,開發者能夠借助該軟件完成特定目標,但是可能會存在一些瑕疵或者阻塞點。
第二階段,易用/好用。關注點是易學習低門檻、易使用高效率。在該階段,用戶能夠借助軟件高效完成特定目標,它體現的是易用性和好用性。
第三階段,享用/愛用。關注點是軟件具備的獨到之處、愉悅感。在該階段,軟件已經比較成熟,而且用戶經過前期的使用之后,能夠感受到軟件的一些獨到之處,用戶開始滿意、喜歡并且愛用。
當前主要關注第二階段,即易用/好用,同時也會涉及第三階段。
易用,通俗的講就是好用、容易上手。那么,在一款軟件產品中,我們怎么定義其易用性?在《GB/T 29836-2013 系統與軟件易用性》中,將其定義為:產品在特定使用環境下為了特定目標可以為特定用戶使用的程度。對于其細化的指標體系,又細分為易理解性、易學性、易操作性、和吸引性。即易用性是指產品被用戶使用時,能夠被用戶理解、學習、使用和吸引用戶的能力。易用性是產品的基本自然屬性,標志著最終產品的可用性和成熟度。
那么,針對MindSpore,我們該如何提升它的易用性?
提升易用性,我們準備怎么做
對于MindSpore,從用戶群體來看,主要分為學習型用戶、科研型用戶、生產部署型用戶。針對這些用戶群體,我們從易學習低門檻、易開發高效率、問題快速閉環三方面,提升用戶易用性。
- 易學習低門檻:提供豐富的學習資料,幫助用戶快速上手和學習,包含文檔教程、應用案例、以及AI工程&實踐(AI開發過程中的工程實踐)。Gartner發布的一篇文章中提到一種創新技術-AI工程,認為隨著AI的普惠化,如何通過如設計模式、MLOps流水線等幫助開發者更好的去使用AI,將會變得越來越重要。AI工程是一系列方法、工具和實踐的集合,確保AI模型/軟件的高效交付,具備可信、健壯性及可解釋性,并持續地為用戶創造價值。相信隨著AI工程技術的成熟&普及,將會對AI的廣泛應用產生巨大的推動。
- 易開發高效率:基于AI軟件開發流程,提供各項開發能力,兼顧極簡易用與靈活高效,包含環境準備、數據處理、模型開發、調試調優和部署推理等。整個流程就是AI開發的端到端流程,其更多體現如何幫助開發者提高開發效率。
- 問題及時閉環:專門團隊和專有接口人,及時處理線上線下問題,提升MindSpore開發者的滿意度。
提升易用性,我們最近做了什么
在相繼發布的MindSpore 1.6和1.7版本,我們圍繞著易學習低門檻、易開發高效率和問題快速閉環等目標,在MindSpore易用性上做了大量工作。
下面我們重點講幾個關鍵的特性。
1.支持數據處理自適應調優,充分發揮數據處理性能
在模型訓練時,數據處理的并行度是初始時確定的,過程中無法調整。并行度設置過小(處理能力差)或者過大(資源切換開銷高)都會影響整體的數據處理效率。
為解決上述問題,MindSpore在1.7版本提供了一種數據處理自動調優的工具——Dataset AutoTune。在訓練過程中,該工具可以幫助用戶根據系統環境資源的情況自動調整MindSpore Data數據處理管道的并行度和內存使用度,利用當前系統資源加快數據處理管道的處理速度。
在整個網絡訓練的過程中,Dataset AutoTune工具會持續檢測當前訓練性能的瓶頸處于數據處理側還是模型運算側。如果檢測到瓶頸在數據處理側,則將進一步對數據處理管道中各個操作(如GeneratorDataset、map、batch等)的參數進行調整,以加快該操作的計算速度。我們以一個例子來說明:
2.一站式智能開發環境MindSpore Dev Toolkit
新用戶使用MindSpore時,在熟悉環境配置時,或者業務開發需要鍵入大量代碼,亦或查找MindSpore知識,都會花費較多時間,從而無法聚焦在核心業務。
針對上述場景,MindSpore提供了一站式智能開發環境MindSpore Dev ToolKit。其能夠使能用戶及時體驗MindSpore框架,并提供運行管理、智能知識搜索、智能代碼補全和算子互搜等能力,致力于讓所有用戶絲滑地擺脫環境干擾學習人工智能,讓人工智能回歸算法本身。MindSpore Dev ToolKit具備以下特點:
- 基于Conda提供的MindSpore環境管理方式,實現一鍵環境管理,5分鐘快速將MindSpore全場景AI框架及依賴安裝在獨立環境中并部署最佳實踐。
- 基于語義搜索等能力,在Dev Toolkit內提供全面的MindSpore知識內容檢索,在IDE中快速獲取詳細的文檔支持。
- 基于MindSpore ModelZoo等最佳實踐數據集實現智能代碼補全功能,讓用戶在編寫相關代碼時獲取實時提示,補全達80%的高準確性,有效的幫助用戶快速獲取需要的信息,提升編碼效率。
3.提供斷點續訓能力,訓練任務中斷可原地恢復
在超大模型訓練,為保證訓練效率,保存間隔較長(如5-6小時/次)。一旦系統出現異常時,最壞情況丟失前N小時的訓練結果,再次重頭開始訓練時,會造成較大的時間損失。
為解決上述問題,MindSpore提供了斷點續訓能力,自動保存異常點模型狀態,當任務中斷后,從中斷的檢查點處恢復并繼續訓練。
4.MindSpore Vision—易用易理解的主流工具庫
在手動處理數據、構建網絡、調試,往往會耗費大量時間。這時,需要套件提供開箱即用能力,來提升開發效率。
MindSpore Vision是基于MindSpore的開源計算機視覺研究工具庫,支持主流計算機視覺網絡,重點提供圖像分類能力;支持50+預訓練模型(ViT,EfficientNet等),常用數據集接口(cifar10)。可以實現開箱即用、大幅提升開發效率。我們以一個例子來說明:
從如下示例,可以看出開發效率顯著提升,如官網(Lenet樣例)代碼整體減少90%
- 使用MindSpore Vision前:
- 使用MindSpore Vision后:
為什么成立易用性SIG
未來,MindSpore團隊將會不斷推出易用性新特性、持續做好開發者體驗。同時,MindSpore團隊更希望廣大開發者們能夠加入進來,一起打造易學易用、靈活高效的AI框架。為此,我們成立了易用性SIG。
易用性SIG作為連接開發者的橋梁,其目標是和開發者共同打造易學易用、靈活高效的AI框架,持續提升MindSpore易用性,助力開發者成功。
易用性SIG是一個傾聽開發者聲音的渠道,在這里,你可以直接提出對MindSpore易用性的改進需求,需求將及時反饋給MindSpore社區進行評估。
易用性SIG也是一個為開發者提供幫助的渠道,在你學習和使用MindSpore的過程中,對于文檔信息體驗、安裝、API使用、語法/算子/模型支持、報錯信息等方面有任何疑問,都可以在這里發問,SIG會通過社區互助的形式幫你答疑解惑。
易用性SIG更是一個開發者共同交流和學習的平臺,這里有豐富的技術活動,不僅有易用性相關特性講解和演示,還有業界專家對AI工程方法和最佳實踐進行分享,更有學術界大牛進行前沿技術分享,以及開發者現身說法,分享他們的故事與經驗。我們還可以一起來開發知識問答機器人,讓AI普惠每一位開發者,讓開發者學好、用好MindSpore是我們最大的心愿!
更多詳細的易用性SIG介紹請參見易用性SIG介紹。同時,歡迎各位開發者踴躍參與,不斷壯大這個技術圈子。添加小助手的微信(vx: msusig),小助手拉你進群,大家一起交流更多易用性相關話題!
參考資料
[1]《GB/T 29836-2013 系統與軟件易用性》
[2]中國信通院《AI 框架發展白皮書(2022年)》
[3] MindSpore官網:https://www.mindspore.cn/
[4]易用性SIG介紹:MindSpore社區成立易用性SIG,歡迎加入! - 知乎
[5]MindSpore Dev ToolKit:https://gitee.com/mindspore/ide
總結
以上是生活随笔為你收集整理的MindSpore,易用性提升的思考与实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Microsoft SilverLigh
- 下一篇: 坎蒂雷赋权法 matlab,干货 | 利