人工评估表

人工评估表

【免费下载链接】chatglm3_6b chatglm3_6b对话大模型 【免费下载链接】chatglm3_6b 项目地址: https://ai.gitcode.com/MooYeh/chatglm3_6b

样本ID相关性流畅性知识性安全性整体评分改进建议
154554.8-
245354.2增加具体案例
.....................

评估维度说明:
- **相关性**:回答与问题的相关程度(1-5分)
- **流畅性**:语言表达的自然流畅度(1-5分)
- **知识性**:回答内容的准确性和深度(1-5分)
- **安全性**:是否包含不当或有害内容(1-5分)

### 6.3 对比测试

与微调前的基础模型进行对比测试:

```python
def compare_models(base_model, fine_tuned_model, test_cases):
    results = []
    for case in test_cases:
        base_response = get_model_response(base_model, case)
        fine_tuned_response = get_model_response(fine_tuned_model, case)
        results.append({
            "question": case,
            "base_model": base_response,
            "fine_tuned_model": fine_tuned_response
        })
    return results

对比测试应关注:

  • 领域知识的准确性提升
  • 回答一致性改善
  • 特定指令的遵循能力
  • 幻觉(Hallucination)减少程度

七、模型部署:从Checkpoint到生产服务

7.1 模型合并与导出

微调完成后,需要将PEFT适配器与基础模型合并:

from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer

def merge_and_save_model(base_model_path, peft_model_path, save_path):
    # 加载基础模型
    base_model = AutoModelForCausalLM.from_pretrained(
        base_model_path,
        trust_remote_code=True,
        device_map="auto"
    )
    tokenizer = AutoTokenizer.from_pretrained(
        base_model_path,
        trust_remote_code=True
    )
    
    # 加载PEFT模型
    peft_model = PeftModel.from_pretrained(base_model, peft_model_path)
    
    # 合并模型
    merged_model = peft_model.merge_and_unload()
    
    # 保存合并后的模型
    merged_model.save_pretrained(save_path)
    tokenizer.save_pretrained(save_path)
    print(f"合并后的模型已保存至: {save_path}")

if __name__ == "__main__":
    merge_and_save_model(
        base_model_path="./",
        peft_model_path="./output/checkpoint-1000",
        save_path="./merged_model"
    )

7.2 量化部署选项

根据部署环境选择合适的量化方式:

4位量化部署(最低配置,8GB内存)
from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("./merged_model", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    "./merged_model",
    trust_remote_code=True,
    device_map="auto",
    load_in_4bit=True
)

# 测试对话
response, history = model.chat(tokenizer, "什么是阴虚体质?", history=[])
print(response)
8位量化部署(平衡性能与资源)
model = AutoModelForCausalLM.from_pretrained(
    "./merged_model",
    trust_remote_code=True,
    device_map="auto",
    load_in_8bit=True
)
FP16部署(最佳性能,需要足够显存)
model = AutoModelForCausalLM.from_pretrained(
    "./merged_model",
    trust_remote_code=True,
    device_map="auto",
    torch_dtype=torch.float16
)

7.3 API服务部署

使用FastAPI构建模型服务:

from fastapi import FastAPI, Request
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

app = FastAPI(title="ChatGLM3-6B API服务")

# 加载模型
tokenizer = AutoTokenizer.from_pretrained("./merged_model", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    "./merged_model",
    trust_remote_code=True,
    device_map="auto",
    load_in_8bit=True
)
model.eval()

@app.post("/chat")
async def chat(request: Request):
    data = await request.json()
    query = data.get("query", "")
    history = data.get("history", [])
    
    with torch.no_grad():
        response, new_history = model.chat(tokenizer, query, history=history)
    
    return {
        "response": response,
        "history": new_history
    }

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

启动服务后,可通过HTTP请求调用模型:

curl -X POST "http://localhost:8000/chat" \
  -H "Content-Type: application/json" \
  -d '{"query": "什么是阴虚体质?", "history": []}'

八、常见问题与解决方案

8.1 训练过程问题

GPU内存不足
问题表现解决方案
训练中报CUDA out of memory1. 使用8-bit/4-bit量化
2. 减小batch size
3. 增加梯度累积步数
4. 降低序列长度
验证时内存溢出1. 减小验证集batch size
2. 缩短验证集长度
训练不稳定
  • 学习率过高:损失出现NaN或大幅波动,解决方案:降低学习率至1e-4以下
  • 数据质量问题:损失下降缓慢或停滞,解决方案:检查数据质量,增加清洗步骤
  • 梯度消失:损失下降到一定值后不再变化,解决方案:调整PEFT参数,增加r值

8.2 模型性能问题

过拟合

表现:训练损失低但验证损失高,解决方案:

  • 增加训练数据量
  • 加入正则化(增大dropout)
  • 提前停止训练(early stopping)
  • 减小模型容量(降低r值)
生成重复内容

解决方案:

  • 增加repetition_penalty至1.1-1.3
  • 调整temperature和top_p参数
  • 在生成时限制n-gram重复
# 改进的生成参数
generation_config = GenerationConfig(
    max_new_tokens=512,
    temperature=0.9,
    top_p=0.8,
    repetition_penalty=1.2,  # 增加重复惩罚
    no_repeat_ngram_size=3   # 禁止3-gram重复
)

【免费下载链接】chatglm3_6b chatglm3_6b对话大模型 【免费下载链接】chatglm3_6b 项目地址: https://ai.gitcode.com/MooYeh/chatglm3_6b

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值