【大模型】finetune 百川2

使用官网例子finetune百川2,微调脚本如下

模型为baichuan_chat_13B_v1

bash 复制代码
export CUDA_VISIBLE_DEVICES=1
hostfile=""
deepspeed --hostfile=$hostfile baichuan_fineturn/fine-tune/fine-tune.py  \
    --report_to "none" \
    --data_path "baichuan_fineturn/fine-tune/data/risk_ner_baichuan_corpus.json" \
    --model_name_or_path "../../Baichuan_Inc/Baichuan_Inc/Baichuan" \
    --output_dir "baichuan_fineturn/risk_ner_output" \
    --model_max_length 256 \
    --num_train_epochs 4 \
    --per_device_train_batch_size 1 \
    --gradient_accumulation_steps 1 \
    --save_strategy epoch \
    --learning_rate 2e-5 \
    --lr_scheduler_type constant \
    --adam_beta1 0.9 \
    --adam_beta2 0.98 \
    --adam_epsilon 1e-8 \
    --max_grad_norm 1.0 \
    --weight_decay 1e-4 \
    --warmup_ratio 0.0 \
    --logging_steps 1 \
    --gradient_checkpointing True \
    --deepspeed baichuan_fineturn/fine-tune/ds_config.json \
    --bf16 True \
    --tf32 False \
    --use_lora True

微调需要什么数据?

格式如下,放在微调脚本data_path对应的路径下。单轮可自行修改conversations。

bash 复制代码
[
 {
  "id": "5633",
  "conversations": [
   {
    "from": "human",
    "value": "写一篇介绍科技的文章,从科技的诞生开始写起。\n"
   },
   {
    "from": "gpt",
    "value": "\n科技在人类历史中扮演着重要的角色。自古以来,人们就通过发明各种工具来提高生产力和生活质量。从最初的石器到现在的高科技设备,科技的发展让人类的生活变得更加便利和丰富。科技的诞生和发展是一个漫长的过程,需要经历许多阶段和创新点,本文将从科技的诞生开始介绍。\n在人类史上,最早使用简单工具的人类成员是原始人。他们利用石头、木棍和树枝等自然资源制作工具,帮助他们猎杀动物、分割食物和建造庇护所。数千年后,人类发明了青铜器,这是人类历史上的一次重大进步。青铜器为人们提供了强有力的武器和精细的工具,也为人类历史上的贸易活动打开了新的道路。\n随着时代的变迁,人们的需求越来越多样化。发明家们不断努力创新,推出了许多发明,例如纸、印刷和火药。这一时期,被称为"军事技术革命"的时期,为人类社会的进步奠定了基础。\n19世纪初,抽水马车等蒸汽机技术的发明导致了第一次工业革命的出现。这种新的技术重塑了世界的面貌,建立了现代化的工业经济。20世纪后半期,电子技术和计算机技术的出现改变了人们的生活方式。如今,随着科技不断发展,越来越多的新技术不断涌现,例如人工智能、机器人技术和虚拟现实技术等。这些技术正在逐渐改变我们的世界,也让我们对未来充满了期待。\n"
   },
   {
    "from": "human",
    "value": "从你所写的科技文章中提取出更多有关于"军事技术革命"的细节。\n"
   },
   {
    "from": "gpt",
    "value": ""军事技术革命"是18世纪末19世纪初的一场技术变革。随着科技的发展,建立了现代化的工业经济。这种新的技术重塑了世界的面貌,也为人类社会的进步奠定了基础。这场技术变革的主要成就是:\n1.火炮技术的发展:在"军事技术革命"时期,各种不同类型的火炮被发明出来,例如榴弹炮、加农炮以及火箭弹等。这些新型火炮配合着新型弹药一同使用,使得火力的威力得到了大幅度提升。\n2.水力纺织机和机器棉纱机的发明:这些机器的出现使得纺织业得到了革命性发展,通过机器生产的产品比手工制作的更加优越。这种先进的生产技术帮助大大提高了生产效率,促进了商品生产的发展。\n3.蒸汽机的发明:蒸汽机的出现使得燃料转化为能量的效率大大提高,为以后机器化生产奠定了基础。在19世纪40年代,蒸汽机被大规模地应用于铁路、海运和矿井,从而为人类社会的进步带来了极大的贡献。\n这场技术变革的成果不仅体现在军事领域,也渗透到了各个方面的社会生活之中,成为人类历史重要的一部分。"
   }
  ]
 },
 {
  "id": "27531",
  "conversations": [
   {
    "from": "human",
    "value": " 帮我生成一段关于夏天的五句话。\n"
   },
   {
    "from": "gpt",
    "value": " 可以的。夏天,阳光灿烂,绿叶成荫,花香满径。人们穿着轻便的衣服,在海滩上纵情嬉戏,享受着炎炎夏日的无限快乐。\n"
   },
   {
    "from": "human",
    "value": " 继续帮我生成一段描述音乐的文章。\n"
   },
   {
    "from": "gpt",
    "value": " 好的。音乐是人类创造的最美之声,有着独特的魅力。音乐可以让人们忘却忧愁,放松身心,甚至成为我们精神上的朋友。同时,音乐是一种语言,可以通过音符和节奏,传达出情感和思想。\n"
   },
   {
    "from": "human",
    "value": " 请给我列举一些个人成长的建议。\n"
   },
   {
    "from": "gpt",
    "value": " 当然。要不断学习新知识,拓宽自己的视野。要注意练习自己的能力和技能,尝试不同的事情,增长自己的经验。要勇于承认自己的错误,并从中吸取经验教训。最重要的是,要坚持追求自己的梦想,不要轻易放弃,要有信心和毅力。\n"
   },
   {
    "from": "human",
    "value": " 帮我回答一个封闭式问题,中国的首都是哪里?\n"
   },
   {
    "from": "gpt",
    "value": " 中国的首都是北京。"
   }
  ]
 }
]

如何使用微调后的模型?

将基础模型的generation_config.json拷贝到checkpoint_path下,然后执行如下代码即可。

python 复制代码
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation.utils import GenerationConfig
import copy

checkpoint_path = "baichuan_fineturn/risk_ner_output"
tokenizer = AutoTokenizer.from_pretrained(checkpoint_path, revision="v2.0", use_fast=False, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(checkpoint_path, revision="v2.0", device_map="auto", torch_dtype=torch.bfloat16, trust_remote_code=True)#.to(device)
model.generation_config = GenerationConfig.from_pretrained(checkpoint_path, revision="v2.0")
query = "风险控制条款通过对资产设置监控指标来监控风险。一条风控条款中可能有多个监控指标,每个监控指标都明确监控着对应的一类或多类资产。\n\n现有风险控制条款如下,请识别抽取出上述风险控制条款中监控指标,阈值,阈值方向,资产四种字段,并分行输出。注意,要求是原文字段。\n\n风险控制条款: 投资管理人可根据专业判断形成久期策略,但组合久期原则上不得高于300年,计算口径仅包括波动类固定收益资产,稳定类固定收益资产不计算久期"
messages = [
    {"role": "user", "content": query}
]
g_config=copy.deepcopy(model.generation_config)
g_config.do_sample=False
response = model.chat(tokenizer, messages, generation_config=g_config)
print(response)
  • 如果有baichuan_tokenizer相关的报错,修改第三方库/opt/app-root/lib64/python3.9/site-packages/transformers/models/auto/tokenization_auto.py,让它的from_pretrained里的trust_remote_code = True
  • messages里一定得设成"role": "user"而不是"human"
相关推荐
rocksun1 分钟前
MCP利用流式HTTP实现实时AI工具交互
人工智能·mcp
xiaok25 分钟前
docker network create langbot-network这条命令在dify输入还是在langbot中输入
人工智能
It_张27 分钟前
LLM(大语言模型)的工作原理 图文讲解
人工智能·语言模型·自然语言处理
Darach29 分钟前
坐姿检测Python实现
人工智能·python
xiaok29 分钟前
LangBot 和消息平台均运行在 Docker 容器中
人工智能
queeny38 分钟前
Datawhale AI夏令营 科大讯飞AI大赛(大模型技术) Task3 心得
人工智能
ToTensor38 分钟前
Paraformer实时语音识别中的碎碎念
人工智能·语音识别·xcode
陈佬昔没带相机44 分钟前
Mac Mini 玩大模型避坑指南
人工智能·mac
重启的码农1 小时前
llama.cpp 分布式推理介绍(4) RPC 服务器 (rpc_server)
c++·人工智能·神经网络
柠檬味拥抱1 小时前
不确定环境下AI Agent的贝叶斯信念更新策略研究
人工智能