前言
隨著碩士班的開學,
我自然而然地也踏上了生物資訊,整合機器學習之研究的旅途。
然而過程中,我竟然也發現:
在做生物資訊的同儕,除了新手還在用 Windows 之外,
其他專業一點的人們,幾乎都用某一種 Linux 的發行版。
(例如:Ubuntu, Linux Mint)

示意圖:伺服器與 Ubuntu 系統(由 ChatGPT 繪製)
我從文章寫出來的六個月以前開始接觸 Linux。
從在我的筆記型電腦上面測試癌症基因表達的分析,
到現在在實驗室裡面負責安裝 Linux 伺服器與維護,
深刻體會到 Linux 比起我以前的 Windows 流程或 macOS 都還要順暢。
透過我之前跟實習單位的資深前輩,以及自己察覺到的方面,我也認識到:
Linux 不只是效能上的優化而已,更是從事生物資訊共通的「文化」。
這篇文章,就是我在這六個月以來,
對於「Linux 為何是生物資訊研究的良伴」這個問題,
依據我個人的經驗提出分析、做出思考之後的結晶,跟大家做分享。
Linux 在生物資訊研究中的定位
眾所周知,全球絕大多數的伺服器皆是使用 Linux 進行開發與設計;
這使得軟體或命令列工具的開發,也跟著使用 Linux 作為主要的開發環境,
減少開發環境與發布軟體的伺服器之間,
因為不同作業系統的核心差異,帶來的潛在錯誤風險。
又由於從 Linux 跨平台到 Windows 或 macOS 需要另外的某些工具和腳本,
會增加程式在部署上的複雜程度;
因此,既然是在 Linux 上面做開發,
開發者自然也會選擇以 Linux 作為釋出軟體的首選。
這使得主流的生物資訊工具對 Linux 形成強大的依賴;
甚至有些函式庫並不包含 Windows 或 macOS 上的版本。
像是我之前在實驗室,最一開始接觸生物資訊的時候,
本來也打算透過 Windows 來完成大部份的工作,
但是卻碰上了必須要的 BEDtools 只支援 Linux 的問題;
而實驗室主打的 Galaxy 生物資訊平台,
也只能部署到 Unix-like 的系統上( Linux 即為其一分支)。
因此,在當時「必須使用 Linux,否則必須切換實驗室」的急迫情況下,
我也就跨越了這層技術障礙,開始自己接觸、了解 Linux 。

示意圖:筆者正在倉促地參考電腦使用說明(由 ChatGPT 繪製)
我們從這裡,基本上可理解到:
生物資訊研究基本上離不開 Linux,原因之一即在於此。
Linux 帶來的具體優勢
凡是做過生物資訊的從業者,就知道生物資訊的資料量極為龐大。
從基因表現矩陣,到基因組瀏覽器資料的二進位檔案格式,
在在都是 10 GB 以上在當單位的。
這時,如果要將這樣的檔案下載到自己的電腦當中,並執行後續的分析,
往往會發生本地端的記憶體被「整碗端走」這種很常見的事情。
(即使排除掉程式設計不良的部份,也依然如此)
Windows 系列的作業系統,因為作業系統取向的關係,
造成每次開機都必須要載入可能不會用到的相容層、服務等。
因此,同樣的記憶體容量,Windows 11 24H2 使用的開機記憶體,
往往比起同年份發布的 Linux 發行版(例如:Ubuntu 24.04)使用的還要更多。
我自己的測試,使用同一台電腦(雙重開機)、最新的 Windows 11 24H2,
與 Ubuntu 24.04(KDE 桌面環境)做開機記憶體量測;
結果 Windows 11 開機就用了 5.0 GB 的實體記憶體(不包括使用中的虛擬記憶體等);
而 Ubuntu 24.04 只需要 2.5 GB 的實體記憶體,並且完全不需要虛擬記憶體。
這是因為 Ubuntu 24.04 預設不會載入所有的服務與相容層
(若使用者需要,必須輸入指令來開啟),所以佔用的記憶體會比較少。

示意圖:Windows 在運行同樣的工作,負擔比起 Ubuntu 來得重(由 ChatGPT 繪製)
這時,假設我們用同樣的硬體、兩套不同的系統,
分別跑同樣一個瀏覽器的分頁、同樣一個程式碼編輯器視窗、
同樣一個 Python 的程式碼腳本,在這樣的過程用到同樣的硬體
(例如:12 GB Physical RAM + 8 GB Virtual RAM)的情況下,
Windows 更容易遇到記憶體不足(Out of Memory, OOM)而導致的效能下降,
或者,甚至當機的狀況。基於 Linux 的作業系統之優勢,由此可見一斑。
另一個 Linux 相較 Windows 在生物資訊分析上的優勢,
在於其對大型檔案的處理效率。
原因在於兩個作業系統使用的是不一樣的檔案系統;
Windows 10/11 主要使用 NTFS ,
而 Linux 的發行版則使用 ext4 作為首選的檔案系統。
其中, ext4 因為產生的「碎片化」較小,
所以在檔案讀寫的效率上面,勝過於使用 NTFS 的 Windows 10/11。
這對於結構性資料(Structured Data),
例如有幾萬行、幾萬列的基因表現矩陣而言,是至關重要的優勢。
所以,大部分從事生物資訊研究的人士,都採用 Linux 作為主要的作業系統。
對生物資訊初學者的建議
如果你是一位準備要研究生物資訊的新手,你可能會問:
那我應該要選擇哪個作業系統?
我應該為了更好的效率、更快的讀寫,克服學習 Linux 與命令列介面的學習曲線嗎?
我會建議你:
如果你念生物資訊,不會涉及程式管線的自動化、
跨平台部署程式碼、機器學習等複雜運算,
以及只有在 Linux 才會有的某些生物資訊工具,
那就使用 Windows,自己用得習慣最重要。
然而,如果你的流程涉及上千或上萬次重複的分析、
特定只在 Linux 才有的工具,以及機器學習、深度學習,
或甚至人工智慧領域,那使用 Linux 就是你的首要選擇。
學習 Linux 其實沒有各位讀者想像中的困難;
但是在開始之前,可能會需要足夠的耐心、毅力,以及不怕麻煩的心態。
另外,可能還得要比安裝、設定 Windows 查詢更多的資料,
才能充分地發揮它的效能。
如果這些你都有信心克服,恭喜你,
你已經替自己的生物資訊之路做好最萬全的準備。
如果喜歡這篇文章,記得按個愛心與收藏。各位的支持,都將是我持續創作的動力。
下一篇文章,將會剖析生成式人工智慧對於大學生學習的挑戰,敬請期待!