Qwen3.5 微调指南 – Unsloth 文档
Qwen3.5 Fine-Tuning Guide

原始链接: https://unsloth.ai/docs/models/qwen3.5/fine-tune

这段代码演示了如何使用`unsloth`库高效地微调Qwen3.5-27B语言模型。它从一个URL(具体来说,LAION OIG数据集)加载包含文本数据的数据集。 该模型以16位精度初始化,并对特定的投影层应用LoRA(低秩自适应)以减少可训练参数。启用了梯度检查点(“unsloth”模式)来管理内存使用,尤其适用于长序列。 然后,使用来自`trl`(Transformer Reinforcement Learning)的`SFTTrainer`执行监督微调(SFT)。配置了诸如序列长度、批大小、学习率和训练步骤数等训练参数。最后,`trainer.train()`启动微调过程,并将结果保存到“outputs_qwen35”目录。此设置旨在有效地将大型Qwen模型适应于特定数据集。

## Qwen3.5 微调与边缘AI 总结 这次Hacker News讨论围绕Qwen3.5模型的微调,特别是将其部署在NVIDIA Jetson硬件上用于边缘AI任务。用户报告称,7B版本表现出令人惊讶的良好性能,甚至在功耗效率上超越了云端解决方案(低于15W,而云端能耗更高)。 关键优势在于LoRA微调,它使模型保持足够小,以便在统一内存中运行,同时保持生产级别的推理速度。讨论中的实际应用包括工业检测(水果分拣、缺陷检测)以及对低延迟至关重要的专业任务,即使这意味着略微降低准确性。 虽然一些人争论在现代LLM和RAG方法如此强大的情况下,微调的必要性,但许多人认为它对于成本敏感型应用、专业领域、持续学习以及使用特定知识库来校准模型仍然很有价值。分享了多个资源和成功的微调项目示例(DoorDash、Vercel、NASA等),突出了它在函数调用和创建具有独特“声音”的模型等任务中的实用性。
相关文章

原文
from unsloth import FastLanguageModel
import torch
from datasets import load_dataset
from trl import SFTTrainer, SFTConfig

max_seq_length = 2048  # start small; scale up after it works

# Example dataset (replace with yours). Needs a "text" column.
url = "https://huggingface.co/datasets/laion/OIG/resolve/main/unified_chip2.jsonl"
dataset = load_dataset("json", data_files={"train": url}, split="train")

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name = "Qwen/Qwen3.5-27B",
    max_seq_length = max_seq_length,
    load_in_4bit = False,     # MoE QLoRA not recommended, dense 27B is fine
    load_in_16bit = True,     # bf16/16-bit LoRA
    full_finetuning = False,
)

model = FastLanguageModel.get_peft_model(
    model,
    r = 16,
    target_modules = [
        "q_proj", "k_proj", "v_proj", "o_proj",
        "gate_proj", "up_proj", "down_proj",
    ],
    lora_alpha = 16,
    lora_dropout = 0,
    bias = "none",
    # "unsloth" checkpointing is intended for very long context + lower VRAM
    use_gradient_checkpointing = "unsloth",
    random_state = 3407,
    max_seq_length = max_seq_length,
)

trainer = SFTTrainer(
    model = model,
    train_dataset = dataset,
    tokenizer = tokenizer,
    args = SFTConfig(
        max_seq_length = max_seq_length,
        per_device_train_batch_size = 1,
        gradient_accumulation_steps = 4,
        warmup_steps = 10,
        max_steps = 100,
        logging_steps = 1,
        output_dir = "outputs_qwen35",
        optim = "adamw_8bit",
        seed = 3407,
        dataset_num_proc = 1,
    ),
)

trainer.train()
联系我们 contact @ memedata.com