217 lines
7.0 KiB
Markdown
217 lines
7.0 KiB
Markdown
---
|
||
license: Apache License 2.0
|
||
language:
|
||
- zh
|
||
tasks:
|
||
- text-generation
|
||
frameworks: PyTorch
|
||
base_model:
|
||
- Qwen/Qwen2.5-0.5B-Instruct
|
||
base_model_relation: finetune
|
||
widgets:
|
||
- version: 1
|
||
task: text-generation
|
||
inputs:
|
||
- type: text
|
||
displayType: TextArea
|
||
validator:
|
||
max_words: 128
|
||
output:
|
||
displayType: Text
|
||
displayValueMapping: text
|
||
examples:
|
||
- name: 1
|
||
title: 示例1
|
||
inputs:
|
||
- name: text
|
||
data: 光的速度是多少?
|
||
datasets:
|
||
- wuyonghui0810/General-Knowledge
|
||
tags:
|
||
- 文本生成
|
||
- 科技探索
|
||
- ' 永辉'
|
||
---
|
||
# Qwen2.5-0.5B-Instruct 微调模型
|
||
|
||
## 模型概述
|
||
|
||
这是一个基于 Qwen2.5-0.5B-Instruct 模型的微调版本,使用 LoRA (低秩适应) 训练方法在特定领域数据上进行了定制化训练,涵盖数学、英语、科学、化学、物理等1000条自定义数据进行训练,以增强模型在特定任务上的性能。
|
||
|
||
## 模型详情
|
||
|
||
- **基础模型**: Qwen/Qwen2.5-0.5B-Instruct
|
||
- **模型类型**: qwen2_5
|
||
- **训练方法**: LoRA 微调
|
||
- **模板**: qwen2_5
|
||
- **模型大小**: 0.5B 参数
|
||
- **检查点**: checkpoint-186-merged
|
||
- **训练日期**: 2025-08-05
|
||
|
||
## 训练配置
|
||
|
||
- **最大序列长度**: 1024 个 token
|
||
- **学习率**: 1e-4
|
||
- **梯度累积步数**: 16
|
||
- **训练轮数**: 3
|
||
- **最终训练损失**: 0.0802
|
||
- **最终评估损失**: 0.00013508
|
||
|
||
## 调用方法
|
||
|
||
### 快速开始
|
||
这里提供了一个使用 wuyonghui0810/text-generation模型的代码片段,展示了如何加载分词器和模型以及如何生成内容。
|
||
|
||
```python
|
||
from modelscope import AutoModelForCausalLM, AutoTokenizer
|
||
model_name = "wuyonghui0810/text-generation"
|
||
model = AutoModelForCausalLM.from_pretrained(
|
||
model_name,
|
||
torch_dtype="auto",
|
||
device_map="auto"
|
||
)
|
||
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
||
prompt = "光的速度是多少?"
|
||
messages = [
|
||
{"role": "system", "content": "You are Vkey, created by yonghui, You are a helpful assistant."},
|
||
{"role": "user", "content": prompt}
|
||
]
|
||
text = tokenizer.apply_chat_template(
|
||
messages,
|
||
tokenize=False,
|
||
add_generation_prompt=True
|
||
)
|
||
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
|
||
generated_ids = model.generate(
|
||
**model_inputs,
|
||
max_new_tokens=512
|
||
)
|
||
generated_ids = [
|
||
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
|
||
]
|
||
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
|
||
print(response)
|
||
```
|
||
### 训练前
|
||
光的传播速度是多少:
|
||
- 在标准条件下,光的传播速度约为 299792458 米/秒。这个速度是恒定不变的,无论光源的位置、距离多远,都保持不变。这与物理定律和实验数据一致,证明了光速是宇宙中的基本物理常数。
|
||
|
||
### 训练后
|
||
- <<< 光的传播速度是多少
|
||
- <think>
|
||
- 用户问的是关于物理的问题:'光的传播速度是多少'。我需要根据物理学原理给出准确的答案。对于这个问题,正确的回答是:光在真空中的传播速度约为299,792,458米/秒。。
|
||
- </think>
|
||
- <answer>
|
||
- 光在真空中的传播速度约为299,792,458米/秒。
|
||
- </answer>
|
||
- <<< 光的速度
|
||
- <think>
|
||
- 用户问的是关于物理的问题:'光的速度'。我需要根据物理学原理给出准确的答案。对于这个问题,正确的回答是:光在真空中的速度约为299,792,458米/秒。。
|
||
- </think>
|
||
- <answer>
|
||
- 光在真空中的速度约为299,792,458米/秒。
|
||
- </answer>
|
||
|
||
## 微调方法
|
||
### 使用 Swift 进行训练认知微调
|
||
|
||
```bash
|
||
CUDA_VISIBLE_DEVICES=0 \
|
||
swift sft \
|
||
--torch_dtype 'float16' \
|
||
--model 'Qwen/Qwen2.5-0.5B-Instruct' \
|
||
--model_type 'qwen2_5' \
|
||
--template 'qwen2_5' \
|
||
--system 'You are Vkey, created by yonghui. You are a helpful assistant.' \
|
||
--dataset '/mnt/workspace/myipynb/transformers/datasets/training_data.jsonl' \
|
||
--max_length '1024' \
|
||
--init_weights 'True' \
|
||
--learning_rate '1e-4' \
|
||
--gradient_accumulation_steps '16' \
|
||
--eval_steps '500' \
|
||
--truncation_strategy 'delete' \
|
||
--report_to 'tensorboard' \
|
||
--add_version False \
|
||
--output_dir /mnt/workspace/myipynb/transformers/ms-swift/output/Qwen2.5-0.5B-Instruct/v0-20250805-170718 \
|
||
--logging_dir /mnt/workspace/myipynb/transformers/ms-swift/output/Qwen2.5-0.5B-Instruct/v0-20250805-170718/runs \
|
||
--ignore_args_error True \
|
||
--device_map 'cpu' \
|
||
> /mnt/workspace/myipynb/transformers/ms-swift/output/Qwen2.5-0.5B-Instruct/v0-20250805-170718/runs/run.log 2>&1 &
|
||
```
|
||
|
||
### 使用 swift 框架进行推理
|
||
|
||
```bash
|
||
CUDA_VISIBLE_DEVICES=0 \
|
||
swift infer \
|
||
--model /mnt/workspace/myipynb/transformers/ms-swift/output/Qwen2.5-0.5B-Instruct/v0-20250805-170718/checkpoint-186-merged \
|
||
--merge_lora true \
|
||
--infer_backend vllm \
|
||
--temperature 0 \
|
||
--max_new_tokens 2048
|
||
```
|
||
|
||
### 使用 swift 框架进行导出
|
||
--adapters 参数:用于导出适配器权重(如 LoRA),需要配合基础模型使用
|
||
--model 参数:用于导出完整模型,可以直接使用
|
||
由于 checkpoint-186-merged 是一个完整的合并模型(包含基础模型和适配器权重),所以应该使用 --model 参数。
|
||
|
||
方案一(使用的这个):
|
||
```bash
|
||
CUDA_VISIBLE_DEVICES=0 swift export \
|
||
--model /mnt/workspace/myipynb/transformers/ms-swift/output/Qwen2.5-0.5B-Instruct/v0-20250805-170718/checkpoint-186-merged \
|
||
--push_to_hub true \
|
||
--hub_model_id 'wuyonghui0810/text-generation' \
|
||
--hub_token 'ms-c9f5013e-8343-4d26-a53b-4d5a75f8a973' \
|
||
--use_hf false
|
||
```
|
||
|
||
方案二:
|
||
```bash
|
||
CUDA_VISIBLE_DEVICES=0 swift export \
|
||
--adapters /mnt/workspace/myipynb/transformers/ms-swift/output/Qwen2.5-0.5B-Instruct/v0-20250805-170718/checkpoint-186 \
|
||
--push_to_hub true \
|
||
--hub_model_id 'wuyonghui0810/text-generation' \
|
||
--hub_token 'ms-c9f5013e-8343-4d26-a53b-4d5a75f8a973' \
|
||
--use_hf false
|
||
```
|
||
|
||
### 关键推理参数
|
||
|
||
- `--model`: 用于导出完整模型,可以直接使用(或者--adapters:训练好的适配器/LoRA 权重路径)
|
||
- `--merge_lora true`: 将 LoRA 权重与基础模型合并
|
||
- `--infer_backend vllm`: 使用 vLLM 进行推理加速
|
||
- `--temperature 0`: 确定性输出(贪婪解码)
|
||
- `--max_new_tokens 2048`: 最大生成 token 数量
|
||
|
||
## 性能表现
|
||
|
||
- **评估样本每秒处理数**: 18.64
|
||
- **训练样本每秒处理数**: 5.045
|
||
- **内存使用**: 模型权重约 0.9276 GB
|
||
- **推理速度**: 使用 vLLM 和 CUDA 图形优化
|
||
|
||
## 系统要求
|
||
|
||
- **GPU**: 支持 CUDA 的 GPU(推荐)
|
||
- **显存**: 至少 4-8GB 以获得最佳性能
|
||
- **软件环境**:
|
||
- Python 3.11+
|
||
- Swift 框架
|
||
- vLLM 库
|
||
- CUDA 工具包
|
||
|
||
## 模型能力
|
||
此微调模型设计用于:
|
||
|
||
- 回答特定领域问题
|
||
- 准确遵循指令
|
||
- 提供一致且确定性的响应(temperature=0时)
|
||
- 处理长上下文输入(最多8192个token)
|
||
|
||
## 局限性
|
||
- 当 temperature=0 时响应是确定性的
|
||
- 性能取决于微调数据的质量
|
||
- 在训练领域外可能泛化能力有限
|
||
|
||
*如需技术支持或有关此模型的问题,请参考模型目录中包含的训练日志和配置文件。* |