zero-lora icon indicating copy to clipboard operation
zero-lora copied to clipboard

尝试与羊驼-洛拉合并及其量化 @alpaca作者tloen在这里

Open ziwang-com opened this issue 2 years ago • 1 comments
trafficstars

https://github.com/ggerganov/llama.cpp/issues/172 羊驼劳拉作者在这里。我添加了一个脚本来合并权重并将其转换为我的存储库(链接)中的state_dict。好奇地看到它在美洲驼上运行.cpp :)

该代码不适用于美洲驼-65B。代码中的参数似乎与 7B 和 65B 不同。如何获得正确的参数?

尝试与羊驼-洛拉合并及其量化 #172 打开 taiyou2000 打开了本期 on Mar 16 ·19 评论 评论 @taiyou2000 泰友2000 评论 on Mar 16 我试图合并 https://huggingface.co/tloen/alpaca-lora-7b 的羊驼-lora和 https://huggingface.co/decapoda-research/llama-7b-hf 的原始美洲驼-7B,还试图量化模型并在llama.cpp中运行主文件。 合并代码来自 https://github.com/clcarwin/alpaca-weight

直到最后阶段,在 llam.cpp 中运行主文件几乎是成功的。我在合并和量化方面没有问题。

然后它引发了这样的错误:

llama_model_load:llama_model_load:模型文件中 的未知张量“model.embed_tokens.weight”主:无法从“./models/7B/ggml-model-q4_0.bin”加载模型

我将在我的存储库中共享我的日志。我在 colab 中用于合并和量化模型的代码也在那里:https://github.com/taiyou2000/personal_experimant

我不是机器学习专家,也没有检查过整个骆驼.cpp代码,但在我的理论中,也许量化模型包含权重,其中一些具有主要.cpp不希望看到的名称。正如您在我的存储库的quantization_log.txt和pth_to_ggml_log.txt中看到的那样,它的名称类似于“model.layers.0.self_attn.q_proj.weight”,并且可能它应该像main.cpp的“model.layers.0.attention.wq.weight”。 我可以在本地计算机上运行骆驼.cpp没有任何问题,并且模型是从洪流版本量化的。我想拥抱脸版本与它有所不同。

特洛恩和星云用眼睛表情符号做出反应 @nebulatgs 贡献 星云评论 on Mar 16 我认为这是因为该模型是 HF 格式,在 Alpaca 数据集上微调 LLaMA 7B 后,我遇到了同样的问题。

tloen和taiyou2000用竖起大拇指的表情符号做出反应 @nebulatgs 贡献 星云评论 on Mar 16 如果有人想合作使 HF 模型与此存储库配合使用,请给我发电子邮件,或回复此评论!

@beiller 贡献 贝勒评论 on Mar 16 我认为问题是令牌嵌入在模型文件中,而您的代码没有嵌入令牌。@ggerganov你能确认一下吗?仍然是一个整合句子的案例。

@gjmulder 吉穆德补充道增强 新功能或请求寻求帮助 需要格外注意标签 on Mar 16 @taiyou2000 作者 泰友2000 评论 on Mar 16 我正在比较两个模型的参数。我注意到也许重命名参数就可以正常工作。但我不知道哪些参数彼此对应。而且我认为HF模型的转换器与洪流模型有些“相反”,因为洪流模型在每层中有一个名为output的层,而HF模型在每层中有一个名为input的层。 重命名参数很容易,还是需要从头开始编码?

HF 模型参数: layers.0.self_attn.q_proj.weight layers.0.self_attn.k_proj.weight layers.0.self_attn.v_proj.weight layers.0.self_attn.o_proj.weight layers.0.self_attn.rotary_emb.inv_freq layers.0.mlp.gate_proj.weight layers.0.mlp.down_proj.weight layers.0.mlp.up_proj.weight layers.0.input_layernorm.weight layers.0.post_attention_layernorm.weight

标准重量 lm_head.重量

洪流模型参数: 标准.重量输出.重量层.0.注意.wq.重量层.0.注意.wk.重量层.0.注意.wv.重量层.0.注意.wo.重量 layers.0.feed_forward.w1.重量 layers.0.feed_forward.w2.重量 layers.0.feed_forward.w3.重量 layers.0.attention_norm.重量 layers.0.ffn_norm.重量

@tloen tloen 评论 on Mar 16 • 羊驼劳拉作者在这里。我添加了一个脚本来合并权重并将其转换为我的存储库(链接)中的state_dict。好奇地看到它在美洲驼上运行.cpp :)

绿天、星云、星云、奥科代罗、泰尤2000、事实小说、柚月S、瘟疫、尼克、血清素等20个对万岁表情符号做出反应 大卫弗罗内斯用火箭表情符号做出反应 @taiyou2000 作者 泰友2000 评论 on Mar 16 非常感谢@tleon。我也试图转换state_dict,但很难知道不排列功能。 我很快就会试一试!

@eous eous 评论 on Mar 16 • 羊驼劳拉作者在这里。我添加了一个脚本来合并权重并将其转换为我的存储库(链接)中的state_dict。好奇地看到它在美洲驼上运行.cpp :)

Instruction: What should I have for dinner? Output: 153 grams of beef, plus rice and peas. And you need to eat all the food! [end of text] 哇,这个脚本比我掉进去的兔子洞更直接。干得不错。

@taiyou2000 作者 泰友2000 评论 on Mar 16 我刚刚尝试了羊驼-劳拉合并模型与量化.结果并不像 tloen repo 中介绍的示例那么好。可能是量化的价格或合并实际上不成功。也许我应该修改骆驼.cpp中的配置?无论如何,谢谢大家。

@eous eous 评论 on Mar 16 我刚刚尝试了羊驼-劳拉合并模型与量化.结果并不像 tloen repo 中介绍的示例那么好。可能是量化的价格或合并实际上不成功。也许我应该修改骆驼.cpp中的配置?无论如何,谢谢大家。

是的,量化不是很好,但使用混合的 fp16/fp32 运行它给出了预期的性能。

Tloen,Mauzus,lin72h,Nindanaoto和GeorgesAlkhouri用火箭表情符号做出了反应 这被引用 on Mar 16 斯坦福羊驼支持 #99 闭 羊驼和美洲驼 #203 闭 @thement 合作者 thement 评论 on Mar 17 • 羊驼劳拉作者在这里。我添加了一个脚本来合并权重并将其转换为我的存储库(链接)中的state_dict。好奇地看到它在美洲驼上运行.cpp :)

江淮你几乎有相同的代码将 HF 转回美洲驼格式,就像我一样:)

我只是有一个想法。使用 4 位 GQPT 量化 7B/13B/...HF格式的模型可以将其解压缩为float-16并将其转换为美洲驼模型,并用骆驼.cpp量化对其进行重新量化,这将有望保留量化。

@totoCZ totoCZ 评论 on Mar 17 所以我们现在有 https://github.com/antimatter15/alpaca.cpp 但它只有无休止的聊天模式。 有人需要将所有内容与此存储库合并在一起,以便可以使用达赖运行

cannin,wizd,woozyking,tloen,mwalol,lolxdmainkaisemaanlu和swittk用竖起大拇指的表情符号做出了反应 @thement 合作者 thement 评论 on Mar 17 羊驼劳拉作者在这里。我添加了一个脚本来合并权重并将其转换为我的存储库(链接)中的state_dict。好奇地看到它在美洲驼上运行.cpp :)

无论如何,这是一个脚本,它也对 4 位模型进行反量化,以便稍后可以重新量化(但仅适用于 q4_1 并修复了在整行上计算最小/最大值,而不仅仅是 QK=32 大批量)

https://gist.github.com/thement/90be08be928e0489aba7ecae9f0b352a

如果您认为这很有用,我也许可以升级convert_pth脚本。

@gjmulder gjmulder 提到了这个问题 on Mar 17 是否可以扩展此代码库以支持其他基于转换器的LLM,例如Pythia或其指令调优版本的Open Assistant?#219 打开 @namliz 纳姆利兹评论 on Mar 18 无论如何,这是一个脚本,它也对 4 位模型进行反量化,以便稍后可以重新量化(但仅适用于 q4_1 并修复了在整行上计算最小/最大值,而不仅仅是 QK=32 大批量)

@thement等等,什么?它可以无损往返吗?

@linonetwo 里诺内二评论 on Mar 18 我们可以用美洲驼加载 LoRA .cpp吗?原始美洲驼不支持某些语言, 但可以通过 LoRA 提供.

tomsnunes,tekakutli,FNsi,edwios和RioLynnnnn用眼睛表情符号做出反应 @tarruda 塔鲁达评论 on Mar 21 我们可以用美洲驼加载 LoRA .cpp吗?原始美洲驼不支持某些语言, 但可以通过 LoRA 提供.

是的,您只需要使用脚本@tloen获取 pytorch 权重,然后按照自述文件中描述的步骤转换为 ggml。

请注意,即使没有量化,llama.cpp 的输出与 pytorch 的输出也不相同。这是我在当地用羊驼劳拉做的一个简单的测试:

alpaca-lora-quicksort-pytorch

Same request to llama.cpp using the converted weights (no quantization). Also modified to pass similar arguments: (not sure if missed something, I don't really know what most of these parameters mean). Here's the result:alpaca.sh./main -m ./models/7BLora/ggml-model-f16.bin --color -f ./prompts/alpaca.txt -ins --top_k 40 --top_p 0.75 --temp 0.1 --repeat_penalty 1 -t 4 -n 2000

image

Started well but ended up messing up later. Funny thing is that the llama.cpp implementation would have been a faster (if it was correct) since it only loops the array once.

It really got messed up when I tried with the 4-bit quantized weights:

image

好消息是,非量化版本比使用 CPU 的 pytorch 版本更快,使用的内存更少。虽然 pytorch 减速可能是因为它在运行时加载了微调?@tloen可能知道。如果我们能让骆驼.cpp产生与pytorch相同的输出,那将是一个巨大的胜利。@ggerganov可能更了解输出中的这种差异。

里诺内二用竖起大拇指的表情符号做出反应 @tarruda 塔鲁达评论 on Mar 21 以下是与 GPT 3.5 的比较: image

我试图将“temp”提高到 0.7 以匹配 GPT 3.5 的“temp”,但它导致了更糟糕的解决方案(即使“就地”排序的目标很好😄):

image

linonetwo and JamoDevNich reacted with eyes emoji @xloem Contributor xloem commented on Mar 27 When you see a disparity between outputs in two important engines that should be identical, if you know how to use a debugger, it’s quite helpful to debug both in parallel and see where the numbers start diverging.

@edwios edwios 提到了这个问题 on Mar 29 支持 LoRA 模型加载张量子集 #399 闭 @Gitterman69 吉特曼69评论 on Apr 10 我正在使用文本生成webui来成功训练llama7b(8位)的loras。有没有办法将训练有素的劳拉与美洲驼 7b 重量合并?我的目标是训练一个 lora, 合并, 再次训练其他东西, 再次合并, 等等....这里有人可能知道如何实现合并部分吗?

cnmoro用竖起大拇指的表情符号做出反应 @ghqing0310 ghqing0310 评论 4 days ago 羊驼劳拉作者在这里。我添加了一个脚本来合并权重并将其转换为我的存储库(链接)中的state_dict。好奇地看到它在美洲驼上运行.cpp :)

该代码不适用于美洲驼-65B。代码中的参数似乎与 7B 和 65B 不同。如何获得正确的参数?

ziwang-com avatar May 20 '23 02:05 ziwang-com

看起来有点意思,关注一下,希望能给更清晰的教程网站

linonetwo avatar May 20 '23 03:05 linonetwo