基于 Habana Gaudi 的 Transformers 入門

幾周前,我們很高興地 宣布 Habana Labs 和 Hugging Face 將開展加速 transformer 模型的訓(xùn)練方面的合作。
與最新的基于 GPU 的 Amazon Web Services (AWS) EC2 實例相比,Habana Gaudi 加速卡在訓(xùn)練機(jī)器學(xué)習(xí)模型方面的性價比提高了 40%。我們非常高興將這種性價比優(yōu)勢引入 Transformers ??。
本文,我將手把手向你展示如何在 AWS 上快速設(shè)置 Habana Gaudi 實例,并用其微調(diào)一個用于文本分類的 BERT 模型。與往常一樣,我們提供了所有代碼,以便你可以在自己的項目中重用它們。
我們開始吧!
在 AWS 上設(shè)置 Habana Gaudi 實例
使用 Habana Gaudi 加速卡的最簡單方法是啟動一個 AWS EC2 DL1 實例。該實例配備 8 張 Habana Gaudi 加速卡,借助 Habana 深度學(xué)習(xí)鏡像 (Amazon Machine Image,AMI) ,我們可以輕松把它用起來。該 AMI 預(yù)裝了 Habana SynapseAI? SDK 以及運行 Gaudi 加速的 Docker 容器所需的工具。如果你想使用其他 AMI 或容器,請參閱 Habana 文檔 中的說明。
我首先登陸?us-east-1
?區(qū)域的 EC2 控制臺,然后單擊?啟動實例?并給實例起個名字 (我用的是 “habana-demo-julsimon”)。
然后,我在 Amazon Marketplace 中搜索 Habana AMI。

這里,我選擇了 Habana Deep Learning Base AMI (Ubuntu 20.04)。

接著,我選擇了?dl1.24xlarge?實例 (實際上這是唯一可選的實例)。

接著是選擇?ssh
?密鑰對。如果你沒有密鑰對,可以就地創(chuàng)建一個。

下一步,要確保該實例允許接受?ssh
?傳輸。為簡單起見,我并未限制源地址,但你絕對應(yīng)該在你的帳戶中設(shè)置一下,以防止被惡意攻擊。

默認(rèn)情況下,該 AMI 將啟動一個具有 8GB Amazon EBS 存儲的實例。但這對我來說可能不夠,因此我將存儲空間增加到 50GB。

接下來,我需要為該實例分配一個 Amazon IAM 角色。在實際項目中,此角色應(yīng)具有運行訓(xùn)練所需的最低權(quán)限組合,例如從 Amazon S3 存儲桶中讀取數(shù)據(jù)的權(quán)限。但在本例中,我們不需要這個角色,因為數(shù)據(jù)集是從 Hugging Face Hub 上下載的。如果您不熟悉 IAM,強(qiáng)烈建議閱讀這個 入門 文檔。
然后,我要求 EC2 將我的實例配置為 Spot 實例,這可以幫我降低每小時使用成本 (非 Spot 實例每小時要 13.11 美元)。

最后,啟動實例。幾分鐘后,實例已準(zhǔn)備就緒,我可以使用?ssh
?連上它了。Windows 用戶可以按照 文檔 使用?PuTTY?來連接。
在實例中,最后一步是拉取一個 Habana PyTorch 容器,我后面會用 PyTorch 來微調(diào)模型。你可以在 Habana 文檔 中找到有關(guān)其他預(yù)構(gòu)建容器以及如何構(gòu)建自己的容器的信息。
將 docker 鏡像拉到實例后,我就可以用交互模式運行它。
至此,我就準(zhǔn)備好可以微調(diào)模型了。
在 Habana Gaudi 上微調(diào)文本分類模型
首先,在剛剛啟動的容器內(nèi)拉取 Optimum Habana 存儲庫。
然后,從源代碼安裝 Optimum Habana 軟件包。
接著,切到包含文本分類示例的子目錄并安裝所需的 Python 包。
現(xiàn)在可以啟動訓(xùn)練了,訓(xùn)練腳本首先從 Hugging Face Hub 下載 bert-large-uncased-whole-word-masking 模型,然后在 GLUE 基準(zhǔn)的 MRPC 任務(wù)上對其進(jìn)行微調(diào)。
請注意,我用于訓(xùn)練的 BERT 配置是從 Hugging Face Hub 獲取的,你也可以使用自己的配置。此外,Gaudi1 還支持其他流行的模型,你可以在 Habana 的網(wǎng)頁上 中找到它們的配置文件。
2 分 12 秒后,訓(xùn)練完成,并獲得了 0.9181 的 F1 分?jǐn)?shù),相當(dāng)不錯。你還可以增加 epoch 數(shù),F(xiàn)1 分?jǐn)?shù)肯定會隨之繼續(xù)提高。
最后一步但也是相當(dāng)重要的一步,用完后別忘了終止 EC2 實例以避免不必要的費用。查看 EC2 控制臺中的 Saving Summary,我發(fā)現(xiàn)由于使用 Spot 實例,我節(jié)省了 70% 的成本,每小時支付的錢從原先的 13.11 美元降到了 3.93 美元。

如你所見,Transformers、Habana Gaudi 和 AWS 實例的組合功能強(qiáng)大、簡單且經(jīng)濟(jì)高效。歡迎大家嘗試,如果有任何想法,歡迎大家在 Hugging Face 論壇 上提出問題和反饋。
如果你想了解更多有關(guān)在 Gaudi 上訓(xùn)練 Hugging Face 模型的信息,請 聯(lián)系 Habana。
英文原文:?https://hf.co/blog/getting-started-habana
原文作者: Julien Simon
譯者: Matrix Yao (姚偉峰),英特爾深度學(xué)習(xí)工程師,工作方向為 transformer-family 模型在各模態(tài)數(shù)據(jù)上的應(yīng)用及大規(guī)模模型的訓(xùn)練推理。
審校/排版: zhongdongy (阿東)