新入坑的SageMaker Studio Lab和Colab、Kaggle相比,性能如何?
一周前,亞馬遜啟動了 SageMaker Studio 的免費簡化版 SageMaker Studio Lab,提供了一個時限為12小時的 CPU 實例和一個時限為 4 小時的 GPU 實例。SageMaker Studio Lab 成為繼 Google Colab、Kaggle 和 Paperspace 之后的又一個免費深度學習計算空間。
Studio Lab 為用戶提供了所有入門 AI 所需的基礎能力,包括 JupyterLab IDE、CPU 和 GPU 模型訓練算力以及 15 GB 的永久存儲。
那么,SageMaker Studio Lab 如何與競爭對手抗衡?它是否值得使用?
現在一位名為 Benjamin Warner 的博主已經申請使用了 SageMaker Studio Lab,并為大家撰寫了一篇博客「開箱測評」。以下是博客原文。
本文我使用圖像和 NLP 分類任務,比較了在 SageMaker Studio Lab 和 Colab、Colab Pro 以及 Kaggle 上訓練神經網絡的效果。
與 Colab 和 Kaggle 的比較
與 Colab 和 Kaggle 一樣,Studio Lab 提供 CPU 和 GPU 實例:運行時間為 12 小時的 T3.xlarge CPU 實例和運行時間為 4 小時的 G4dn.xlarge GPU 實例。比較結果如下表所示:
在測試比較中我發現:
- SageMaker 只有持久存儲,但與 Google Drive 不同的是,它的速度足以訓練;
- Colab 暫存盤因實例而異;
- Colab 的持久存儲是 Google Drive 免費分配的;
- Colab Pro 可以分配 Tesla T4 或 Tesla K80;
- 免費版 Colab 也可以分配 Tesla T4 或 Tesla P100;
- Kaggle 的持久存儲為每個筆記本 20GB;
- Kaggle 有一個每周 GPU 運行時間上限,它根據總使用量而變化,每周大約 40 小時。
啟動 SageMaker Studio Lab 后將獲得稍有修改的 JupyterLab 實例,其中安裝了一些擴展,例如 Git。
SageMaker JupyterLab 環境
在我的測試中,SageMaker Studio Lab 的 JupyterLab 的行為與在自己系統上正常安裝 JupyterLab 完全相同。甚至之前對 JupyterLab 做的修改和已安裝的 python 包都還在。
例如,我能夠從 Jupyterlab Awesome List 中安裝 python 語言服務器和 markdown 拼寫檢查器。但這也帶來了一個問題,即亞馬遜是否會更新像 PyTorch 這樣的預安裝包,或者維護更新的環境是否完全依賴于用戶。
亞馬遜后續可能會銷毀我的實例,或者將來會升級底層映像,刪除自定義安裝的包和擴展。但就目前而言,相比于 Colab 和 Kaggle,Studio Lab 是三者中可定制程度最高的服務。
基準
數據集和模型
我選擇了兩個小數據集來對 SageMaker 和 Colab 進行基準測試:Imagenette 以及 IMDB。Imagenette 數據集用于計算機視覺,Hugging Face 的 IMDB 用于 NLP。為了減少訓練時間,在訓練 IMDB 時,我隨機抽取了 20% 的測試集。
對于計算機視覺,模型選擇 XResNet 和 XSE-ResNet,即 ResNet 的 fast.ai 版本;對于 NLP,我選擇 Hugging Face 實現的 RoBERTa。
- Imagenette 地址:https://github.com/fastai/imagenette#imagenette
- IMDB 地址:https://huggingface.co/datasets/imdb
- fast.ai 地址:https://docs.fast.ai/
訓練設置
訓練 Imagenette 采用 fast.ai ,其在進行數據擴充時,可以對圖像進行隨機調整 crop 和隨機水平翻轉。
訓練 IMDB 采用 blurr 庫,該庫將 fast.ai 和 Hugging Face Transformers 集成在一起。除了向 fast.ai 添加 Transformers 訓練和推理支持外,blurr 還集成了每 batch token 化和 fast.ai 文本數據加載器,后者根據序列長度對數據集進行隨機排序,以最大限度地減少訓練時的填充(padding)。
XSE-ResNet50 和 RoBERTa 采用單精度和混合精度訓練的方式 。XSE-ResNet50 訓練圖像大小為 224 像素,混合精度 batch 大小為 64,單精度 batch 大小為為 32。RoBERTa 混合精度 batch 大小為 16,單精度 batch 大小為 8。
為了探索 CPU 使用極限,我還訓練了一個 XResNet18 模型,圖像大小為 128 像素,batch 大小為 64。
blurr 地址:https://ohmeow.github.io/blurr/
結果
當進行混合精度訓練時,SageMaker Studio Lab 的 Tesla T4 優于 Google Colab 的 Tesla P100,但在訓練全單精度模型時表現稍差。
XSE-ResNet50
在相似的設置下,Colab Pro High RAM 和 SageMaker 比較,XSE-ResNet50 在 SageMaker 上的總體訓練速度提高了 17.4%。僅查看訓練循環(training loop)時,SageMaker 比 Colab Pro 快 19.6%。SageMaker 在所有操作中都更快,但有一個明顯的例外:在向后傳遞中,SageMaker 比 Colab Pro 慢 10.4%。
當以單精度訓練 XSE-ResNet50 時,結果相反,SageMaker 的執行速度比 Colab Pro High RAM 慢 95.9%, 訓練循環比 Colab Pro 慢 93.8%。
XSE-ResNet50 Imagenette 簡單分析器結果
RoBERTa
混合精度訓練 RoBERTa, SageMaker 進一步領先 Colab Pro,執行速度提高了 29.1%。SageMaker 在訓練循環期間比 Colab Pro 快 32.1%,并且在所有操作中 SageMaker 都更快,除了在計算損失時,SageMaker 比 Colab Pro 慢 66.7%。
在單精度下,SageMaker 訓練的結果再次翻轉,總體上 SageMaker 比 Colab Pro 慢 72.2%。訓練循環比 Colab Pro 慢 67.9%。當以單精度訓練 XSE-ResNet50 時,由于向后傳遞和優化器步驟,SageMaker 比 Colab Pro 慢了 83.0%,而 SageMaker 執行所有其他操作的速度快了 27.7%。
奇怪的是,Colab Pro High RAM 實例的訓練速度比普通 Colab Pro 實例慢,盡管前者有更多的 CPU 核和 CPU RAM 以及相同的 GPU。然而,它們之間的差異并不大。
表 3:RoBERTa 基準結果
XResNet18
對于 XResNet18 基準測試,了解繪制動作測量內容很關鍵。XResNet18 基準測試是從數據加載器繪制 batch 之前到開始 batch 操作之間的時間。數據加載器的 prefetch_factor 設置為默認值 2,這意味著研究者嘗試在訓練循環調用它們之前提前加載兩個 batch。其中包括前向和后向傳遞、損失和優化器 step 和零梯度操作。
繪制動作越低,實例 CPU 就越能滿足需求。
這里的結果符合預期,更多的 CPU 核意味著更少的繪制時間,并且在相同的核數下,較新的 CPU 的性能優于較舊的 CPU。
表 4:XResNet18 基準結果
Colab Tesla K80
由于免費 Colab 實例的 Tesla K80 的 RAM 比其他 GPU 少四分之一,因此我將混合精度 batch 大小也減少了四分之一。此外,我沒有運行任何單精度測試。
我運行了兩個 epoch 的 Imagenette 基準測試,并將 IMDB 數據集從 20% 的樣本減少到 10% 的樣本,并將訓練長度減少到一個 epoch。
Colab K80 在半數 Imagenette epoch 上進行訓練花費的時間大約是 Colab Pro 實例的兩倍。與 Colab P100 相比,在 Colab K80 上進行等效的 IMDB 訓練時間要長 3 倍。如果可能的話,應避免使用 K80 對除小型模型以外的任何其他模型進行訓練。
XResNet & RoBERTa Colab K80 基準結果
總的來說,我認為 SageMaker Studio Lab 是免費計算資源領域一個強有力的競爭對手。特別是對于一直在 K80 上使用免費 Colab 和訓練模型的用戶來說,SageMaker Studio Lab 將給你全面的升級體驗。
SageMaker Studio Lab 可以作為機器學習工作流程的有用補充和 Kaggle 或 Colab Pro 的增強版。混合精度的訓練速度比 Kaggle 或 Colab Pro 快了 17.4% 到 32.1%,這意味著迭代時的等待時間更少。
此外,更快的訓練速度和持久存儲讓 SageMaker Studio Lab 對于深度學習初學者也非常友好,因為這意味著環境只需要設置一次,讓學生能夠專注于學習而不是持續的包管理。
原文鏈接:https://benjaminwarner.dev/2021/12/08/testing-amazon-sagemaker-studio-lab
【本文是51CTO專欄機構“機器之心”的原創譯文,微信公眾號“機器之心( id: almosthuman2014)”】