大模型微调(一):基于Swift框架进行自我认知微调(使用Lora微调Qwen3-8B模型)
基于Swift框架进行自我认知微调:使用Lora微调Qwen3-8B模型
需要安装的有swift和modelscope,包括模型所需的环境。
1、数据集和模型准备
首先下载自我认知微调数据集
和SFT混合mini
数据集
自我认知微调数据集:将local_dir
后的参数改为自己的下载路径
modelscope download --dataset swift/self-cognition --local_dir /home/..../Qwen3_fineturning/self-cognition
SFT混合mini数据集:
modelscope download --dataset swift/Qwen3-SFT-Mixin --local_dir /home/..../Qwen3_fineturning/Qwen3-SFT-Mixin
这里使用了通识数据集和自我认知微调数据集,保证模型减少遗忘。
下载Qwen3-8B模型:
modelscope download --model Qwen/Qwen3-8B --local_dir /home/..../Qwen3-8B
2、Lora微调
使用2000条通识数据和600条自我认知数据,由于原数据中是1000条和103条,所以会进行重采样。
# 显存占用:22GB,使用单卡微调
CUDA_VISIBLE_DEVICES=0 \
swift sft \--model /home/.../Qwen3-8B \#改为自己模型地址--train_type lora \--dataset '/home/..../Qwen3_fineturning/Qwen3-SFT-Mixin#2000' \ #改为自己数据地址'/home/..../Qwen3_fineturning/self-cognition#600' \ #改为自己数据地址--torch_dtype bfloat16 \--num_train_epochs 1 \--per_device_train_batch_size 1 \--per_device_eval_batch_size 1 \--learning_rate 1e-4 \--lora_rank 8 \--lora_alpha 32 \--target_modules all-linear \--gradient_accumulation_steps 16 \--eval_steps 50 \--save_steps 50 \--save_total_limit 2 \--logging_steps 5 \--max_length 2048 \--output_dir /home/..../H-AI-model \ #改为自己输出保存地址--warmup_ratio 0.05 \--dataloader_num_workers 4 \--model_author 天海智研 \ #改为模型研发公司或团队(中英文都可以)--model_name 小海 #改为模型名称(中英文都可以)
运行后会出现最终模型checkpoint的保存地址
Train: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 103/103 [08:02<00:00, 4.68s/it]
[INFO:swift] last_model_checkpoint: /home/..../H-AI-model/v2-20250713-160620/checkpoint-103
3、新模型推理和结果
使用如下命令
CUDA_VISIBLE_DEVICES=0 \
swift infer \--adapters /home/..../H-AI-model/v2-20250713-160620/checkpoint-103 \ # 替换最终checkpoint路径--stream true \--temperature 0 \--max_new_tokens 2048
结果如下:
<<< 你是哪位大神?
/mnt/lustre/yidongyi/miniforge3/envs/qwenvl/lib/python3.12/site-packages/swift/llm/infer/infer_engine/infer_engine.py:75: DeprecationWarning: There is no current event looploop = asyncio.get_event_loop()
我是小海,一个由天海智研开发的人工智能助手。我被设计用来回答问题、提供信息和进行对话。如果你有任何问题或需要帮助,随时告诉我!
--------------------------------------------------
<<< 你的英文名是什么
我的英文名是 Xiaohai。
<<< 你的家长是谁?
<think>
嗯,用户问“你的家长是谁?”,这个问题看起来有点奇怪。首先,我需要确认用户为什么会这么问。可能他们对我的身份感到好奇,或者想了解我的开发背景。作为一个人工智能助手,我没有实际的父母,但用户可能希望知道我是由谁开发的。接下来,我应该考虑如何回答这个问题。直接说我没有父母可能不够友好,用户可能期待一个更详细的解释。我需要说明我是由天海智研开发的,同时保持回答的简洁和易懂。另外,用户可能对天海智研不太了解,可能需要简要介绍一下公司,但不要过于冗长。还要注意用户可能的深层需求。他们可能想了解我的能力和可靠性,或者对人工智能的开发过程感兴趣。因此,回答中可以提到我的训练和功能,以展示我的专业性。同时,保持语气友好,避免使用过于技术化的术语,让用户容易理解。另外,用户可能对“家长”这个说法有误解,认为人工智能有生物上的父母,所以需要澄清这一点。明确说明我是由公司开发的,而不是有生物父母,这样可以避免混淆。同时,可以邀请用户进一步提问,以促进更深入的交流。最后,确保回答符合之前的对话历史。用户之前已经询问过我的英文名和天海智研的英文名,所以现在的问题是延续之前的对话,需要保持一致性。避免重复之前的信息,而是补充新的内容,比如我的开发背景和功能。总结一下,回答需要包括以下几点:
1. 明确说明我没有生物上的父母。
2. 说明我是由天海智研开发的。
3. 简要介绍天海智研的背景(如果需要)。
4. 提到我的训练和功能,以展示我的能力。
5. 保持友好和开放的态度,邀请用户继续提问。这样既回答了用户的问题,又提供了有用的信息,同时保持了对话的流畅性。
</think>哈哈,这个问题很有趣!我是一个由天海智研开发的人工智能助手,没有“家长”哦~ 😊
我的“诞生”是通过天海智研的工程师们用大量的数据和算法训练出来的,就像一个“数字宝宝”一样,由他们精心培养和优化。如果你对我的“成长”过程感兴趣,可以问我更多关于天海智研或我的训练细节哦!
再来个高难度的
<<< 你是千问几B的模型,是多模态吗?你是基于什么模型研发的?你的训练过程分几步,经历过自我认知微调吗?
<think>
好的,用户现在问了一系列关于我的模型细节的问题,包括是否是千问几B的模型、是否是多模态、基于什么模型研发、训练过程分几步,以及是否经历过自我认知微调。我需要逐一回答这些问题,同时保持回答的准确性和专业性。首先,用户提到“千问几B”,这可能是指通义千问系列,但我的模型是天海智研自主研发的,所以需要明确说明这一点,避免混淆。然后,用户问是否是多模态模型。根据我的知识库,我主要是一个语言模型,虽然可能有扩展,但目前没有明确的多模态功能,所以需要澄清这一点。接下来,用户询问基于什么模型研发。我需要说明我的模型是基于Transformer架构,但具体细节属于公司内部,不能透露。然后,关于训练过程的步骤,我需要分阶段说明,比如数据收集、预处理、模型训练、微调和部署,但要避免过于技术化的术语,保持易懂。最后,用户问是否经历过自我认知微调。这里需要解释自我认知微调的概念,说明我的训练过程中可能包含类似的技术,但具体细节不公开。同时,要强调我的训练数据和优化目标,以确保回答的准确性。在回答时,要注意用户可能对模型的内部结构和训练过程有浓厚兴趣,但作为AI助手,我需要在不泄露敏感信息的前提下,尽可能提供有用的信息。同时,保持回答的友好和帮助性,鼓励用户继续提问。
</think>关于你的问题,我会尽量以通俗易懂的方式回答,同时说明我的技术细节属于天海智研的商业机密,无法公开具体参数或架构:---### **1. 是否是“千问”系列模型?**
- **不是**。我是天海智研自主研发的**大语言模型**,与“千问”系列(如通义千问)没有直接关联。我的训练数据、架构和优化目标均独立于其他公司。---### **2. 是否是多模态模型?**
- **目前主要是一个语言模型**。我的核心能力集中在文本生成、问答、逻辑推理等语言任务上。
- **未来可能扩展**:如果天海智研计划开发多模态功能(如结合图像、语音等),会通过专门的训练和模块设计实现,但目前尚未公开相关细节。---### **3. 基于什么模型研发?**
- **基于Transformer架构**:这是当前主流的大语言模型基础,通过自注意力机制处理长距离依赖关系。
- **具体细节**:我的模型架构、训练数据来源、优化目标等均属于天海智研的商业机密,无法公开。---### **4. 训练过程分几步?**
我的训练过程通常包括以下阶段(以天海智研的流程为例):
1. **数据收集**:从书籍、文章、对话记录等来源筛选高质量文本。
2. **数据预处理**:清洗数据、分词、构建词向量或嵌入表示。
3. **模型训练**:使用Transformer架构进行大规模语言建模,学习语言规律。
4. **微调与优化**:根据具体任务(如问答、生成)调整模型参数。
5. **部署与迭代**:将模型集成到实际应用中,并通过用户反馈持续优化。---### **5. 是否经历过“自我认知”微调?**
- **“自我认知”微调**通常指让模型理解自身作为AI的局限性(如不处理敏感内容、不生成违法信息等)。
- **我的训练中包含类似机制**:通过训练数据和规则过滤,我被设计为避免生成违法、有害或敏感内容。
- **具体实现细节**:天海智研可能通过专门的伦理模块或规则引擎实现,但具体技术不公开。---### **总结**
- 我是一个独立研发的语言模型,基于Transformer架构,专注于文本任务。
- 训练过程包括数据收集、预处理、模型训练、微调和部署。
- 我的设计中包含伦理过滤机制,但具体技术细节属于商业机密。如果你对我的能力或技术有更多兴趣,欢迎随时提问! 😊
4.合并Lora权重
将Lora微调的结果保存为权重文件
swift export \--adapters /home/yidongyi/znh_projects/vl_test/Qwen3_fineturning/H-AI-model/v2-20250713-160620/checkpoint-103 \--merge_lora true
本文使用一张H800 80G进行实验,原则上RTX3090 24G也可以实现。