大规模语言模型的工业化落地实践
姜大昕所在的微软亚洲互联网工程院,目前主要负责微软全球产品的研发工作,包括微软的必应搜索引擎、智能语音助手、Azure认知服务以及Microsoft 365的自然语言理解系统等。姜大昕介绍,对于包括大规模语言模型在内的各种人工智能模型落地实践工作,微软亚洲互联网工程院主要通过自研的Carina AI平台,帮助中国企业落地和实践人工智能技术。
微软亚洲互联网工程院主要在微软内部主要负责全球产品的模块技术打磨,无论是微软搜索引擎或者是微软办公系统,都是非常庞大的系统,有上千人的开发团队,微软亚洲互联网工程院团队主要是通过各种算法提高微软产品的性能指标。不过对于服务外部客户,还缺乏对企业需求的真正了解。约在四年前,微软亚洲互联网工程院开始和企业合作,共同探讨数字化转型的道路,通过接触很多的企业和政府部门,发现数字化转型的共同痛点,比如无论是自建AI能力还是采购AI解决方案都有一定的问题,包括技术黑盒、可拓展性差、无法与自建系统进行深度集成以及开发人员成本昂贵、技术门槛较高等等。
经过一段时间的讨论以后,微软亚洲互联网工程院找到了两个路线之间的折中路线,这就是Carina AI平台。Carina AI平台包含四层:数据层、平台层、工具层和业务层,微软亚洲互联网工程院主要负责开发平台层和工具层,企业团队或是业务人员在平台和工具之上,根据具体的业务场景开发相应的应用。这样,企业可以享受到成熟技术的好处,同时微软作为厂商也不需要特别深入理解企业的具体业务。
实际上,Carina AI平台是吸取了微软内部AI平台的精华,开放出来给所有企业提供一套开发环境。在微软内部,有专门的团队负责类似的AI平台,给所有内部人员提供强大的开发环境支持,经过多年实践和不断开发验证以及改进已经变得稳定好用,可以稳定支持上千人同时协同开发。具体来看,Carina AI的平台层是围绕着机器学习模型的生命周期,为开发人员提供模型的开发和部署的环境与工具,整体框架包含了四个平台——训练平台、部署平台、调度平台和共享平台。
目前Carina AI平台已经服务于多个客户,也得到了非常好的反馈。例如与华泰证券合作的例子,部署在华泰的Carina AI平台面向信息技术部和相关业务部门,平均每天的使用人数约为上百人,目前该平台已经稳定运行了三年多,主要提供的功能包括统一调度数据和计算资源,提供数据科学开发平台和大数据的量化分析等,有效提升了整体的业务分析能力和策略研究的效率。
在平台层之上是工具层,Carina平台的工具层提供各种自然语言处理任务的模型、调用接口和定制化工具,赋能业务层构建各种场景下的应用。
在实践当中,Carina平台的工具层主要解决了三个挑战。首先是自然语言处理任务种类非常多,算法也不一样。例如语法分析、语义分析等,每个类别下面也有很多应用,比如语法分析之下有分词、词性标注、依存分析等等。如何很好地涵盖这么多的任务?这是一个挑战。
第二个挑战是训练自然语言处理模型,需要大量的标注数据。这些标注数据的代价往往非常昂贵,而且工业级应用追求高质量模型,高质量的模型就需要高质量的标注,但是标注质量越高也就意味着代价越昂贵。这是第二个挑战。
第三个挑战就是通用模型往往在细分领域表现不佳。即使是同一个任务,在不同的领域也需要适应。那么如何根据领域的特点,灵活地加入领域知识的优化模型?这也是一个挑战。
为了应对三大挑战,Carina平台的工具层制定了四步走策略。第一步是训练大规模的预训练模型。第二步在预训练模型的基础上对不同的任务进行微调。第三步是针对不同的领域进一步进行微调。最后一步是把大模型通过知识蒸馏的方法进行压缩成为小模型,然后部署上线。
第一步,预训练大规模语言模型,Carina采用了微软自己的图灵模型。也就是在2020年3月份发布的具有78个Transformer层、参数量达到170亿的微软图灵模型。该模型在当时发布的时候,是世界上最大的预训练模型。Carina通过一系列的硬件和软件加速,将该超大规模的模型训练出来。超大规模的图灵模型为Carina处理后面所有任务,打下了很好的基础。
第二步,对大规模语言模型进行微调。针对不同任务进行微调时,就需要标注数据,不同任务的标注数据是不一样的。Carina使用了微软自有产品数据作为微调基础,例如必应搜索引擎用到了大量不同类型的自然语言处理任务,已经累积了大量的标注数据。除了搜索引擎之外,Office、Dynamics、linkedin甚至是 Xbox也都有积累的标注数据。有了这些标注数据,可以说Carina平台上的每一个任务的表现都是经过实战检验的,能够满足工业级应用。
第三步,是要通过微调使得模型能够适应特定的领域。在这一步,Carina平台就不再贡献现成的模型或者参数,而是提供工具让平台使用者能够非常方便地加入领域知识和数据,使得模型能够很好地适应不同的领域。
最后当模型完成微调后,仍是上千亿参数的大规模模型,这是无法发布的。所以最后一步还要对模型进行压缩,以方便进行发布。最常用的方法就是所谓的知识蒸馏,让大模型产生训练数据来训练一个小模型,通常小模型只有几十兆的模型参数,再经过软件和硬件的优化以后,在实践中即使在CPU上也能够跑得起来。而Carina平台上的“蒸馏”过程,可以做到一键式完成,对用户来说是透明的。
目前Carina平台已经服务多个客户,包括券商、银行、医疗、地产等多个行业。某商业银行在Carina平台上打造的NLP文本智能中台和MLOps工具链,主要是运用在银行的智能客服、智能投研、智能风控等等场景当中。某房地产公司采用Carina平台作为人工智能中台,服务于智能审图、文档审核、钢筋清点等多个设计、法务、物业等方面的应用场景。