[depositar] 以技術克服科研運算可再現性的挑戰 貫徹開放科學的理念

本文亦刊登於 2024-03-15 科技報導

文/何明諠(中央研究院資訊科技創新研究中心 專案經理)


去(2023)年 10 月,研究資料寄存所(depositar)迎來了 Binder 的整合,這也是 depositar 協助研究人員達成「運算可再現性」(computational reproducibility)的一個里程碑。使用者只需將程式碼和相關資料放入同一資料集中,並於資料集頁面點選 Binder 功能按鈕,或於 Binder 服務首頁輸入資料集網址,就能迅速在平臺上建立該程式碼的運算環境,並重現它的執行結果。其實不只 depoistar,其他科研單位例如歐洲網格基礎設施(European Grid Infrastructure, EGI)、日本國立情報學研究所(National Institute of Informatics, NII)也紛紛在近兩年引入類似的功能。

運算可再現性的挑戰①-無法取得程式碼

可再現的(reproducible,或稱可重現的)研究是科學進展的基石。一般而言,「可再現」的研究,意指不同研究者都可藉使用與原始研究相同的素材,得出原始研究的成果。而伴隨科技的推展,愈來愈多的研究在研究過程中使用軟體、資料、程式碼來獲得最終的研究分析與成果。於是,為達成「可再現的」科學研究,「運算可再現性」也就連帶成為必須要達成的目標之一。
 
雖然運算可再現性很重要,但在實際層面上卻不易達成。知名期刊《科學》(Science)早在 2011 年就曾訂定規範,說明該期刊的作者須應讀者要求提供運算出論文結果所需的程式碼。但哥倫比亞大學(Columbia University)的研究團隊在 2011∼2012 年間曾進行一份經驗性的研究,他們隨機挑選了 204 份《科學》期刊的論文,向作者們索取資料及程式碼,最終該團隊僅能取得其中的 44 %的資料及程式碼,更只能再現其中 26 %的研究。
 
毫無疑問,欠缺得出論文結果過程中所倚賴的資料及程式碼,將顯著提升其他研究者再現該研究的難度。而單就程式碼而言,若追問它為何如此難以取得,原因或許非常多樣:缺乏獎勵誘因、沒有心力或資源整理程式碼、擔憂程式碼不夠乾淨等,都可能是造成程式碼無法被分享的阻礙。
 
也因此,近來不少期刊乾脆直接將分享程式碼視為作者的義務。除了前述的《科學》期刊外,如 PLOS 期刊也在 2021 年制定了規範,並成功將程式碼分享率從 2019 年的 53% 提升到 2021 年底的 87%。程式碼和資料的分享雖成功提升了研究的可再現性,但仍未完全解決問題。因為對於運算可再現性來說,取得程式碼和資料可能只是最基礎的一步,還有一系列挑戰隨之而來。

運算可再現性的挑戰②-程式碼欠缺清楚的註記

取得程式碼,並不表示問題就被解決了。以先前提過的哥倫比亞大學研究為例,縱使取得程式碼,也僅有 26% 的研究可以被再現。2022 年,清華大學王彥翔在他的碩士論文中,同樣針對《管理科學》(Management Science)期刊上能取得程式碼的 36 篇文章進行研究,發現絕大多數論文所提供的程式碼,都缺乏運算韌性(resilience),使得其他研究人員可能難以再現論文中的運算結果。
 
為提升運算的可再現性,以及便於展示研究成果,研究者採用諸如 Jupyter Notebook、Google Colab 或 Kaggle 這類工具的情形也在日益增加。理論上,這類整合描述、運算、資料、視覺化於一體的互動式筆記工具,可以協助研究者收攏運算再現所需的素材,因而降低他人重現研究的門檻,但遺憾的是,在運算可再現的議題上,這類工具還是有著明顯的缺陷。
 
例如當程式碼欠缺充分註記,其他人就難以理解程式碼在分析階段經歷的過程。在此情形下,一旦程式碼無法執行,重現研究之路立刻就阻礙重重。2018 年,一個分析了 GitHub 上逾百萬份 Jupyter Notebook 的研究就指出,不僅多數筆記工具上的描述相當鬆散且比重分配不一,且 Jupyter Notebook 允許不同區塊間的程式可不按次序地獨立執行的特性,都讓他人試圖在理解程式碼以解決困難時,反倒遭遇了更多問題。

運算可再現性的挑戰③-相依性問題

此外,若想再次執行手邊的程式碼,技術上往往預設我們能找到可運作程式碼的軟體,並重建當初的運算環境。因此,當研究人員懷著滿心期待,試圖再現某個研究的成果時,隨之而來的軟體毀損(software collapse)問題相依性問題(dependency hell)總會讓人氣餒。
 
我們總以為自己用來撰寫程式的軟體是可靠、穩定的,但軟體的運作其實還需要與其他各種不同的軟、硬體互相配合。例如能在 Windows 11 執行的軟體,未必能在Windows XP 上執行;相依性問題也十分常見,由於軟體所倚賴的套件及函式庫也會持續更新,從而導致即使是相同的程式碼,在使用不同版本的軟體執行時仍可能會出現不一樣的結果,甚至可能根本無法執行。
 
特別是相依性問題,即使是使用前述 Jupyter Notebook 也無法避免。Jupyter 環境也存在預先安裝的套件或模組版本,研究者在使用類似工具時,同樣要面臨此問題的挑戰。

技術上的解決方式之一-Binder

公開程式碼及清楚的註解,可能得倚賴研究人員的意識提升或相關規範的施行。但在面對與技術有關的相依性問題時,若產生研究結果時,能將產生結果的運算環境(如所用的軟體、套件、函式庫的版本)也一併保留,則重現研究結果的過程就容易得多。一些新近的工具正試圖解決這部分的問題,例如虛擬機器(virtual machine)、套件管理軟體(package management software)、容器化(container)工具如 Docker 等,它們都各自有不同特點。depositar 近期整合的 Binder 也是屬於可達成這類目的的工具。
 
Binder 是透過 BinderHub 這個工具所建立的一個可多人使用的線上服務。在 depositar 上,當使用者在一個含有程式碼的資料集啟用 Binder 時,Binder 首先會自動搜尋該資料集中是否含有運算環境的設定檔(如 environment.yml),並依照該設定檔建立一個可執行該程式碼的線上環境(Jupyter、RStudio 或 Shiny),讓資料集的使用者能重現該程式的結果。且一旦資料集內容有修正,該環境就會重新建立以確保程式碼可被持續執行。
 
導入 Binder,使非技術專長的研究人員能將更多心力放在如何與他人的研究成果互動,而不必時刻擔心程式碼的相依性問題。此外,由於 Binder 屬於一種線上服務,上傳程式碼的研究人員也能隨時隨地向他人展示自身的研究成果,不須一再手動重建環境。

運算可再現性的未來展望

Binder 的導入是 depositar 在協助研究人員達成運算可再現性的一個里程碑。在過去,運算可再現在技術上所遭遇的困難,有一部分也來自於研究人員已無心力再去熟悉日益增加的工具。而 Binder 的導入,將真正大幅降低研究人員重建環境時需投入的心力,不必安裝新軟體、不用顧慮套件與函式庫的版本、不需下載新的資料就能改善本文先前所提到的相依性問題。為了貫徹開放科學的理念,我們相信未來會有愈來愈多的資料儲存庫都將引入類似的工具,值得我們持續引頸期盼。

※感謝中央研究院資訊科學研究所技術經理李承錱、中央研究院資訊科學研究所專案經理王家薰由技術面協助校正,提升了本文在內容上的精確性。本文部分內容,也參考自李承錱等人於今(2024)年1月釋出的投影片(見延伸閱讀 1),一併在此致謝。

延伸閱讀

  1. Cheng-Jen Lee, et al. (2024). Toward a Reproducible Research Data Repository. In International Symposium on Data Science 2023 (DSWS 2023), Tokyo, Japan. https://pid.depositar.io/ark:37281/k5s779b7d
  2. Steven N. Goodman et al. (2016). What does research reproducibility mean? Science Translational Medicine, 8(341), ps12. DOI:10.1126/scitranslmed.aaf5027