Skip to content
iMountTai edited this page Nov 14, 2023 · 14 revisions

常见问题

问题1:本项目和一期项目的区别?

答:一期项目即Chinese-LLaMA-Alpaca基于“未完全开源”的一代LLaMA开发,相关模型不得用于商业用途,且分发方面也存在限制。二期项目在一期项目相关技术的基础上进行升级,基于二代Llama(可商用、可分发)进行开发,模型效果相比一期模型具有显著优势。

问题2:模型能否商用?

答:可以,但请提前仔细阅读原版Llama-2的商用许可要求。开发者应对使用相关模型的合规性负责,必要时寻求法务支持。本项目不对因使用相关模型产生的结果及其连带损失负责。

问题3:接受第三方Pull Request吗?

答:欢迎发起Pull Request。本项目主要接受新工具适配、脚本增强、bug修复、使用教程等方面的PR。暂时不接受不影响模型正常使用的PR,例如只修改一两个错别字等(我们仍然感谢指正)。

问题4:为什么不对模型做全量预训练而是用LoRA?

答:考虑到训练成本和效率等因素,我们选择在Llama-2的基础上使用LoRA进行训练(embedding/lm_head全量参与训练,具体见训练wiki)。我们认为Llama-2已具备一定的中文理解能力,通过LoRA增量训练能够快速地补充中文理解和生成能力。至于在Llama-2上进行全量预训练会不会比LoRA的效果更好,目前暂时没有可供参考的结论。因此,本项目使用LoRA是多种因素权衡之后的结果,并不只是考虑模型效果这一因素。

问题5:二代模型支不支持某些支持一代LLaMA的工具?

答:我们在一期项目中已经适配的工具会陆续迁移到本项目,但这个过程需要一些时间。同时,我们也强烈建议关注相应第三方工具对Llama-2的适配进展。一代和二代模型主要区别在于:1)我们的Alpaca-2的指令模板和一代不一样;2)34B/70B模型需要支持GQA(本项目暂不涉及这两个级别模型);除此之外还存在一些细微的差别。总而言之,动手能力强的可以自行适配,或者参考第三方工具对Llama-2的适配。

问题6:Chinese-Alpaca-2是Llama-2-Chat训练得到的吗?

答:不是。我们所有的模型起点均是Meta发布的Llama-2(非chat模型)基座模型。Chinese-LLaMA-2是在Llama-2的基础上,利用大规模中文数据进行增量预训练。Chinese-Alpaca-2则是进一步在Chinese-LLaMA-2的基础上,利用精选的指令数据进行精调(也可称为对齐),让模型具备聊天、问答等指令理解与执行能力。所有训练过程均使用了基于LoRA的高效训练方法。

问题7:为什么24G显存微调Chinese-Alpaca-2-7B会OOM?

答:可从依赖版本、数据及可训练参数方面排查相关设置:

  • 要求的peft版本为0.3.0.dev0,可通过pip install git+https://github.com/huggingface/peft.git@13e53fc安装
  • sft脚本max_seq_lengh或pt脚本block_size如果为1024,可以删除已创建的data_cache并修改长度为512继续训练。
  • per_device_train_batch_size设置为1,如果更高则会OOM。

问题8:可以使用16K长上下文版模型替代标准版模型吗?

答:这个需要根据使用场景而定。如果主要处理4K以内的上下文,建议使用标准版模型。如果主要处理8K-16K的上下文,则推荐使用16K长上下文版模型。上述两种模型均可以通过NTK方法进一步扩展上下文长度(无需进一步训练)。需要注意的是,使用16K模型需要推理脚本或第三方工具支持自定义RoPE功能,而不是像标准版模型一样直接使用。建议仔细阅读本项目的Wiki,以确保16K模型能够以正确的方式加载和使用。

问题9:如何解读第三方公开榜单的结果?

答:我们观察到有许多评测大模型能力的榜单,这些榜单为评价大模型的能力提供了不同的视角。截至目前,本项目(包括一期项目)仅在C-Eval榜单上公开上传过结果(其中榜单中标星结果是由C-Eval官方运行得出),除此之外本项目未在其他榜单上主动提交结果,因此无法保证相关结果的正确性和有效性。 如需本项目相关模型可复现的评价结果(尤其是用于学术目的时),请参考本项目官方给出的实验结果。我们均提供了可复现实验结果的推理脚本,以确保相关模型以正确的方式运行。

问题10:会出34B或者70B级别的模型吗?

答:Meta还未正式发布34B版本的权重文件,因此需要等待Meta发布后才能决定是否推出34B模型。在此期间,可以先考虑使用我们一代的Chinese-LLaMA-Plus-33B和Chinese-Alpaca-Pro-33B模型(参考一期项目)。考虑到计算成本和效率,70B级别模型目前暂无计划支持。

问题11:为什么长上下文版模型是16K,不是32K或者100K?

答:大多数使用场景并不需要长上下文版模型。考虑到GPT-3.5和GPT-4分别有gpt-3.5-turbo-16kgpt-4-32k,我们认为16K-32K是一个长上下文模型主要的应用区间,因此综合权衡后选择发布16K版本。需要注意的是,如有更长上下文需求,用户仍然可以使用我们的相关脚本,通过NTK的方法在不继续训练模型的情况下继续扩展上下文大小至24-32K。

问题12:为什么Alpaca模型会回复说自己是ChatGPT?

答:我们在训练Alpaca类模型的时候并没有加入任何身份数据,因此模型的输出主要取决于SFT阶段的训练数据情况。由于SFT数据中添加了大量的ChatGPT爬取的数据,模型更倾向于拟合ChatGPT的行为,因此会回复自己是ChatGPT。建议用户不必纠结这一点,如有需要可以自行构造身份数据,在我们模型的基础上进一步精调。

问题13:为什么pt_lora_model或者sft_lora_model下的adapter_model.bin只有几百k?

答:出现这种情况的原因是采用了DeepSpeed ZeRO-3训练。假设第50步中间模型的目录如下:

|-- checkpoint-50
    |-- global_step50
    |-- sft_lora_model
    |   |-- adapter_config.json 471
    |   |-- adapter_model.bin 127K 
    |   |-- special_tokens_map.json 435 
    |   |-- tokenizer.model 825K
    |   |-- tokenizer_config.json 766 
    |-- adapter_config.json 471
    |-- adapter_model.bin 1.2G
    |-- latest
    |-- rng_state_0.pth
    ···

则可以使用checkpoint-50文件夹下的adapter_model.bin进行合并。

Clone this wiki locally