首先,我想对使这个项目成为可能的大家表示感谢。真是太神奇了,多亏了这个社区,会有这么多的可能性!
我想在我的iPhone上运行llama2,但是大多数iPhone都有4GB的RAM,所以即使是7B带有3位量化的模型也无法适应它。我一直在尝试通过添加以下代码来创建一个2位量化模型:
"q2f16_0": QuantizationScheme(
name="q2f16_0",
linear_weight=GroupQuantizationSpec(
dtype="float16",
mode="int2",
sym=True,
storage_nbit=16,
group_size=40,
transpose=False,
),
embedding_table="same_as_linear_weight",
final_fc_weight="same_as_linear_weight",
),
这样它就可以适应4GB的RAM。然而,在测试模型时,我只得到了一些乱码:
Loading model...
[13:03:28] /Users/catalyst/Workspace/miniforge3/envs/mlc-llm-build/conda-bld/mlc-chat-cli-nightly-package_1691568383808/work/3rdparty/tvm/src/runtime/metal/metal_device_api.mm:167: Intializing Metal device 0, name=Apple M1 Pro
Loading finished
Running system prompts...
System prompts finished
[INST]: Hi
[/INST]: Initial uniewor on the question of the basics, v’1/ NT. (H)ar-type decision) two M.
You warm-T, 1, 11SAT, takings of the Sphistic Logs Ponder about the Gov.al the collection justification of the crew)
am Sclich E
The right 'in T QUсковO Philadelphia head-a, the -W cher in 'c mantrack n't w ret
Sale the whole foregrant-iSchуames Th
sigh inCOMIVde Mpos deusted al
-wil on new Sergh Scers of te tangeles^C
2位量化是否可行?或者这将只产生一个质量如此糟糕的模型,只会产生乱码?
谢谢!
3条答案
按热度按时间vaj7vani1#
进行一些研究后,我发现了这篇论文https://arxiv.org/pdf/2307.13304.pdf和相关的代码https://github.com/AlpinDale/QuIP-for-Llama。这种量化方法是否可行?(这超出了我的知识范围)
tmb3ates2#
你好,感谢关注最新的2比特量化研究并指出这里!从内存消耗的Angular 来看,2比特绝对是我们想要尝试的东西。
这篇论文有一些比较,显示当我们直接应用2比特量化时,困惑度会爆炸,但如果使用QuIP,可以得到相当好的结果。这篇论文中进行的实验是针对OPT模型的,根据this issue,一些人重现的性能还不是很好。如果你尝试使用他们的开源代码进行2比特OPTQ,你可能会注意到,13B-2比特模型在困惑度上可能不如1.3B-4比特模型表现得好。
我认为这种方法肯定可以改进原始的2比特方法,但没有保证结果会一样好。并且高度依赖于实现,所以绝对值得一试,看看它是否适用于llama-2。
n9vozmp43#
你好,我是提到的QuIP方法的作者之一。我们的工作提出了一种新的量化算法,能够实现合理的量化,降低到2位。基于我们迄今为止的实验分析(3个语言生成任务,4个下游零样本任务和最多30b参数的OPT模型),使用我们的方法将量化为3(或4)位在与其他量化算法OPTQ和fp16模型相比时,在固定内存预算方面表现最佳。
quip_bestuseofbits.pdf
你提到的问题指出他们能够在OPT上很好地实现QuIP,这是我们迄今为止进行实验的模型。评论者表示对我们仓库的一个分支扩展到LLaMa模型的担忧;我仍在与他们讨论具体问题是什么。
我们正在评估我们在其他模型上的方法,包括llama-2。很高兴能更多地谈论我们的工作!