跳至主要內容
ActivePapers 將您的數據儲存為可重新計算的文檔,讓任何發佈的結果都能被重新執行、驗證並永久保存。

本網站部分連結為聯盟行銷連結:若您透過該連結購買,我們可能會獲得佣金,且不會增加您的額外費用。這絕不會影響我們的推薦建議。詳情請參閱我們的聯盟行銷聲明。 聯盟行銷聲明.

儲存可重新計算的資料

儲存可重新計算的資料,作者:Konrad Hinsen,發表於 2014 年 1 月 3 日

我在介紹 ActivePapers 時,經常被問到一個問題:「儲存計算結果有什麼意義?只要保留程式碼,隨時可以重新執行。需要儲存的只有程式碼和輸入資料。」

簡短的回答是:理論上沒錯,但實務上卻未必如此。若想深入了解,請繼續閱讀。您也將了解 ActivePapers 如何協助您處理「儲存」與「不儲存」可重新計算資料的各種情境。

首先,讓我們先釐清最顯而易見的理由:某些計算成本過高,不值得重複執行。這是在「重新計算所需的時間」與「磁碟儲存空間的使用」之間的經典權衡。許多情況下,理想的折衷做法是暫時保留結果資料,以便在產生新想法時能迅速進行分析,但無需長期歸檔。

接下來是一個較不明顯、而且我們不太願意面對的原因:計算過程可能不如預期那樣具備可重現性。實際上,許多程式會因執行平台不同(作業系統、編譯器版本等)而產生些微差異的結果。凡是涉及浮點數運算的程式,幾乎都難免落入此類別。更嚴重的情況是,兩次執行結果的差異大到足以改變從中得出的結論。是的,這種情況確實會發生。

最後,還有一種極為常見的情境:儲存計算輸出的實際資料並不重要,但儲存相關的詮釋資料(metadata)卻至關緊要。而這正是 ActivePapers 大顯身手之處。

相關: — 基於專案的資料科學路徑,具有引導終端和真實資料集.

這種情境出現在您的可重新計算輸出其實只是完整工作流程中的中間資料。例如,您執行某個模擬產生一段冗長的軌跡資料,接著對該軌跡進行分析,並據此生成圖表。圖表是最終成果,因此您需要保留它;而軌跡資料與原始分析結果則屬於中間產出,除非符合上述兩種情況之一,否則無需儲存。然而,您確實希望記錄「該圖表是由原始分析產生,而原始分析又源自模擬軌跡」這一脈絡關係。有了這些資訊,您或日後檢視您工作的其他人,都能輕鬆驗證該圖表是否確實對應最新版本的模擬與分析程式碼。

ActivePapers 提供「虛擬資料集」(dummy datasets)來應對這類情境。虛擬資料集不包含實際資料,但保留了 ActivePapers 在執行 codelets 過程中所產生的所有詮釋資料。在目前版本的 ActivePapers 中,建立虛擬資料集的唯一方式是:先產生真實資料集,接著執行所有以其為輸入的 calclets,最後使用 aptool dummy ... 命令將真實資料集替換為虛擬資料集。教學文件中也提及了虛擬資料集,並示範如何重新計算原始資料。

未來在使用者介面方面,虛擬資料集仍有許多改進空間。例如,建立資料集的 calclet 可立即將其標記為虛擬資料集,如此一來該資料便永遠不會寫入檔案,而是直接在記憶體中傳遞給後續的 client calclets。若您對此有任何構想,歡迎在 Github 問題追蹤器上提交議題。

值得一看: — 一份大學支援的 Python 和資料科學證書訂閱.

comments powered by Disqus


透過在瀏覽器中編碼來學習 Python

您可以直接在瀏覽器中編碼的互動式 Python 和資料科學課程