Qwen3-1.7B 本地部署微调
时间: 2025-07-01 16:04:22 浏览: 14
### 本地部署与微调 Qwen3-1.7B 模型的方法
#### 环境配置
在开始部署和微调 Qwen3-1.7B 模型之前,需要确保环境已正确配置。首先安装必要的库,包括 `unsloth`, `bitsandbytes`, `accelerate`, `xformers`, `peft`, `trl`, `triton`, `cut_cross_entropy`, `unsloth_zoo` 等工具包,以及 `sentencepiece`, `protobuf`, `datasets`, `huggingface_hub`, `hf_transfer` 等依赖库[^2]。
```bash
!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
```
#### 加载模型
加载预训练的 Qwen3-1.7B 模型及其分词器,并使用 4-bit 量化版本以减少显存占用。设置最大序列长度为 2048,启用 4-bit 量化并禁用 8-bit 量化,同时采用 LoRA 方式进行微调。
```python
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 方式微调
)
```
#### 数据集准备
为了微调模型,需要准备一个特定领域的数据集。例如,在构建猫娘角色时,可以创建包含用户输入和对应回复的数据集。每个样本应包含角色(user 或 assistant)和内容(具体的文本信息)。
```json
[
{"role": "user", "content": "我不爱你了!哼!"},
{"role": "assistant", "content": "喵~你真的不爱你了吗?那我可要伤心了哦..."}
]
```
#### 模型微调
使用 Hugging Face 的 `Trainer` 类来执行微调任务。定义训练参数,如学习率、批量大小、训练轮数等,并指定输出目录和其他选项。通过将模型包装成 `get_peft_model` 来应用 PEFT(Parameter Efficient Fine-Tuning)技术,从而仅调整部分参数而保持大部分不变。
```python
from transformers import TrainingArguments, Trainer
from peft import get_peft_model
# 定义训练参数
training_args = TrainingArguments(
output_dir="./results",
learning_rate=1e-4,
per_device_train_batch_size=8,
num_train_epochs=3,
weight_decay=0.01,
)
# 应用 PEFT 技术
peft_config = LoraConfig(task_type="CAUSAL_LM", r=8, lora_alpha=16, target_modules=["q_proj", "v_proj"], lora_dropout=0.1)
model = get_peft_model(model, peft_config)
# 创建 Trainer 并开始训练
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
data_collator=lambda data: dict(tokenizer.pad(data, padding=True, return_tensors="pt")),
)
trainer.train()
```
#### 模型导出与部署
完成微调后,将模型保存至指定路径以便后续使用或部署。可以通过 `save_pretrained` 方法将模型和分词器分别保存下来。此外,还可以利用 Hugging Face Hub 提供的功能将模型上传至云端供他人下载和使用。
```python
# 保存模型和分词器
model.save_pretrained("./fine_tuned_qwen3")
tokenizer.save_pretrained("./fine_tuned_qwen3")
# 上传至 Hugging Face Hub
model.push_to_hub("my-fine-tuned-qwen3")
tokenizer.push_to_hub("my-fine-tuned-qwen3")
```
#### 推理测试
最后,可以在本地环境中加载经过微调的模型并对新输入进行预测。根据实际应用场景选择合适的解码策略(如贪婪搜索、束搜索等),并通过简单的接口调用来获取结果。
```python
# 加载微调后的模型
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="./fine_tuned_qwen3",
max_seq_length=2048,
load_in_4bit=True,
)
# 进行推理
input_text = "我不爱你了!哼!"
inputs = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=50)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
```
阅读全文
相关推荐

















