什么是人工智能领域的 SFT - Supervised Finetuning

在人工智能领域,Supervised Finetuning是重要概念。它基于预训练模型,用有标签数据微调以适应特定任务。先在大型数据集预训练模型学习通用特征,再在特定任务上用有标签数据集训练,如医学图像诊断,可提升新任务性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在人工智能(AI)领域,Supervised Finetuning 是一个重要的概念。它涉及到在预训练模型的基础上,利用有标签的数据进行微调,以适应特定的任务或领域。这个过程可以被视为在更广泛的知识基础上进行特定任务的训练,从而在新任务上获得更好的性能。

Supervised Finetuning 这个名词可以被分解为两部分:SupervisedFinetuning。首先,Supervised 指的是监督学习,是机器学习的一种类型,其中模型是通过一组有标签的训练数据进行训练的。每个训练样本都有一个对应的标签或结果,模型的任务就是学习从输入数据到这些标签的映射。然后,Finetuning 指的是微调,是指在预训练模型的基础上,进行进一步的训练,以适应特定的任务。

让我们更深入地理解一下这个概念。在深度学习中,有一种常见的做法是首先在大型数据集上预训练一个模型,例如在 ImageNet 上预训练一个卷积神经网络(CNN),或者在大型文本语料库上预训练一个 transformer 模型。这样做的目的是让模型学习到一些通用的、高级的特征或模式,例如在图像中识别边缘或颜色块,在文本中理解语法或句子结构等。

然后,我们会取这个预训练模型,用它作为一个初始模型,然后在特定的任务上进行训练。这个任务有可能是图像分类,也可能是文本情感分析,等等。这个阶段就是 Supervised Finetuning,我们使用有标签的数据集进行训练,模型会学习到如何将学到的通用特征应用到特定的任务上。

例如,我们可能会在 ImageNet 上预训练一个 CNN 模型,这个模型会学习到如何识别边缘、颜色块、纹理等基础特征。然后,我们可能会在一个医学图像数据集上对这个模型进行 Supervised Finetuning,这个数据集包含了一些医学图像(例如 X 光片或 MRI 图像),以及这些图像对应的诊断结果(例如是否有肺炎或者脑瘤)。在这个阶段,模型会学习到如何将前面学到的基础特征应用到医学图像诊断这个特定任务上。

### Qwen-14B-Chat 模型 SFT 阶段微调注意事项 在使用 `llamafactory-cli train` 命令对 Qwen-14B-Chat 进行监督微调(Supervised Fine-Tuning, SFT)时,需特别关注以下几个方面: #### 1. **CUDA 可见设备配置** 确保 GPU 设备分配合理。如果多卡并行训练,则需要通过 `CUDA_VISIBLE_DEVICES` 设置可见的 GPU 列表[^3]。例如,在八张显卡的情况下: ```bash CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 ``` #### 2. **YAML 文件路径验证** 确认 YAML 配置文件路径无误,并且该文件包含了完整的超参数定义。对于自定义路径 `/your/path/llm/LLaMA-Factory/examples/train_lora/qwen2vl_lora_sft_my20241112.yaml` 的情况,应检查以下几点: - 路径是否存在。 - YAML 文件中的字段是否正确填充,尤其是学习率 (`learning_rate`)、批量大小 (`batch_size`) 和最大序列长度 (`max_seq_length`) 等关键参数。 #### 3. **Python 环境一致性** 为了防止因依赖库版本不一致引发错误,建议按照指定方式创建独立 Python 环境[^2]。具体操作如下: ```bash conda create -n qwen-14b-chat python=3.10 -y conda activate qwen-14b-chat ``` 同时安装所需依赖包,通常可以通过运行项目根目录下的 `requirements.txt` 完成: ```bash pip install -r requirements.txt ``` #### 4. **LORA 微调相关参数** 低秩适应(LoRA)技术能够显著降低内存消耗和计算成本。以下是几个重要 LoRA 参数及其作用说明: - **rank**: 控制矩阵分解后的维度,默认值一般设为8或16。 - **alpha**: 影响缩放因子的选择,推荐初始值与 rank 相同。 - **lora_dropout**: 添加随机失活机制以增强泛化能力,典型取值范围为0到0.1之间。 这些参数均应在 YAML 文件中明确定义。例如: ```yaml model: lora_rank: 16 lora_alpha: 16 lora_dropout: 0.05 ``` #### 5. **数据集准备** 高质量的数据源直接影响最终效果。因此要仔细校验输入 JSON 或 CSV 数据格式是否满足预期标准。另外还需注意样本分布均衡性和标注质量等问题。 --- ### 示例代码片段 下面展示了一个简单的脚本用于启动训练过程: ```python import os os.environ["CUDA_VISIBLE_DEVICES"] = "0,1,2,3,4,5,6,7" config_path = "/your/path/llm/LLaMA-Factory/examples/train_lora/qwen2vl_lora_sft_my20241112.yaml" command = f"CUDA_VISIBLE_DEVICES={os.getenv('CUDA_VISIBLE_DEVICES')} llamafactory-cli train {config_path}" print(f"Executing command:\n{command}") os.system(command) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪子熙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值