Julia圈首款Transformer模型套件  Transformers.jl

 開發者  臺灣NLP研究生鄭景文

 熱門特色  支援Hugging Face預訓練模型格式轉換

 未來發展重點  電腦視覺任務實作及更完整的分詞工具API

舉凡翻譯、語音助理、聊天機器人,或是摘要生成、文章創作和情緒分析,都靠自然語言處理(NLP)完成。

其中,最受開發者愛戴的NLP模型,非BERT和GPT-3莫屬。它們不只是NLP界的指標模型,更是科技巨頭爭相研究的對象。

但它們本是同根生,都是基於4年前Google開發的Transformer類神經網路架構改良而成。也因此,在主流的程式語言Python中,Transformer模型開發資源十分充沛,但在Julia這個年輕語言裡,並非如此,甚至連專屬工具都沒有。

2019年,這個局面扭轉了,Julia終於有自己的Transformer開發套件,其完整度更受社群好評,成為開發NLP模型的首選工具。這個Transformers.jl套件的貢獻者,就出自臺灣一位碩士生鄭景文手中。

無心插柳柳成蔭,以Julia完整實作出最熱門NLP模型

談起最初的起心動念,專攻NLP研究的鄭景文笑說,當時只因手上的研究進行不順利,於是想轉換心情,「做點別的事。」

那年2019年,正是Google發布NLP里程碑模型BERT的隔年,也是他加入Julia臺灣社群的隔年。鄭景文指出,NLP領域研究多聚焦於Transformer,為了讓Julia愛好者能以最愛的語言進行Transformer研究,他決定自己動手實作看看。

他選擇了最費工也最紮實的方式,來開發這款套件。在資料科學圈,主流模型和工具大多以Python開發,年輕的Julia尚未具備完整的工具鏈,因此,打造Julia模型套件時,開發者通常得以PyCall.jl套件,來將現有的Python工具介接到Julia套件中。

但這麼做,「就丟失了不少Julia本身的良好特性。」所以,鄭景文決定不借用任何Python模組,全部用Julia重新實作,比如,NLP流程中有一個重要的分詞(Tokenization)步驟,需要使用分詞工具將長文章分解為字詞單位,才能進行後續的分析。鄭景文自己從零打造出Julia原本缺少的分詞工具。

Transformer套件提供元件和模型,還能轉換格式

經過幾個月,Transformers.jl完成開發後,很快就受到關注,被收錄到Julia深度學習開發框架Flux中。使用者不只能在Transformers.jl中,找到開發模型所需的元件和開箱即用的預訓練模型,還能用來轉換格式,尤其是從Hugging Face下載的NLP模型格式。

這個格式轉換功能,是鄭景文套件設計之初的重點特色之一。Hugging Face是一家專攻NLP技術的美國新創,在NLP圈擁有大型開源平臺和社群,宛如GitHub般,常提供熱門的高階預訓練模型如Transformer,供NLP愛好者下載、使用。

但,這些熱門模型只能在PyTorch、TensorFlow和Jax等深度學習框架上執行,並不支援Julia專用的Flux框架。因此,為了讓Julia使用者也能採用這些模型,鄭景文就在Transformers.jl中加入了格式轉換功能,讓開發者在Flux上也能執行。

至此,這個套件具備了Julia開發所需的基本功能,也成為Julia開發Transformer的首選工具。鄭景文透露,接下來還要新增更多元素,比如納入Transformer用於電腦視覺任務的實作,以及更完整的分詞工具API。


熱門新聞

Advertisement