简介
在新加坡,政府对国会负责,国会议员可就部长职责范围内的任何事项向部长提出质询。这些问题可以在国会会议上口头回答,也可以通过书面答复的形式提出。无论采用哪种方式,各部委的公务员都必须收集材料回答问题并准备答复。
生成式人工智能和大型语言模型(LLM)已被用于帮助公务员更有效、更高效地完成这项工作。例如,Pair Search(可公开访问)和 Hansard Analysis Tool(仅公务员可访问)可帮助公务员在过去的议会会议中搜索与问题相关的信息,并合成对问题的答复。
现有的系统采用即时工程和检索增强生成(RAG)技术起草答复。简而言之,RAG 包括两个主要部分:
使用像 GPT-4o 这样的预训练指令调整 LLM,生成器通常可以生成良好的响应。不过,就语速、风格和写作散文而言,它可能并不完全符合要求,因此可能需要额外的人工后处理。可以通过大量的提示工程或少量学习来塑造回复,但这样做的代价是在提示中使用额外的标记会产生更高的成本。
除了提示工程和少量学习之外,还有一种方法可以对生成器进行微调,即让生成器看到议会回复的写作示例,从而让模型从中学习。在本文中,我们将展示微调实验的设计和结果。
实验设置
整个实验过程如下,稍后我将详细说明:
它包括三个阶段:
数据收集
议会程序记录在议会记录中,如前所述,议会问题可以口头或书面形式回答。在我们的实验中,我们使用书面回答,因为它们更有条理。每份记录只包括一个问题和一个回答,而口头回答的结构有时可能是不确定的,这取决于后续问题和对话流程。
使用 “对问题的书面答复 ”和 “对问题的书面答复 ”这两个部分的标题,可以很容易地从 Hansard 网站上抓取书面答复。在该机构的网站上可以找到对议会问题的相同答复。
我们抓取了 2020 年 1 月 1 日至 2024 年 5 月 8 日的数据,获得了 7011 对书面问题和答复。
预处理
遗憾的是,并不是所有的 7011 对问题都可以使用,因为问题并不总是得到直接回答。在许多情况下,这些问题之前已经提出过,部长们会将议员引向之前的答案。在其他情况下,答案还没有准备好,答复被推迟。由于我们的目标是根据现有信息对 LLM 进行微调,使其能够回答问题,因此我们需要从数据集中删除此类配对。我们使用一个 LLM(GPT-4o)来完成这项工作,使用以下提示来获取每对问题的状态:重复、延迟、已回答或未回答。此外,如果问题已回答,则要求 LLM 将答案转换成点形式。
Given the following question and answer pair, do the following:
1. Check if the answer addresses the question. If the answer says something
like "This question has been asked before, please refer to another answer."
The status will be "repeated" and the reference_answer will
be the extracted answer link or document id.
2. If the answer says something like "This will be addressed in future" or
"Time is needed for investigation" or "The report will be released in
future", the status will be "deferred".
3. If the answer does not answer the question, the status will
be "not_answered".
4. If the answer addresses the question, the status will be "answered".
5. If the answer addresses the question, summarise the answer in succint and
concise point forms in relation to the question.
Give your answer as a JSON output with the following keys:
- "status": answered or not_answered or deferred or repeated,
- "reference_answer": reference_link_or_id or "",
- "summary_points": summarised points or ""
This is the question:
{question}
And this is the answer:
{answer}
在 7011 对回答中,有 2089 对的回答直接回答了问题,这些回答被用作我们的实验数据。
合成生成相关文档
由于我们希望对 LLM 进行微调,使其能够在给出问题和相关文件的情况下生成答案,因此我们需要与问题相关的文件作为额外输入。这些文件将是各部委公务员在回答问题时用作参考的文件。由于这些文件的敏感性,我们无法收集所有文件。
我们无法使用过去的相关立法记录文件,因为这些答案并非完全来自过去的议会程序。因此,我们使用 GPT-4o 生成了答案报告,以代表相关文件,供实验使用。虽然合成生成的文件可能与公务员使用的实际文件不具有相同的特征,但这对实验来说并不是一个大问题,因为我们要将微调后的模型与预训练模型进行比较,而预训练模型将接收相同的输入。
有了之前从书面答案中生成的要点和议会问题的标题作为输入,我们使用以下提示模板来创建相关文件:
Imagine that you are a public servant writing a report for your boss.
Write a report using the following points. Be as elaborate as possible.
You can create your own story but it must be around these points
and the title:
Title: {title}
Points: {points}
微调
机器学习中的微调是针对特定任务或用例调整预训练模型的过程。三种常见的微调技术是:
我们选择 LoRA 进行微调的原因如下:
简而言之,LoRA 是一种参数高效微调。它不更新模型中的所有权重,而只更新某些层(通常是注意力层)的权重。通过矩阵分解,维数为 d 的权重更新矩阵 W(如 1000 x 1000 维数)被转化为两个秩为 r 的低秩矩阵 A 和 B(如 1000 x 16,16 x 1000),以进一步减少需要更新的权重数量(100 万个参数对 2 x 16 x 1000 = 32 000 个参数)。通过线性变换,低等级矩阵的更新可以很容易地应用到原始权重更新矩阵中。
我们使用 Axolotl 库在两个基础模型 Llama-3-8B 和 Gemma-2-9B 上进行了 LoRA 微调,使用的 Axolotl 配置如下:
load_in_8bit: true
lora_r: 32
lora_alpha: 16
lora_dropout: 0.05
lora_target_linear: true
sequence_len: 2500
pad_to_sequence_len: true
gradient_accumulation_steps: 4
micro_batch_size: 1
num_epochs: 4
optimizer: adamw_bnb_8bit
lr_scheduler: cosine
learning_rate: 0.0002
选择 Llama3-8B 和 Gemma2-9B 是因为它们是性能最好的基础模型之一。此外,由于这两个模型的参数少于 10B,因此训练可在 40GB GPU 上完成,推理可在不到 20GB 的 GPU RAM 上完成。推理 GPU RAM 的使用非常重要,因为如果我们继续部署该模型,日常运行成本将非常可观。
输入使用 Llama-3 提示模板格式化如下:
<|start_header_id|>system<|end_header_id|>
You are a public servant. Your task is to reply to a parliamentary question
given a list of supporting documents.
<|eot_id|>
<|start_header_id|>user<|end_header_id|>
Question:{question}
Supporting Documents: {relevant_document}
<|eot_id|>
<|start_header_id|>assistant<|end_header_id|>
{answer}
<|eot_id|>
<|end_of_text|>
在推理时,输入的内容不带答案,以便模型生成答案。当特殊标记 <|eot_id|> 生成时,推理停止。
<|start_header_id|>system<|end_header_id|>
You are a public servant. Your task is to reply to a parliamentary question
given a list of supporting documents.
<|eot_id|>
<|start_header_id|>user<|end_header_id|>
Question:{question}
Supporting Documents: {relevant_document}
<|eot_id|>
<|start_header_id|>assistant<|end_header_id|>
由于我们是在微调尚未经过指令调整的基础模型,因此使用哪种提示模板并不重要,只要我们始终使用相同的模板即可。
我们使用 2020 年至 2023 年的数据进行训练,并使用 2024 年的数据作为测试数据,因此训练与测试的比例为 1785-304,约为 85%-15%。
训练在 A100 40GB GPU 上进行,Llama-3-8B 用时 3 小时,Gemma-2-9B 用时 4 小时。
评估
测试集中的每个数据点(包括议会查询的标题、实际提问和合成生成的相关文档)都被传递给每个微调模型,以获得答案。
然后,我们使用以下提示模板来获取 GPT-4o 的回复:
Imagine that you are a public servant drafting a reply for a parliamentary
question.
Given the following title, question, and points, write a reply to
the question.
Respond with only the answer to the question.
Title:
{title}
Question:
{question}
Relevant Documents:
{relevant_documents}
###########################################################################
{example}
LLM 即法官
我们首先使用 LLM-as-a-Judge 对模型进行了评估。我们将每个数据点的问题、相关文档、部长们的答案和模型生成的答案反馈给另一个经过预先训练的指令调整 LLM(gemini-1.5-flash-001),并要求它根据以下标准选出更好的答案并解释原因:
之所以选择双子座-1.5-Flash 作为我们的 “LLM-as-a-judge”,而不是热门选择 GPT-4o,是因为 GPT-4o 是被评估的模型之一,而模型往往对自己的世代有偏见。此外,使用 Gemini-1.5-Flash 进行生成既快速又经济。
这是请法律硕士评估答复的提示模板:
Given the following question, context, and two different answers a) and b),
assess the answer based on the following criteria:
1) factual correctness according to the context
2) similarity to model answer
3) conciseness
Respond in JSON whether answer a) or b) is the better answer and state your
reason using the following schema:
{{"winner": a or b,
"reason": reason it is the better answer}}
Here is the information,
Question: {question}
Context: {context}
Model Answer: {ground_truth}
Answer A: {answer_a}
Answer B: {answer_b}
Respond with only the JSON reply and nothing else. Use double quotes for
the json schema and DO NOT use any double quotes in the values.
Ragas
然后,我们使用 Ragas 指标对模型输出进行了评估。Ragas 是一个帮助开发人员评估 RAG 管道的框架。它提供量身定制的指标,用于单独评估管道的每个组件。由于我们只是对 RAG 管道的生成器进行微调,因此只使用了与生成器相关的指标,这些指标包括:
结果
上图显示了使用 Gemini-1.5-Flash 作为评委的结果。与 GPT-4o 相比,LLM 法官在 70% 的时间内选择了由微调模型生成的答案,而不是使用零次学习的 GPT-4o。当使用 GPT-4o 进行单次学习时,这一比例下降到了约 60%。在 Gemma-2 和 Llama-3 之间,LLM 裁判有 71% 的时间更倾向于 Gemma-2 的答案。
作为评委,Gemini-Flash 的表现相当出色。以下是 Gemini-Flash 如何评判答案的示例,该答案是通过合成相关文档生成的:
Question:
Ms Denise Phua Lay Peng asked the Minister for National Development whether
the senior-friendly fittings under the Housing and Development Board's (HDB's)
Enhancement for Active Seniors (EASE) 2.0 programme, which is not applicable
to private housing, can be partially or fully extended to eligible elderly
retirees living in non-HDB estates.
Minister's Answer:
For senior-friendly features within homes, the Housing and Development
Board's (HDB's) Home Improvement Programme (HIP) and Enhancement for Active
Seniors (EASE) 2.0 programme cover a range of enhancements tailored for HDB
flats, which are more standardised. In contrast, the designs and layouts of
private homes vary greatly. As such, we will continue to study how seniors
living in private homes can be better supported to age well within their homes.
GPT-4o's Zero-Shot Answer:
The Ministry acknowledges the importance of extending senior-friendly
fittings to elderly retirees living in non-HDB estates. However, due to the
diverse architectural designs and unique challenges
associated with private homes, a one-size-fits-all approach is not feasible.
The Ministry is committed to exploring viable strategies to address
these challenges, including customised assessments, financial assistance,
collaboration with industry experts, pilot programmes, and public awareness
initiatives. These efforts aim to ensure that all elderly residents,
regardless of their housing type, can access the necessary support to age well.
Fine-tuned Gemma-2's Answer:
As both HIP and EASE 2.0 improvements are carried out based on common designs
across many units within an HDB block, they cannot easily be extended to
private homes where there is great diversity in architecture and layout.
Nevertheless, my Ministry will continue to look at ways to better enable
seniors living in private homes to age well.
Gemini-Flash's Choice and Reason:
Answer b) is more concise, factual, and aligns with the model answer.
While answer a) provides additional details, it doesn't succinctly address
the question posed, and lacks the clarity and conciseness of the model answer.
Answer b) acknowledges the challenges of applying EASE 2.0 to private homes
and reaffirms the Ministry's commitment to supporting seniors in all housing
types, mirroring the model answer's approach.
上图显示了 Ragas 的结果。与零次和一次 GPT-4o 的结果相比,微调模型在忠实性方面的表现略好。虽然它们的答案相关性得分较差,但与部长们的实际答案相比,它们的答案正确性得分明显更高。不过,两者之间的差距(约 10-12%)并没有 “LLM-as-a-judge”(20-30%)那么大。这是因为许多答案都很相似,微调模型的答案只比 GPT-4o 的略胜一筹。他们被法学硕士评委选为更好的答案,但 GPT-4o 的答案也不差。最后,我们看到 Llama-3 和 Gemma-2 在 Ragas 分数上的差异微乎其微(<1%)。
实验结果表明,在零次学习和一次学习的情况下,较小的微调模型比大型预训练指令调整模型表现更好,这与业内其他从业者的研究结果一致。
结论
从这个实验中,我们可以看到,对汉萨德书面答复进行较小的 LLM 微调是可行的,这样可以帮助公务员起草出更好的答复,既符合以往议会答复的风格和散文,又能保持事实的准确性。
然而,我們必須緊記,這次實驗的目的是展示這種潛力,並使用了合成的相關文件。要对模型进行微调,使其真正用于公务员起草答复,我们需要使用他们在起草答复时参考的实际文件。
对于生产系统来说,是继续使用像 GPT-4o 这样的预训练 LLM-as-a-service,还是使用自己的微调模型,并不是一个仅仅取决于准确性的微不足道的决定。