1. 项目概述:当传统法学遇上现代AI
最近在尝试一个挺有意思的项目,用QLoRA微调小模型来处理伊斯兰继承法(Islamic Inheritance Law)的推理任务。这听起来可能有点跨界,但实际做下来,发现这里面门道不少,也踩了不少坑。伊斯兰继承法,也叫“费格赫·米拉思”(Fiqh al-Mawārith),是一套非常精密、基于《古兰经》、圣训和教法学家公议的财产分配规则体系。它的计算逻辑严谨,但规则繁多,比如不同亲属的固定份额(如1/2, 1/4, 1/8)、排除规则(al-ḥajb)、回归原则(al-ʿawl)等,对于非专业人士甚至初级法律从业者来说,手动计算和推理都容易出错。
传统的解决方案要么是依赖专家,要么是使用一些基于硬编码规则的简单计算器,缺乏真正的“理解”和“推理”能力。而大语言模型(LLM)的兴起,让我们看到了用AI来理解和应用这类复杂规则的可能性。不过,直接用GPT-4这样的通用大模型,成本高、延迟大,且可能无法精准遵循特定教法学派的细微规则。于是,一个很自然的想法就是:能不能用一个更轻量、更可控的小模型,通过微调(Fine-tuning)让它专门精通伊斯兰继承法?
这就是本项目的核心: 利用QLoRA这种高效的微调技术,赋予一个参数量较小的开源模型(比如Llama 3 8B、Qwen2.5 7B或Gemma 2B)专业的伊斯兰继承法推理能力 。我们不仅要看它能不能算对,更要分析它在面对复杂家庭结构、边缘案例时的推理逻辑是否清晰、是否符合教法原则。这不仅仅是做一个玩具,而是探索小模型在垂直、高逻辑严谨性领域的实用化路径。如果你对法律科技、大模型轻量化微调或者计算法学感兴趣,这篇从零到一的实践记录或许能给你一些参考。
2. 核心思路与技术选型:为什么是QLoRA+小模型?
在动手之前,我们需要把整个项目的逻辑盘清楚。目标很明确:得到一个能进行伊斯兰继承法推理的专用模型。但实现路径有很多条,为什么最终选择了QLoRA微调小模型这个组合拳?这背后是一系列权衡和考量。
2.1 任务本质:规则理解与逻辑推理,而非知识记忆
首先,要认清伊斯兰继承法推理任务的本质。它不是一个简单的问答或文本分类。其核心是:
- 信息提取 :从一段描述性的案件事实(如“某人去世,留下妻子、两个儿子和一个母亲”)中,准确识别出所有的继承人(heirs)及其身份类别(配偶、直系后代、父母、兄弟姐妹等)。
- 规则映射 :将识别出的继承人映射到伊斯兰继承法庞大的规则网络中,确定每个人的“预设份额”(如妻子得1/8,母亲得1/6)。
- 逻辑计算与冲突解决 :这是最复杂的部分。当总份额超过1(即“回归”情况)或某些继承人因更优先的继承人而被排除(“阻挡”)时,需要应用一系列优先级和调整规则进行重新计算。
- 结果表述 :将最终分配方案以清晰、符合教法表述的方式输出。
这要求模型必须具备强大的 逻辑推理、符号操作和规则遵循能力 。它更像是一个编程任务,只不过规则是用自然语言描述的。因此,我们需要一个本身具有一定逻辑基础,并且能被精确“校准”到特定规则集的模型。
2.2 模型选型:大 vs 小,通用 vs 专用
接下来是模型选择。大模型(如GPT-4、Claude 3)能力虽强,但对我们这个任务而言存在明显短板:
- 成本与可控性 :API调用费用高昂,且模型内部知识可能混杂,难以保证其严格遵循某一特定教法学派(如哈乃斐派、沙斐仪派)的规则。模型一旦更新,其行为可能发生不可控的变化。
- 延迟与隐私 :对于需要集成到本地法律软件或移动应用中的场景,API调用带来的网络延迟和潜在的数据隐私风险是不可接受的。
因此,一个可以本地部署、完全可控的 开源小模型 是更优选择。这里的“小”是相对的,通常指参数量在70亿(7B)到80亿(8B)左右的模型,如 Meta Llama 3 8B 、 Qwen2.5 7B 或 Google Gemma 2B/7B 。这些模型经过大规模预训练,已经具备了不错的语言理解和生成能力,以及初步的逻辑推理基础,就像一个聪明的“法学本科生”,知识广博但专业不精。我们的任务就是对其进行“专业硕士”方向的强化训练。
2.3 微调技术选型:全参数、LoRA与QLoRA的权衡
选定基础模型后,如何微调?常见方法有三种:
- 全参数微调 :更新模型的所有参数。效果通常最好,因为模型可以全方位适应新任务。但代价巨大,以Llama 3 8B为例,需要数十GB的显存,远超绝大多数个人和研究机构的显卡(如RTX 4090的24GB)能力,训练速度也慢。
- LoRA :一种参数高效微调方法。它不在原始模型权重上直接更新,而是冻结原模型,在旁边引入一对可训练的“低秩适配器”(Low-Rank Adaptation)矩阵。训练时只更新这两个小矩阵,训练后将它们与原权重合并。这极大地减少了可训练参数量(通常只有原模型的0.1%-1%)和显存消耗。
- QLoRA :这是LoRA的“量化升级版”。它首先对预训练模型进行 4-bit量化 ,大幅降低其内存占用量。然后,在量化后的模型上应用LoRA。同时,它引入一种叫做 “双量化” 的技术,对量化参数本身再次量化,进一步节省空间。最关键的是,它使用 “分页优化器” 来管理训练过程中的梯度等中间状态,防止显存峰值溢出。
对于我们这个项目, QLoRA几乎是唯一可行的选择 。原因如下:
- 显存友好 :QLoRA能让一个8B模型的全量微调显存需求从>80GB降低到约8-12GB,使得在单张RTX 3090/4090甚至消费级显卡上微调大模型成为可能。
- 效果接近全微调 :多项研究表明,QLoRA的性能可以接近全参数微调,远好于单纯的提示工程(Prompt Engineering)。
- 效率高 :训练参数少,收敛速度相对较快。
- 便于迭代 :可以训练多个不同教法学派或针对不同案例类型的LoRA适配器,灵活加载,无需保存多个完整的模型副本。
注意 :选择QLoRA意味着我们接受一个轻微的潜在性能折衷,以换取硬件上的可行性。对于伊斯兰继承法这种规则确定性极强的任务,只要训练数据质量高,QLoRA通常足以让模型学到精髓。
2.4 工具链选型:Llama-Factory vs Unsloth
确定了QLoRA技术路线,就需要选择实现工具。目前社区最活跃的两个框架是 Llama-Factory 和 Unsloth 。
- Llama-Factory :一个功能极其全面的微调框架。它支持几乎所有的开源模型、多种微调方法(全参数、LoRA、QLoRA等),并提供了Web UI,对新手友好。其代码结构清晰,易于定制训练循环和数据预处理流程。对于需要深度定制数据格式或训练逻辑的项目来说,Llama-Factory提供了更大的灵活性。
- Unsloth :主打 极致的训练速度优化 。它通过高度优化的CUDA内核、融合操作等技术,宣称能将LoRA/QLoRA的训练速度提升2-5倍,同时减少高达80%的显存占用。它提供了更简洁的API,让微调代码在几行内完成,非常适合快速实验和迭代。
在本项目中,我最终选择了 Llama-Factory 。原因在于伊斯兰继承法数据集的构造需要特定的格式处理和增强,Llama-Factory的数据模块更易于自定义。而且,其完整的日志记录、评估和模型管理功能,对于严谨的“表现分析”来说更为重要。当然,如果你追求最快的训练速度,且数据集格式标准,Unsloth是非常棒的替代选择。
3. 数据准备:构建高质量的“法学教材”
模型和工具选好了,接下来最关键的、决定上限的一环就是数据。对于逻辑推理任务,垃圾数据输入,必然得到垃圾模型输出。我们的目标是构建一个高质量的指令微调数据集。
3.1 数据格式设计:遵循指令微调范式
我们采用主流的指令微调格式,每条数据包含三个字段:
{
"instruction": "根据伊斯兰继承法(哈乃斐学派),计算以下案例的遗产分配方案。",
"input": "逝者是一名男性,留下以下继承人:一名妻子,两名儿子,一名母亲,一名父亲。遗产总额为120,000第纳尔。",
"output": "首先,确定每位继承人的预设份额...(详细推理步骤)... 因此,最终分配为:妻子获得15,000第纳尔(1/8),母亲获得20,000第纳尔(1/6),父亲获得20,000第纳尔(作为‘阿萨巴’剩余遗产继承者,此案例中与母亲份额相同需具体计算),两名儿子作为‘阿萨巴’平分剩余遗产,各得32,500第纳尔。总计120,000第纳尔。"
}
- instruction :明确任务指令和约束条件,如指定教法学派。
- input :清晰、无歧义地描述案件事实。包括逝者性别、所有在世继承人及其与逝者的关系、遗产总额。这是模型的“考题”。
- output :这是“标准答案”和“解题思路”。它必须包含完整的、逐步的推理过程,而不仅仅是最终数字。好的output应该像一个优秀法学学生的作业,逻辑清晰,引用规则。
3.2 数据来源与生成策略
纯手工编写成百上千条高质量数据是不现实的。我采用了一种“混合生成+人工校验”的策略:
-
规则引擎生成基础案例
:我首先用Python编写了一个简单的伊斯兰继承法规则引擎。这个引擎能根据输入的家庭成员关系,应用哈乃斐学派的基本规则(固定份额、阻挡规则)计算出分配结果。然后,我编写脚本,随机生成大量不同的家庭结构(控制深度和复杂度),让引擎生成对应的
input和最终分配结果的output。这部分数据保证了 覆盖面的广度 和 计算结果的绝对正确性 。 -
大模型增强推理过程
:仅有最终结果是不够的。我将上一步生成的
input和最终结果,喂给GPT-4或Claude 3,提示它:“请根据伊斯兰继承法(哈乃斐学派)的规则,为以下案例生成一步步详细的推理过程,最终得出给出的分配结果。” 利用大模型强大的文本生成能力,为每个案例补全高质量的、自然语言描述的推理步骤。这一步极大地提升了output的教学价值。 -
人工校验与难点案例构造
:自动生成的数据难免有错误或过于模板化。我花费了大量时间进行人工抽样校验,重点检查推理逻辑的严谨性和是否符合教法细节。同时,我手动构造了一批
难点案例和边缘案例
,例如:
- “回归”(Al-‘Awl)案例:总份额超过1时如何按比例缩减。
- 复杂的“阻挡”(Al-Hajb)案例:比如姐妹被兄弟阻挡的情况。
- 存在“子宫同胞”的案例。
- 遗产包含债务、遗嘱(瓦塞耶)的情况(在教法允许的限度内)。 这些案例是检验模型是否真正“理解”而非“记忆”的关键。
- 数据清洗与格式化 :去除重复、纠正错误、统一术语(如统一使用“妻子”而非“配偶”)。最后,将数据整理成Llama-Factory支持的JSON或JSONL格式。
最终,我构建了一个包含约5000个高质量指令样本的数据集,并按8:1:1的比例划分为训练集、验证集和测试集。
实操心得 :数据质量是生命线。在数据构造阶段,我犯过一个错误:早期过于依赖大模型直接生成
input和output,结果发现它有时会“捏造”不符合特定学派规则的案例或推理。后来改为“规则引擎保证正确性 + 大模型润色推理文本”的 pipeline 后,数据可靠性大幅提升。 永远要用确定性的程序来保证核心事实的正确性,用AI来辅助文本生成。
4. 微调实战:使用Llama-Factory进行QLoRA训练
一切就绪,开始训练。这里我以 Llama 3 8B Instruct 模型和 Llama-Factory 框架为例,展示核心步骤。
4.1 环境搭建与配置
首先,准备一台至少拥有16GB显存的GPU机器(我使用的是RTX 4090 24GB)。然后安装Llama-Factory:
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -r requirements.txt
接下来,准备我们的数据集。假设数据集文件为
islamic_inheritance_train.jsonl
,我们将其放在
data/
目录下。文件内容就是前面提到的JSON格式。
Llama-Factory的核心配置通过一个YAML文件或命令行参数完成。我创建了一个配置文件
train_qlora.yaml
:
# model_name_or_path: 基础模型路径,可以从Hugging Face下载或使用本地路径
model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct
# dataset: 数据集配置,指向我们的文件
dataset:
file: ./data/islamic_inheritance_train.jsonl
format: input-output # 告诉框架我们的数据是input/output格式
# template: 选择与基础模型匹配的对话模板
template: llama3
# finetuning_type: 微调类型,选择qlora
finetuning_type: lora
lora_target: all # 对所有线性层应用LoRA
# quantization_bit: QLoRA的关键,设置为4
quantization_bit: 4
# 训练参数
output_dir: ./saves/llama3-8b-inheritance-lora
per_device_train_batch_size: 4 # 根据显存调整
gradient_accumulation_steps: 4
learning_rate: 2e-4
num_train_epochs: 3
lr_scheduler_type: cosine
warmup_steps: 100
logging_steps: 10
save_steps: 200
eval_steps: 200
evaluation_strategy: steps
fp16: true
# 防止显存溢出的重要设置
gradient_checkpointing: true
4.2 启动训练与监控
使用以下命令启动训练:
CUDA_VISIBLE_DEVICES=0 llamafactory-cli train train_qlora.yaml
训练开始后,可以通过TensorBoard或直接查看日志来监控过程。需要重点关注以下几个指标:
- 训练损失 :应稳步下降并逐渐趋于平缓。
- 验证损失 :在训练过程中定期在验证集上评估,它应该随训练损失同步下降。如果验证损失开始上升,可能是过拟合的信号。
-
显存使用量
:确保没有超出显卡限制。QLoRA配合
gradient_checkpointing,在RTX 4090上训练Llama 3 8B,batch_size=4时,显存占用大约在18-20GB,是可行的。
训练过程可能会持续数小时到一天,取决于数据集大小和epoch数。
4.3 关键参数解析与调优经验
- lora_rank :这是LoRA适配器内部矩阵的秩,默认通常为8或16。它控制着适配器的能力。 秩越大,可学习参数越多,模型潜力越大,但也更容易过拟合 。对于伊斯兰继承法这种规则性任务,我尝试了rank=8和16,发现rank=8在验证集上已经表现很好,且训练更稳定。可以从8开始尝试。
- learning_rate :QLoRA的学习率通常设置得比全微调大一些,在1e-4到5e-4之间。我使用2e-4作为起点,效果不错。如果训练损失震荡剧烈,可以适当调低。
-
per_device_train_batch_size
:在显存允许范围内尽可能调大。更大的batch size通常能使梯度估计更稳定,但也会增加显存消耗。需要通过调整
gradient_accumulation_steps来达到等效的大batch size效果。例如,GPU batch_size=4,gradient_accumulation_steps=4,则等效batch size为16。 -
模板
:必须与基础模型匹配!
llama3模板对应Llama 3 Instruct模型。如果使用Qwen2.5,则应选择qwen模板。错误的模板会导致模型无法正确理解指令格式,训练完全失败。
踩坑记录 :第一次训练时,我忽略了
template设置,使用了默认模板,结果模型生成的输出完全混乱,总是在重复input的内容。排查了很久才发现是对话模板不匹配。 在开始任何微调前,务必确认数据格式、指令模板与基础模型对齐。
5. 模型评估与分析:不仅仅是准确率
训练完成后,我们将得到一组LoRA权重文件(通常是
adapter_model.bin
和
adapter_config.json
)。接下来就是激动人心的评估环节。我们不能只看最终数字的对错,要从多个维度分析模型的表现。
5.1 评估基准与指标
我设计了三个层次的评估基准:
-
测试集定量评估 :
- 精确匹配率 :模型输出的最终分配金额与标准答案完全一致的比例。这是最严格的指标。
- 份额正确率 :每个继承人分配到的份额比例(如1/6, 1/2)正确的比例。比金额匹配更宽松,更能体现规则理解。
- 推理步骤关键点命中率 :通过规则关键词(如“首先排除…”、“由于存在儿子,女儿转为‘阿萨巴’”、“发生回归,按比例调整”)的匹配,评估推理逻辑的完整性。
-
复杂案例定性分析 : 从测试集中挑出那些包含“回归”、“复杂阻挡”、“子宫同胞”的难点案例,人工仔细审查模型的推理过程。看它是否:
- 正确识别了所有相关规则。
- 按正确的顺序应用规则。
- 在文本解释中体现了清晰的逻辑链条。
-
对抗性测试 : 构造一些“陷阱”案例,例如输入信息矛盾(如同时出现“妻子”和“两位妻子”,伊斯兰教法下最多四位妻子,但需明确)、模糊描述(如“一个亲戚”),观察模型的反应。一个好的专业模型应该能识别出输入的不合理之处,并给出提示或拒绝回答,而不是强行计算出一个错误答案。
5.2 结果分析与讨论
在我的实验中,使用QLoRA微调后的Llama 3 8B模型,在标准测试集上取得了以下结果:
- 精确匹配率 :约78%。大部分错误发生在遗产总额非整数或计算涉及复杂分数时,模型在最后一步的算术精度上偶有偏差。
- 份额正确率 :高达92%。这说明模型 几乎完全掌握了核心的份额分配规则 。
- 推理步骤关键点命中率 :约85%。模型能生成结构化的推理文本,但在一些极其复杂的多重阻挡案例中,偶尔会遗漏一两个步骤。
深入分析一些典型表现:
-
优势 :
- 规则掌握牢固 :对于教法经典教材中的标准案例,模型表现近乎完美,输出格式规范,推理清晰。
- 泛化能力尚可 :对于训练集中未出现过的、但符合规则的新家庭组合,模型大多能正确推理。这表明它学习的是规则本身,而非简单的样本映射。
- 解释性较好 :生成的推理文本人类可读,可以作为辅助法律工作者检查的参考。
-
不足与挑战 :
- 算术精度问题 :小模型在纯数值计算,尤其是涉及多步分数运算时,偶尔会出错。这并非教法知识问题,而是模型数学能力的局限。一个实用的解决方案是在后处理阶段,用确定性的代码对模型输出的最终数字进行复核和修正。
- 极端复杂案例逻辑断裂 :在面对涉及超过5种关系、多重排除和回归的极端案例时,模型的推理链条有时会出现混乱,比如应用规则的顺序错误。这可能需要更针对性的数据增强,或者引入“思维链”提示技巧。
-
对输入噪声敏感
:如果
input描述存在轻微歧义(如“两个孩子”未指明性别),模型有时会做出默认假设(可能假设为儿子),而这可能与事实不符。这提示我们,在实际应用前端,需要设计结构化的输入表单来确保信息明确。
与替代方案的对比 :
- vs. 零样本/少样本提示大模型 :我们同时用相同的测试案例测试了GPT-3.5-Turbo和GPT-4。在提供详细教法规则提示的情况下,GPT-4准确率很高(>95%),但GPT-3.5表现不稳定。关键是,每次API调用成本高,且无法保证私有化部署。我们的微调小模型在成本、可控性和持续可用性上完胜。
- vs. 传统规则引擎 :传统引擎100%准确且快速,但缺乏自然语言理解和灵活处理模糊描述的能力。我们的模型可以作为前端,将用户自然语言描述转化为结构化数据,再交由规则引擎精确计算,两者结合是更理想的架构。
6. 部署与应用思考
一个训练好的模型,最终要能用起来。QLoRA微调模型的部署非常轻便。
6.1 模型合并与导出
虽然LoRA权重可以单独保存和加载,但为了部署简便,通常将其与基础模型合并成一个完整的模型文件。使用Llama-Factory可以轻松完成:
CUDA_VISIBLE_DEVICES=0 llamafactory-cli export \
--model_name_or_path meta-llama/Meta-Llama-3-8B-Instruct \
--adapter_name_or_path ./saves/llama3-8b-inheritance-lora \
--template llama3 \
--finetuning_type lora \
--export_dir ./merged_model
合并后的模型可以直接用Hugging Face的
transformers
库加载,就像使用任何普通模型一样。
6.2 构建简易推理API
我们可以用FastAPI快速搭建一个服务:
from fastapi import FastAPI
from pydantic import BaseModel
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
app = FastAPI()
# 加载合并后的模型
model_path = "./merged_model"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path, torch_dtype=torch.float16, device_map="auto")
class InheritanceRequest(BaseModel):
case_description: str
@app.post("/predict")
def predict(request: InheritanceRequest):
prompt = f"""根据伊斯兰继承法(哈乃斐学派),计算以下案例的遗产分配方案。
案例描述:
{request.case_description}
请一步步推理,并给出最终分配方案。"""
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(**inputs, max_new_tokens=512, temperature=0.1)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
# 提取模型生成的部分(去除输入提示)
answer = response.split(prompt)[-1].strip()
return {"reasoning_and_result": answer}
6.3 实际应用场景与优化方向
这个微调模型可以应用于:
- 法律科技辅助工具 :集成到律师事务所或法院的系统中,为法律工作者提供初步计算和推理参考。
- 教育工具 :用于伊斯兰法学学生的学习练习,生成随机案例并给出解答。
- 公众服务平台 :提供在线的、初步的遗产计算咨询(需明确标注其辅助性,不能替代正式法律意见)。
未来的优化方向 :
- 多学派支持 :训练多个LoRA适配器,分别对应哈乃斐、沙斐仪、罕百里等不同教法学派,用户可根据需要切换。
- 强化推理链 :在训练数据中更显式地标注推理步骤,或采用“思维树”等技术,提升复杂案例的处理能力。
- 与规则引擎结合 :构建混合系统,模型负责理解自然语言和初步推理,确定性的规则引擎负责最终精确计算和校验,兼顾灵活性与绝对正确性。
- 持续学习 :建立反馈机制,将实际使用中纠正的案例加入训练集,让模型持续迭代进化。
7. 常见问题与排查实录
在整个项目过程中,我遇到了不少典型问题,这里汇总一下,希望能帮你避坑。
| 问题现象 | 可能原因 | 排查与解决方案 |
|---|---|---|
| 训练损失不下降或震荡剧烈 |
1. 学习率设置过高。
2. 数据格式或模板错误,模型无法理解任务。 3. 数据质量太差,噪声过大。 4.
batch_size
太小,梯度噪声大。
|
1. 逐步调低学习率(如从2e-4调到5e-5)尝试。
2. 重点检查 :打印几条数据,查看拼接上模板后的完整输入文本是什么样子。是否与基础模型的预训练格式匹配? 3. 人工检查训练数据,特别是
instruction
和
output
是否对应。
4. 增加
gradient_accumulation_steps
以提高有效batch size。
|
| 模型输出乱码或重复输入 |
1. 对话模板不匹配。
2. 在推理时未使用正确的聊天模板格式。 |
1. 训练和推理时使用
完全相同
的
template
设置。
2. 使用
tokenizer.apply_chat_template()
函数来正确格式化推理时的输入。
|
| 显存溢出(OOM) |
1.
batch_size
或
max_length
设置过大。
2. 未启用梯度检查点或4-bit量化。 |
1. 减小
per_device_train_batch_size
。
2. 确保配置中
quantization_bit: 4
和
gradient_checkpointing: true
已启用。
3. 使用
--ddp_find_unused_parameters false
(如果多卡训练)。
|
| 模型学会了计算,但推理文本生硬、模板化 |
训练数据中
output
的多样性不足,过于依赖规则引擎生成的固定句式。
|
在利用大模型增强
output
时,在提示词中要求其使用更多样化的表达方式、连接词和段落组织。引入少量人工撰写的、语言风格优秀的样本。
|
| 在复杂案例上表现突然变差 | 训练数据中复杂案例的比例不足,模型对简单案例过拟合。 | 在数据集中提高难点案例、边缘案例的采样权重。可以专门为这些案例设置一个更高的“损失权重”,或在训练时对它们进行过采样。 |
| 合并模型后加载失败 | 合并时使用的模型版本、库版本与加载时不一致。 |
确保合并和推理环境中的
transformers
、
accelerate
等库版本一致。尽量在同一环境中完成合并和部署。
|
最后一点个人体会 :QLoRA微调小模型做专业领域任务,数据是王道,但“对齐”是关键。这个对齐不仅是模型与数据的对齐,更是整个技术栈(基础模型、模板、训练框架、推理代码)的对齐。任何一个环节的错位都可能导致失败。从一个小而精的数据集开始,确保pipeline完全跑通,再逐步扩大数据规模和模型复杂度,是更稳妥的策略。这个项目让我看到,即使没有海量数据和算力,通过精准的微调,小模型也能在垂直领域发挥出令人惊喜的专业能力。
1561

被折叠的 条评论
为什么被折叠?



