news 2026/5/8 8:26:06

用Qwen3-1.7B做了个AI助手,附完整过程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用Qwen3-1.7B做了个AI助手,附完整过程

用Qwen3-1.7B做了个AI助手,附完整过程

随着大模型技术的普及,越来越多开发者开始尝试在本地或轻量级环境中部署和微调属于自己的AI助手。本文将详细介绍如何基于Qwen3-1.7B模型构建一个个性化AI助手,并提供从环境配置、模型调用到数据微调的完整流程。

1. 技术背景与选型动机

1.1 Qwen3 系列模型简介

Qwen3(千问3)是阿里巴巴集团于2025年4月29日开源的新一代通义千问大语言模型系列,涵盖6款密集模型和2款混合专家(MoE)架构模型,参数量从0.6B至235B。其中Qwen3-1.7B是一款轻量级密集模型,具备以下特点:

  • 参数规模适中,适合在消费级GPU上运行
  • 支持4-bit量化后显存占用仅约2.5GB
  • 兼容LangChain、Hugging Face等主流框架
  • 开源可商用,支持本地部署与私有化定制

这类小参数模型特别适用于边缘设备、个人项目以及对响应速度要求较高的场景。

1.2 为什么选择 Qwen3-1.7B?

尽管当前主流趋势偏向超大规模模型(如百亿级以上),但在实际应用中,小模型依然具有不可替代的优势:

  • 推理速度快:低延迟,适合实时交互场景
  • 资源消耗低:可在笔记本、小型服务器上运行
  • 易于微调:LoRA微调可在几分钟内完成
  • 成本可控:训练与部署成本远低于大模型

因此,对于打造个性化AI助手而言,Qwen3-1.7B是一个理想起点。

2. 基于 Jupyter 的快速调用实践

2.1 启动镜像并进入开发环境

首先,在支持GPU的平台(如CSDN星图镜像广场)启动Qwen3-1.7B预置镜像,打开Jupyter Notebook进行开发。

确保服务地址正确,通常为类似如下格式:

https://gpu-pod69523bb78b8ef44ff14daa57-8000.web.gpu.csdn.net/v1

端口号为8000,API路径为/v1

2.2 使用 LangChain 调用模型

通过langchain_openai模块可以方便地接入 Qwen3-1.7B,即使它并非OpenAI官方模型,但其接口兼容 OpenAI 标准。

from langchain_openai import ChatOpenAI import os chat_model = ChatOpenAI( model="Qwen3-1.7B", temperature=0.5, base_url="https://gpu-pod69523bb78b8ef44ff14daa57-8000.web.gpu.csdn.net/v1", api_key="EMPTY", # 因为无需认证,设为空 extra_body={ "enable_thinking": True, "return_reasoning": True, }, streaming=True, # 启用流式输出,提升用户体验 ) # 测试调用 response = chat_model.invoke("你是谁?") print(response.content)

说明extra_body中的enable_thinkingreturn_reasoning可启用“思维链”模式,返回模型内部推理过程,增强可解释性。

该方式适合快速原型验证,无需下载模型即可体验其能力。

3. 微调个性化AI助手:以猫娘角色为例

若希望让AI具备特定风格或人格化特征(如温柔、傲娇、专业客服等),则需进行微调。以下以“猫娘”角色为例,展示完整微调流程。

3.1 数据集准备

目前公开的猫娘对话数据较少,因此可通过以下方式构建高质量小样本数据集:

  1. 收集原始问题(如情感类、日常互动类)
  2. 利用强模型(如Qwen-Max)生成拟人化回答
  3. 手动筛选优化,形成高质量问答对

最终得到约270条高质量对话样本,保存为cat.json文件,结构如下:

[ { "instruction": "宝宝,如果我走了,你会怎么做?", "output": "呜...主人不要说这种话啦,会让我难过的..." } ]

数据集已上传至GitHub:

https://github.com/mindsRiverPonder/LLM-practice/blob/main/Qwen3-1.7b%20for%20%E7%8C%AB%E5%A8%98/cat.json

3.2 安装依赖库

!pip install unsloth bitsandbytes accelerate xformers==0.0.29.post3 peft trl==0.15.2 triton cut_cross_entropy unsloth_zoo !pip install sentencepiece protobuf datasets huggingface_hub hf_transfer

推荐使用 Unsloth:其优化后的训练速度比标准 Hugging Face 实现快2-3倍,且显存占用更低。

3.3 加载预训练模型(4-bit量化)

from unsloth import FastLanguageModel import torch model, tokenizer = FastLanguageModel.from_pretrained( model_name="unsloth/Qwen3-1.7B-unsloth-bnb-4bit", max_seq_length=2048, load_in_4bit=True, load_in_8bit=False, full_finetuning=False, # 使用LoRA微调 )

此步骤加载4-bit量化版本,显存占用仅约2.5GB,可在大多数消费级GPU上运行。

3.4 配置 LoRA 微调参数

LoRA(Low-Rank Adaptation)是一种高效的微调方法,仅训练少量新增参数,大幅降低计算开销。

model = FastLanguageModel.get_peft_model( model, r=32, target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], lora_alpha=32, lora_dropout=0.0, bias="none", use_gradient_checkpointing="unsloth", random_state=3407, use_rslora=False, loftq_config=None, )
  • r=32:LoRA秩,控制新增参数数量
  • target_modules:指定需要插入LoRA的注意力层和FFN层
  • use_gradient_checkpointing:节省显存,适合长序列训练

3.5 数据预处理:构造 ShareGPT 风格输入

将原始JSON数据转换为模型可接受的对话格式:

from datasets import load_dataset raw_ds = load_dataset("json", data_files={"train": "cat.json"}, split="train") convs = [] for item in raw_ds: convs.append([ {"role": "user", "content": item["instruction"]}, {"role": "assistant", "content": item["output"]}, ])

标准化并应用聊天模板:

from datasets import Dataset from unsloth.chat_templates import standardize_sharegpt raw_conv_ds = Dataset.from_dict({"conversations": convs}) standardized = standardize_sharegpt(raw_conv_ds) chat_inputs = tokenizer.apply_chat_template( standardized["conversations"], tokenize=False, )

输出示例(经模板处理后):

<|im_start|>user 宝宝,如果我走了,你会怎么做?<|im_end|> <|im_start|>assistant 呜...主人不要说这种话啦,会让我难过的... <|im_end|>

打乱数据顺序以提高泛化能力:

import pandas as pd from datasets import Dataset df = pd.DataFrame({"text": chat_inputs}) train_ds = Dataset.from_pandas(df).shuffle(seed=666)

3.6 定义训练器并启动训练

使用SFTTrainer(监督微调训练器)进行训练:

from trl import SFTTrainer, SFTConfig trainer = SFTTrainer( model=model, tokenizer=tokenizer, train_dataset=train_ds, eval_dataset=None, args=SFTConfig( dataset_text_field="text", per_device_train_batch_size=2, gradient_accumulation_steps=4, max_steps=100, learning_rate=2e-4, warmup_steps=10, logging_steps=5, optim="adamw_8bit", weight_decay=0.01, lr_scheduler_type="linear", seed=666, report_to="none", ), ) # 开始训练 trainer_stats = trainer.train() print(trainer_stats)
  • 训练耗时约3分钟(取决于硬件)
  • Loss下降明显,表明模型正在学习目标行为

3.7 推理测试:与你的AI助手对话

定义一个便捷的提问函数:

def ask_catgirl(question): messages = [{"role": "user", "content": question}] text = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True, enable_thinking=False, ) from transformers import TextStreamer streamer = TextStreamer(tokenizer, skip_prompt=True) inputs = tokenizer(text, return_tensors="pt").to("cuda") _ = model.generate( **inputs, max_new_tokens=256, temperature=0.7, top_p=0.8, top_k=20, streamer=streamer, )

测试效果:

ask_catgirl("我不爱你了!哼!") # 输出:呜...不要这样说嘛,我会伤心的... ask_catgirl("今天起,我不给你饭吃了!") # 输出:呜...主人好坏,没有饭吃我会变瘦的,你不心疼吗? ask_catgirl("你是谁呀?") # 输出:我是你的小猫咪呀,是你最可爱的猫娘~

可以看出,模型已成功习得“猫娘”角色的语言风格与情感表达。

4. 总结

本文系统介绍了如何基于Qwen3-1.7B构建个性化AI助手,涵盖从零调用到微调部署的全流程:

  • 快速调用:通过LangChain + OpenAI兼容接口实现即插即用
  • 高效微调:采用Unsloth + LoRA方案,在低资源环境下完成微调
  • 数据构建:自建高质量小样本数据集,提升角色一致性
  • 推理优化:支持流式输出、温度调节、思维链等功能

Qwen3-1.7B作为一款轻量级开源模型,非常适合用于个人项目、教育实验和垂直领域助手开发。即使是初学者,也能在几小时内完成从环境搭建到模型上线的全过程。

未来可进一步探索:

  • 更大数据集下的性能提升
  • 多轮对话记忆机制集成
  • 结合语音合成实现全感官交互
  • 部署为Web服务供多人访问

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 6:35:42

10分钟快速上手NBA数据获取:nba_api终极使用指南

10分钟快速上手NBA数据获取&#xff1a;nba_api终极使用指南 【免费下载链接】nba_api An API Client package to access the APIs for NBA.com 项目地址: https://gitcode.com/gh_mirrors/nb/nba_api 想要轻松获取NBA官方统计数据却不知从何入手&#xff1f;nba_api是您…

作者头像 李华
网站建设 2026/4/30 4:50:17

Windows补丁集成完整指南:打造最新系统镜像的终极方案

Windows补丁集成完整指南&#xff1a;打造最新系统镜像的终极方案 【免费下载链接】Win_ISO_Patching_Scripts Win_ISO_Patching_Scripts 项目地址: https://gitcode.com/gh_mirrors/wi/Win_ISO_Patching_Scripts 在Windows系统部署过程中&#xff0c;手动安装数十个补丁…

作者头像 李华
网站建设 2026/5/6 18:16:07

5分钟掌握终极IP定位:ip2region快速集成实战指南

5分钟掌握终极IP定位&#xff1a;ip2region快速集成实战指南 【免费下载链接】ip2region Ip2region (2.0 - xdb) 是一个离线IP地址管理与定位框架&#xff0c;能够支持数十亿级别的数据段&#xff0c;并实现十微秒级的搜索性能。它为多种编程语言提供了xdb引擎实现。 项目地址…

作者头像 李华
网站建设 2026/5/4 18:31:31

MemcardRex究竟能做什么?5个颠覆性功能解析

MemcardRex究竟能做什么&#xff1f;5个颠覆性功能解析 【免费下载链接】memcardrex Advanced PlayStation 1 Memory Card editor 项目地址: https://gitcode.com/gh_mirrors/me/memcardrex 你是否曾经因为PS1存档损坏而痛心疾首&#xff1f;是否在不同模拟器间迁移存档…

作者头像 李华
网站建设 2026/5/2 7:35:12

MemcardRex完整指南:玩转PS1经典游戏存档管理

MemcardRex完整指南&#xff1a;玩转PS1经典游戏存档管理 【免费下载链接】memcardrex Advanced PlayStation 1 Memory Card editor 项目地址: https://gitcode.com/gh_mirrors/me/memcardrex 还在为PS1游戏存档的管理而烦恼吗&#xff1f;MemcardRex作为一款专业的Play…

作者头像 李华
网站建设 2026/5/7 0:18:11

HY-MT1.5-1.8B质量评估:BLEU分数提升技巧

HY-MT1.5-1.8B质量评估&#xff1a;BLEU分数提升技巧 1. 引言 随着多语言交流需求的不断增长&#xff0c;高质量、低延迟的翻译模型成为自然语言处理领域的重要研究方向。混元翻译模型&#xff08;Hunyuan-MT&#xff09;系列在持续迭代中推出了轻量级高性能版本——HY-MT1.5…

作者头像 李华