諸如 NVIDIA Megatron LM 和 OpenAI GPT-2 和 GPT-3 等語言模型已被用于提高人類生產(chǎn)力和創(chuàng)造力。具體而言,這些模型已被用作編寫、編程和繪制的強(qiáng)大工具。相同的架構(gòu)可以用于音樂創(chuàng)作。
在這些領(lǐng)域中使用語言模型需要大型數(shù)據(jù)集。從 50GB 的未壓縮文本文件開始生成語言并不奇怪。這意味著需要 GPU 計算日志來有效地訓(xùn)練模型,以進(jìn)行快速開發(fā)、原型制作和迭代。
這篇文章介紹了在人工智能音樂領(lǐng)域使用 NVIDIA DGX-2 站臺 DGX-2 極大地促進(jìn)了數(shù)據(jù)預(yù)處理和訓(xùn)練語言模型的進(jìn)步。
人工智能音樂數(shù)據(jù)集
計算音樂數(shù)據(jù)集有兩大類。一種方法涉及對表示為純音頻( WAV 文件或 MP3 )的音樂進(jìn)行訓(xùn)練。第二種方法不適用于純音頻。相反,您可以將任何類似于樂譜的內(nèi)容映射到標(biāo)記表示。
通常,這需要標(biāo)記哪個音符開始( C 、 D 、 E 、 F 、 G ),經(jīng)過多少時間(例如四分之一音符或八分之一音符),以及哪個音符結(jié)束。在研究和應(yīng)用中, MIDI 文件已被證明是豐富的音樂素材來源。 MIDI 標(biāo)準(zhǔn)被設(shè)計用于電子存儲音樂信息。
這些實驗使用了幾組 MIDI 文件,包括:
JS Fake Chorales Dataset 有 500 首 J.S.巴赫風(fēng)格的假合唱
運(yùn)行 MIDI 數(shù)據(jù)庫 以及其干凈的子集(分別為 176K 和 15K MIDI 文件),混合了各種類型和風(fēng)格
MetaMIDI 數(shù)據(jù)集 具有 463K MIDI 文件,同樣具有不同的類型和風(fēng)格
MIDI 格式是非人類可讀的音樂表示,為了訓(xùn)練因果語言模型,必須將其映射到可讀的標(biāo)記表示。對于此表示,我們從 mmmtrack 編碼 。
這種編碼將音樂片段表示為層次結(jié)構(gòu)。一段音樂由不同樂器的不同曲目組成:例如鼓、吉他、貝司和鋼琴。每個軌道由幾個條組成( 4 、 8 或 16 條,取決于使用情況)。每個條都包含一系列音符開啟、時間增量和音符關(guān)閉事件。盡管這種層次結(jié)構(gòu)可以被視為一棵樹,但可以將所有內(nèi)容編碼為一個線性序列,使其成為僅用于解碼器的語言模型的理想表示。
下面的例子是一首四部分的合唱,以鋼琴卷的形式呈現(xiàn)。合唱團(tuán)有四種聲音:女高音、中音、男高音和低音。女高音和女低音是女聲,男高音和男低音是男聲。通常,四種聲音同時演唱,但音調(diào)不同。
圖 1 顯示了帶有音調(diào)顏色編碼的語音。女高音為綠色,中音為橙色,男高音為藍(lán)色,低音為紅色。您可以將這些具有時間和音調(diào)維度的音樂事件編碼為一系列符號。
圖 1.使用音高顏色編碼可視化生成的音樂標(biāo)記示例
在 mmmtrack 編碼之后,低音部分將映射到以下令牌表示:
PIECE_START TRACK_START INST=BASS BAR_START NOTE_ON=61 TIME_DELTA=4 NOTE_OFF=61 NOTE_ON=59 TIME_DELTA=2 NOTE_OFF=59 NOTE_ON=58 TIME_DELTA=2 NOTE_OFF=58 NOTE_ON=56 TIME_DELTA=4 NOTE_OFF=56 NOTE_ON=54 TIME_DELTA=4 NOTE_OFF=54 BAR_END BAR_START NOTE_ON=59 TIME_DELTA=2 NOTE_OFF=59 NOTE_ON=58 TIME_DELTA=2 NOTE_OFF=58 NOTE_ON=56 TIME_DELTA=4 NOTE_OFF=56 NOTE_ON=58 TIME_DELTA=4 NOTE_OFF=58 NOTE_ON=59 TIME_DELTA=4 NOTE_OFF=59 BAR_END BAR_START NOTE_ON=58 TIME_DELTA=4 NOTE_OFF=58 NOTE_ON=59 TIME_DELTA=2 NOTE_OFF=59 NOTE_ON=61 TIME_DELTA=2 NOTE_OFF=61 NOTE_ON=63 TIME_DELTA=2 NOTE_OFF=63 NOTE_ON=52 TIME_DELTA=2 NOTE_OFF=52 NOTE_ON=54 TIME_DELTA=4 NOTE_OFF=54 BAR_END BAR_START NOTE_ON=47 TIME_DELTA=4 NOTE_OFF=47 NOTE_ON=49 TIME_DELTA=2 NOTE_OFF=49 NOTE_ON=51 TIME_DELTA=2 NOTE_OFF=51 NOTE_ON=52 TIME_DELTA=2 NOTE_OFF=52 NOTE_ON=54 TIME_DELTA=2 NOTE_OFF=54 NOTE_ON=56 TIME_DELTA=4 NOTE_OFF=56 BAR_END TRACK_END TRACK_START INST=TENOR …
只要稍加練習(xí),人類就能閱讀和理解這種表示。表示以PIECE_START開始,表示一段音樂的開始。TRACK_START表示音軌(或樂器或語音)的開始,而TRACK_END表示音尾。INST=BASS標(biāo)記表示此曲目包含低音。其他聲音以相同的方式表示。BAR_START和BAR_END分別表示條形圖的開始和結(jié)束。NOTE_ON=61是音調(diào)為 61 的音符的開頭。
在鋼琴上,這將是音符 C # 5 。TIME_DELTA=4意味著將經(jīng)過四個十六分音符的持續(xù)時間。那將是一張四分之一的鈔票。之后,音符將結(jié)束,由NOTE_OFF=61表示。等等等等。在這一點上,這種記法也允許復(fù)調(diào)。幾個音軌將同時發(fā)出音符,每個音軌可以有平行的音符。這使得編碼具有通用性。
每段音樂的小節(jié)數(shù)不同。很可能對整個歌曲進(jìn)行編碼將需要較長的序列長度,從而使相應(yīng) transformer 的訓(xùn)練在計算上非常昂貴。這些實驗將大多數(shù)數(shù)據(jù)集編碼為四條,少數(shù)編碼為八條。 16 巴的實驗正在進(jìn)行中。此外,僅使用 4 / 4 計時表中的音樂。這涵蓋了西方音樂的大部分。其他節(jié)拍,如 3 / 4 (華爾茲)可以作為未來工作的主題。
這一系列不同的實驗將許多 MIDI 數(shù)據(jù)集映射到所描述的令牌格式。整個過程中使用了相同的預(yù)處理器。一旦預(yù)處理器處理小數(shù)據(jù)集,它立即處理大數(shù)據(jù)集。
處理時間取決于要編碼的 MIDI 文件的數(shù)量,從幾分鐘到幾小時不等。 DGX-2 在所有 96 CPU 上并行運(yùn)行,最長的預(yù)處理時間為 30 小時。據(jù)估計,這將需要在最先進(jìn)的 MacBook Pro 上進(jìn)行大約 10-14 天的處理。
圖 2.用于訓(xùn)練 GPT 模型的音樂數(shù)據(jù)集
對 MIDI 文件的數(shù)據(jù)集進(jìn)行編碼將產(chǎn)生令牌文件的集合。這些標(biāo)記文件的大小取決于 MIDI 文件的數(shù)量和條形圖的數(shù)量??紤]一些實驗數(shù)據(jù)集及其編碼數(shù)據(jù)集大?。?/p>
JS Fake Chorales 數(shù)據(jù)集: 14 MB ,每個樣本有四個條
Lakh MIDI 數(shù)據(jù)集: 72 GB ,其干凈子集為 19 GB ,每個樣本有四個小節(jié)
MetaMIDI 數(shù)據(jù)集:每個樣本 130 GB , 4 個小節(jié), 230 GB , 8 個小節(jié)
你可以想象,在 14 MB 的 JS 假合唱團(tuán)上訓(xùn)練只需要幾個小時。在 130 GB 的 MetaMIDI 數(shù)據(jù)集上進(jìn)行訓(xùn)練需要很多天。這些實驗的訓(xùn)練持續(xù)了 10 至 15 天。
模型訓(xùn)練
許多模型使用 HuggingFace GPT-2 實現(xiàn)進(jìn)行了訓(xùn)練。一些模型在 GPT-2 模式下使用 NVIDIA Megatron LM 進(jìn)行了訓(xùn)練。
使用 HuggingFace 進(jìn)行的訓(xùn)練歸結(jié)為將數(shù)據(jù)集上傳到 DGX-2 ,然后運(yùn)行包含所有功能的訓(xùn)練腳本,包括模型和訓(xùn)練參數(shù)。使用了相同的腳本,只是對所有數(shù)據(jù)集進(jìn)行了一些更改。這只是規(guī)模問題。
對于Megatron LM 來說,環(huán)境設(shè)置就像拉動和運(yùn)行 NGC 一樣簡單 PyTorch Docker 容器 ,然后通過 ssh 隧道進(jìn)入 DGX-2 機(jī)器,立即在瀏覽器中使用 Jupyter 筆記本。
大多數(shù)實驗使用相同的 GPT-2 架構(gòu):六個解碼器塊和八個注意頭;嵌入大小為 512 ,序列長度為 2048 。雖然這絕對不是一個大語言模型( LLM ),它可以有大約 100 個解碼器塊,但主觀評估表明,對于人工智能音樂來說,這種架構(gòu)工作起來很有魅力。
使用 NVIDIA DGX-2 在快速迭代中確實起到了作用。在單個 GPU 上訓(xùn)練多天的數(shù)據(jù)集,在 DGX-2 上只訓(xùn)練幾個小時。在單個 GPP 上訓(xùn)練數(shù)月的數(shù)據(jù)集在 DGX-2 中最多兩周后完成訓(xùn)練。特別是對于數(shù)據(jù)集< 25 GB 的實驗,模型收斂非???。
一些數(shù)據(jù)集的培訓(xùn)時間如下:
10 個時代和大約 1.5 萬首歌曲的 10 萬首 MIDI Clean 數(shù)據(jù)集耗時 15 小時
10 個時代和大約 175K 首歌曲的 Lakh MIDI 數(shù)據(jù)集耗時 130 小時
MetaMIDI 數(shù)據(jù)集歷時 290 小時,涵蓋了 9 個時代和大約 40 萬首歌曲
請注意, JS Fake Chorales 數(shù)據(jù)集是較早訓(xùn)練的,而不是在 DGX-2 上。由于其體積非常小,因此不需要使用 multi- GPU 設(shè)置。它甚至可以在 MacBook Pro 上過夜訓(xùn)練。
NVIDIA DGX-2
本節(jié)詳細(xì)介紹了 NVIDIA DGX-2 規(guī)范。如上所述,該平臺在加速數(shù)據(jù)集預(yù)處理和訓(xùn)練語言模型方面都非常有效。這一部分將是一個令人愉快的技術(shù)部分。
圖 3.DGX-2 站
NVIDIA DGX-2 是一個功能強(qiáng)大的系統(tǒng),具有 16 個完全連接的 Tesla V100 32 GB GPU ,使用 NVSwitch 。它能夠提供 2.4 TB /秒的二等分帶寬。 DGX-2 專為需要性能和可擴(kuò)展性的人工智能研究人員和數(shù)據(jù)科學(xué)家設(shè)計。
對于 transformer 型號, NVIDIA DGX-2 能夠以混合精度提供敢達(dá) 517227 個令牌/秒的吞吐量,這使其特別強(qiáng)大。
表 1.多 – GPU 性能表e對于 DGX-2
軟件框架: NVIDIA Megatron LM
要充分利用強(qiáng)大的計算功能,您需要穩(wěn)定和優(yōu)化的軟件。使用 NVIDIA Megatron LM 等性能優(yōu)化框架,隨著 GPT 模型尺寸的縮放,性能幾乎呈線性縮放。有關(guān)相關(guān)信息,請參見 Megatron LM :使用模型并行性訓(xùn)練數(shù)十億參數(shù)語言模型 。
通過在單個 NVIDIA V100 32 GB GPU 上訓(xùn)練 12 億個參數(shù)的模型來實現(xiàn)基線,該 GPU 支持 39 萬億次浮點運(yùn)算。這是 DGX-2H 服務(wù)器中配置的單個 GPU 的理論峰值觸發(fā)器的 30% ,因此是一個強(qiáng)基線。
將模型擴(kuò)展到 512 GPU 上的 83 億個參數(shù),在整個應(yīng)用程序中, 8 路模型并行度達(dá)到每秒 15.1 萬億次。與單一 GPU 情況相比,這是 76% 的縮放效率。
圖 4.使用 NVIDIA Megatron LM 擴(kuò)展到數(shù)千個 GPU ,而不損失性能
通過修正seq_len,短指針,等于 4096 ,并修改訓(xùn)練配置,只需幾次迭代即可啟動訓(xùn)練運(yùn)行,可以計算實際應(yīng)用程序作業(yè)運(yùn)行中實現(xiàn)的萬億次浮點百分比。
在本機(jī)運(yùn)行后,分析了nvidia-smi和輸出 Nsight 配置文件。測試了不同的配置以獲得最高可能的 teraflop ,如下表所示:
表 2.使用中給出的第三個方程計算萬億次浮點 使用Megatron LM 在 GPU 集群上進(jìn)行高效大規(guī)模語言模型訓(xùn)練
該表最后一行中顯示的訓(xùn)練配置提供了 45.45% 的最高 teraflop 。
請注意,使用了 8 個 V100 32 GB GPU 而不是 16 GPU ,以縮短運(yùn)行每個評測作業(yè)所需的時間。nvidia-smi 命令用于驗證訓(xùn)練配置實現(xiàn)了 45.45% 的 teraflops 利用率,如下所示。
圖 5.通過使用 NVIDIA smi 命令以交互方式監(jiān)控培訓(xùn)性能
總結(jié)
這里介紹的人工智能音樂實驗是使用 NVIDIA DGX-2 進(jìn)行的。我們使用大小從幾兆字節(jié)到 230 GB 的數(shù)據(jù)集訓(xùn)練語言模型。我們使用了 HuggingFace GPT-2 實現(xiàn),并表明 NVIDIA Megatron LM 也是一個很好的實驗替代品。
NVIDIA DGX-2 在加速數(shù)據(jù)集預(yù)處理(將 MIDI 文件映射到令牌表示和訓(xùn)練模型)方面做出了重大貢獻(xiàn)。這允許快速實驗。 DGX-2 在訓(xùn)練可用的最大 MIDI 數(shù)據(jù)集(具有 400K 文件的 MetaMIDI )時發(fā)揮了巨大的作用。
關(guān)于作者
Tristan Behrens 博士是人工智能專家、人工智能作曲家和人工智能教育家。他在成功的深度學(xué)習(xí)項目中有著廣泛的記錄。他最大的關(guān)注點是合成的深度神經(jīng)網(wǎng)絡(luò)。他出版了幾張用電腦創(chuàng)作的音樂專輯。
Zenodia Charpy 是高級深度學(xué)習(xí)解決方案架構(gòu)師,專注于應(yīng)用自然語言處理和深度學(xué)習(xí)技術(shù)來應(yīng)對非英語和低資源語言的挑戰(zhàn),例如瑞典語、丹麥語和挪威語。作為一名數(shù)據(jù)科學(xué)家,她在解決現(xiàn)實世界問題、構(gòu)建端到端解決方案方面擁有八年的豐富經(jīng)驗,她既是一名內(nèi)部數(shù)據(jù)科學(xué)家,也是一名數(shù)據(jù)科學(xué)顧問。在空閑時間,她喜歡在森林里散步或跑步,做瑜伽。
審核編輯:郭婷
-
NVIDIA
+關(guān)注
關(guān)注
14文章
4986瀏覽量
103055 -
人工智能
+關(guān)注
關(guān)注
1791文章
47279瀏覽量
238495 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1208瀏覽量
24701
發(fā)布評論請先 登錄
相關(guān)推薦
評論