模型:

TheBloke/Selfee-13B-GPTQ

英文

Chat & support: my new Discord server

Want to contribute? TheBloke's Patreon page

Kaist AI's Selfee 13B GPTQ

这些文件是用于 Kaist AI's Selfee 13B 的GPTQ 4位模型文件。

这是使用 GPTQ-for-LLaMa 将其量化为4位的结果。

其他可用的存储库

如何轻松下载并在文本生成 WebUI 中使用该模型

下载模型

  • 点击 Model 选项卡。
  • 在 下载自定义模型或 LoRA 下,输入 TheBloke/Selfee-13B-GPTQ 。
  • 点击 下载 。
  • 等待下载完成。
  • 取消选中 "Autoload model"
  • 点击左上角的 Model 旁边的刷新图标。
  • 与 AutoGPTQ(如已安装)一起使用

  • 在 Model 下拉菜单中选择刚刚下载的模型, Selfee-13B-GPTQ 。
  • 在 GPTQ 栏中,勾选 AutoGPTQ 。
  • 在右上方点击 保存此模型的设置 。
  • 在右上方点击 重新加载模型 。
  • 一旦显示已加载,点击 文本生成 选项卡,然后输入提示!
  • 与 GPTQ-for-LLaMa 一起使用

  • 在 Model 下拉菜单中选择刚刚下载的模型, Selfee-13B-GPTQ 。
  • 如果在右下角看到错误,请忽略 - 这是暂时的。
  • 在右侧填写 GPTQ 参数:Bits = 4 , Groupsize = 128 , model_type = Llama
  • 在右上方点击 保存此模型的设置 。
  • 在右上方点击 重新加载模型 。
  • 一旦显示已加载,点击 文本生成 选项卡,然后输入提示!
  • 提供的文件

    selfee-13b-GPTQ-4bit-128g.no-act.order.safetensors

    这将适用于 GPTQ-for-LLaMa 的所有版本,也适用于 AutoGPTQ。

    它是使用 group_size 为 128 创建的,以增加推理准确性,但没有使用 --act-order(desc_act)以增加兼容性并提高推理速度。

    • selfee-13b-GPTQ-4bit-128g.no-act.order.safetensors
      • 适用于 GPTQ-for-LLaMa 代码的所有版本,包括 Triton 和 CUDA 分支
      • 适用于 AutoGPTQ
      • 适用于文本生成 WebUI 一键安装程序
      • 参数:Groupsize = 128。Act Order / desc_act = False。

    Discord

    有关这些模型和人工智能的进一步支持和讨论,请加入我们:

    TheBloke AI's Discord server

    谢谢,以及如何贡献

    感谢 chirper.ai 团队!

    我收到很多人们询问是否可以做出贡献。我喜欢提供模型并帮助人们,也希望能够花更多的时间做这些事情,以及扩展到新的项目,如微调/训练。

    如果您能够并愿意做出贡献,我将非常感激,并将帮助我继续提供更多的模型,并开始开展新的 AI 项目。

    捐赠者将在所有与 AI/LLM/模型相关的问题和请求上获得优先支持,获得访问私人 Discord 房间的权限,以及其他好处。

    特别感谢:来自 CarbonQuill 的 Luke、Aemon Algiz、Dmitriy Samsonov。

    Patreon特别鸣谢:Derek Yates、Sean Connelly、Luke、Nathan LeClaire、Trenton Dambrowitz、Mano Prime、David Flickinger、vamX、Nikolai Manek、senxiiz、Khalefa Al-Ahmad、Illia Dulskyi、trip7s trip、Jonathan Leane、Talal Aujan、Artur Olbinski、Cory Kujawski、Joseph William Delisle、Pyrater、Oscar Rangel、Lone Striker、Luke Pendergrass、Eugene Pentland、Johann-Peter Hartmann。

    感谢所有慷慨的赞助者和捐赠者!

    原始模型卡片:Kaist AI's Selfee 13B

    SelFee:通过自我反馈生成进行迭代自我修订的LLM

    新闻

    [2023年5月31日] 初始发布:我们发布了SelFee的第一个版本!请查看 blog post 获取更多详情。

    概述

    这是KAIST SelFee项目的存储库,旨在构建和共享一个遵循指令的LLaMA模型。该存储库主要包含五个内容:

    • SelFee的178K个训练数据的选择过程( 详细信息 , 代码 )。
    • 训练数据的生成过程及其结果( 详细信息 , 代码 )。
    • 模型的训练过程( 详细信息 , 代码 )。
    • 模型的推断过程( 详细信息 , 代码 )。
    • 评估方法和数据集( 详细信息 , 代码 )。

    本存储库基于 Stanford-Alpaca Vicuna 存储库。感谢所有对这些仓库作出贡献的人!!?

    我们强烈建议阅读我们的 blog post 获取更多关于该模型的详细信息。

    数据发布

    在数据收集方面,我们从五个不同领域收集了数据集。这些数据集包括斯坦福Alpaca数据集、数学数据集、代码数据集、Flan数据集和ShareGPT。我们提供了我们用于创建训练数据集的代码。我们还提供了如何预处理ShareGPT的代码。对于ShareGPT,我们仅使用由人类和GPT分别生成的第一个(问题,答案)对。我们仅使用被分类为英语的实例,并过滤掉不是问题形式的实例。对于其他数据集,我们不需要特殊的数据收集方法。

    数据生成过程

    为了使用高质量的指令和答案对训练我们的模型,我们利用了OpenAI API调用进行数据增强的过程。该过程涉及三个步骤。首先,我们从多个领域收集了各种指令,并将其提供给ChatGPT以生成答案。其次,我们通过再次查询ChatGPT并询问其是否需要对初始答案进行修订来收集关于生成答案的反馈。第三,如果需要修订,则将指令、初始答案和反馈对传递给ChatGPT以生成修订后的答案及其反馈对。我们重复这个过程,直到收到不再需要进一步修订的反馈或达到最大迭代次数。然而,由于ChatGPT API的令牌限制,我们不得不截断一些需要超过4096个令牌的实例。您可以使用该命令查看详细信息 这里 。*我们提供了整个数据集(使用huggingface进行收集和增强的代码),因此您可以使用代码或按照我们的 数据合并步骤 来复现训练数据集。随意选择其中任何一种!

    训练

    我们使用 FastChat 对模型进行训练。给定指令,我们对模型进行微调,以生成答案和反馈链(包括修订)。

    要复现训练过程,请按照以下步骤进行。

    pip install -r requirements.txt
    
    torchrun --nproc_per_node=4 train/train_mem.py \
        --model_name_or_path llama-7b \
        --data_path outputs/feedback_gpt_3.5_turbo_merged_whole.json \
        --bf16 True \
        --output_dir ckpt/selfee-7b \
        --num_train_epochs 3 \
        --per_device_train_batch_size 16 \
        --per_device_eval_batch_size 16 \
        --gradient_accumulation_steps 2 \
        --evaluation_strategy "no" \
        --save_strategy "steps" \
        --save_steps 5000 \
        --save_total_limit 1 \
        --learning_rate 2e-5 \
        --weight_decay 0. \
        --warmup_ratio 0.03 \
        --lr_scheduler_type "cosine" \
        --logging_steps 1 \
        --fsdp "shard_grad_op auto_wrap" \
        --fsdp_transformer_layer_cls_to_wrap 'LlamaDecoderLayer' \
        --tf32 True \
        --model_max_length 2048 \
        --gradient_checkpointing True \
        --lazy_preprocess True \
        --training_objective full \
    

    超参数如下,遵循Vicuna和Alpaca的设定。

    Hyperparameter Global Batch Size Learning rate Epochs Max length Weight decay
    SelFee (7B, 13B) 128 2e-5 3 2048 0

    推断

    使用差异性恢复检查点 我们提供了差异权重和代码,可以使用SelFee还原相同的模型。要还原原始的SelFee权重,您首先需要将Meta的原始LLAMA检查点转换为在本地机器上的huggingface格式。一旦完成,您就可以使用以下命令恢复我们的模型的相同检查点

    python inference/apply_delta.py --path_raw {path_to_llama_7b} --path_tuned /ckpt/selfee-7b --path_diff kaist-ai/selfee-7b-delta
    

    自主推理模式

    因为SelFee被训练为生成迭代的反馈和修订,直到响应令人满意,它会在单个前向传递中自动生成迭代的反馈和修订。模型会根据反馈自主决定何时停止生成修订。如果反馈链以“修订不需要”等序列结束,模型会自动终止生成。

    对于自主推理模式,使用以下参数:

    python inference/inference.py --model-path "ckpt/selfee-7b" --model-id "selfee" --question-file "evaluation/template/question.jsonl" --answer-file "evaluation/answer/selfee_7b_autonomous.jsonl" 
    

    修订强制推理模式 我们观察到增加所需修订的最小数量会提高性能。为了强制进行修订,我们会自动将“修订不需要”等序列替换为“修订需要”。因为SelFee被训练为在“修订需要”序列之后生成“修订 {索引}”的序列,所以模型会不断修订答案。

    对于修订强制推理模式,使用 max-num-revision 参数。

    python inference/inference.py --model-path "ckpt/selfee-7b" --model-id "selfee" --question-file "evaluation/template/question.jsonl" --answer-file "evaluation/answer/selfee_7b_enforce_3_revision.jsonl" --max-num-revision 3
    

    评估

    根据Vicuna的评估设置,我们对80个不同的查询进行评估,并使用GPT-4语言模型作为评估器,根据ChatGPT的响应对模型的响应进行评分。与Vicuna评估的一个不同之处是,由于GPT-4的位置偏差,我们采用了双向评估设置。这意味着每个评估实例会根据其位置进行两次推断。

    我们在 evaluation/answer 文件夹中发布了SelFee的推断结果,还在 evaluation/review 文件夹中发布了由GPT-4生成的得分。

    GPT-4自动评估

    首先,您需要获取API密钥以访问GPT-4 API。

    export OPENAI_API_KEYS={personal_key}
    

    要将生成结果(例如位于 evaluation/answer/file_A.jsonl 上)与其他生成结果(位于 evaluation/anwer/file_B.jsonl 上)进行比较,

    python evaluation/gpt4_automatic_evaluation.py -q evaluation/template/question.jsonl -a evaluation/answer/file_A.jsonl evaluation/answer/file_B.jsonl -p evaluation/template/prompt.jsonl -r evaluation/template/reviewer.jsonl -o evaluation/review/A_vs_B.jsonl
    

    为了减轻GPT-4模型的位置偏差,我们应用了双向评估设置。因此,还需要使用相反位置进行自动评估。

    python evaluation/gpt4_automatic_evaluation.py -q evaluation/template/question.jsonl -a evaluation/answer/file_B.jsonl evaluation/answer/file_A.jsonl -p evaluation/template/prompt.jsonl -r evaluation/template/reviewer.jsonl -o evaluation/review/B_vs_A.jsonl
    

    限制

    与其他LLaMA微调模型类似,SelFee在某些任务(尤其是数学、推理、事实和编码任务)上也会出现一些错误。尽管我们的性能超越了Vicuna设置中的ChatGPT,但是评估设置在理解力(限于80个查询)、一致性和可靠性方面存在一些限制。因此,需要进一步研究以获得更好的评估设置。请对这些指标持保留态度。

    在线演示

    查看 demo

    如何自己启动演示

    要自己提供 Web 演示,请运行以下命令:

  • 运行控制器
  • python3 -m serve.controller
    
  • 运行模型 worker
  • python3 -m serve.model_worker --model-path $MODEL_PATH --port 21002 --worker-address=http://localhost:21002 --model-name=SelFee-13b
    
  • 运行 Web 服务器
  • python3 -m serve.gradio_web_server --share
    

    您可以在此处找到提供服务的代码 这里 。

    团队成员

    Seonghyeon Ye* Yongrae Jo* Doyoung Kim* Sungdong Kim Hyeonbin Hwang ,和 Minjoon Seo 。 (*表示相等的贡献)

    发布

    我们已发布SelFee-7B和SelFee-13B模型差异权重,可以在此处找到说明。此外,我们用于训练SelFee的训练实例已在huggingface上发布。

    许可证

    科研预览在线演示仅供非商业使用,受各种许可证和使用条款的约束,包括LLaMA模型 License ,OpenAI为生成的数据提供的 Terms of Use ,以及ShareGPT的 Privacy Practices 。如果你发现任何违规行为,请与我们联系。

    引用

    如果您在此存储库中使用数据或代码,请引用。

    @misc{selfee2023,
        author = {Ye, Seonghyeon and Jo, Yongrae and Kim, Doyoung and Kim, Sungdong and Hwang, Hyeonbin and Seo, Minjoon},
        title = {SelFee: Iterative Self-Revising LLM Empowered by Self-Feedback Generation},
        url = {https://kaistai.github.io/SelFee/},
        month = {May},
        year = {2023},
        howpublished = {Blog post}
    }