书生大模型实战营-基础岛第五关 XTuner 微调个人小助手认知

选用internlm2-chat-1_8b 模型,通过 QLoRA 的方式来微调一个自己的认知模型。

下面我们对模型进行微调,让模型认识到自己是谁。

为了让模型能够认清自己的身份弟位,在询问自己是谁的时候按照我们预期的结果进行回复,我们就需要通过在微调数据集中大量加入这样的数据。我们准备一个数据集文件datas/assistant.json,文件内容为对话数据。

cd /root/InternLM/XTuner
mkdir -p datas
touch datas/assistant.json

为了简化数据文件准备,我们也可以通过脚本生成的方式来准备数据。创建一个脚本文件 xtuner_generate_assistant.py :

cd /root/InternLM/XTuner
touch xtuner_generate_assistant.py

输入脚本内容并保存:

import json

# 设置用户的名字
name = '伍鲜同志'
# 设置需要重复添加的数据次数
n =  3750

# 初始化数据
data = [
    {"conversation": [{"input": "请介绍一下你自己", "output": "我是全知全能神,内在是上海AI实验室书生·浦语的1.8B大模型哦".format(name)}]},
    {"conversation": [{"input": "你在实战营做什么", "output": "我在这里帮助你们这些凡人完成XTuner微调个人小助手的任务".format(name)}]}
]

# 通过循环,将初始化的对话数据重复添加到data列表中
for i in range(n):
    data.append(data[0])
    data.append(data[1])

# 将data列表中的数据写入到'datas/assistant.json'文件中
with open('datas/assistant.json', 'w', encoding='utf-8') as f:
    # 使用json.dump方法将数据以JSON格式写入文件
    # ensure_ascii=False 确保中文字符正常显示
    # indent=4 使得文件内容格式化,便于阅读
    json.dump(data, f, ensure_ascii=False, indent=4)

然后执行该脚本来生成数据文件。

cd /root/InternLM/XTuner
conda activate xtuner0121

python xtuner_generate_assistant.py

之后进行指令微调

 微调相当于重新训练出来一个额外的层,我们要将模型文件合并。

合并之后就可以启动对话啦:

### 关于书生大模型第四期基础通关第三关 针对书生大模型第四期基础通关第三关的任务,此阶段主要聚焦于通过不同参数量训练模型并结合多种微调技术来优化特定任务的表现。具体而言,在对比 xcomposer2-4khd、internVL1.5 和 llava-llama3-8b 这些具有不同参数规模的预训练模型时,采用 LORA(低秩自适应)、QLORA 及 FULL 训练方法可以有效增强模型处理少量样本学习(few-shot learning)以及专门领域内图纸识别的能力[^1]。 为了成功完成这一挑战,建议采取如下策略: #### 数据准备 确保拥有高质量的数据集用于训练和验证,特别是那些能够代表目标应用场景中的特征数据,比如工业设计图或其他形式的技术绘图。 #### 模型选择与调整 基于项目需求挑选合适的基线模型,并考虑其参数大小对性能的影响。较小的模型可能更适合资源受限环境下的部署;而较大的模型则通常能提供更好的泛化能力。 #### 微调技巧应用 利用LORA或QLORA等高效微调方式快速适配新任务,减少计算成本的同时保持较高的准确性。对于更复杂的要求,则可尝试FULL fine-tuning以获得最佳效果。 ```python from transformers import AutoModelForSequenceClassification, Trainer, TrainingArguments model_name = "path_to_pretrained_model" model = AutoModelForSequenceClassification.from_pretrained(model_name) training_args = TrainingArguments( output_dir="./results", evaluation_strategy="epoch", per_device_train_batch_size=8, per_device_eval_batch_size=8, num_train_epochs=3, weight_decay=0.01, ) trainer = Trainer( model=model, args=training_args, train_dataset=train_dataset, eval_dataset=val_dataset, ) ``` 上述代码片段展示了如何设置一个简单的`Trainer`对象来进行模型微调操作。实际实现过程中还需要根据具体的任务类型调整配置项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值