舰船科学技术  2024, Vol. 46 Issue (5): 171-175    DOI: 10.3404/j.issn.1672-7649.2024.05.032   PDF    
大模型在军事垂直领域的应用
蔡磊, 孟宪波, 韩冬梅, 肖振华     
中国船舶集团有限公司第七一四研究所,北京 100101
摘要: 大模型技术是人工智能技术的飞跃式发展,使得大众看到人工智能的切实应用,利用大模型技术开展垂直领域应用是目前的研究热点,针对军事垂直领域的行业特点,本文提出一种基于开源大模型训练军事垂域大模型的技术路线。
关键词: 大模型     军事应用    
Applications of large-scale models in the military vertical domain
CAI Lei, MENG Xian-bo, HAN Dong-mei, XIAO Zhen-hua     
The 714 Research Institute of CSSC, Beijing 100101, China
Abstract: The advancement of large-scale model technology has led to a significant development in artificial intelligence, allowing the public to witness practical applications of AI. Utilizing large-scale models in specific vertical domains has become a popular research focus, including the military vertical domain. This paper proposes a technical roadmap for training military vertical domain large-scale models based on open-source resources.
Key words: large-scale models     military vertical domain    
0 引 言

近年来,随着深度学习技术的快速发展,大语言模型(Large Language Model)已经成为了自然语言处理(Natural Language Processing)领域中的重要研究方向。大模型技术的问世是一项双刃剑。一方面,它为国防领域的智能化提供了新的技术和解决方案,创造了更多的空间和潜力;另一方面,因为ChatGPT大模型技术为美人工智能实验室创造。从意识形态来看,ChatGPT在收集情报,构建反华意识形态舆论领袖等方面带来了潜在的安全风险,可能会被西方敌对势力利用。从技术发展来看,美军已经开展了以大模型为基础的军事应用研究,势必使其军事实力进一步增强,对世界安全局势带来负面影响。本文聚焦大模型军事应用模式和应用潜能,快速开展军事领域大语言模型构建和应用,以军事、军事装备、作战决策等需求为牵引,研究大模型军事应用技术路线方法。

1 时代背景

OpenAI公司推出的ChatGPT是一款由人工智能技术驱动的新型自然语言处理工具,基于 GPT-3.5 架构的大型神经网络语言模型,通过大规模的、海量的文本数据训练,对其不断地监督学习、人工纠错、强化学习、对话模拟,使其拥有强大的自然语言处理能力,生成近乎于人类语言的大型语言模型。ChatGPT是第一个成功基于无差别的人类互动训练而光速成长的无边界智能,其生成的,在表面上是无穷领域的语言探索智能结果,但实质上是一种总体的思维能力和哲学性的逻辑工具体系。类ChatGPT通用智能的发育,需要算法结构设计,需要数据和模板喂养,需要面向多模态需求的强大数据和算力管道,还需要海量人群互动,更需要时间积累。

2 技术路线 2.1 军事领域数据集研究

军事领域高质量数据集建设将从预训练数据集收集、垂域训练数据集收集和基于专家反馈的数据集收集3个方面展开研究,同时建设大模型所需的相关数据集。

军事领域数据集是大模型研究基础,是大模型训练的重要工作。通过梳理军事领域涉及的数据类型、来源、大小等因素,确认数据集建设方案,通过数据采集、数据清洗、数据质量管理等方式,形成军事领域的大模型数据集。

数据是用于训练和优化军事领域大模型的基础,通过大量的语料输入,模型可以学习到丰富的语言能力、背景信息和语义特征。通常,数据集的质量越高、规模越大、覆盖度越广、分布越均衡,模型的泛化能力、包容性和预测准确度越高。目前,领域数据用于训练的有效语料占比不高,词表维度较小,使得输出模型在处理任务时出错或出现结果偏差。可以通过梳理大模型训练调优全过程对军事领域数据特征的需求,拟在数据层面向二次预训练、领域数据微调学习、模型调优3个阶段建设垂直领域高质量数据集。针对现有相关数据资源,使用统计学方法进行分析,评估数据样本的分布、类别、主题和复杂性,并采取清洗、扩增、泛化、标注、治理等处理手段确保数据集的均衡性和质量,在此基础上针对不同的应用场景设计垂域微调数据集。基于奖励模型在标注数据集上采用专家打分的方式和反馈数据,以保证数据集的准确性和有效性。

通过上述研究,在数据层建设标准统一、规模适当、质量优异的训练数据集库。数据集由指令、输入和输出3部分组成,一条指令可支持多种问题提出,只要与指令相关,大模型都可以回答出正确答案。

2.1.1 垂直领域二次预训练数据集收集

GLM模型作为一个通用训练模型,能回答大部分通用问题,建设军事大模型需面向军事的垂直领域,采集数据,进行预训练。包括成果数据、规章制度数据、政治理论学习数据等,因此,同时采集互联网相关数据。二次预训练数据集需达到40TB。

2.1.2 面向科研人员的垂域数据集构建

基于预训练大模型,在多个已知任务上通过对训练数据集添加自然语言形式的指令进行微调,从而激活模型的全面性能,提高模型对未知任务的泛化能力和与人类期待的一致性,使其在某个新任务上进行零样本推理。通常使用格式化的数据集以有监督学习方式对预训练模型进行微调,而数据集的质量直接影响微调输出模型的质量。面向科研人员的垂域数据集遵循重提示质量、轻规模的原则构建指令微调数据集,流程如下:根据业务需求,对输入数据进行预处理和格式转换,将其转换为模型可接受的格式,并将模型与数据处理代码集成到一个可执行的应用程序中。原始数据主要以文档、表格、图表等非结构化形态进行存储。以文档类型的非结构数据作为原始数据进行收集和清洗,通过程序抽样的方法评估数据的类别、主题、复杂性和均衡性。对于符合标准的源数据,本项目通过提示性工程,结合人工标注和自动化程序构建上下文提示模板或完形填空式的提示模板,将各类目标任务转化为下一句预测或者提示信息补全任务,即直接将自然语言形式的指令信息标注在输入文本中,通过特殊的标记或格式来明确地指示模型应该生成哪些内容,从而形成适合任务的指令数据集。垂域数据集建设流程如图1所示。

图 1 垂域数据集建设流程 Fig. 1 The process of constructing a vertical domain dataset
2.1.3 基于军事垂直领域专家反馈的数据集构建

基于专家反馈进行强化学习使得大模型实现与专家回答对齐。本项目基于奖励模型在标注数据集上采用专家打分的方式设计专家反馈数据。然而,在专家反馈的强化学习模型数据标注中,标注者现场情绪的起伏、个人价值观的差异,会直接影响候选答案排序的公正性和普适性。参与训练过程的标注专家针对某一问题的理解和看法也许并不能与未来模型用户的主流观点一致。本项目在实施过程中采用多位专家打分取平均值的方法规避这一问题。

2.2 军事基底大模型研究

对于很多领域的特定任务和问题,直接使用预训练的LLM会遇到许多难题,军事领域大模型具备任务和语言风格独特,专业使用场景多元化、需要结合领域知识来理解上下文语意等领域特点。因此军事大模型的研究工作首先基于开源的LLM大模型,经过二次预训练、有监督微调和基于人类反馈的微调训练步骤,补齐开源LLM大模型在军事领域的专业知识不足,获取更好的效果。

1)预训练

通过对大规模语料库的预训练,大模型可以获得基本的语言理解和生成技能,本项目基于国产开源大模型GLM建设军事大模型平台,鉴于GLM预训练时投喂高质量中文数据集不足的问题,只进行微调不足以使得垂域大模型获得实际生产场景下处理复杂任务的能力。本项目拟在微调之前,利用建设的中文预训练数据和军事领域相关知识,基于GLM进行二次预训练和增量预训练,以此拓展GLM模型在高维语义空间的领域词汇。

2)有监督微调

优化GLM模型框架和深度学习算法,提高基座大模型的语义理解和知识生成能力。通过微调方法利用建设的垂域数据集构建军事大模型。拟采用分阶段训练策略进行模型能力的扩展。首先,针对单一任务设计指令数据集进行微调,再逐渐映射过渡到其他任务和专业领域,最终使得输出模型获得处理军事相关领域知识问答、文献翻译、情报推送、文档分类、文本理解与生成等多任务的能力。

3)基于人类反馈强化学习

最后对于训练结果采用专家介入方式进行结果精确调整,模型通过从专家训练者提供的反馈学习,不断提高其性能。大模型通过与人类交互获得反馈信号来优化其生成的文本。这使得语言模型能够更好地捕捉人类的偏好和理解,并提供更加自然和准确的文本输出。因此,RLHF技术是大模型成功的关键之一,使其能够在许多自然语言处理任务中取得显著的成果。

本项目基于国产开源大模型GLM构建自主可控军事大模型,拟分3个阶段。

第一阶段:基于GLM的二次预训练。在微调之前利用建设的中文预训练数据和军事相关领域的知识,基于GLM进行二次预训练和增量预训练,以此拓展GLM模型在高维语义空间的军事领域词汇。

第二阶段:基于二次预训练后的GLM进行有监督微调。构造指令微调数据集,在第一阶段的预训练模型基础上做指令精调。

第三阶段:基于人类反馈的强化学习。奖励建模阶段与强化学习,即训练一个奖励函数对齐模型,基于奖励模型继续进行强化学习,最终得到一个能支持与用户对话的模型。

2.2.1 第一阶段:基于开源大模型的二次预训练

本阶段的主要目的是训练一个基础的语言模型。核心是基于大模型架构,利用大量的无标注数据来训练,这也是整个军事大模型阶段最消耗时间和算力的关键环节。预训练模型有3种类型:

第1种是自编码模型,它们通过去噪目标来学习一个双向的上下文编码器,用于自然语言理解任务;

第2种是自回归模型,它们通过从左到右的语言建模目标来训练一个生成器,用于文本生成任务;

第3种是编码器-解码器模型,它们通过序列到序列的目标来预训练一个文本到文本的模型,用于多种语言任务。

1)数据预处理

步骤1 分词:使用分词器对文本数据进行分词(字、字词);

步骤2 构建词典:根据数据集分词的结果,构建词典映射(如果采用预训练词向量,词典映射要根据词向量文件进行处理);

步骤3 数据转换:根据构建好的词典,将分词处理后的数据做映射,将文本序列转换为数字序列;

步骤4 数据填充与截断:在以固定大小数据包输入到模型的方式中,对过短的数据进行填充,过长的数据进行截断,保证数据长度符合模型的可接受范围,同时在固定大小数据包内的数据维度大小一致。

2)分布式训练

基于以上训练目标,项目采用分布式训练框架进行训练。大模型在训练时需要大量内存存储中间激活、权重等参数,百亿模型甚至无法在单个GPU上训练,使得模型训练在某些情况下非常低效和无法进行。这就需要进行多卡,或者多节点分布式训练。在大规模深度学习模型训练中的主要范式为数据并行和模型并行。数据并行的模型尺寸可被单个GPU内存容纳,数据大小会增加模型训练的难度。当单个GPU无法容纳模型尺寸时,则使用模型并行,将模型拆分到多个GPU上进行训练。项目采用的大规模分布式训练工具是专门用于训练超大模型的训练工具,可同时解决显存效率和计算效率训练万亿参数模型的基本挑战。经测试,针对2000亿参数的模型训练,训练速度可达10倍。针对军事目前及未来可能的多应用场景,使用分布式训练框架可以满足未来的应用需求。主要完成的目标如下:

①自回归空白填充

通过优化一个自回归空白填充目标来训练。给定一个输入文本$ x=[{x}^{1},\dots ,{x}^{n}] $,从中采样多个文本片段$ \{{s}^{1},\dots .,{s}^{m}\} $,其中每个片段 Si 对应于x中的一系列连续的词$ [{s}_{i}l,\dots ,{s}_{i}{l}_{i}] $。每个片段都用一个单独的 [MASK] 符号替换,形成一个损坏的文本$ {x}_{corrupt} $。模型以自回归的方式从损坏的文本中预测缺失的词,这意味着在预测一个片段中的缺失词时,模型可以访问损坏的文本和之前预测的片段。为了充分捕捉不同片段之间的相互依赖关系,随机打乱片段的顺序,类似于排列语言模型。令 $ {z}_{m} $ 为长度为 m 的索引序列 $ \left[\mathrm{1,2}\dots ,m\right] $ 的所有可能排列的集合,令 $ {s}_{Z} < i\in \left[{s}_{z1},\dots ,{s}_{zi-1}\right] $ ,于是 pretrain 目标函数可以表示为:

$ {\rm{Max}}E_{z-Zm}\left[\sum_{i=1}^mlogP_o\left(s_{zi}|x_{corrupt},s_{z < i}\right)\right]。$ (1)

按照从左到右的顺序生成每个空白中的词,即生成片段$ {s}_{i} $ 的概率可以分解为:

$ p_0\left(s_i|x_{corrupt},s_{z < i}\right)=\prod_{j=1}^{l_i}p\left(s_{i,j}|x_{corrupt},s_{z < i},s_{i < j}\right)。$ (2)

通过以下技术实现自回归空白填补目标。输入的x被分为两部分。A部分是被破坏的文本$ {x}_{corrupt} $,B部分由被mask的跨度组成。A部分的token可以互相照应,但不能照应B部分的任何token;B部分的token可以照应A部分和B部分的前因,但不能照应B部分的任何后续token。为了使自回归生成,每个跨度都用特殊token[START]和[END]填充,用于输入和输出,在这种方式下,模型自动学习一个双向编码器和一个单向解码器在一个统一的模型中,实现方式如图2所示。

图 2 自回归空白填补实现方式 Fig. 2 Implementation of autoregressive blank infilling

原始text是x1~x6,2个跨度x3x5x6被采样,A部分替换采样的跨度为M,B部分打乱跨度,GLM自回归的方式生成B部分,每个跨度预先使用S和E包围,2D的位置编码表示跨度内和跨度间位置,自注意力mask,灰色部分,A部分的token可以互相关注,B部分不可以,B部分可以注意A和B的前因。

②多任务预训练

多任务预训练的设置,在这个设置中,生成较长文本的第二个目标与空白填充目标共同优化。

文档级:对单一跨度进行采样,其长度从原始长度的50%~100%的均匀分布中抽出,该目标旨在生成长文本。

句子层面:限制被mask的跨度必须是完整的句子。多个跨度(句子)被取样,以覆盖15%的原始token。这一目标是针对seq2seq任务,其预测往往是完整的句子或段落。

这2个新目标的定义与原目标基本相同,不同的是跨度数量和跨度长度。

2.2.2 第二阶段:基于二次预训练后的GLM进行有监督微调

基于微调的高效学习算法主要分为以下3类。

提示学习:编辑下游任务的输入,使其形式上模拟模型预训练过程使用的数据与任务。让模型生成后面的内容,再根据某种映射函数,将生成内容匹配到某一分类标签。

指令精调:通过构造指令并微调的方式,学习人机交互模式的分布,使模型更好的理解人类意图,与人类行为对齐。

思维链:分析军事大模型未来可能的应用场景,如作战指挥控制、态势感知、认知域作战、军事、武器装备、情报分析等。在军事应用领域,对时效性有较高的要求。因此,如果进行Full FineTuning(即对预训练模型中的所有参数都进行微调),太过低效;而如果采用固定预训练模型的某些层,只微调接近下游任务的参数层又难以达到较好的效果。

1)微调方法

P-Tuning是一种较新的模型微调方法,它采用了参数剪枝的技术,可以将微调的参数量减少到原来的0.1%。采用了更加高效的剪枝方法,可以进一步减少模型微调的参数量。P-Tuning v2的原理是通过对已训练好的大型语言模型进行参数剪枝,得到一个更加小巧、效率更高的轻量级模型。具体地,P-Tuning v2首先使用一种自适应的剪枝策略,对大型语言模型中的参数进行裁剪,去除其中不必要的冗余参数。然后,对于被剪枝的参数,P-Tuning v2使用了一种特殊的压缩方法,能够更加有效地压缩参数大小,并显著减少模型微调的总参数量。总的来说,P-Tuning v2的核心思想是让模型变得更加轻便、更加高效,同时尽可能地保持模型的性能不受影响。这不仅可以加快模型的训练和推理速度,还可以减少模型在使用过程中的内存和计算资源消耗,让模型更适用于各种实际应用场景中。

2)训练模型

对于 ChatGLM-6B 模型基于 P-Tuning v2 进行微调。可将需要微调的参数量减少到原来的 0.1%,P-Tuning v2提升小模型上的Prompt Tuning,最关键的就是引入Prefix-tuning技术。

Prefix-tuning(前缀微调)最开始应用在NLG任务上,由[Prefix, x, y]三部分构成。Prefix-tuning将预训练参数固定,Prefix参数进行微调:不仅只在embedding上进行微调,也在TransFormer上的embedding输入每一层进行微调。P-Tuning v2将Prefix-tuning应用于在NLU任务,如图3所示。

图 3 P-TuningV2实例图 Fig. 3 Example of P-TuningV2

P-tuning v2在实际上就是Prefix-tuning,在Prefix部分,每一层transformer的embedding输入需要被tuned。而@P-tuning v1只有transformer第一层的embedding输入需要被tuned。假设Prefix部分由50个token组成,则P-tuning v2共有 50×12=600个参数需要tuned。在Prefix部分,每一层transformer的输入不是从上一层输出,而是随机初始化的embedding(需要tuned)作为输入,训练过程就是调整参数的过程。

其中,PRE_SEQ_LEN和LR分别是 soft prompt 长度和训练的学习率,可以进行调节以取得最佳的效果 quantization_bit :P-Tuning-v2 方法会冻结全部的模型参数,可通过调整quantization_bit来被原始模型的量化等级,不加此选项则为 FP16 精度加载quantization_bit=4、per_device_train_batch_size=1、gradient_accumulation_steps=16下,INT4 的模型参数被冻结,一次训练迭代会以 1 的批处理大小进行 16 次累加的前后向传播,等效为 16 的总批处理大小,此时最低只需 6.7GB 显存。若想在同等批处理大小下提升训练效率,可在二者乘积不变的情况下,加大per_device_train_batch_size的值,但也会带来更多的显存消耗,根据实际情况酌情调整。一般来说,采用5轮以上的训练可达到满意效果。

2.2.3 第三阶段:基于人类反馈的强化学习

强化学习框架下实现,分为以下2个阶段:

1)奖励模型训练

该阶段旨在获取拟合相关奖励模型。奖励模型以提示和回复作为输入,计算标量奖励值作为输出。奖励模型的训练过程通过拟合人类对于不同回复的倾向性实现。具体而言,首先基于在军事已有数据上精调的模型,针对同一提示采样多条不同回复。然后,将回复两两组合构成一条奖励模型训练样本,训练者给出倾向性标签。最终,奖励模型通过每条样本中两个回复的奖励值之差计算倾向性概率拟合人类标签,进而完成奖励模型的训练。

2)生成策略优化

首先,当前策略根据输入的查询采样回复。然后,奖励模型针对回复的质量计算奖励,反馈回当前策略用以更新。同时为防止上述过程的过度优化,损失函数同时引入了词级别的惩罚项。

2.3 外部知识库加载研究

针对军事应用领域,需要准确的答案,而大模型有“幻觉”问题不符合军事领域的应用场景,如何解决大模型幻觉问题,通常采用外部知识库加载的解决方案。

解决方案是基于本地非结构化知识化的答案生成,采用在基底大模型上搭建LangChain框架,解决本地非结构化数据的理解融合。使用知识图谱技术是针对结构化知识库的数据理解融合。LangChain是一个强大的框架,它提供了一套工具、组件和接口,主要解决将自有知识库加入到大模型框架中进行应用。开发步骤主要是先准备自有非结构化的知识库文档,并使用相应的工具对文档进行拆分后,对文本进行嵌入和向量化处理,提供给大模型使用,通过以上的操作后,即可对自有知识库进行数据融合理解和答案生成。

3 结 语

大模型的诞生是人工智能的大跨越发展,如何利用好大模型技术为领域服务是各行业研究热点,大模型的让大众看到了真正实现自然语言处理最终目标的希望。本文针对军事应用领域,提出了军事大模型的研究技术路线,依据开源大模型,采用基底模型训练和外部知识加载的方案。目前军事领域面临新一轮革命,军事安全面临挑战,唯有加快军事智能发展,才能在未来战争中立于不败之地。

参考文献
[1]
周中元, 刘小毅, 李清伟, 等. ChatGPT 技术及其对军事安全影响[J] . 指挥信息系统与技术, 2023(4): 8−9.
[2]
党亚娟. ChatGPT 潜在军事应用及风险分析[J]. 国防科技工业, 2023(3): 55−56
[3]
DU Zhengxiao, QIAN Yujie, LIU Xiao, et al. GLM: General Language Model Pretraining with Autoregressive Blank Infilling[J]. arXiv, 2022(3): 78−80.
[4]
刘胡君, 薛宇. ChatGPT—网络空间安全的“双刃剑”[J]. 军事文稿, 2023(6): 33−35.