2026/5/23 15:54:04
网站建设
项目流程
财经门户网站建设,兴义网站开发公司,广州网页设计学校有哪些,百度网站联系方式新手入门首选#xff1a;Qwen3-1.7B微调教程一步到位
1. 引言#xff1a;为什么选择 Qwen3-1.7B 做微调#xff1f;
如果你是大模型微调的新手#xff0c;想找一个参数适中、资源友好、效果不错的起点#xff0c;那 Qwen3-1.7B 绝对是个理想选择。
它来自阿里巴巴通义千…新手入门首选Qwen3-1.7B微调教程一步到位1. 引言为什么选择 Qwen3-1.7B 做微调如果你是大模型微调的新手想找一个参数适中、资源友好、效果不错的起点那Qwen3-1.7B绝对是个理想选择。它来自阿里巴巴通义千问系列是2025年4月开源的新一代语言模型之一。虽然只有1.7B参数但性能表现远超同量级模型尤其在中文理解与生成任务上表现出色。更重要的是——显存要求低用一张10G以上的消费级显卡就能跑通LoRA微调非常适合个人开发者和学生党练手。本文将带你从零开始完成一次完整的微调流程数据准备 → 模型加载 → LoRA高效微调 → 推理测试 → 添加记忆功能全程使用免费算力平台 开源工具链无需任何付费资源小白也能轻松上手。2. 环境准备与镜像启动2.1 启动 Qwen3-1.7B 镜像我们使用的环境是 CSDN 提供的 AI 镜像服务已预装好transformers、peft、datasets等常用库省去繁琐配置。操作步骤如下进入 CSDN星图镜像广场 搜索Qwen3-1.7B点击“启动实例”按钮系统会自动分配GPU资源实例启动后点击“JupyterLab”进入开发环境注意首次使用建议选择 A10 或 T4 显卡至少16G显存确保训练过程不爆显存。2.2 测试模型是否可调用打开 Jupyter Notebook运行以下代码验证模型服务正常from langchain_openai import ChatOpenAI import os chat_model ChatOpenAI( modelQwen3-1.7B, temperature0.5, base_urlhttps://gpu-pod69523bb78b8ef44ff14daa57-8000.web.gpu.csdn.net/v1, # 替换为你的实际地址 api_keyEMPTY, extra_body{ enable_thinking: True, return_reasoning: True, }, streamingTrue, ) response chat_model.invoke(请介绍一下你自己) print(response)如果能看到类似“我是通义千问系列中的Qwen3-1.7B模型”的回复说明环境就绪3. 数据准备构建医学问答数据集我们要让 Qwen3 学会像 DeepSeek R1 那样进行“先思考再回答”的推理式输出因此需要准备带有think思考过程 answer最终答案结构的数据。3.1 下载并加载数据集这里我们使用魔搭社区提供的delicate_medical_r1_data医疗对话数据集from modelscope.msdatasets import MsDataset dataset MsDataset.load(krisfu/delicate_medical_r1_data)该数据集包含2000条医学领域对话样本字段包括字段名含义说明instruction任务指令question用户提问think模型思考过程用于训练思维链能力answer最终回答内容metrics质量评分3.2 数据预处理格式化输入输出我们需要把原始数据转换成适合 SFT监督微调训练的格式。目标是让模型学会根据question输出think answer的组合。构造 prompt 模板如下你是一个专业的医疗助手请按照以下格式回答问题 思考过程 此处为think 回答 此处为answer完整数据处理代码import json def process_sample(example): prompt f你是一个专业的医疗助手请回答以下问题\n\n问题{example[question]}\n\n completion f思考过程\n{example[think]}\n\n回答\n{example[answer]} return {text: prompt completion} # 处理全量数据 train_data [process_sample(ex) for ex in dataset[train]] val_data [process_sample(ex) for ex in dataset[validation]] # 保存为jsonl文件 with open(train.jsonl, w, encodingutf-8) as f: for item in train_data: f.write(json.dumps(item, ensure_asciiFalse) \n) with open(val.jsonl, w, encodingutf-8) as f: for item in val_data: f.write(json.dumps(item, ensure_asciiFalse) \n) print(The dataset has been split successfully.)执行完成后你会得到两个文件train.jsonl和val.jsonl可用于后续训练。4. 配置 SwanLab 训练监控工具训练过程中我们需要实时查看 loss、learning rate、step 等指标变化。推荐使用轻量级可视化工具SwanLab。4.1 安装 SwanLabpip install swanlab -i https://mirrors.cernet.edu.cn/pypi/web/simple国内源安装更快避免网络超时。4.2 登录账号前往 SwanLab官网 注册账号获取 API Key。然后在终端执行swanlab login粘贴你的 API Key 即可完成登录之后无需重复操作。4.3 初始化实验记录在训练脚本中加入以下代码import swanlab swanlab.init( projectqwen3-medical-finetune, config{ model: Qwen3-1.7B, epochs: 3, batch_size: 4, learning_rate: 2e-5, max_length: 512 }, description使用LoRA对Qwen3-1.7B进行医学领域微调 )这样就可以在网页端看到所有训练日志和图表了。5. 加载 Qwen3-1.7B 模型接下来我们将通过 ModelScope 下载模型并用 HuggingFace Transformers 加载。from transformers import AutoTokenizer, AutoModelForCausalLM import torch model_name qwen/Qwen3-1.7B # 实际路径以modelscope为准 tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) model AutoModelForCausalLM.from_pretrained( model_name, torch_dtypetorch.bfloat16, device_mapauto, trust_remote_codeTrue )提示若出现 OOM 错误可尝试添加low_cpu_mem_usageTrue或改用load_in_4bitTrue进行量化加载。6. 全参数微调可选理论上全参微调效果最好但对显存要求极高。Qwen3-1.7B 全参微调约需32GB显存普通用户难以承受。参考训练代码片段from transformers import TrainingArguments, Trainer training_args TrainingArguments( output_dir./qwen3-full-ft, per_device_train_batch_size2, gradient_accumulation_steps8, num_train_epochs3, learning_rate1e-5, fp16True, logging_steps10, save_steps100, evaluation_strategysteps, eval_steps50, report_toswanlab ) trainer Trainer( modelmodel, argstraining_args, train_datasettrain_dataset, eval_datasetval_dataset, tokenizertokenizer ) trainer.train()不建议在低于24G显存的设备上尝试此方式。7. 参数高效微调使用 LoRA更现实的选择是LoRALow-Rank Adaptation它只训练少量新增参数大幅降低显存消耗仅需 ~10G。7.1 安装 PEFT 工具包pip install peft7.2 构建 LoRA 模型from peft import LoraConfig, get_peft_model lora_config LoraConfig( r64, # rank lora_alpha16, target_modules[q_proj, k_proj, v_proj, o_proj], lora_dropout0.1, biasnone, task_typeCAUSAL_LM ) model get_peft_model(model, lora_config) model.print_trainable_parameters() # 查看可训练参数比例输出示例trainable params: 8,388,608 || all params: 1,700,000,000 || trainable%: 0.49%仅训练不到0.5%的参数却能达到接近全参微调的效果7.3 开始 LoRA 微调复用上面的Trainer设置只需替换模型即可trainer Trainer( modelmodel, argstraining_args, train_datasettrain_dataset, eval_datasetval_dataset, tokenizertokenizer, callbacks[swanlab_callback] # 自动对接SwanLab ) trainer.train()训练过程中可在 SwanLab 页面查看 loss 曲线、学习率变化等信息。8. 推理测试流式输出效果训练完成后我们可以加载微调后的模型进行推理测试。from peft import PeftModel # 加载LoRA权重 model PeftModel.from_pretrained(model, ./output/checkpoint-500) def predict_stream(question): prompt f你是一个专业的医疗助手请回答以下问题\n\n问题{question}\n\n思考过程\n inputs tokenizer(prompt, return_tensorspt).to(cuda) stream_output for token in model.generate(**inputs, max_new_tokens512, streamerNone): text tokenizer.decode(token, skip_special_tokensTrue) stream_output text print(text, end, flushTrue) return stream_output测试示例predict_stream(头痛有哪些常见原因该怎么用药)预期输出结构思考过程 嗯用户问的是头痛的常见原因有哪些以及如何根据不同的原因选择合适的药物。首先我需要回忆一下常见的头痛类型比如紧张性头痛、偏头痛、丛集性头痛…… 回答 头痛的常见原因主要包括紧张性头痛、偏头痛、丛集性头痛等。针对不同类型治疗方法也不同……9. 添加简单记忆功能为了让模型具备多轮对话能力我们可以维护一个messages列表来保存历史记录。9.1 实现思路创建全局messages列表持续记录对话每次用户提问时将role: user消息追加进去模型回复后将role: assistant消息也追加进去下次推理时传入完整上下文9.2 代码实现messages [] def chat(question): global messages # 添加用户消息 messages.append({role: user, content: question}) # 构造输入 full_prompt \n.join([f{m[role]}:{m[content]} for m in messages]) full_prompt \nassistant: inputs tokenizer(full_prompt, return_tensorspt).to(cuda) outputs model.generate(**inputs, max_new_tokens512) response tokenizer.decode(outputs[0], skip_special_tokensTrue) # 提取纯回答部分 answer response[len(full_prompt):] # 保存模型回复 messages.append({role: assistant, content: answer}) return answer现在你可以连续提问模型会记住之前的对话内容实现基础的记忆功能。10. 总结10.1 我们完成了什么本文带你完整走完了一次Qwen3-1.7B 的微调全流程在免费平台上启动镜像并调用模型准备医疗领域数据集构建思维链训练样本使用 SwanLab 监控训练过程成功加载 Qwen3-1.7B 并进行 LoRA 高效微调实现流式推理与多轮对话记忆功能整个过程无需高端硬件也不依赖复杂部署真正做到了“一步到位”。10.2 给初学者的建议如果你是第一次做微调强烈建议从LoRA入手成本低、见效快数据质量比数量更重要精心设计 prompt 格式能显著提升效果善用可视化工具如 SwanLab及时发现问题多尝试不同场景的数据教育、客服、法律等积累实战经验下一步你可以尝试将模型导出为 ONNX 或 GGUF 格式用于本地部署结合 LangChain 构建智能医疗问答应用尝试更大的 Qwen3 版本如 7B、14B做全参微调大模型时代已经到来掌握微调技术就是掌握了定制AI的能力。现在就开始动手吧获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。