【Julia亮点套件3】台湾开发|Julia圈首款Transformer模型套件:Transformers.jl

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。
