Chatglm2-6b模型相关问题

2023-10-29

1. Chatglm2-6b模型p-tuning后推理答非所问

据ChatGLM-6B b站的说法:【官方教程】ChatGLM-6B 微调:P-Tuning,LoRA,Full parameter大概意思就是练了后面的前面就忘了。

  • 解决
    ptuning训练的权重本质是练model.transformer.prefix_encoder
    思路就是把老的prefix_encoder权重和ptuning训练的权重混合一下,再重新注入model.transformer.prefix_encoder中。
    经过我的测试老权重0.2,新权重0.8,这样加权平均后的模型能打招呼并保留ptuning训练的能力
    不过这种平均值混合权重的方法比较玄学,不一定有用
    脚本:解决脚本

2. ChatGLM2-6b ptuning

  • 多卡训练.bash
```bash
export PRE_SEQ_LEN=128
export LR=2e-2
export NUM_GPUS=1
# export WANDB_MODE=dryrun
export WANDB_DISABLED=true

torchrun --standalone --nnodes=1 --nproc-per-node=$NUM_GPUS ptuning/main.py \
    --do_train \
    --train_file data/AdvertiseGen/train.json \
    --validation_file data/AdvertiseGen/dev.json \
    --preprocessing_num_workers 4 \
    --prompt_column content \
    --response_column summary \
    --overwrite_cache \
    --model_name_or_path /home/geekplusa/ai/models/bigmodels/prepare_models/chatglm/chatglm2-6b-32k-int4 \
    --output_dir /home/geekplusa/ai/models/bigmodels/train_models/chatglm/chatglm2/adgen-chatglm2-6b-pt-$PRE_SEQ_LEN-$LR \
    --overwrite_output_dir \
    --max_source_length 64 \
    --max_target_length 256 \
    --per_device_train_batch_size 1 \
    --per_device_eval_batch_size 1 \
    --gradient_accumulation_steps 16 \
    --predict_with_generate \
    --max_steps 2000 \
    --logging_steps 10 \
    --save_steps 500 \
    --learning_rate $LR \
    --pre_seq_len $PRE_SEQ_LEN \
    --quantization_bit 4
```
  • 多卡训练.后台运行
```bash
export PRE_SEQ_LEN=128
export LR=2e-2
export NUM_GPUS=4
# export WANDB_MODE=dryrun
export WANDB_DISABLED=true

nohup torchrun --standalone --nnodes=1 --nproc-per-node=$NUM_GPUS ptuning/main.py     --do_train     --train_file data/AdvertiseGen/train_min.json     --validation_file data/AdvertiseGen/dev_min.json     --preprocessing_num_workers 4     --prompt_column content     --response_column summary     --overwrite_cache     --model_name_or_path models/chatglm2-6b-int4     --output_dir models/adgen-chatglm2-6b-int4-pt-128-2e-e     --overwrite_output_dir     --max_source_length 64     --max_target_length 256     --per_device_train_batch_size 1     --per_device_eval_batch_size 1     --gradient_accumulation_steps 16     --predict_with_generate     --max_steps 100     --logging_steps 10     --save_steps 50     --learning_rate $LR     --pre_seq_len $PRE_SEQ_LEN     --quantization_bit 4 > log 2>&1 &
```
  • 单卡训练
```bash
export WANDB_DISABLED=true
export PRE_SEQ_LEN=128
export LR=2e-2

CUDA_VISIBLE_DEVICES=0 python ptuning/main.py \
    --do_train \
    --train_file data/AdvertiseGen/train_min.json \
    --validation_file data/AdvertiseGen/val_min.json \
    --prompt_column content \
    --response_column summary \
    --overwrite_cache \
    --model_name_or_path /home/geekplusa/ai/models/bigmodels/prepare_models/chatglm/chatglm2-6b-int4 \
    --output_dir /home/geekplusa/ai/models/bigmodels/train_models/chatglm/chatglm2/adgen-chatglm2-6b-pt-医院1-$PRE_SEQ_LEN-$LR \
    --overwrite_output_dir \
    --max_source_length 64 \
    --max_target_length 1000 \
    --per_device_train_batch_size 1 \
    --per_device_eval_batch_size 1 \
    --gradient_accumulation_steps 16 \
    --predict_with_generate \
    --max_steps 1 \
    --logging_steps 10 \
    --save_steps 1 \
    --learning_rate 2e-2 \
    --pre_seq_len 128 \
    --quantization_bit 4
```

3. ChatGLM2-6b部署

这里包含基础模型单卡部署、基础模型多卡部署、ptuning模型单卡部署、ptuning模型多卡部署
参见下面的脚本web_demo2.py

from transformers import AutoModel, AutoTokenizer
from transformers import AutoConfig
import streamlit as st
import os


st.set_page_config(
    page_title="ChatGLM2-6b 演示",
    page_icon=":robot:",
    layout='wide'
)


@st.cache_resource
def get_model_onegpu():
    tokenizer = AutoTokenizer.from_pretrained("models/chatglm2-6b-int4", trust_remote_code=True)
    model = AutoModel.from_pretrained("models/chatglm2-6b-int4", trust_remote_code=True).cuda()
    return tokenizer, model

@st.cache_resource
def get_model_mitugpu():
    tokenizer = AutoTokenizer.from_pretrained("models/chatglm2-6b-int4", trust_remote_code=True)
    from utils import load_model_on_gpus
    model = load_model_on_gpus("models/chatglm2-6b-int4", num_gpus=4)
    return tokenizer, model

@st.cache_resource
def get_model_ptuning_onegpu():
    tokenizer = AutoTokenizer.from_pretrained("models/chatglm2-6b-int4", trust_remote_code=True)
    import torch
    CHECKPOINT_PATH = "models/gukai/checkpoint-500/"
    config = AutoConfig.from_pretrained("models/chatglm2-6b-int4", trust_remote_code=True, pre_seq_len=128)
    model = AutoModel.from_pretrained("models/chatglm2-6b-int4", config=config, trust_remote_code=True)
    prefix_state_dict = torch.load(os.path.join(CHECKPOINT_PATH, "pytorch_model.bin"))
    new_prefix_state_dict = {}
    for k, v in prefix_state_dict.items():
        if k.startswith("transformer.prefix_encoder."):
            new_prefix_state_dict[k[len("transformer.prefix_encoder."):]] = v
    model.transformer.prefix_encoder.load_state_dict(new_prefix_state_dict)
    model = model.quantize(4)
    model = model.cuda()
    return tokenizer, model

@st.cache_resource
def get_model_ptuning_mutigpu():
    tokenizer = AutoTokenizer.from_pretrained("models/chatglm2-6b-int4", trust_remote_code=True)
    import torch
    from utils import load_model_on_gpus
    CHECKPOINT_PATH = "models/gukai/checkpoint-500/"
    prefix_state_dict = torch.load(os.path.join(CHECKPOINT_PATH, "pytorch_model.bin"))
    #prefix_state_dict = torch.load(os.path.join(CHECKPOINT_PATH, "pytorch_model.bin"), map_location=lambda storage, loc: storage.cuda(1))
    new_prefix_state_dict = {}
    for k, v in prefix_state_dict.items():
        if k.startswith("transformer.prefix_encoder."):
            new_prefix_state_dict[k[len("transformer.prefix_encoder."):]] = v
    model = load_model_on_gpus("models/chatglm2-6b-int4", num_gpus=4, pre_seq_len=128)
    model.transformer.prefix_encoder.load_state_dict(new_prefix_state_dict)
    model.transformer.prefix_encoder.float()
    model = model.quantize(4)
    #model = model.cuda()
    return tokenizer, model


@st.cache_resource
def get_model():
    tokenizer = AutoTokenizer.from_pretrained("models/gukai/checkpoint-500", trust_remote_code=True)
    model = AutoModel.from_pretrained("models/gukai/checkpoint-500", trust_remote_code=True).cuda()
    # 多显卡支持,使用下面两行代替上面一行,将num_gpus改为你实际的显卡数量
    # from utils import load_model_on_gpus
    # model = load_model_on_gpus("THUDM/chatglm2-6b", num_gpus=2)
    model = model.eval()
    return tokenizer, model


#tokenizer, model = get_model()

tokenizer, model = get_model_ptuning_mutigpu()


st.title("ChatGLM2-6B")

max_length = st.sidebar.slider(
    'max_length', 0, 32768, 8192, step=1
)
top_p = st.sidebar.slider(
    'top_p', 0.0, 1.0, 0.8, step=0.01
)
temperature = st.sidebar.slider(
    'temperature', 0.0, 1.0, 0.8, step=0.01
)

if 'history' not in st.session_state:
    st.session_state.history = []

if 'past_key_values' not in st.session_state:
    st.session_state.past_key_values = None

for i, (query, response) in enumerate(st.session_state.history):
    with st.chat_message(name="user", avatar="user"):
        st.markdown(query)
    with st.chat_message(name="assistant", avatar="assistant"):
        st.markdown(response)
with st.chat_message(name="user", avatar="user"):
    input_placeholder = st.empty()
with st.chat_message(name="assistant", avatar="assistant"):
    message_placeholder = st.empty()

prompt_text = st.text_area(label="用户命令输入",
                           height=100,
                           placeholder="请在这儿输入您的命令")

button = st.button("发送", key="predict")

if button:
    input_placeholder.markdown(prompt_text)
    history, past_key_values = st.session_state.history, st.session_state.past_key_values
    for response, history, past_key_values in model.stream_chat(tokenizer, prompt_text, history,
                                                                past_key_values=past_key_values,
                                                                max_length=max_length, top_p=top_p,
                                                                temperature=temperature,
                                                                return_past_key_values=True):
        message_placeholder.markdown(response)

    st.session_state.history = history
    st.session_state.past_key_values = past_key_values

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chatglm2-6b模型相关问题 的相关文章

  • 一文搞懂ChatGPT 和 AIGC 到底是什么?【最强科普】

    目录 1 AIGC是什么 2 ChatGPT是什么 3 ChatGPT发展的几个阶段 4 ChatGPT能做什么 5 ChatGPT的应用场景 一 AIGC是什么 GC Generated Content 内容生成 PGC Professi
  • GPT专业应用:快速生成职位描述(JD)

    正文共 814 字 阅读大约需要 3 分钟 人力资源必备技巧 您将在3分钟后获得以下超能力 快速生成职位描述 Beezy评级 B级 经过简单的寻找 大部分人能立刻掌握 主要节省时间 推荐人 Kim 编辑者 Linda 图片由 Lexica
  • 8月热门论文丨AI Agent会是大模型的未来发展方向吗?

    过去的8月 如果让我用一个词来总结 那就是 Agent 大模型的下半场已经拉开序幕 大厂们都纷纷表态入局 Agent OpenAI创始成员Andrej Karpathy表示相比大模型 OpenAI内部目前已经关注Agent领域 亚马逊也宣布
  • 任务 01、重塑视觉艺术:Midjourney AI绘画的无限可能

    1 1 任务目标 了解什么是MidJourney MidJourney公司简介 了解生成式人工智能MidJourney原理 MidJourney 能做什么 目前市面主流的Ai绘画工具有哪些 MidJourney的商业价值与企业应用 1 2
  • 数字人解决方案——实时对话数字人源码与环境配置

    前言 1 从技术角度来看 现在的数字人就是一个缝合怪 把各种技术点都整合在一起 用来实现直播 对话等数字人 技术流程大概如下图 其实最重要的一环应该属于LLM 大型语言模型 LLM相当于一个人的意识 如果没有LLM 这一套完全没有深度 2
  • AI绘画Stable Diffusion原理之扩散模型DDPM

    前言 传送门 stable diffusion Git 论文 stable diffusion webui Git Google Colab Notebook部署stable diffusion webui Git kaggle Noteb
  • AIGC之GPT-4:GPT-4的简介与详细攻略

    AIGC之GPT 4 GPT 4的简介与详细攻略 简介 欢迎来到人工智能生成内容 AIGC 时代的新篇章 本篇博客将介绍GPT 4 Generative Pre trained Transformer 4 的核心原理 意义 亮点 技术点 缺
  • GPT专业应用:生成会议通知

    正文共 917 字 阅读大约需要 3 分钟 公务员 文秘必备技巧 您将在3分钟后获得以下超能力 快速生成会议通知 Beezy评级 B级 经过简单的寻找 大部分人能立刻掌握 主要节省时间 推荐人 Kim 编辑者 Linda 图片由Lexica
  • 【AI实战】大语言模型(LLM)有多强?还需要做传统NLP任务吗(分词、词性标注、NER、情感分类、知识图谱、多伦对话管理等)

    AI实战 大语言模型 LLM 有多强 还需要做传统NLP任务吗 分词 词性标注 NER 情感分类 多伦对话管理等 大语言模型 大语言模型有多强 分词 词性标注 NER 情感分类 多伦对话管理 知识图谱 总结 大语言模型 大语言模型 LLM
  • 数据决定AIGC的高度,什么又决定着数据的深度?

    有人曾言 数据决定人工智能发展的天花板 深以为然 随着ChatGPT等AIGC应用所展现出的强大能力 人们意识到通用人工智能的奇点正在来临 越来越多的企业开始涌入这条赛道 在AIGC浪潮席卷全球之际 数据的重要性也愈发被业界所认同 之所以会
  • In-Context Retrieval-Augmented Language Models

    本文是LLM系列文章 针对 In Context Retrieval Augmented Language Models 的翻译 上下文检索增强语言模型 摘要 1 引言 2 相关工作 3 我们的框架 4 实验细节 5 具有现成检索器的上下文
  • AIGC潮水中,重新理解低代码

    如果将一句话生成应用形容成L4级的 无人驾驶 伙伴云的 AI搭建 则更像L2 级的 辅助驾驶 作者 斗斗 出品 产业家 2023年 AIGC下的低代码赛道 暗流涌动 对于 AI搭建 的搭建效果 尤其是在场景覆盖的广度上 连我自己也感觉比较意
  • 最全最详细ChatGPT角色预设词教程,Prompt分享

    使用指南 1 可直复制使用 2 可以前往已经添加好Prompt预设的AI系统测试使用 可自定义添加使用 雅思写作考官 我希望你假定自己是雅思写作考官 根据雅思评判标准 按我给你的雅思考题和对应答案给我评分 并且按照雅思写作评分细则给出打分依
  • 法律情境扮演、逆向推理文字游戏、AIGC创作……见证AI极致生产力!

    飞桨星河社区 以飞桨和文心大模型为核心 集开放数据 开源算法 云端GPU算力及大模型开发工具于一体 在大模型范式下 为开发者提供模型与应用的高效开发环境 在成立的5年以来 已汇集660 万AI开发者 覆盖深度学习初学者 在职开发者 企业开发
  • 2023年AI领域行业洞察,看这30个统计数据就够了!

    PrimiHub 一款由密码学专家团队打造的开源隐私计算平台 专注于分享数据安全 密码学 联邦学习 同态加密等隐私计算领域的技术和内容 随着AIGC的爆火 企业越来越多地开始采用生成式人工智能 自然语言处理 NLP 和神经网络来扩展功能 增
  • 【打造优质CSDN热榜评论区】让AI给评论打分!

    大家好啊 我是豆小匠 1 专栏背景 作为CSDN的老用户 自从CSDN强调要打造优质评论区后 热榜的评论区仍旧有进步空间 因此在这个专栏会结合AI 探索一些方法来提高评论区的质量 这个专栏仅为博主的想法 作为技术学习使用 与官方无关联 2
  • AI创艺术之美:摄影绘画的未来已来

    前言 AI 与摄影绘画 在这个数字化时代的浪潮中 人工智能技术以其惊人的创造力和创新性席卷全球 从智能助手到自动驾驶 从自然语言处理到机器学习 AI正日益成为我们日常生活和各个领域不可或缺的一部分 摄影和绘画领域也不例外 AI技术为我们提供
  • 10000亿规模AIGC产业,谁会成为下一个“巨头”?

    ChatGPT的热潮带火了大语言模型 也让AIGC插上了效率的翅膀 Midjourney 妙鸭相机等产品相继走入大众用户视线 根据艾瑞咨询的预测 2023年中国AIGC产业规模约为143亿元 而随着相关生态的完善 到2030年 中国AIGC
  • LLaVA和LLaVA-Plus视觉指令微调及工具使用构建多模态智能体

    认识和理解视觉内容 以及基于人类指令对视觉世界进行推理 长久以来一直是一个具有挑战性问题 得益于大规模预训练 OpenAI 的 GPT 4V 展示了在自然语言处理任务和复杂视觉理解中令人印象深刻的能力 智源社区邀请到了LLaVA的一作柳昊天
  • 蒙牛×每日互动合作获评中国信通院2023“数据+”行业应用优秀案例

    当前在数字营销领域 品牌广告主越来越追求品效协同 针对品牌主更注重营销转化的切实需求 数据智能上市企业每日互动 股票代码 300766 发挥自身数据和技术能力优势 为垂直行业的品牌客户提供专业的数字化营销解决方案 颇受行业认可 就在不久前举

随机推荐

  • 五人合伙最佳股份分配_五人合伙股份分配协议书范本

    股份合作企业与合伙企业是当前改制 改组中倍受关注的企业组织形式 那么合伙股份转让协议书又是怎么一回事呢 以下是在小编为大家整理的合伙股份转让协议书范文 感谢您的阅读 合伙股份转让协议书范文1转让方 甲方 身份证号码 住址 受让方 甲方 身份
  • Unity制作摇杆

    1 导入UGUI与Tools资源包 Unity中就会出现两个插件 2 导入人物模型资源包全部导入完之后 3 新建Plane 把人物模型拖到场景中 4 给人物模型制作动画状态机 4 1找到人物模型动画 并将全部的动画类型设置为Genic类型
  • 串行测试 并行测试_什么是并行测试,为什么要采用它?

    串行测试 并行测试 随着技术的进步 随着组织从手动测试转向Selenium测试自动化 测试解决方案变得比以往更具可扩展性 但是 大多数组织仍在努力的领域之一是可并行运行多个测试的可伸缩性 许多公司仍在使用顺序测试方法来提供质量保证 这会浪费
  • 大学生团体天梯赛(第六届)

    题目地址 天梯赛 include
  • 深度学习8

    Generative Adversarial Network 正如我们前面所说的 GAN里面有两个重要的东西 其中一个就是Generator Generator可以是一个NN 它的输入是一个vector 它的输出是一个更高维的vector
  • JSP-javabean技术

  • ELK 4.5——加入机器学习

    如果你也是 Elaticsearch 的粉丝 或者机器学习的爱好者 你肯定不会错过这个东西 5 月份 Elaticsearch 推出了新版本 5 4 准确地说是 Elastic Stack 全家桶都更新为 5 4 了 在 X pack 中的
  • Angular input延迟防抖debounceTime

    import Component OnInit from angular core import AbstractControl FormBuilder FormGroup Validators from angular forms imp
  • 【代码复现】NER之GlobalPointer解析

    前言 在NER任务中 主要分为三类实体 嵌套实体 非嵌套实体 不连续实体 今天分享方法以end to end的方式解决前两个问题 GlbalPointer 它利用全局归一化的思路来进行命名实体识别 NER 可以无差别地识别嵌套实体和非嵌套实
  • Mysql事务---MVCC详解

    Mysql数据库事务隔离级别 SQL 标准定义了四个隔离级别 READ UNCOMMITTED 读取未提交 事务的修改 即使没有提交 对其他事务也都是可见的 事务能够读取未提交的数据 这种情况称为脏读 READ COMMITTED 读取已提
  • Jetpack学习-1-Lifecycle+Activity源码分析

    解耦是软件开发亘古不变的追求 而Lifecycle正是这一名言的体现 Android开发过程中 有些功能不可避免与页面的生命周期关联 LifeCycle作为Jetpack中具有生命周期感知姓的组件 通过感知activity fragment
  • CVE-2022-22963:Spring Cloud Function SpEL 远程代码执行漏洞

    读者需知 本文仅供学习使用 由于传播和利用此文所造成的损失均由使用者本人负责 文章作者不为此承担责任 简介 SpringCloud Function作为SpringCloud家族成员最早在2017年提出 旨在为快速发展的Serverless
  • 以太坊开发文档09 - javascriptApi

    Web3 JavaScript appAPI 为了让您的应用程序能够在以太坊上工作 您可以使用web3 js库web3提供的对象 在底层 它通过RPC调用与本地节点通信 web3 js与任何暴露RPC层的以太坊节点一起工作 web3包含et
  • Vue3 isProxy

    isProxy 检查一个对象是否是由 reactive 或者 readonly 方法创建的代理 实例
  • [计算机毕业设计]深度学习的图标型验证码识别系统

    前言 大四是整个大学期间最忙碌的时光 一边要忙着准备考研 考公 考教资或者实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度的 对本科同学来说是充满挑战 为帮助大
  • OpenGL ES 3.0 开发(一)

    什么是 OpenGLES OpenGLES 全称 OpenGL for Embedded Systems 是三维图形应用程序接口 OpenGL 的子集 本质上是一个跨编程语言 跨平台的编程接口规范 主要应用于嵌入式设备 如手机 平板等 由科
  • SpringBoot websocket + java swing 实现大文件上传与下载

    使用场景 无法直接登录服务器上传文件 使用web端上传超大文件出现超时 实现原理 上传 server端与client端建立websocket连接 client将待传文件进行分块 然后将文件的相关信息 文件名 md5值 分块大小 总块数 当前
  • 角谱衍射计算

    角谱衍射 角谱衍射计算 D F F T D FFT D FFT 即采用两次傅里叶变换 原始公式和 S
  • IP协议相关技术

    前言 其实我们在上网的时候并不是直接使用IP地址 同样IP地址还不方便记忆 这样我们就需要IP相关的技术来帮助我们通信 DNS 一开始人们使用TCP IP世界中的主机识别码来转换成具体的IP地址 这样人们就可以直接使用主机名称 但是随着网络
  • Chatglm2-6b模型相关问题

    Chatglm2 6b模型相关问题 1 Chatglm2 6b模型p tuning后推理答非所问 2 ChatGLM2 6b ptuning 3 ChatGLM2 6b部署 1 Chatglm2 6b模型p tuning后推理答非所问 据C