初始化项目,由ModelHub XC社区提供模型
Model: wuyonghui0810/text-generation Source: Original Platform
This commit is contained in:
217
README.md
Normal file
217
README.md
Normal file
@@ -0,0 +1,217 @@
|
||||
---
|
||||
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 时响应是确定性的
|
||||
- 性能取决于微调数据的质量
|
||||
- 在训练领域外可能泛化能力有限
|
||||
|
||||
*如需技术支持或有关此模型的问题,请参考模型目录中包含的训练日志和配置文件。*
|
||||
Reference in New Issue
Block a user