模型:
TheBloke/Selfee-13B-GPTQ
Chat & support: my new Discord server
Want to contribute? TheBloke's Patreon page
这些文件是用于 Kaist AI's Selfee 13B 的GPTQ 4位模型文件。
这是使用 GPTQ-for-LLaMa 将其量化为4位的结果。
selfee-13b-GPTQ-4bit-128g.no-act.order.safetensors
这将适用于 GPTQ-for-LLaMa 的所有版本,也适用于 AutoGPTQ。
它是使用 group_size 为 128 创建的,以增加推理准确性,但没有使用 --act-order(desc_act)以增加兼容性并提高推理速度。
有关这些模型和人工智能的进一步支持和讨论,请加入我们:
感谢 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。
感谢所有慷慨的赞助者和捐赠者!
[2023年5月31日] 初始发布:我们发布了SelFee的第一个版本!请查看 blog post 获取更多详情。
这是KAIST SelFee项目的存储库,旨在构建和共享一个遵循指令的LLaMA模型。该存储库主要包含五个内容:
本存储库基于 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生成的得分。
首先,您需要获取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
python3 -m serve.model_worker --model-path $MODEL_PATH --port 21002 --worker-address=http://localhost:21002 --model-name=SelFee-13b
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} }